fix: edgeless object creation events (#7206)
related to AFF-1154 upstream: https://github.com/toeverything/blocksuite/pull/7297
This commit is contained in:
@@ -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,
|
||||||
|
|||||||
@@ -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),
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user