diff --git a/kernel/job/cron.go b/kernel/job/cron.go index 7255631f2..133c2fbd7 100644 --- a/kernel/job/cron.go +++ b/kernel/job/cron.go @@ -44,6 +44,7 @@ func StartCron() { go every(30*time.Second, model.HookDesktopUIProcJob) go every(24*time.Hour, model.AutoPurgeRepoJob) go every(30*time.Minute, model.AutoCheckMicrosoftDefender) + go every(3*time.Second, model.WatchLocalShorthands) } func every(interval time.Duration, f func()) { diff --git a/kernel/model/shortcuts.go b/kernel/model/shortcuts.go index 9f53f75b0..53dd42037 100644 --- a/kernel/model/shortcuts.go +++ b/kernel/model/shortcuts.go @@ -33,7 +33,7 @@ func MoveLocalShorthands(boxID, hPath, parentID, id string) (retID string, err e return } - dir, err := os.ReadDir(shorthandsDir) + entries, err := os.ReadDir(shorthandsDir) if nil != err { logging.LogErrorf("read dir [%s] failed: %s", shorthandsDir, err) return @@ -41,7 +41,7 @@ func MoveLocalShorthands(boxID, hPath, parentID, id string) (retID string, err e buff := bytes.Buffer{} var toRemoves []string - for _, entry := range dir { + for _, entry := range entries { if entry.IsDir() { continue } @@ -88,3 +88,35 @@ func MoveLocalShorthands(boxID, hPath, parentID, id string) (retID string, err e clearShorthand(toRemoves) return } + +func WatchLocalShorthands() { + shorthandsDir := filepath.Join(util.ShortcutsPath, "shorthands") + if !gulu.File.IsDir(shorthandsDir) { + return + } + + entries, err := os.ReadDir(shorthandsDir) + if nil != err { + logging.LogErrorf("read dir [%s] failed: %s", shorthandsDir, err) + return + } + + shorthandCount := 0 + for _, entry := range entries { + if entry.IsDir() { + continue + } + + if filepath.Ext(entry.Name()) != ".md" { + continue + } + + shorthandCount++ + } + + if 1 > shorthandCount { + return + } + + util.PushLocalShorthandCount(shorthandCount) +} diff --git a/kernel/util/websocket.go b/kernel/util/websocket.go index 954c427ed..6ba724266 100644 --- a/kernel/util/websocket.go +++ b/kernel/util/websocket.go @@ -275,6 +275,10 @@ func PushSetDefRefCount(rootID, blockID string, defIDs []string, refCount, rootR BroadcastByType("main", "setDefRefCount", 0, "", map[string]interface{}{"rootID": rootID, "blockID": blockID, "refCount": refCount, "rootRefCount": rootRefCount, "defIDs": defIDs}) } +func PushLocalShorthandCount(count int) { + BroadcastByType("main", "setLocalShorthandCount", 0, "", map[string]interface{}{"count": count}) +} + func PushProtyleLoading(rootID, msg string) { BroadcastByType("protyle", "addLoading", 0, msg, rootID) }