chore(editor): add tracking events to attachments (#12317)
Closes: [BS-3483](https://linear.app/affine-design/issue/BS-3483/event-tracking-loading-block)
This commit is contained in:
@@ -17,7 +17,9 @@ import {
|
|||||||
AttachmentBlockStyles,
|
AttachmentBlockStyles,
|
||||||
} from '@blocksuite/affine-model';
|
} from '@blocksuite/affine-model';
|
||||||
import {
|
import {
|
||||||
|
DocModeProvider,
|
||||||
FileSizeLimitProvider,
|
FileSizeLimitProvider,
|
||||||
|
TelemetryProvider,
|
||||||
ThemeProvider,
|
ThemeProvider,
|
||||||
} from '@blocksuite/affine-shared/services';
|
} from '@blocksuite/affine-shared/services';
|
||||||
import { humanFileSize } from '@blocksuite/affine-shared/utils';
|
import { humanFileSize } from '@blocksuite/affine-shared/utils';
|
||||||
@@ -187,6 +189,22 @@ export class AttachmentBlockComponent extends CaptionedBlockComponent<Attachment
|
|||||||
@click=${(event: MouseEvent) => {
|
@click=${(event: MouseEvent) => {
|
||||||
event.stopPropagation();
|
event.stopPropagation();
|
||||||
onOverFileSize?.();
|
onOverFileSize?.();
|
||||||
|
|
||||||
|
{
|
||||||
|
const mode =
|
||||||
|
this.std.get(DocModeProvider).getEditorMode() ?? 'page';
|
||||||
|
const segment = mode === 'page' ? 'doc' : 'whiteboard';
|
||||||
|
this.std
|
||||||
|
.getOptional(TelemetryProvider)
|
||||||
|
?.track('AttachmentUpgradedEvent', {
|
||||||
|
segment,
|
||||||
|
page: `${segment} editor`,
|
||||||
|
module: 'attachment',
|
||||||
|
control: 'upgrade',
|
||||||
|
category: 'card',
|
||||||
|
type: this.model.props.name.split('.').pop() ?? '',
|
||||||
|
});
|
||||||
|
}
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
${UpgradeIcon()} Upgrade
|
${UpgradeIcon()} Upgrade
|
||||||
@@ -202,6 +220,22 @@ export class AttachmentBlockComponent extends CaptionedBlockComponent<Attachment
|
|||||||
@click=${(event: MouseEvent) => {
|
@click=${(event: MouseEvent) => {
|
||||||
event.stopPropagation();
|
event.stopPropagation();
|
||||||
this.refreshData();
|
this.refreshData();
|
||||||
|
|
||||||
|
{
|
||||||
|
const mode =
|
||||||
|
this.std.get(DocModeProvider).getEditorMode() ?? 'page';
|
||||||
|
const segment = mode === 'page' ? 'doc' : 'whiteboard';
|
||||||
|
this.std
|
||||||
|
.getOptional(TelemetryProvider)
|
||||||
|
?.track('AttachmentReloadedEvent', {
|
||||||
|
segment,
|
||||||
|
page: `${segment} editor`,
|
||||||
|
module: 'attachment',
|
||||||
|
control: 'reload',
|
||||||
|
category: 'card',
|
||||||
|
type: this.model.props.name.split('.').pop() ?? '',
|
||||||
|
});
|
||||||
|
}
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
${ResetIcon()} Reload
|
${ResetIcon()} Reload
|
||||||
|
|||||||
@@ -264,6 +264,12 @@ const builtinToolbarConfig = {
|
|||||||
run(ctx) {
|
run(ctx) {
|
||||||
const block = ctx.getCurrentBlockByType(AttachmentBlockComponent);
|
const block = ctx.getCurrentBlockByType(AttachmentBlockComponent);
|
||||||
block?.reload();
|
block?.reload();
|
||||||
|
|
||||||
|
ctx.track('AttachmentReloadedEvent', {
|
||||||
|
...trackBaseProps,
|
||||||
|
control: 'reload',
|
||||||
|
type: block?.model.props.name.split('.').pop() ?? '',
|
||||||
|
});
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -130,7 +130,7 @@ async function buildPropsWith(
|
|||||||
std.getOptional(TelemetryProvider)?.track('AttachmentUploadedEvent', {
|
std.getOptional(TelemetryProvider)?.track('AttachmentUploadedEvent', {
|
||||||
page: `${mode} editor`,
|
page: `${mode} editor`,
|
||||||
module: 'attachment',
|
module: 'attachment',
|
||||||
segment: 'attachment',
|
segment: mode,
|
||||||
control: 'uploader',
|
control: 'uploader',
|
||||||
type,
|
type,
|
||||||
category,
|
category,
|
||||||
|
|||||||
@@ -6,6 +6,9 @@ import type { LinkToolbarEvents } from './link.js';
|
|||||||
import type { NoteEvents } from './note.js';
|
import type { NoteEvents } from './note.js';
|
||||||
import type { SlashMenuEvents } from './slash-menu.js';
|
import type { SlashMenuEvents } from './slash-menu.js';
|
||||||
import type {
|
import type {
|
||||||
|
AttachmentReloadedEvent,
|
||||||
|
AttachmentReloadedEventInToolbar,
|
||||||
|
AttachmentUpgradedEvent,
|
||||||
AttachmentUploadedEvent,
|
AttachmentUploadedEvent,
|
||||||
BlockCreationEvent,
|
BlockCreationEvent,
|
||||||
DocCreatedEvent,
|
DocCreatedEvent,
|
||||||
@@ -31,6 +34,10 @@ export type TelemetryEventMap = OutDatabaseAllEvents &
|
|||||||
CanvasElementUpdated: ElementUpdatedEvent;
|
CanvasElementUpdated: ElementUpdatedEvent;
|
||||||
EdgelessElementLocked: ElementLockEvent;
|
EdgelessElementLocked: ElementLockEvent;
|
||||||
ExpandedAndCollapsed: MindMapCollapseEvent;
|
ExpandedAndCollapsed: MindMapCollapseEvent;
|
||||||
|
AttachmentReloadedEvent:
|
||||||
|
| AttachmentReloadedEvent
|
||||||
|
| AttachmentReloadedEventInToolbar;
|
||||||
|
AttachmentUpgradedEvent: AttachmentUpgradedEvent;
|
||||||
AttachmentUploadedEvent: AttachmentUploadedEvent;
|
AttachmentUploadedEvent: AttachmentUploadedEvent;
|
||||||
BlockCreated: BlockCreationEvent;
|
BlockCreated: BlockCreationEvent;
|
||||||
EdgelessToolPicked: EdgelessToolPickedEvent;
|
EdgelessToolPicked: EdgelessToolPickedEvent;
|
||||||
|
|||||||
@@ -61,9 +61,36 @@ export interface MindMapCollapseEvent extends TelemetryEvent {
|
|||||||
type: 'expand' | 'collapse';
|
type: 'expand' | 'collapse';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface AttachmentReloadedEvent extends TelemetryEvent {
|
||||||
|
page: 'doc editor' | 'whiteboard editor';
|
||||||
|
segment: 'doc' | 'whiteboard';
|
||||||
|
module: 'attachment';
|
||||||
|
control: 'reload';
|
||||||
|
category: 'card' | 'embed';
|
||||||
|
type: string; // file type
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface AttachmentReloadedEventInToolbar extends TelemetryEvent {
|
||||||
|
page: 'doc editor' | 'whiteboard editor';
|
||||||
|
segment: 'doc' | 'whiteboard';
|
||||||
|
module: 'toolbar';
|
||||||
|
control: 'reload';
|
||||||
|
category: 'attachment';
|
||||||
|
type: string; // file type
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface AttachmentUpgradedEvent extends TelemetryEvent {
|
||||||
|
page: 'doc editor' | 'whiteboard editor';
|
||||||
|
segment: 'doc' | 'whiteboard';
|
||||||
|
module: 'attachment';
|
||||||
|
control: 'upgrade';
|
||||||
|
category: 'card' | 'embed';
|
||||||
|
type: string; // file type
|
||||||
|
}
|
||||||
|
|
||||||
export interface AttachmentUploadedEvent extends TelemetryEvent {
|
export interface AttachmentUploadedEvent extends TelemetryEvent {
|
||||||
page: 'doc editor' | 'whiteboard editor';
|
page: 'doc editor' | 'whiteboard editor';
|
||||||
segment: 'attachment';
|
segment: 'doc' | 'whiteboard';
|
||||||
module: 'attachment';
|
module: 'attachment';
|
||||||
control: 'uploader';
|
control: 'uploader';
|
||||||
type: string; // file type
|
type: string; // file type
|
||||||
|
|||||||
Reference in New Issue
Block a user