diff --git a/blocksuite/affine/shared/src/services/telemetry-service/note.ts b/blocksuite/affine/shared/src/services/telemetry-service/note.ts new file mode 100644 index 000000000..0b4750f78 --- /dev/null +++ b/blocksuite/affine/shared/src/services/telemetry-service/note.ts @@ -0,0 +1,10 @@ +import type { TelemetryEvent } from './types.js'; + +export type NoteEventType = 'NoteDisplayModeChanged'; + +export type NoteEvents = { + NoteDisplayModeChanged: TelemetryEvent & { + control: 'display mode'; + type: 'note'; + }; +}; diff --git a/blocksuite/affine/shared/src/services/telemetry-service/telemetry-service.ts b/blocksuite/affine/shared/src/services/telemetry-service/telemetry-service.ts index 72c2d2be7..24652b0c5 100644 --- a/blocksuite/affine/shared/src/services/telemetry-service/telemetry-service.ts +++ b/blocksuite/affine/shared/src/services/telemetry-service/telemetry-service.ts @@ -2,6 +2,7 @@ import { createIdentifier } from '@blocksuite/global/di'; import type { OutDatabaseAllEvents } from './database.js'; import type { LinkToolbarEvents } from './link.js'; +import type { NoteEvents } from './note.js'; import type { AttachmentUploadedEvent, DocCreatedEvent, @@ -13,7 +14,8 @@ import type { } from './types.js'; export type TelemetryEventMap = OutDatabaseAllEvents & - LinkToolbarEvents & { + LinkToolbarEvents & + NoteEvents & { DocCreated: DocCreatedEvent; Link: TelemetryEvent; LinkedDocCreated: LinkedDocCreatedEvent; diff --git a/blocksuite/blocks/src/root-block/widgets/element-toolbar/change-note-button.ts b/blocksuite/blocks/src/root-block/widgets/element-toolbar/change-note-button.ts index 16343a8f8..2c8d86430 100644 --- a/blocksuite/blocks/src/root-block/widgets/element-toolbar/change-note-button.ts +++ b/blocksuite/blocks/src/root-block/widgets/element-toolbar/change-note-button.ts @@ -27,6 +27,7 @@ import { FeatureFlagService, NotificationProvider, SidebarExtensionIdentifier, + TelemetryProvider, ThemeProvider, } from '@blocksuite/affine-shared/services'; import { @@ -190,6 +191,7 @@ export class EdgelessChangeNoteButton extends WithDisposable(LitElement) { } private _setDisplayMode(note: NoteBlockModel, newMode: NoteDisplayMode) { + const oldMode = note.displayMode; this.edgeless.std.command.exec(changeNoteDisplayMode, { noteId: note.id, mode: newMode, @@ -263,6 +265,17 @@ export class EdgelessChangeNoteButton extends WithDisposable(LitElement) { clear(); }, }); + + this.edgeless.std + .getOptional(TelemetryProvider) + ?.track('NoteDisplayModeChanged', { + page: 'whiteboard editor', + segment: 'element toolbar', + module: 'element toolbar', + control: 'display mode', + type: 'note', + other: `from ${oldMode} to ${newMode}`, + }); } private _setShadowType(shadowType: string) {