From 1a067bcb339a338043abfb62e4f946787b734af7 Mon Sep 17 00:00:00 2001 From: Koni Marti Date: Fri, 14 Jul 2023 20:37:28 +0200 Subject: threadbuilder: store uid/thread association Store the association between uids and threads in a map instead of just having the threads in a slice. This simplifies the lookup of a thread when we have an uid and we can avoid computationally expensive tree walks. The threadbuilder will rebuild the uids from the given thread structure. Hence there is no need now to keep a threads slice around. Signed-off-by: Koni Marti Acked-by: Robin Jarry Tested-by: inwit --- commands/msg/mark.go | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) (limited to 'commands/msg') diff --git a/commands/msg/mark.go b/commands/msg/mark.go index dcb6d69d..51aa1eb4 100644 --- a/commands/msg/mark.go +++ b/commands/msg/mark.go @@ -64,10 +64,6 @@ func (Mark) Execute(aerc *widgets.Aerc, args []string) error { } } - if thread && len(store.Threads()) == 0 { - return fmt.Errorf("No threads found") - } - if thread && all { return fmt.Errorf("-a and -T are mutually exclusive") } @@ -100,7 +96,11 @@ func (Mark) Execute(aerc *widgets.Aerc, args []string) error { return nil default: if thread { - for _, uid := range store.SelectedThread().Root().Uids() { + threadPtr, err := store.SelectedThread() + if err != nil { + return err + } + for _, uid := range threadPtr.Root().Uids() { modFunc(uid) } } else { @@ -126,7 +126,11 @@ func (Mark) Execute(aerc *widgets.Aerc, args []string) error { return nil default: if thread { - for _, uid := range store.SelectedThread().Root().Uids() { + threadPtr, err := store.SelectedThread() + if err != nil { + return err + } + for _, uid := range threadPtr.Root().Uids() { marker.Unmark(uid) } } else { -- cgit