mirror of
https://github.com/siyuan-note/siyuan.git
synced 2026-03-10 22:52:34 +01:00
🎨 Improve detection of duplicate insertion of assets https://github.com/siyuan-note/siyuan/issues/16220
Signed-off-by: Daniel <845765@qq.com>
This commit is contained in:
parent
920f7e4623
commit
2567526672
3 changed files with 75 additions and 9 deletions
|
|
@ -51,6 +51,19 @@ import (
|
|||
"github.com/siyuan-note/siyuan/kernel/util"
|
||||
)
|
||||
|
||||
func GetAssetPathByHash(hash string) string {
|
||||
assetHash := cache.GetAssetHash(hash)
|
||||
if nil == assetHash {
|
||||
sqlAsset := sql.QueryAssetByHash(hash)
|
||||
if nil == sqlAsset {
|
||||
return ""
|
||||
}
|
||||
cache.SetAssetHash(sqlAsset.Hash, sqlAsset.Path)
|
||||
return sqlAsset.Path
|
||||
}
|
||||
return assetHash.Path
|
||||
}
|
||||
|
||||
func HandleAssetsRemoveEvent(assetAbsPath string) {
|
||||
removeIndexAssetContent(assetAbsPath)
|
||||
removeAssetThumbnail(assetAbsPath)
|
||||
|
|
@ -648,6 +661,7 @@ func RemoveUnusedAssets() (ret []string) {
|
|||
|
||||
hash, _ := util.GetEtag(p)
|
||||
hashes = append(hashes, hash)
|
||||
cache.RemoveAssetHash(hash)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -703,6 +717,7 @@ func RemoveUnusedAsset(p string) (ret string) {
|
|||
|
||||
hash, _ := util.GetEtag(absPath)
|
||||
sql.BatchRemoveAssetsQueue([]string{hash})
|
||||
cache.RemoveAssetHash(hash)
|
||||
}
|
||||
|
||||
if err = filelock.Remove(absPath); err != nil {
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ import (
|
|||
"github.com/gin-gonic/gin"
|
||||
"github.com/siyuan-note/filelock"
|
||||
"github.com/siyuan-note/logging"
|
||||
"github.com/siyuan-note/siyuan/kernel/sql"
|
||||
"github.com/siyuan-note/siyuan/kernel/cache"
|
||||
"github.com/siyuan-note/siyuan/kernel/treenode"
|
||||
"github.com/siyuan-note/siyuan/kernel/util"
|
||||
)
|
||||
|
|
@ -90,9 +90,9 @@ func InsertLocalAssets(id string, assetAbsPaths []string, isUpload bool) (succMa
|
|||
return
|
||||
}
|
||||
|
||||
if existAsset := sql.QueryAssetByHash(hash); nil != existAsset {
|
||||
if existAssetPath := GetAssetPathByHash(hash); "" != existAssetPath {
|
||||
// 已经存在同样数据的资源文件的话不重复保存
|
||||
succMap[baseName] = existAsset.Path
|
||||
succMap[baseName] = existAssetPath
|
||||
} else {
|
||||
fName = util.AssetName(fName, ast.NewNodeID())
|
||||
writePath := filepath.Join(assetsDirPath, fName)
|
||||
|
|
@ -105,7 +105,10 @@ func InsertLocalAssets(id string, assetAbsPaths []string, isUpload bool) (succMa
|
|||
return
|
||||
}
|
||||
f.Close()
|
||||
succMap[baseName] = "assets/" + fName
|
||||
|
||||
p := "assets/" + fName
|
||||
succMap[baseName] = p
|
||||
cache.SetAssetHash(hash, p)
|
||||
}
|
||||
}
|
||||
IncSync()
|
||||
|
|
@ -197,9 +200,9 @@ func Upload(c *gin.Context) {
|
|||
break
|
||||
}
|
||||
|
||||
if existAsset := sql.QueryAssetByHash(hash); nil != existAsset {
|
||||
if existAssetPath := GetAssetPathByHash(hash); "" != existAssetPath {
|
||||
// 已经存在同样数据的资源文件的话不重复保存
|
||||
succMap[baseName] = existAsset.Path
|
||||
succMap[baseName] = existAssetPath
|
||||
} else {
|
||||
if skipIfDuplicated {
|
||||
// 复制 PDF 矩形注解时不再重复插入图片 No longer upload image repeatedly when copying PDF rectangle annotation https://github.com/siyuan-note/siyuan/issues/10666
|
||||
|
|
@ -310,7 +313,9 @@ func Upload(c *gin.Context) {
|
|||
os.RemoveAll(tmpDir2)
|
||||
}
|
||||
|
||||
succMap[baseName] = strings.TrimPrefix(path.Join(relAssetsDirPath, fName), "/")
|
||||
p := strings.TrimPrefix(path.Join(relAssetsDirPath, fName), "/")
|
||||
succMap[baseName] = p
|
||||
cache.SetAssetHash(hash, p)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue