aboutsummaryrefslogtreecommitdiff
path: root/commands/util.go
diff options
context:
space:
mode:
Diffstat (limited to 'commands/util.go')
-rw-r--r--commands/util.go30
1 files changed, 30 insertions, 0 deletions
diff --git a/commands/util.go b/commands/util.go
index a5c30af..5529edb 100644
--- a/commands/util.go
+++ b/commands/util.go
@@ -10,6 +10,7 @@ import (
"strings"
"time"
+ "git.sr.ht/~sircmpwn/aerc/models"
"git.sr.ht/~sircmpwn/aerc/widgets"
"github.com/gdamore/tcell"
"github.com/mitchellh/go-homedir"
@@ -148,3 +149,32 @@ func listDir(path string, hidden bool) []string {
return filtered
}
+
+// MarkedOrSelected returns either all marked messages if any are marked or the
+// selected message instead
+func MarkedOrSelected(pm widgets.ProvidesMessages) ([]*models.MessageInfo, error) {
+ // marked has priority over the selected message
+ marked, err := pm.MarkedMessages()
+ if err != nil {
+ return nil, err
+ }
+ if len(marked) > 0 {
+ return marked, nil
+ }
+ msg, err := pm.SelectedMessage()
+ if err != nil {
+ return nil, err
+ }
+ return []*models.MessageInfo{msg}, nil
+}
+
+// UidsFromMessageInfos extracts a uid slice from a slice of MessageInfos
+func UidsFromMessageInfos(msgs []*models.MessageInfo) []uint32 {
+ uids := make([]uint32, len(msgs))
+ i := 0
+ for _, msg := range msgs {
+ uids[i] = msg.Uid
+ i++
+ }
+ return uids
+}