From 9f3cd7ca95ccd88dcc36aebd9bc1a2fb15940c38 Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Fri, 3 Oct 2025 21:59:19 +0800 Subject: [PATCH] :art: API `getTag` add an optional parameter `ignoreMaxListHint` https://github.com/siyuan-note/siyuan/issues/16000 Signed-off-by: Daniel <845765@qq.com> --- app/src/layout/dock/Files.ts | 8 ++++++-- app/src/mobile/dock/MobileFiles.ts | 7 +++++-- app/src/util/pathName.ts | 1 + kernel/api/filetree.go | 6 +++++- kernel/api/tag.go | 3 ++- kernel/model/tag.go | 4 ++-- kernel/util/websocket.go | 10 ++++++++++ 7 files changed, 31 insertions(+), 8 deletions(-) diff --git a/app/src/layout/dock/Files.ts b/app/src/layout/dock/Files.ts index b765002d3..2f882c186 100644 --- a/app/src/layout/dock/Files.ts +++ b/app/src/layout/dock/Files.ts @@ -751,6 +751,7 @@ export class Files extends Model { fetchPost("/api/filetree/listDocsByPath", { notebook: toURL, path: toDir === "/" ? "/" : toDir + ".sy", + app: Constants.SIYUAN_APPID, }, response => { if (response.data.path === "/" && response.data.files.length === 0) { showMessage(window.siyuan.languages.emptyContent); @@ -1123,7 +1124,8 @@ data-type="navigation-root" data-path="/"> } else if (filePath.startsWith(item.path.replace(".sy", ""))) { const response = await fetchSyncPost("/api/filetree/listDocsByPath", { notebook: data.box, - path: item.path + path: item.path, + app: Constants.SIYUAN_APPID, }); newLiElement = await this.selectItem(response.data.box, filePath, response.data, setStorage, isSetCurrent); } @@ -1160,6 +1162,7 @@ data-type="navigation-root" data-path="/"> fetchPost("/api/filetree/listDocsByPath", { notebook: notebookId, path: liElement.getAttribute("data-path"), + app: Constants.SIYUAN_APPID, }, response => { if (response.data.path === "/" && response.data.files.length === 0) { newFile({ @@ -1215,7 +1218,8 @@ data-type="navigation-root" data-path="/"> } else { const response = await fetchSyncPost("/api/filetree/listDocsByPath", { notebook: notebookId, - path: currentPath + path: currentPath, + app: Constants.SIYUAN_APPID, }); liElement = await this.onLsSelect(response.data, filePath, setStorage, isSetCurrent); } diff --git a/app/src/mobile/dock/MobileFiles.ts b/app/src/mobile/dock/MobileFiles.ts index 46e802609..a3d70e579 100644 --- a/app/src/mobile/dock/MobileFiles.ts +++ b/app/src/mobile/dock/MobileFiles.ts @@ -603,7 +603,8 @@ export class MobileFiles extends Model { } else if (filePath.startsWith(item.path.replace(".sy", ""))) { const response = await fetchSyncPost("/api/filetree/listDocsByPath", { notebook: data.box, - path: item.path + path: item.path, + app: Constants.SIYUAN_APPID, }); newLiElement = await this.selectItem(response.data.box, filePath, response.data, setStorage, isSetCurrent); } @@ -640,6 +641,7 @@ export class MobileFiles extends Model { fetchPost("/api/filetree/listDocsByPath", { notebook: notebookId, path: liElement.getAttribute("data-path"), + app: Constants.SIYUAN_APPID, }, response => { if (response.data.path === "/" && response.data.files.length === 0) { newFile({ @@ -695,7 +697,8 @@ export class MobileFiles extends Model { } else { const response = await fetchSyncPost("/api/filetree/listDocsByPath", { notebook: notebookId, - path: currentPath + path: currentPath, + app: Constants.SIYUAN_APPID, }); liElement = await this.onLsSelect(response.data, filePath, setStorage, isSetCurrent); } diff --git a/app/src/util/pathName.ts b/app/src/util/pathName.ts index 9aff34b8f..22be5434f 100644 --- a/app/src/util/pathName.ts +++ b/app/src/util/pathName.ts @@ -607,6 +607,7 @@ const getLeaf = (liElement: HTMLElement, flashcard: boolean) => { notebook: notebookId, path: liElement.getAttribute("data-path"), flashcard, + app: Constants.SIYUAN_APPID, }, response => { if (response.data.files.length === 0) { showMessage(window.siyuan.languages.emptyContent); diff --git a/kernel/api/filetree.go b/kernel/api/filetree.go index b8d5ebb15..a8bb81b8a 100644 --- a/kernel/api/filetree.go +++ b/kernel/api/filetree.go @@ -1075,7 +1075,11 @@ func listDocsByPath(c *gin.Context) { // API `listDocsByPath` add an optional parameter `ignoreMaxListHint` https://github.com/siyuan-note/siyuan/issues/10290 ignoreMaxListHintArg := arg["ignoreMaxListHint"] if nil == ignoreMaxListHintArg || !ignoreMaxListHintArg.(bool) { - util.PushMsg(fmt.Sprintf(model.Conf.Language(48), len(files)), 7000) + var app string + if nil != arg["app"] { + app = arg["app"].(string) + } + util.PushMsgWithApp(app, fmt.Sprintf(model.Conf.Language(48), len(files)), 7000) } } diff --git a/kernel/api/tag.go b/kernel/api/tag.go index da2ebf701..4f5eabd85 100644 --- a/kernel/api/tag.go +++ b/kernel/api/tag.go @@ -50,7 +50,8 @@ func getTag(c *gin.Context) { ignoreMaxListHint = ignoreMaxListHintArg.(bool) } - ret.Data = model.BuildTags(ignoreMaxListHint) + app := arg["app"].(string) + ret.Data = model.BuildTags(ignoreMaxListHint, app) } func renameTag(c *gin.Context) { diff --git a/kernel/model/tag.go b/kernel/model/tag.go index a44d7c0f0..fa4197e96 100644 --- a/kernel/model/tag.go +++ b/kernel/model/tag.go @@ -236,7 +236,7 @@ type Tag struct { type Tags []*Tag -func BuildTags(ignoreMaxListHintArg bool) (ret *Tags) { +func BuildTags(ignoreMaxListHintArg bool, appID string) (ret *Tags) { FlushTxQueue() sql.FlushQueue() @@ -255,7 +255,7 @@ func BuildTags(ignoreMaxListHintArg bool) (ret *Tags) { *tmp = append(*tmp, tag) countTag(tag, &total) if Conf.FileTree.MaxListCount < total && !ignoreMaxListHintArg { - util.PushMsg(fmt.Sprintf(Conf.Language(243), Conf.FileTree.MaxListCount), 7000) + util.PushMsgWithApp(appID, fmt.Sprintf(Conf.Language(243), Conf.FileTree.MaxListCount), 7000) break } } diff --git a/kernel/util/websocket.go b/kernel/util/websocket.go index a0638d5b0..7871f106a 100644 --- a/kernel/util/websocket.go +++ b/kernel/util/websocket.go @@ -163,6 +163,16 @@ func PushMsg(msg string, timeout int) (msgId string) { return } +func PushMsgWithApp(app, msg string, timeout int) (msgId string) { + msgId = gulu.Rand.String(7) + if "" == app { + BroadcastByType("main", "msg", 0, msg, map[string]interface{}{"id": msgId, "closeTimeout": timeout}) + return + } + BroadcastByTypeAndApp("main", app, "msg", 0, msg, map[string]interface{}{"id": msgId, "closeTimeout": timeout}) + return +} + func PushErrMsg(msg string, timeout int) (msgId string) { msgId = gulu.Rand.String(7) BroadcastByType("main", "msg", -1, msg, map[string]interface{}{"id": msgId, "closeTimeout": timeout})