diff options
Diffstat (limited to 'worker')
| -rw-r--r-- | worker/imap/open.go | 3 | ||||
| -rw-r--r-- | worker/types/thread.go | 15 | 
2 files changed, 18 insertions, 0 deletions
diff --git a/worker/imap/open.go b/worker/imap/open.go index bdb794b..78bcbb4 100644 --- a/worker/imap/open.go +++ b/worker/imap/open.go @@ -89,6 +89,9 @@ func convertThreads(threads []*sortthread.Thread) ([]*types.Thread, int) {  			Uid:      t.Id,  			Children: children,  		} +		for _, child := range children { +			child.Parent = conv[i] +		}  		count += childCount + 1  	}  	return conv, count diff --git a/worker/types/thread.go b/worker/types/thread.go index a51a5c4..4a97ef6 100644 --- a/worker/types/thread.go +++ b/worker/types/thread.go @@ -3,6 +3,21 @@ package types  type Thread struct {  	Uid      uint32  	Children []*Thread +	Parent   *Thread +} + +func (t *Thread) Find(uid uint32) *Thread { +	if t.Uid == uid { +		return t +	} + +	for _, child := range t.Children { +		if needle := child.Find(uid); needle != nil { +			return needle +		} +	} + +	return nil  }  func (t *Thread) FormatThread(cb func(*Thread, []rune) bool) {  | 
