diff --git a/app/src/editor/util.ts b/app/src/editor/util.ts
index b64821360..0d5206939 100644
--- a/app/src/editor/util.ts
+++ b/app/src/editor/util.ts
@@ -617,7 +617,7 @@ export const updateOutline = (models: IModels, protyle: IProtyle, reload = false
item.isPreview = !protyle.preview.element.classList.contains("fn__none");
item.update(response, blockId);
if (protyle) {
- item.updateDocTitle(protyle.background.ial, response.data?.length);
+ item.updateDocTitle(protyle.background.ial, response.data?.length || 0);
if (getSelection().rangeCount > 0) {
const startContainer = getSelection().getRangeAt(0).startContainer;
if (protyle.wysiwyg.element.contains(startContainer)) {
diff --git a/app/src/layout/dock/Outline.ts b/app/src/layout/dock/Outline.ts
index fb7b87aaa..9fc1f2b26 100644
--- a/app/src/layout/dock/Outline.ts
+++ b/app/src/layout/dock/Outline.ts
@@ -70,7 +70,7 @@ export class Outline extends Model {
this.updateDocTitle({
title: data.data.title,
icon: Constants.ZWSP
- });
+ }, -1);
}
break;
case "unmount":
@@ -331,6 +331,7 @@ export class Outline extends Model {
preview: this.isPreview
}, response => {
this.update(response);
+ this.updateDocTitle((options.tab.model as Editor)?.editor.protyle?.background?.ial, response.data?.length || 0);
});
}
@@ -478,30 +479,30 @@ export class Outline extends Model {
public updateDocTitle(ial?: IObject, count?: number) {
const docTitleElement = this.headerElement.nextElementSibling as HTMLElement;
if (this.type === "pin") {
+ if (!ial && typeof count === "undefined") {
+ docTitleElement.classList.add("fn__none");
+ return;
+ }
if (ial) {
let iconHTML = `${unicode2Emoji(ial.icon || window.siyuan.storage[Constants.LOCAL_IMAGES].file, "b3-list-item__graphic", true)}`;
if (ial.icon === Constants.ZWSP && docTitleElement.firstElementChild) {
iconHTML = docTitleElement.firstElementChild.outerHTML;
}
- docTitleElement.innerHTML = `${iconHTML}${escapeHtml(ial.title)}`;
+ docTitleElement.innerHTML = `${iconHTML}${escapeHtml(ial.title)}${docTitleElement.querySelector(".counter")?.outerHTML || ""}`;
docTitleElement.setAttribute("title", ial.title);
docTitleElement.classList.remove("fn__none");
- } else if (count === undefined) {
- docTitleElement.classList.add("fn__none");
}
- if (count !== undefined && docTitleElement) {
- const textElement = docTitleElement.querySelector(".b3-list-item__text");
- if (textElement) {
- const counterElement = docTitleElement.querySelector(".counter") as HTMLElement;
- if (count > 0) {
- if (counterElement) {
- counterElement.textContent = count.toString();
- } else {
- textElement.insertAdjacentHTML("afterend", `${count.toString()}`);
- }
+ // count 为 -1 时,不对数量进行更新
+ if (typeof count === "number" && count !== -1) {
+ const counterElement = docTitleElement.querySelector(".counter") as HTMLElement;
+ if (count > 0) {
+ if (counterElement) {
+ counterElement.textContent = count.toString();
} else {
- counterElement?.remove();
+ docTitleElement.insertAdjacentHTML("beforeend", `${count.toString()}`);
}
+ } else {
+ counterElement?.remove();
}
}
} else {
@@ -546,6 +547,7 @@ export class Outline extends Model {
return;
}
this.update(response);
+ this.updateDocTitle(null, response.data?.length || 0);
// https://github.com/siyuan-note/siyuan/issues/8372
if (getSelection().rangeCount > 0) {
const blockElement = hasClosestBlock(getSelection().getRangeAt(0).startContainer);
@@ -643,7 +645,6 @@ export class Outline extends Model {
this.blockId = callbackId;
}
this.tree.updateData(data.data);
- this.updateDocTitle(undefined, data.data?.length);
if (this.isPreview) {
this.tree.element.querySelectorAll(".popover__block").forEach(item => {
diff --git a/app/src/layout/dock/index.ts b/app/src/layout/dock/index.ts
index 8c739bbfe..db7038c72 100644
--- a/app/src/layout/dock/index.ts
+++ b/app/src/layout/dock/index.ts
@@ -613,9 +613,6 @@ export class Dock {
blockId: editor?.protyle?.block?.rootID,
isPreview: editor?.protyle?.preview ? !editor.protyle.preview.element.classList.contains("fn__none") : false
});
- if (editor?.protyle?.title?.editElement) {
- outline.updateDocTitle(editor.protyle?.background?.ial);
- }
tab.addModel(outline);
}
});