diff --git a/app/src/index.ts b/app/src/index.ts index aad028677..99f20a0aa 100644 --- a/app/src/index.ts +++ b/app/src/index.ts @@ -21,7 +21,6 @@ import { setTitle, transactionError } from "./dialog/processSystem"; -import {promiseTransactions} from "./protyle/wysiwyg/transaction"; import {initMessage} from "./dialog/message"; import {getAllTabs} from "./layout/getAll"; import {getLocalStorage} from "./protyle/util/compatibility"; @@ -181,7 +180,6 @@ export class App { }); setNoteBook(); initBlockPopover(this); - promiseTransactions(); } } diff --git a/app/src/mobile/index.ts b/app/src/mobile/index.ts index 5f2a751d2..41ef96063 100644 --- a/app/src/mobile/index.ts +++ b/app/src/mobile/index.ts @@ -11,7 +11,6 @@ import {handleTouchEnd, handleTouchMove, handleTouchStart} from "./util/touch"; import {fetchGet, fetchPost} from "../util/fetch"; import {initFramework} from "./util/initFramework"; import {addGA, initAssets, loadAssets} from "../util/assets"; -import {promiseTransactions} from "../protyle/wysiwyg/transaction"; import {bootSync} from "../dialog/processSystem"; import {initMessage} from "../dialog/message"; import {goBack} from "./util/MobileBackFoward"; @@ -96,7 +95,6 @@ class App { handleTouchEnd(event); }, false); }); - promiseTransactions(); } } diff --git a/app/src/protyle/wysiwyg/transaction.ts b/app/src/protyle/wysiwyg/transaction.ts index 89a49af4c..237c61f15 100644 --- a/app/src/protyle/wysiwyg/transaction.ts +++ b/app/src/protyle/wysiwyg/transaction.ts @@ -50,6 +50,9 @@ const removeTopElement = (updateElement: Element, protyle: IProtyle) => { // 用于执行操作,外加处理当前编辑器中引用块、嵌入块的更新 const promiseTransaction = () => { + if (window.siyuan.transactions.length === 0) { + return; + } const protyle = window.siyuan.transactions[0].protyle; const doOperations = window.siyuan.transactions[0].doOperations; const undoOperations = window.siyuan.transactions[0].undoOperations; @@ -64,12 +67,9 @@ const promiseTransaction = () => { undoOperations // 目前用于 ws 推送更新大纲 }] }, (response) => { - if (window.siyuan.transactions.length === 0) { - promiseTransactions(); - } else { + if (window.siyuan.transactions.length !== 0) { promiseTransaction(); } - countBlockWord([], protyle.block.rootID, true); /// #if MOBILE if ((0 !== window.siyuan.config.sync.provider || (0 === window.siyuan.config.sync.provider && !needSubscribe(""))) && @@ -315,18 +315,6 @@ const updateEmbed = (protyle: IProtyle, operation: IOperation) => { } }; -export const promiseTransactions = () => { - window.clearInterval(window.siyuan.transactionsTimeout); - window.siyuan.transactionsTimeout = window.setInterval(() => { - if (window.siyuan.transactions.length === 0) { - return; - } - window.clearInterval(window.siyuan.transactionsTimeout); - window.siyuan.transactionsTimeout = undefined; - promiseTransaction(); - }, Constants.TIMEOUT_INPUT * 2); -}; - // 用于推送和撤销 export const onTransaction = (protyle: IProtyle, operation: IOperation, focus: boolean) => { const updateElements: Element[] = []; @@ -897,6 +885,7 @@ const updateRef = (protyle: IProtyle, id: string, index = 0) => { }); }; +let transactionsTimeout: number; export const transaction = (protyle: IProtyle, doOperations: IOperation[], undoOperations?: IOperation[]) => { const lastTransaction = window.siyuan.transactions[window.siyuan.transactions.length - 1]; let needDebounce = false; @@ -932,9 +921,10 @@ export const transaction = (protyle: IProtyle, doOperations: IOperation[], undoO }); } protyle.transactionTime = time; - if (typeof window.siyuan.transactionsTimeout === "undefined") { - promiseTransactions(); - } + window.clearTimeout(transactionsTimeout); + transactionsTimeout = window.setTimeout(() => { + promiseTransaction(); + }, Constants.TIMEOUT_INPUT * 2); }; export const updateTransaction = (protyle: IProtyle, id: string, newHTML: string, html: string) => { diff --git a/app/src/types/index.d.ts b/app/src/types/index.d.ts index f9893a2d7..0139ff992 100644 --- a/app/src/types/index.d.ts +++ b/app/src/types/index.d.ts @@ -204,7 +204,6 @@ interface INotebook { interface ISiyuan { storage?: { [key: string]: any }, printWin?: import("electron").BrowserWindow - transactionsTimeout?: number, transactions?: { protyle: IProtyle, doOperations: IOperation[], diff --git a/app/src/window/index.ts b/app/src/window/index.ts index 8d6b312b7..7c4400b4d 100644 --- a/app/src/window/index.ts +++ b/app/src/window/index.ts @@ -15,7 +15,6 @@ import { setTitle, transactionError } from "../dialog/processSystem"; -import {promiseTransactions} from "../protyle/wysiwyg/transaction"; import {initMessage} from "../dialog/message"; import {getAllTabs} from "../layout/getAll"; import {getLocalStorage} from "../protyle/util/compatibility"; @@ -145,7 +144,6 @@ class App { }); setNoteBook(); initBlockPopover(this); - promiseTransactions(); } }