notmuch: refresh dirlist in background

This commit is contained in:
Reto Brunner 2020-02-15 14:14:47 +01:00 committed by Drew DeVault
parent 8d216ab10e
commit 78dd043057
3 changed files with 27 additions and 1 deletions

View file

@ -2,8 +2,21 @@ package notmuch
func (w *worker) handleNotmuchEvent(et eventType) error {
switch ev := et.(type) {
case *updateDirCounts:
return w.handleUpdateDirCounts(ev)
default:
_ = ev
return errUnsupported
}
}
func (w *worker) handleUpdateDirCounts(ev eventType) error {
for name, query := range w.nameQueryMap {
info, err := w.gatherDirectoryInfo(name, query)
if err != nil {
w.w.Logger.Printf("could not gather DirectoryInfo: %v\n", err)
continue
}
w.w.PostMessage(info, nil)
}
return nil
}

View file

@ -3,3 +3,7 @@ package notmuch
type eventType interface{}
type event struct{}
type updateDirCounts struct {
event
}

View file

@ -9,6 +9,7 @@ import (
"os"
"path/filepath"
"strings"
"time"
"git.sr.ht/~sircmpwn/aerc/config"
"git.sr.ht/~sircmpwn/aerc/lib/uidstore"
@ -26,6 +27,8 @@ func init() {
var errUnsupported = fmt.Errorf("unsupported command")
const backgroundRefreshDelay = 1 * time.Minute
type worker struct {
w *types.Worker
nmEvents chan eventType
@ -168,6 +171,12 @@ func (w *worker) handleConnect(msg *types.Connect) error {
}
w.done(msg)
w.emitLabelList()
go func() {
for {
w.nmEvents <- &updateDirCounts{}
time.Sleep(backgroundRefreshDelay)
}
}()
return nil
}