Merge remote-tracking branch 'origin/dev' into dev

This commit is contained in:
Vanessa 2023-08-20 12:26:55 +08:00
commit e42d6abde7
3 changed files with 21 additions and 8 deletions

View file

@ -286,10 +286,16 @@ func buildAssetContentOrderBy(orderBy int) string {
var assetContentSearcher = NewAssetsSearcher()
func IndexAssetContent(absPath string) {
func RemoveIndexAssetContent(absPath string) {
defer logging.Recover()
assetsDir := util.GetDataAssetsAbsPath()
p := "assets" + filepath.ToSlash(strings.TrimPrefix(absPath, assetsDir))
sql.DeleteAssetContentsByPathQueue(p)
}
func IndexAssetContent(absPath string) {
defer logging.Recover()
ext := filepath.Ext(absPath)
parser := assetContentSearcher.GetParser(ext)
@ -308,6 +314,7 @@ func IndexAssetContent(absPath string) {
return
}
assetsDir := util.GetDataAssetsAbsPath()
p := "assets" + filepath.ToSlash(strings.TrimPrefix(absPath, assetsDir))
assetContents := []*sql.AssetContent{

View file

@ -74,9 +74,10 @@ func watchAssets() {
lastEvent = event
timer.Reset(time.Millisecond * 100)
if lastEvent.Op&fsnotify.Rename == fsnotify.Rename {
// 索引资源文件内容
if lastEvent.Op&fsnotify.Rename == fsnotify.Rename || lastEvent.Op&fsnotify.Write == fsnotify.Write {
IndexAssetContent(lastEvent.Name)
} else if lastEvent.Op&fsnotify.Remove == fsnotify.Remove {
RemoveIndexAssetContent(lastEvent.Name)
}
case err, ok := <-assetsWatcher.Errors:
if !ok {
@ -86,15 +87,17 @@ func watchAssets() {
case <-timer.C:
//logging.LogInfof("assets changed: %s", lastEvent)
if lastEvent.Op&fsnotify.Write == fsnotify.Write {
// 外部修改已有资源文件后纳入云端同步 https://github.com/siyuan-note/siyuan/issues/4694
IncSync()
}
// 重新缓存资源文件,以便使用 /资源 搜索
go cache.LoadAssets()
// 索引资源文件内容
IndexAssetContent(lastEvent.Name)
if lastEvent.Op&fsnotify.Remove == fsnotify.Remove {
RemoveIndexAssetContent(lastEvent.Name)
} else {
IndexAssetContent(lastEvent.Name)
}
}
}
}()

View file

@ -60,8 +60,11 @@ func watchAssets() {
// 重新缓存资源文件,以便使用 /资源 搜索
go cache.LoadAssets()
// 索引资源文件内容
IndexAssetContent(event.Path)
if watcher.Remove == event.Op {
RemoveIndexAssetContent(event.Path)
} else {
IndexAssetContent(event.Path)
}
case err, ok := <-assetsWatcher.Error:
if !ok {
return