refactor(editor): should not rely on doc collection type (#9501)

This commit is contained in:
Saul-Mirone
2025-01-03 06:30:27 +00:00
parent cb5d7eaabc
commit 897c7d4284
55 changed files with 200 additions and 158 deletions

View File

@@ -31,7 +31,6 @@ export type MixText = string;
type MixTextToSliceSnapshotPayload = {
file: MixText;
assets?: AssetsManager;
blockVersions: Record<string, number>;
workspaceId: string;
pageId: string;
};

View File

@@ -1,7 +1,7 @@
import { HtmlAdapter } from '@blocksuite/affine-shared/adapters';
import { Container } from '@blocksuite/global/di';
import { sha } from '@blocksuite/global/utils';
import type { Doc, DocCollection } from '@blocksuite/store';
import type { Doc, Workspace } from '@blocksuite/store';
import { extMimeMap, Job } from '@blocksuite/store';
import { defaultBlockHtmlAdapterMatchers } from '../adapters/html/block-matcher.js';
@@ -16,13 +16,13 @@ import {
import { createAssetsArchive, download, Unzip } from './utils.js';
type ImportHTMLToDocOptions = {
collection: DocCollection;
collection: Workspace;
html: string;
fileName?: string;
};
type ImportHTMLZipOptions = {
collection: DocCollection;
collection: Workspace;
imported: Blob;
};

View File

@@ -2,7 +2,7 @@ import { MarkdownAdapter } from '@blocksuite/affine-shared/adapters';
import { Container } from '@blocksuite/global/di';
import { BlockSuiteError, ErrorCode } from '@blocksuite/global/exceptions';
import { assertExists, sha } from '@blocksuite/global/utils';
import type { Doc, DocCollection } from '@blocksuite/store';
import type { Doc, Workspace } from '@blocksuite/store';
import { extMimeMap, Job } from '@blocksuite/store';
import { defaultBlockMarkdownAdapterMatchers } from '../adapters/index.js';
@@ -34,13 +34,13 @@ type ImportMarkdownToBlockOptions = {
};
type ImportMarkdownToDocOptions = {
collection: DocCollection;
collection: Workspace;
markdown: string;
fileName?: string;
};
type ImportMarkdownZipOptions = {
collection: DocCollection;
collection: Workspace;
imported: Blob;
};

View File

@@ -1,7 +1,7 @@
import { NotionHtmlAdapter } from '@blocksuite/affine-shared/adapters';
import { Container } from '@blocksuite/global/di';
import { sha } from '@blocksuite/global/utils';
import { type DocCollection, extMimeMap, Job } from '@blocksuite/store';
import { extMimeMap, Job, type Workspace } from '@blocksuite/store';
import { defaultBlockNotionHtmlAdapterMatchers } from '../adapters/notion-html/block-matcher.js';
import { notionHtmlInlineToDeltaMatchers } from '../adapters/notion-html/delta-converter/html-inline.js';
@@ -9,7 +9,7 @@ import { defaultImageProxyMiddleware } from './middlewares.js';
import { Unzip } from './utils.js';
type ImportNotionZipOptions = {
collection: DocCollection;
collection: Workspace;
imported: Blob;
};
@@ -26,12 +26,11 @@ const provider = container.provider();
/**
* Imports a Notion zip file into the BlockSuite collection.
*
* @param {ImportNotionZipOptions} options - The options for importing.
* @param {DocCollection} options.collection - The BlockSuite document collection.
* @param {Blob} options.imported - The imported zip file as a Blob.
* @param options - The options for importing.
* @param options.collection - The BlockSuite document collection.
* @param options.imported - The imported zip file as a Blob.
*
* @returns {Promise<{entryId: string | undefined, pageIds: string[], isWorkspaceFile: boolean, hasMarkdown: boolean}>}
* A promise that resolves to an object containing:
* @returns A promise that resolves to an object containing:
* - entryId: The ID of the entry page (if any).
* - pageIds: An array of imported page IDs.
* - isWorkspaceFile: Whether the imported file is a workspace file.

View File

@@ -1,11 +1,11 @@
import { sha } from '@blocksuite/global/utils';
import type { Doc, DocCollection, DocSnapshot } from '@blocksuite/store';
import type { Doc, DocSnapshot, Workspace } from '@blocksuite/store';
import { extMimeMap, getAssetName, Job } from '@blocksuite/store';
import { download, Unzip, Zip } from '../transformers/utils.js';
import { replaceIdMiddleware, titleMiddleware } from './middlewares.js';
async function exportDocs(collection: DocCollection, docs: Doc[]) {
async function exportDocs(collection: Workspace, docs: Doc[]) {
const zip = new Zip();
const job = new Job({
schema: collection.schema,
@@ -50,7 +50,7 @@ async function exportDocs(collection: DocCollection, docs: Doc[]) {
return download(downloadBlob, `${collection.id}.bs.zip`);
}
async function importDocs(collection: DocCollection, imported: Blob) {
async function importDocs(collection: Workspace, imported: Blob) {
const unzip = new Unzip();
await unzip.load(imported);

View File

@@ -8,7 +8,7 @@ import {
} from '@blocksuite/affine-components/icons';
import { openFileOrFiles } from '@blocksuite/affine-shared/utils';
import { WithDisposable } from '@blocksuite/global/utils';
import type { DocCollection } from '@blocksuite/store';
import type { Workspace } from '@blocksuite/store';
import { html, LitElement, type PropertyValues } from 'lit';
import { query, state } from 'lit/decorators.js';
@@ -30,7 +30,7 @@ export class ImportDoc extends WithDisposable(LitElement) {
static override styles = styles;
constructor(
private readonly collection: DocCollection,
private readonly collection: Workspace,
private readonly onSuccess?: OnSuccessHandler,
private readonly onFail?: OnFailHandler,
private readonly abortController = new AbortController()

View File

@@ -1,4 +1,4 @@
import type { DocCollection } from '@blocksuite/store';
import type { Workspace } from '@blocksuite/store';
import {
ImportDoc,
@@ -13,7 +13,7 @@ export function showImportModal({
container = document.body,
abortController = new AbortController(),
}: {
collection: DocCollection;
collection: Workspace;
onSuccess?: OnSuccessHandler;
onFail?: OnFailHandler;
multiple?: boolean;