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