From 0879d6ab41f170b0cc8f64fffa4b90f8f13ef731 Mon Sep 17 00:00:00 2001 From: Chen <99816898+donteatfriedrice@users.noreply.github.com> Date: Tue, 15 Oct 2024 16:11:39 +0800 Subject: [PATCH] feat(playground): add import notion zip entry --- .../blocks/src/root-block/widgets/index.ts | 1 + .../apps/_common/components/debug-menu.ts | 57 ++++++++++++++----- 2 files changed, 45 insertions(+), 13 deletions(-) diff --git a/packages/blocks/src/root-block/widgets/index.ts b/packages/blocks/src/root-block/widgets/index.ts index 6f4e6c13ba65..0caacb184117 100644 --- a/packages/blocks/src/root-block/widgets/index.ts +++ b/packages/blocks/src/root-block/widgets/index.ts @@ -34,6 +34,7 @@ export { AffineImageToolbarWidget } from './image-toolbar/index.js'; export { AffineInnerModalWidget } from './inner-modal/inner-modal.js'; export { LinkedWidgetUtils } from './linked-doc/config.js'; export { + importNotion, // It's used in the AFFiNE! showImportModal, } from './linked-doc/import-doc/index.js'; diff --git a/packages/playground/apps/_common/components/debug-menu.ts b/packages/playground/apps/_common/components/debug-menu.ts index 72f44f293b87..3a38351e769d 100644 --- a/packages/playground/apps/_common/components/debug-menu.ts +++ b/packages/playground/apps/_common/components/debug-menu.ts @@ -14,6 +14,7 @@ import { ExportManager, FontFamilyVariables, HtmlTransformer, + importNotion, MarkdownAdapter, MarkdownTransformer, NotionHtmlAdapter, @@ -255,18 +256,40 @@ export class DebugMenu extends ShadowlessElement { } private async _importNotionHTML() { - const file = await openFileOrFiles({ acceptType: 'Html', multiple: false }); - if (!file) return; - const job = new Job({ - collection: this.collection, - middlewares: [defaultImageProxyMiddleware], - }); - const htmlAdapter = new NotionHtmlAdapter(job); - await htmlAdapter.toDoc({ - file: await file.text(), - pageId: this.collection.idGenerator(), - assets: job.assetsManager, - }); + try { + const file = await openFileOrFiles({ + acceptType: 'Html', + multiple: false, + }); + if (!file) return; + const job = new Job({ + collection: this.collection, + middlewares: [defaultImageProxyMiddleware], + }); + const htmlAdapter = new NotionHtmlAdapter(job); + await htmlAdapter.toDoc({ + file: await file.text(), + pageId: this.collection.idGenerator(), + assets: job.assetsManager, + }); + } catch (error) { + console.error('Failed to import Notion HTML:', error); + } + } + + private async _importNotionHTMLZip() { + try { + const file = await openFileOrFiles({ acceptType: 'Zip' }); + if (!file) return; + const result = await importNotion(this.collection, file); + if (!this.editor.host) return; + toast( + this.editor.host, + `Successfully imported ${result.pageIds.length} Notion HTML pages.` + ); + } catch (error) { + console.error('Failed to import Notion HTML Zip:', error); + } } private _importSnapshot() { @@ -620,8 +643,16 @@ export class DebugMenu extends ShadowlessElement { Import Snapshot - + Import Notion HTML + + + Single Notion HTML Page + + + Notion HTML Zip + + Import Markdown