From 5307a55f8a7377a063beb116bbe18693f05873b7 Mon Sep 17 00:00:00 2001 From: pengx17 Date: Fri, 14 Jun 2024 09:33:13 +0000 Subject: [PATCH] feat: add importWorkspaceSnapshot for testing (#7224) --- .../core/src/pages/workspace/index.tsx | 27 ++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/packages/frontend/core/src/pages/workspace/index.tsx b/packages/frontend/core/src/pages/workspace/index.tsx index feb65ef0b1..093b57952c 100644 --- a/packages/frontend/core/src/pages/workspace/index.tsx +++ b/packages/frontend/core/src/pages/workspace/index.tsx @@ -28,7 +28,9 @@ declare global { // eslint-disable-next-line no-var var currentWorkspace: Workspace | undefined; // eslint-disable-next-line no-var - var exportWorkspaceSnapshot: () => Promise; + var exportWorkspaceSnapshot: (docs?: string[]) => Promise; + // eslint-disable-next-line no-var + var importWorkspaceSnapshot: () => Promise; interface WindowEventMap { 'affine:workspace:change': CustomEvent<{ id: string }>; } @@ -81,6 +83,29 @@ export const Component = (): ReactElement => { a.click(); URL.revokeObjectURL(url); }; + window.importWorkspaceSnapshot = async () => { + const input = document.createElement('input'); + input.type = 'file'; + input.accept = '.zip'; + input.onchange = async () => { + if (input.files && input.files.length > 0) { + const file = input.files[0]; + const blob = new Blob([file], { type: 'application/zip' }); + const newDocs = await ZipTransformer.importDocs( + workspace.docCollection, + blob + ); + console.log( + 'imported docs', + newDocs.map(doc => ({ + id: doc.id, + title: doc.meta?.title, + })) + ); + } + }; + input.click(); + }; localStorage.setItem('last_workspace_id', workspace.id); globalContext.workspaceId.set(workspace.id); return () => {