~sircmpwn/aerc

5090a4c8026cca61652c6333b1352c2c21789912 — Kevin Kuehler 11 months ago 6e745cb
Only add message to store if store exists

Prevents the program from panicing when changing folders too quickly.
onMessage can race store creation for an AccountView.

Signed-off-by: Kevin Kuehler <keur@ocf.berkeley.edu>
1 files changed, 12 insertions(+), 8 deletions(-)

M widgets/account.go
M widgets/account.go => widgets/account.go +12 -8
@@ 184,17 184,21 @@ func (acct *AccountView) onMessage(msg types.WorkerMessage) {
			})
		}
	case *types.DirectoryContents:
		store := acct.msgStores[acct.dirlist.selected]
		store.Update(msg)
		if store, ok := acct.msgStores[acct.dirlist.selected]; ok {
			store.Update(msg)
		}
	case *types.FullMessage:
		store := acct.msgStores[acct.dirlist.selected]
		store.Update(msg)
		if store, ok := acct.msgStores[acct.dirlist.selected]; ok {
			store.Update(msg)
		}
	case *types.MessageInfo:
		store := acct.msgStores[acct.dirlist.selected]
		store.Update(msg)
		if store, ok := acct.msgStores[acct.dirlist.selected]; ok {
			store.Update(msg)
		}
	case *types.MessagesDeleted:
		store := acct.msgStores[acct.dirlist.selected]
		store.Update(msg)
		if store, ok := acct.msgStores[acct.dirlist.selected]; ok {
			store.Update(msg)
		}
	case *types.Error:
		acct.logger.Printf("%v", msg.Error)
		acct.host.SetStatus(fmt.Sprintf("%v", msg.Error)).