diff --git a/kernel/go.mod b/kernel/go.mod index f78c37244..fc9d274a5 100644 --- a/kernel/go.mod +++ b/kernel/go.mod @@ -40,7 +40,7 @@ require ( github.com/patrickmn/go-cache v2.1.0+incompatible github.com/qiniu/go-sdk/v7 v7.13.0 github.com/radovskyb/watcher v1.0.7 - github.com/siyuan-note/dejavu v0.0.0-20220625094848-7e1437e9c8c2 + github.com/siyuan-note/dejavu v0.0.0-20220625122139-d442191b9acc github.com/siyuan-note/encryption v0.0.0-20220612074546-f1dd94fe8676 github.com/siyuan-note/eventbus v0.0.0-20220624162334-ca7c06dc771f github.com/siyuan-note/filelock v0.0.0-20220616063212-74cfba0754ee diff --git a/kernel/go.sum b/kernel/go.sum index 1d08e668e..4dccf159e 100644 --- a/kernel/go.sum +++ b/kernel/go.sum @@ -423,6 +423,8 @@ github.com/shurcooL/vfsgen v0.0.0-20200824052919-0d455de96546/go.mod h1:TrYk7fJV github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/siyuan-note/dejavu v0.0.0-20220625094848-7e1437e9c8c2 h1:G0gSYBcywwHgHQesFo/tGbKc2tEGsWBmncEuGpGH1Xg= github.com/siyuan-note/dejavu v0.0.0-20220625094848-7e1437e9c8c2/go.mod h1:i7dnOgHM41EA7xIX2CYSxYe0WhksGZidQQsLvWryK7w= +github.com/siyuan-note/dejavu v0.0.0-20220625122139-d442191b9acc h1:wbgMZUgzWFOyeTJ9vtyW+N8v+bCzcBRR2LbaurN76so= +github.com/siyuan-note/dejavu v0.0.0-20220625122139-d442191b9acc/go.mod h1:i7dnOgHM41EA7xIX2CYSxYe0WhksGZidQQsLvWryK7w= github.com/siyuan-note/encryption v0.0.0-20220612074546-f1dd94fe8676 h1:QB9TjJQFhXhZ6dAtPpY02DlzHAQm1C+WqZq6OadG8mI= github.com/siyuan-note/encryption v0.0.0-20220612074546-f1dd94fe8676/go.mod h1:H8fyqqAbp9XreANjeSbc72zEdFfKTXYN34tc1TjZwtw= github.com/siyuan-note/eventbus v0.0.0-20220624162334-ca7c06dc771f h1:JMobMNZ7AqaKKyEK+WeWFhix/2TDQXgPZDajU00IybU= diff --git a/kernel/model/repository.go b/kernel/model/repository.go index 1bcb293d5..178efc8cb 100644 --- a/kernel/model/repository.go +++ b/kernel/model/repository.go @@ -34,60 +34,150 @@ import ( ) func init() { - eventbus.Subscribe(dejavu.EvtIndexWalkData, func(path string) { - msg := "Indexing repo walk data [" + path + "]" + eventbus.Subscribe(dejavu.EvtIndexWalkData, func(context map[string]interface{}, path string) { + msg := "Indexing repo [walk data " + path + "]" util.SetBootDetails(msg) - util.PushEndlessProgress(msg) + + switch context[CtxPushMsg].(int) { + case CtxPushMsgToProgress: + util.PushEndlessProgress(msg) + case CtxPushMsgToStatusBar: + util.PushStatusBar(msg) + case CtxPushMsgToStatusBarAndProgress: + util.PushStatusBar(msg) + util.PushEndlessProgress(msg) + } }) - eventbus.Subscribe(dejavu.EvtIndexGetLatestFile, func(path string) { - msg := "Indexing repo get latest file [" + path + "]" + eventbus.Subscribe(dejavu.EvtIndexGetLatestFile, func(context map[string]interface{}, path string) { + msg := "Indexing repo [get latest file " + path + "]" util.SetBootDetails(msg) - util.PushEndlessProgress(msg) + + switch context[CtxPushMsg].(int) { + case CtxPushMsgToProgress: + util.PushEndlessProgress(msg) + case CtxPushMsgToStatusBar: + util.PushStatusBar(msg) + case CtxPushMsgToStatusBarAndProgress: + util.PushStatusBar(msg) + util.PushEndlessProgress(msg) + } }) - eventbus.Subscribe(dejavu.EvtIndexUpsertFile, func(path string) { - msg := "Indexing repo upsert file [" + path + "]" + eventbus.Subscribe(dejavu.EvtIndexUpsertFile, func(context map[string]interface{}, path string) { + msg := "Indexing repo [upsert file " + path + "]" util.SetBootDetails(msg) - util.PushEndlessProgress(msg) + + switch context[CtxPushMsg].(int) { + case CtxPushMsgToProgress: + util.PushEndlessProgress(msg) + case CtxPushMsgToStatusBar: + util.PushStatusBar(msg) + case CtxPushMsgToStatusBarAndProgress: + util.PushStatusBar(msg) + util.PushEndlessProgress(msg) + } }) - eventbus.Subscribe(dejavu.EvtCheckoutWalkData, func(path string) { - msg := "Checkout repo walk data [" + path + "]" + eventbus.Subscribe(dejavu.EvtCheckoutWalkData, func(context map[string]interface{}, path string) { + msg := "Checkout repo [walk data " + path + "]" util.SetBootDetails(msg) - util.PushEndlessProgress(msg) + + switch context[CtxPushMsg].(int) { + case CtxPushMsgToProgress: + util.PushEndlessProgress(msg) + case CtxPushMsgToStatusBar: + util.PushStatusBar(msg) + case CtxPushMsgToStatusBarAndProgress: + util.PushStatusBar(msg) + util.PushEndlessProgress(msg) + } }) - eventbus.Subscribe(dejavu.EvtCheckoutUpsertFile, func(path string) { - msg := "Checkout repo upsert file [" + path + "]" + eventbus.Subscribe(dejavu.EvtCheckoutUpsertFile, func(context map[string]interface{}, path string) { + msg := "Checkout repo [upsert file " + path + "]" util.SetBootDetails(msg) - util.PushEndlessProgress(msg) + + switch context[CtxPushMsg].(int) { + case CtxPushMsgToProgress: + util.PushEndlessProgress(msg) + case CtxPushMsgToStatusBar: + util.PushStatusBar(msg) + case CtxPushMsgToStatusBarAndProgress: + util.PushStatusBar(msg) + util.PushEndlessProgress(msg) + } }) - eventbus.Subscribe(dejavu.EvtCheckoutRemoveFile, func(path string) { - msg := "Checkout repo remove file [" + path + "]" + eventbus.Subscribe(dejavu.EvtCheckoutRemoveFile, func(context map[string]interface{}, path string) { + msg := "Checkout repo [remove file " + path + "]" util.SetBootDetails(msg) - util.PushEndlessProgress(msg) + + switch context[CtxPushMsg].(int) { + case CtxPushMsgToProgress: + util.PushEndlessProgress(msg) + case CtxPushMsgToStatusBar: + util.PushStatusBar(msg) + case CtxPushMsgToStatusBarAndProgress: + util.PushStatusBar(msg) + util.PushEndlessProgress(msg) + } }) - eventbus.Subscribe(dejavu.EvtSyncBeforeDownloadCloudIndexes, func(latestSync string) { + eventbus.Subscribe(dejavu.EvtSyncBeforeDownloadCloudIndexes, func(context map[string]interface{}, latestSync string) { msg := "Downloading repo indexes..." util.SetBootDetails(msg) - util.PushEndlessProgress(msg) + + switch context[CtxPushMsg].(int) { + case CtxPushMsgToProgress: + util.PushEndlessProgress(msg) + case CtxPushMsgToStatusBar: + util.PushStatusBar(msg) + case CtxPushMsgToStatusBarAndProgress: + util.PushStatusBar(msg) + util.PushEndlessProgress(msg) + } }) - eventbus.Subscribe(dejavu.EvtSyncBeforeDownloadCloudFile, func(id string) { + eventbus.Subscribe(dejavu.EvtSyncBeforeDownloadCloudFile, func(context map[string]interface{}, id string) { msg := "Downloading repo object [" + id + "]" util.SetBootDetails(msg) - util.PushEndlessProgress(msg) + + switch context[CtxPushMsg].(int) { + case CtxPushMsgToProgress: + util.PushEndlessProgress(msg) + case CtxPushMsgToStatusBar: + util.PushStatusBar(msg) + case CtxPushMsgToStatusBarAndProgress: + util.PushStatusBar(msg) + util.PushEndlessProgress(msg) + } }) - eventbus.Subscribe(dejavu.EvtSyncBeforeDownloadCloudChunk, func(id string) { + eventbus.Subscribe(dejavu.EvtSyncBeforeDownloadCloudChunk, func(context map[string]interface{}, id string) { msg := "Downloading repo object [" + id + "]" util.SetBootDetails(msg) - util.PushEndlessProgress(msg) + + switch context[CtxPushMsg].(int) { + case CtxPushMsgToProgress: + util.PushEndlessProgress(msg) + case CtxPushMsgToStatusBar: + util.PushStatusBar(msg) + case CtxPushMsgToStatusBarAndProgress: + util.PushStatusBar(msg) + util.PushEndlessProgress(msg) + } }) - eventbus.Subscribe(dejavu.EvtSyncBeforeUploadObject, func(id string) { + eventbus.Subscribe(dejavu.EvtSyncBeforeUploadObject, func(context map[string]interface{}, id string) { msg := "Uploading repo object [" + id + "]" util.SetBootDetails(msg) - util.PushEndlessProgress(msg) + + switch context[CtxPushMsg].(int) { + case CtxPushMsgToProgress: + util.PushEndlessProgress(msg) + case CtxPushMsgToStatusBar: + util.PushStatusBar(msg) + case CtxPushMsgToStatusBarAndProgress: + util.PushStatusBar(msg) + util.PushEndlessProgress(msg) + } }) } @@ -229,7 +319,9 @@ func CheckoutRepo(id string) (err error) { Conf.Sync.Enabled = false Conf.Save() - err = repo.Checkout(id) + err = repo.Checkout(id, map[string]interface{}{ + CtxPushMsg: CtxPushMsgToStatusBarAndProgress, + }) if nil != err { util.PushClearProgress() return @@ -269,11 +361,21 @@ func IndexRepo(memo string) (err error) { WaitForWritingFiles() sql.WaitForWritingDatabase() filelock.ReleaseAllFileLocks() - _, err = repo.Index(memo) + _, err = repo.Index(memo, map[string]interface{}{ + CtxPushMsg: CtxPushMsgToStatusBarAndProgress, + }) util.PushClearProgress() return } +const ( + CtxPushMsg = "pushMsg" + + CtxPushMsgToProgress = iota + CtxPushMsgToStatusBar + CtxPushMsgToStatusBarAndProgress +) + func indexRepoBeforeCloudSync() { if 1 > len(Conf.Repo.Key) { return @@ -287,7 +389,9 @@ func indexRepoBeforeCloudSync() { start := time.Now() latest, err := repo.Latest() - index, err := repo.Index("[Auto] Cloud sync") + index, err := repo.Index("[Auto] Cloud sync", map[string]interface{}{ + CtxPushMsg: CtxPushMsgToStatusBar, + }) if nil != err { util.LogErrorf("index repo before cloud sync failed: %s", err) return diff --git a/kernel/util/websocket.go b/kernel/util/websocket.go index 1b002722b..b3eda3aad 100644 --- a/kernel/util/websocket.go +++ b/kernel/util/websocket.go @@ -144,6 +144,10 @@ func PushErrMsg(msg string, timeout int) (msgId string) { return } +func PushStatusBar(msg string) { + BroadcastByType("main", "statusbar", 0, msg, nil) +} + const ( PushProgressCodeProgressed = 0 // 有进度 PushProgressCodeEndless = 1 // 无进度