diff --git a/src/frontend/apps/impress/src/features/pads/pad/components/BlockNoteEditor.tsx b/src/frontend/apps/impress/src/features/pads/pad/components/BlockNoteEditor.tsx index 9b29d88c..576dfc4f 100644 --- a/src/frontend/apps/impress/src/features/pads/pad/components/BlockNoteEditor.tsx +++ b/src/frontend/apps/impress/src/features/pads/pad/components/BlockNoteEditor.tsx @@ -23,7 +23,7 @@ export const BlockNoteEditor = ({ pad }: BlockNoteEditorProps) => { const provider = padsStore?.[pad.id]?.provider; if (!provider) { - createProvider(pad.id); + createProvider(pad.id, pad.content); return null; } diff --git a/src/frontend/apps/impress/src/features/pads/pad/stores/usePadStore.tsx b/src/frontend/apps/impress/src/features/pads/pad/stores/usePadStore.tsx index f7839e1b..e2ca6b79 100644 --- a/src/frontend/apps/impress/src/features/pads/pad/stores/usePadStore.tsx +++ b/src/frontend/apps/impress/src/features/pads/pad/stores/usePadStore.tsx @@ -5,7 +5,7 @@ import { create } from 'zustand'; import { signalingUrl } from '@/core'; -import { Pad } from '../types'; +import { Base64, Pad } from '../types'; export interface PadStore { padsStore: { @@ -14,7 +14,7 @@ export interface PadStore { editor?: BlockNoteEditor; }; }; - createProvider: (padId: Pad['id']) => WebrtcProvider; + createProvider: (padId: Pad['id'], initialDoc: Base64) => WebrtcProvider; setEditor: (padId: Pad['id'], editor: BlockNoteEditor) => void; } @@ -24,8 +24,14 @@ const initialState = { export const usePadStore = create((set) => ({ padsStore: initialState.padsStore, - createProvider: (padId: string) => { - const provider = new WebrtcProvider(padId, new Y.Doc(), { + createProvider: (padId: string, initialDoc: Base64) => { + const doc = new Y.Doc(); + + if (initialDoc) { + Y.applyUpdate(doc, Buffer.from(initialDoc, 'base64')); + } + + const provider = new WebrtcProvider(padId, doc, { signaling: [signalingUrl()], });