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>
This commit is contained in:
parent
3b90b3b0dd
commit
8f7695fde5
5 changed files with 73 additions and 86 deletions
commands/msg
|
@ -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()
|
||||
|
|
|
@ -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()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue