diff --git a/packages/core/src/CommandManager.ts b/packages/core/src/CommandManager.ts index b0e8ad7e..5323422b 100644 --- a/packages/core/src/CommandManager.ts +++ b/packages/core/src/CommandManager.ts @@ -53,7 +53,7 @@ export default class CommandManager { const method = (...args: any) => { const callback = command(...args)(props) - if (tr.steps.length) { + if (!tr.getMeta('preventDispatch')) { view.dispatch(tr) } @@ -74,7 +74,7 @@ export default class CommandManager { return new Proxy({}, { get: (_, name: string, proxy) => { if (name === 'run') { - if (!hasStartTransaction && shouldDispatch && tr.steps.length) { + if (!hasStartTransaction && shouldDispatch && !tr.getMeta('preventDispatch')) { view.dispatch(tr) } diff --git a/packages/extension-collaboration/src/index.ts b/packages/extension-collaboration/src/index.ts index ab7b7250..12bc30d1 100644 --- a/packages/extension-collaboration/src/index.ts +++ b/packages/extension-collaboration/src/index.ts @@ -22,13 +22,17 @@ const Collaboration = Extension.create({ /** * Undo recent changes */ - undo: (): Command => ({ state }) => { + undo: (): Command => ({ tr, state }) => { + tr.setMeta('preventDispatch', true) + return undo(state) }, /** * Reapply reverted changes */ - redo: (): Command => ({ state }) => { + redo: (): Command => ({ tr, state }) => { + tr.setMeta('preventDispatch', true) + return redo(state) }, }