summaryrefslogtreecommitdiff
path: root/commands
diff options
context:
space:
mode:
authorKoni Marti <koni.marti@gmail.com>2022-07-26 11:30:26 +0200
committerRobin Jarry <robin@jarry.cc>2022-07-26 11:34:19 +0200
commit8f7695fde5cd84b7f6b8f3193270eda2fd62448c (patch)
tree27d2b58969b841f957fdbb8ad703f3d116eb5f9c /commands
parent3b90b3b0ddfd8134daa1d417bdd7acd8c39781b7 (diff)
downloadaerc-8f7695fde5cd84b7f6b8f3193270eda2fd62448c.zip
msgstore: implement a uid-based architecture
Change the message store architecture from an index-based to a uid-based one. Key advantage of this design approach is that no reselect mechanism is required anymore since it comes with the design for free. Fixes: https://todo.sr.ht/~rjarry/aerc/43 Signed-off-by: Koni Marti <koni.marti@gmail.com> Tested-by: Tim Culverhouse <tim@timculverhouse.com> Acked-by: Robin Jarry <robin@jarry.cc>
Diffstat (limited to 'commands')
-rw-r--r--commands/account/clear.go2
-rw-r--r--commands/msg/delete.go4
-rw-r--r--commands/msg/toggle-threads.go1
3 files changed, 2 insertions, 5 deletions
diff --git a/commands/account/clear.go b/commands/account/clear.go
index 5bab710..af7da32 100644
--- a/commands/account/clear.go
+++ b/commands/account/clear.go
@@ -51,8 +51,6 @@ func (Clear) Execute(aerc *widgets.Aerc, args []string) error {
if clearSelected {
defer store.Select(0)
- } else {
- store.SetReselect(store.Selected())
}
store.ApplyClear()
acct.SetStatus(statusline.SearchFilterClear())
diff --git a/commands/msg/delete.go b/commands/msg/delete.go
index 2d7ad0f..d144388 100644
--- a/commands/msg/delete.go
+++ b/commands/msg/delete.go
@@ -56,7 +56,7 @@ func (Delete) Execute(aerc *widgets.Aerc, args []string) error {
// no more messages in the list
if next == nil {
aerc.RemoveTab(h.msgProvider)
- store.Select(len(store.Uids()))
+ acct.Messages().Select(0)
acct.Messages().Invalidate()
return
}
@@ -74,7 +74,7 @@ func (Delete) Execute(aerc *widgets.Aerc, args []string) error {
if next == nil {
// We deleted the last message, select the new last message
// instead of the first message
- store.Select(len(store.Uids()))
+ acct.Messages().Select(0)
}
}
acct.Messages().Invalidate()
diff --git a/commands/msg/toggle-threads.go b/commands/msg/toggle-threads.go
index 05c2c5e..af694bc 100644
--- a/commands/msg/toggle-threads.go
+++ b/commands/msg/toggle-threads.go
@@ -34,7 +34,6 @@ func (ToggleThreads) Execute(aerc *widgets.Aerc, args []string) error {
if err != nil {
return err
}
- store.SetReselect(store.Selected())
store.SetThreadedView(!store.ThreadedView())
acct.SetStatus(statusline.Threading(store.ThreadedView()))
acct.Messages().Invalidate()