notmuch: align dirInfo logic to the maildir worker

This commit is contained in:
Reto Brunner 2020-02-29 14:40:51 +01:00 committed by Drew DeVault
parent 841655a98e
commit fb2df7e169

View file

@ -33,6 +33,7 @@ type worker struct {
w *types.Worker
nmEvents chan eventType
query string
currentQueryName string
uidStore *uidstore.Store
nameQueryMap map[string]string
db *notmuch.DB
@ -118,8 +119,6 @@ func (w *worker) handleMessage(msg types.WorkerMessage) error {
return w.handleSearchDirectory(msg)
case *types.ModifyLabels:
return w.handleModifyLabels(msg)
case *types.DirectoryInfoUpdateRequest:
return w.handleDirInfoUpdateRequest(msg)
// not implemented, they are generally not used
// in a notmuch based workflow
@ -217,14 +216,12 @@ func (w *worker) gatherDirectoryInfo(name string, query string) (
return info, nil
}
func (w *worker) handleDirInfoUpdateRequest(
msg *types.DirectoryInfoUpdateRequest) error {
query := w.queryFromName(msg.Name)
info, err := w.gatherDirectoryInfo(msg.Name, query)
func (w *worker) emitDirectoryInfo(name string) error {
query := w.queryFromName(name)
info, err := w.gatherDirectoryInfo(name, query)
if err != nil {
return err
}
info.Message = types.RespondTo(msg)
w.w.PostMessage(info, nil)
return nil
}
@ -244,6 +241,7 @@ func (w *worker) handleOpenDirectory(msg *types.OpenDirectory) error {
w.w.Logger.Printf("opening %s", msg.Directory)
// try the friendly name first, if that fails assume it's a query
w.query = w.queryFromName(msg.Directory)
w.currentQueryName = msg.Directory
info, err := w.gatherDirectoryInfo(msg.Directory, w.query)
if err != nil {
return err
@ -343,11 +341,13 @@ func (w *worker) handleFetchMessageBodyPart(
}
// send updated flags to ui
err = w.emitMessageInfo(m, msg)
if err != nil {
if err = w.emitMessageInfo(m, msg); err != nil {
w.w.Logger.Printf(err.Error())
w.err(msg, err)
}
if err = w.emitDirectoryInfo(w.currentQueryName); err != nil {
w.w.Logger.Printf(err.Error())
}
w.done(msg)
return nil
}
@ -396,6 +396,9 @@ func (w *worker) handleReadMessages(msg *types.ReadMessages) error {
continue
}
}
if err := w.emitDirectoryInfo(w.currentQueryName); err != nil {
w.w.Logger.Printf(err.Error())
}
w.done(msg)
return nil
}