diff options
author | Kevin Kuehler <keur@xcf.berkeley.edu> | 2019-10-10 15:27:13 -0700 |
---|---|---|
committer | Ben Burwell <ben@benburwell.com> | 2019-10-12 20:58:10 -0400 |
commit | 287bf609554c5b0e9d82f28e89f6ca988b8fd452 (patch) | |
tree | 1a78451c00cd0055be679a0a0a0c14dc0056872c /worker | |
parent | baa8813dcc1bf4dbd18763df9ee654472ae0e433 (diff) |
Add thread deletion
Signed-off-by: Kevin Kuehler <keur@xcf.berkeley.edu>
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) { |