fix: edgeless object creation events (#7206)

related to AFF-1154
upstream: https://github.com/toeverything/blocksuite/pull/7297
This commit is contained in:
pengx17
2024-06-14 08:46:09 +00:00
parent 32a5943a90
commit 7062790488
2 changed files with 14 additions and 58 deletions

View File

@@ -15,13 +15,7 @@ import {
PageEditor, PageEditor,
} from '@blocksuite/presets'; } from '@blocksuite/presets';
import type { Doc } from '@blocksuite/store'; import type { Doc } from '@blocksuite/store';
import { import { type DocMode, useLiveData, useService } from '@toeverything/infra';
type DocMode,
DocService,
DocsService,
useLiveData,
useService,
} from '@toeverything/infra';
import React, { import React, {
forwardRef, forwardRef,
Fragment, Fragment,
@@ -36,7 +30,6 @@ import { PagePropertiesTable } from '../../affine/page-properties';
import { AffinePageReference } from '../../affine/reference-link'; import { AffinePageReference } from '../../affine/reference-link';
import { BlocksuiteEditorJournalDocTitle } from './journal-doc-title'; import { BlocksuiteEditorJournalDocTitle } from './journal-doc-title';
import { import {
patchDocModeService,
patchForSharedPage, patchForSharedPage,
patchNotificationService, patchNotificationService,
patchPeekViewService, patchPeekViewService,
@@ -80,8 +73,6 @@ const usePatchSpecs = (page: Doc, shared: boolean, mode: DocMode) => {
const [reactToLit, portals] = useLitPortalFactory(); const [reactToLit, portals] = useLitPortalFactory();
const peekViewService = useService(PeekViewService); const peekViewService = useService(PeekViewService);
const quickSearchService = useService(QuickSearchService); const quickSearchService = useService(QuickSearchService);
const docService = useService(DocService);
const docsService = useService(DocsService);
const referenceRenderer: ReferenceReactRenderer = useMemo(() => { const referenceRenderer: ReferenceReactRenderer = useMemo(() => {
return function customReference(reference) { return function customReference(reference) {
const pageId = reference.delta.attributes?.reference?.pageId; const pageId = reference.delta.attributes?.reference?.pageId;
@@ -110,14 +101,9 @@ const usePatchSpecs = (page: Doc, shared: boolean, mode: DocMode) => {
if (shared) { if (shared) {
patched = patchForSharedPage(patched); patched = patchForSharedPage(patched);
} }
if (!page.readonly) {
patched = patchDocModeService(patched, docService, docsService);
}
return patched; return patched;
}, [ }, [
confirmModal, confirmModal,
docService,
docsService,
page.readonly, page.readonly,
peekViewService, peekViewService,
quickSearchService, quickSearchService,

View File

@@ -10,7 +10,6 @@ import {
AIEdgelessRootBlockSpec, AIEdgelessRootBlockSpec,
AIPageRootBlockSpec, AIPageRootBlockSpec,
} from '@blocksuite/presets'; } from '@blocksuite/presets';
import type { BlockModel } from '@blocksuite/store';
function customLoadFonts(service: RootService): void { function customLoadFonts(service: RootService): void {
if (runtimeConfig.isSelfHosted) { if (runtimeConfig.isSelfHosted) {
@@ -25,55 +24,26 @@ function customLoadFonts(service: RootService): void {
} }
} }
class CustomPageRootService extends PageRootService { function withAffineRootService(Service: typeof RootService) {
override loadFonts(): void { return class extends Service {
customLoadFonts(this); override loadFonts(): void {
} customLoadFonts(this);
} }
class CustomEdgelessRootService extends EdgelessRootService { telemetryService = {
override loadFonts(): void { track: (event: string, data: Record<string, unknown>) => {
customLoadFonts(this); mixpanel.track(event, data);
} },
};
override addElement<T = Record<string, unknown>>(type: string, props: T) { };
const res = super.addElement(type, props);
mixpanel.track('WhiteboardObjectCreated', {
page: 'whiteboard editor',
module: 'whiteboard',
segment: 'canvas',
// control:
type: 'whiteboard object',
category: type,
});
return res;
}
override addBlock(
flavour: string,
props: Record<string, unknown>,
parent?: string | BlockModel,
parentIndex?: number
) {
const res = super.addBlock(flavour, props, parent, parentIndex);
mixpanel.track('WhiteboardObjectCreated', {
page: 'whiteboard editor',
module: 'whiteboard',
segment: 'canvas',
// control:
type: 'whiteboard object',
category: flavour.split(':')[1], // affine:paragraph -> paragraph
});
return res;
}
} }
export const CustomPageRootBlockSpec: BlockSpec = { export const CustomPageRootBlockSpec: BlockSpec = {
...AIPageRootBlockSpec, ...AIPageRootBlockSpec,
service: CustomPageRootService, service: withAffineRootService(PageRootService),
}; };
export const CustomEdgelessRootBlockSpec: BlockSpec = { export const CustomEdgelessRootBlockSpec: BlockSpec = {
...AIEdgelessRootBlockSpec, ...AIEdgelessRootBlockSpec,
service: CustomEdgelessRootService, service: withAffineRootService(EdgelessRootService),
}; };