Browse Source

:art: 题头图支持资源文件搜索 https://github.com/siyuan-note/siyuan/issues/9524

Daniel 1 year ago
parent
commit
eba283d8b2
2 changed files with 25 additions and 2 deletions
  1. 9 1
      kernel/api/search.go
  2. 16 1
      kernel/model/assets.go

+ 9 - 1
kernel/api/search.go

@@ -101,7 +101,15 @@ func searchAsset(c *gin.Context) {
 	}
 
 	k := arg["k"].(string)
-	ret.Data = model.SearchAssetsByName(k)
+
+	var exts []string
+	if extsArg := arg["exts"]; nil != extsArg {
+		for _, ext := range extsArg.([]interface{}) {
+			exts = append(exts, ext.(string))
+		}
+	}
+
+	ret.Data = model.SearchAssetsByName(k, exts)
 	return
 }
 

+ 16 - 1
kernel/model/assets.go

@@ -220,11 +220,26 @@ func NetImg2LocalAssets(rootID, originalURL string) (err error) {
 	return
 }
 
-func SearchAssetsByName(keyword string) (ret []*cache.Asset) {
+func SearchAssetsByName(keyword string, exts []string) (ret []*cache.Asset) {
 	ret = []*cache.Asset{}
 
 	count := 0
+	filterByExt := 0 < len(exts)
 	for _, asset := range cache.GetAssets() {
+		if filterByExt {
+			ext := filepath.Ext(asset.HName)
+			includeExt := false
+			for _, e := range exts {
+				if strings.ToLower(ext) == strings.ToLower(e) {
+					includeExt = true
+					break
+				}
+			}
+			if !includeExt {
+				continue
+			}
+		}
+
 		if !strings.Contains(strings.ToLower(asset.HName), strings.ToLower(keyword)) {
 			continue
 		}