aboutsummaryrefslogtreecommitdiff
path: root/worker
diff options
context:
space:
mode:
authorKevin Kuehler <keur@xcf.berkeley.edu>2019-10-10 15:27:13 -0700
committerBen Burwell <ben@benburwell.com>2019-10-12 20:58:10 -0400
commit287bf609554c5b0e9d82f28e89f6ca988b8fd452 (patch)
tree1a78451c00cd0055be679a0a0a0c14dc0056872c /worker
parentbaa8813dcc1bf4dbd18763df9ee654472ae0e433 (diff)
Add thread deletion
Signed-off-by: Kevin Kuehler <keur@xcf.berkeley.edu>
Diffstat (limited to 'worker')
-rw-r--r--worker/imap/open.go3
-rw-r--r--worker/types/thread.go15
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) {