diff --git a/app/src/boot/onGetConfig.ts b/app/src/boot/onGetConfig.ts index 1906e64c7..946fae129 100644 --- a/app/src/boot/onGetConfig.ts +++ b/app/src/boot/onGetConfig.ts @@ -88,7 +88,7 @@ const hasKeymap = (keymap: Record, key1: "general" | "edito return match; }; -export const onGetConfig = async (isStart: boolean, app: App) => { +export const onGetConfig = (isStart: boolean, app: App) => { const matchKeymap1 = matchKeymap(Constants.SIYUAN_KEYMAP.general, "general"); const matchKeymap2 = matchKeymap(Constants.SIYUAN_KEYMAP.editor.general, "editor", "general"); const matchKeymap3 = matchKeymap(Constants.SIYUAN_KEYMAP.editor.insert, "editor", "insert"); @@ -142,7 +142,6 @@ export const onGetConfig = async (isStart: boolean, app: App) => { appearance.onSetappearance(window.siyuan.config.appearance); initAssets(); setInlineStyle(); - await loadPlugins(app); renderSnippet(); let resizeTimeout = 0; window.addEventListener("resize", () => { diff --git a/app/src/index.ts b/app/src/index.ts index a2ca0f460..81905ee57 100644 --- a/app/src/index.ts +++ b/app/src/index.ts @@ -25,6 +25,7 @@ import {getAllTabs} from "./layout/getAll"; import {getLocalStorage} from "./protyle/util/compatibility"; import {getSearch} from "./util/functions"; import {hideAllElements} from "./protyle/ui/hideElements"; +import {loadPlugins} from "./plugin/loader"; import "./assets/scss/base.scss"; export class App { @@ -39,7 +40,7 @@ export class App { addScript(`${Constants.PROTYLE_CDN}/js/protyle-html.js?v=${Constants.SIYUAN_VERSION}`, "protyleWcHtmlScript"); addBaseURL(); - this.appId =Constants.SIYUAN_APPID; + this.appId = Constants.SIYUAN_APPID; window.siyuan = { zIndex: 10, transactions: [], @@ -146,7 +147,7 @@ export class App { }), }; - fetchPost("/api/system/getConf", {}, (response) => { + fetchPost("/api/system/getConf", {}, async (response) => { window.siyuan.config = response.data.conf; // 历史数据兼容,202306后可删除 if (window.siyuan.config.uiLayout.left && !window.siyuan.config.uiLayout.left.data) { @@ -163,6 +164,7 @@ export class App { data: response.data.conf.uiLayout.bottom }; } + await loadPlugins(this); getLocalStorage(() => { fetchGet(`/appearance/langs/${window.siyuan.config.appearance.lang}.json?v=${Constants.SIYUAN_VERSION}`, (lauguages) => { window.siyuan.languages = lauguages; diff --git a/app/src/mobile/index.ts b/app/src/mobile/index.ts index f9a0bcb38..6fb8c743d 100644 --- a/app/src/mobile/index.ts +++ b/app/src/mobile/index.ts @@ -80,9 +80,10 @@ class App { window.addEventListener("pagehide", () => { saveScroll(window.siyuan.mobile.editor.protyle); }, false); - fetchPost("/api/system/getConf", {}, (confResponse) => { + fetchPost("/api/system/getConf", {}, async (confResponse) => { confResponse.data.conf.keymap = Constants.SIYUAN_KEYMAP; window.siyuan.config = confResponse.data.conf; + await loadPlugins(this); getLocalStorage(() => { fetchGet(`/appearance/langs/${window.siyuan.config.appearance.lang}.json?v=${Constants.SIYUAN_VERSION}`, (lauguages) => { window.siyuan.languages = lauguages; diff --git a/app/src/mobile/util/MobileBackFoward.ts b/app/src/mobile/util/MobileBackFoward.ts index 6b55878db..5d63f9a25 100644 --- a/app/src/mobile/util/MobileBackFoward.ts +++ b/app/src/mobile/util/MobileBackFoward.ts @@ -109,18 +109,20 @@ const focusStack = (backStack: IBackStack) => { export const pushBack = () => { const protyle = getCurrentEditor().protyle; - window.siyuan.backStack.push({ - id: protyle.block.showAll ? protyle.block.id : protyle.block.rootID, - data: { - startId: protyle.wysiwyg.element.firstElementChild.getAttribute("data-node-id"), - endId: protyle.wysiwyg.element.lastElementChild.getAttribute("data-node-id"), - notebookId: protyle.notebookId, - path: protyle.path, - }, - scrollTop: protyle.contentElement.scrollTop, - callback: protyle.block.action, - zoomId: protyle.block.showAll ? protyle.block.id : undefined - }); + if (protyle.wysiwyg.element.firstElementChild) { + window.siyuan.backStack.push({ + id: protyle.block.showAll ? protyle.block.id : protyle.block.rootID, + data: { + startId: protyle.wysiwyg.element.firstElementChild.getAttribute("data-node-id"), + endId: protyle.wysiwyg.element.lastElementChild.getAttribute("data-node-id"), + notebookId: protyle.notebookId, + path: protyle.path, + }, + scrollTop: protyle.contentElement.scrollTop, + callback: protyle.block.action, + zoomId: protyle.block.showAll ? protyle.block.id : undefined + }); + } }; export const goBack = () => { diff --git a/app/src/mobile/util/initFramework.ts b/app/src/mobile/util/initFramework.ts index 4a6c9eeed..3a92cd921 100644 --- a/app/src/mobile/util/initFramework.ts +++ b/app/src/mobile/util/initFramework.ts @@ -19,11 +19,9 @@ import {activeBlur, hideKeyboardToolbar, initKeyboardToolbar} from "./keyboardTo import {syncGuide} from "../../sync/syncGuide"; import {Inbox} from "../../layout/dock/Inbox"; import {App} from "../../index"; -import {loadPlugins} from "../../plugin/loader"; -export const initFramework = async (app: App) => { +export const initFramework = (app: App) => { setInlineStyle(); - await loadPlugins(app); renderSnippet(); initKeyboardToolbar(); const sidebarElement = document.getElementById("sidebar"); diff --git a/app/src/protyle/util/addStyle.ts b/app/src/protyle/util/addStyle.ts index 1b2845fca..8017dc072 100644 --- a/app/src/protyle/util/addStyle.ts +++ b/app/src/protyle/util/addStyle.ts @@ -5,6 +5,11 @@ export const addStyle = (url: string, id: string) => { styleElement.rel = "stylesheet"; styleElement.type = "text/css"; styleElement.href = url; - document.getElementsByTagName("head")[0].appendChild(styleElement); + const pluginsStyle = document.querySelector("#pluginsStyle"); + if (pluginsStyle) { + pluginsStyle.before(styleElement); + } else { + document.getElementsByTagName("head")[0].appendChild(styleElement); + } } }; diff --git a/app/src/util/assets.ts b/app/src/util/assets.ts index 3b145e7ca..369530b60 100644 --- a/app/src/util/assets.ts +++ b/app/src/util/assets.ts @@ -229,7 +229,7 @@ export const setInlineStyle = (set = true) => { if (siyuanStyle) { siyuanStyle.innerHTML = style; } else { - document.head.insertAdjacentHTML("beforeend", ``); + document.querySelector("#pluginsStyle").insertAdjacentHTML("beforebegin", ``); } } return style; diff --git a/app/src/window/index.ts b/app/src/window/index.ts index f3911bcdc..7c5228bac 100644 --- a/app/src/window/index.ts +++ b/app/src/window/index.ts @@ -19,6 +19,7 @@ import {initMessage} from "../dialog/message"; import {getAllTabs} from "../layout/getAll"; import {getLocalStorage} from "../protyle/util/compatibility"; import {init} from "../window/init"; +import {loadPlugins} from "../plugin/loader"; class App { public plugins: import("../plugin").Plugin[] = []; @@ -127,8 +128,9 @@ class App { } }), }; - fetchPost("/api/system/getConf", {}, (response) => { + fetchPost("/api/system/getConf", {}, async (response) => { window.siyuan.config = response.data.conf; + await loadPlugins(this); getLocalStorage(() => { fetchGet(`/appearance/langs/${window.siyuan.config.appearance.lang}.json?v=${Constants.SIYUAN_VERSION}`, (lauguages) => { window.siyuan.languages = lauguages; diff --git a/app/src/window/init.ts b/app/src/window/init.ts index b9ed27960..5738501d0 100644 --- a/app/src/window/init.ts +++ b/app/src/window/init.ts @@ -10,11 +10,11 @@ import {renderSnippet} from "../config/util/snippets"; import {getSearch} from "../util/functions"; import {initWindow} from "../boot/onGetConfig"; import {App} from "../index"; -import {afterLoadPlugin, loadPlugins} from "../plugin/loader"; +import {afterLoadPlugin} from "../plugin/loader"; import {Tab} from "../layout/Tab"; import {initWindowEvent} from "../boot/globalEvent/event"; -export const init = async (app: App) => { +export const init = (app: App) => { webFrame.setZoomFactor(window.siyuan.storage[Constants.LOCAL_ZOOM]); initWindowEvent(app); fetchPost("/api/system/getEmojiConf", {}, response => { @@ -48,7 +48,6 @@ export const init = async (app: App) => { appearance.onSetappearance(window.siyuan.config.appearance); initAssets(); setInlineStyle(); - await loadPlugins(app); renderSnippet(); let resizeTimeout = 0; window.addEventListener("resize", () => {