summary refs log tree commit diff stats
path: root/worker
diff options
context:
space:
mode:
Diffstat (limited to 'worker')
-rw-r--r--worker/notmuch/worker.go23
1 files changed, 13 insertions, 10 deletions
diff --git a/worker/notmuch/worker.go b/worker/notmuch/worker.go
index dfcfa77..8b2c477 100644
--- a/worker/notmuch/worker.go
+++ b/worker/notmuch/worker.go
@@ -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())
+	}
+	if err = w.emitDirectoryInfo(w.currentQueryName); err != nil {
 		w.w.Logger.Printf(err.Error())
-		w.err(msg, err)
 	}
+
 	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
 }