diff --git a/blocksuite/affine/blocks/embed/src/embed-iframe-block/components/embed-iframe-error-card.ts b/blocksuite/affine/blocks/embed/src/embed-iframe-block/components/embed-iframe-error-card.ts index a74a0362a..6e797d69f 100644 --- a/blocksuite/affine/blocks/embed/src/embed-iframe-block/components/embed-iframe-error-card.ts +++ b/blocksuite/affine/blocks/embed/src/embed-iframe-block/components/embed-iframe-error-card.ts @@ -209,9 +209,9 @@ export class EmbedIframeErrorCard extends WithDisposable(LitElement) { }); }; - private readonly _handleRetry = (e: MouseEvent) => { + private readonly _handleRetry = async (e: MouseEvent) => { e.stopPropagation(); - this.onRetry(); + const success = await this.onRetry(); // track retry event this.telemetryService?.track('ReloadLink', { @@ -220,6 +220,7 @@ export class EmbedIframeErrorCard extends WithDisposable(LitElement) { segment: 'editor', module: 'embed block', control: 'reload button', + result: success ? 'success' : 'failure', }); }; @@ -301,7 +302,7 @@ export class EmbedIframeErrorCard extends WithDisposable(LitElement) { accessor error: Error | null = null; @property({ attribute: false }) - accessor onRetry!: () => void; + accessor onRetry!: () => Promise; @property({ attribute: false }) accessor model!: EmbedIframeBlockModel; diff --git a/blocksuite/affine/blocks/embed/src/embed-iframe-block/components/embed-iframe-link-edit-popup.ts b/blocksuite/affine/blocks/embed/src/embed-iframe-block/components/embed-iframe-link-edit-popup.ts index d33107910..248ff96e6 100644 --- a/blocksuite/affine/blocks/embed/src/embed-iframe-block/components/embed-iframe-link-edit-popup.ts +++ b/blocksuite/affine/blocks/embed/src/embed-iframe-block/components/embed-iframe-link-edit-popup.ts @@ -78,7 +78,7 @@ export class EmbedIframeLinkEditPopup extends SignalWatcher( segment: 'editor', module: 'embed block', control: 'edit button', - other: status, + result: status, }); } diff --git a/blocksuite/affine/blocks/embed/src/embed-iframe-block/components/embed-iframe-link-input-popup.ts b/blocksuite/affine/blocks/embed/src/embed-iframe-block/components/embed-iframe-link-input-popup.ts index 0115fcd58..9a453b0c6 100644 --- a/blocksuite/affine/blocks/embed/src/embed-iframe-block/components/embed-iframe-link-input-popup.ts +++ b/blocksuite/affine/blocks/embed/src/embed-iframe-block/components/embed-iframe-link-input-popup.ts @@ -228,7 +228,7 @@ export class EmbedIframeLinkInputPopup extends EmbedIframeLinkInputBase { segment: this.options?.telemetrySegment ?? 'editor', module: 'embed block', control: 'confirm embed link', - other: status, + result: status, }); } diff --git a/blocksuite/affine/blocks/embed/src/embed-iframe-block/configs/toolbar.ts b/blocksuite/affine/blocks/embed/src/embed-iframe-block/configs/toolbar.ts index b6472416c..3c473b586 100644 --- a/blocksuite/affine/blocks/embed/src/embed-iframe-block/configs/toolbar.ts +++ b/blocksuite/affine/blocks/embed/src/embed-iframe-block/configs/toolbar.ts @@ -299,12 +299,19 @@ export const builtinToolbarConfig = { icon: ResetIcon(), run(ctx) { const component = ctx.getCurrentBlockByType(EmbedIframeBlockComponent); - component?.refreshData().catch(console.error); - - ctx.track('ReloadLink', { - ...trackBaseProps, - control: 'reload link', - }); + component + ?.refreshData() + .then(success => { + ctx.track('ReloadLink', { + type: 'embed iframe block', + page: 'doc editor', + segment: 'doc', + module: 'toolbar', + control: 'reload link', + result: success ? 'success' : 'failure', + }); + }) + .catch(console.error); }, }, { diff --git a/blocksuite/affine/blocks/embed/src/embed-iframe-block/embed-iframe-block.ts b/blocksuite/affine/blocks/embed/src/embed-iframe-block/embed-iframe-block.ts index 5f18d771b..80b736fb6 100644 --- a/blocksuite/affine/blocks/embed/src/embed-iframe-block/embed-iframe-block.ts +++ b/blocksuite/affine/blocks/embed/src/embed-iframe-block/embed-iframe-block.ts @@ -143,7 +143,7 @@ export class EmbedIframeBlockComponent extends CaptionedBlockComponent { - await this.refreshData(); + return await this.refreshData(); }; private readonly _renderIframe = () => { diff --git a/blocksuite/affine/shared/src/services/telemetry-service/link.ts b/blocksuite/affine/shared/src/services/telemetry-service/link.ts index 8e81523a1..77066d7df 100644 --- a/blocksuite/affine/shared/src/services/telemetry-service/link.ts +++ b/blocksuite/affine/shared/src/services/telemetry-service/link.ts @@ -1,4 +1,4 @@ -import type { TelemetryEvent } from './types.js'; +import type { LinkEvent } from './types.js'; export type LinkEventType = | 'CopiedLink' @@ -16,4 +16,4 @@ export type LinkEventType = | 'EditLink' | 'ReloadLink'; -export type LinkToolbarEvents = Record; +export type LinkToolbarEvents = Record; 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 5092ac776..506e8590d 100644 --- a/blocksuite/affine/shared/src/services/telemetry-service/telemetry-service.ts +++ b/blocksuite/affine/shared/src/services/telemetry-service/telemetry-service.ts @@ -13,6 +13,7 @@ import type { ElementLockEvent, ElementUpdatedEvent, LinkedDocCreatedEvent, + LinkEvent, MindMapCollapseEvent, TelemetryEvent, } from './types.js'; @@ -32,7 +33,7 @@ export type TelemetryEventMap = OutDatabaseAllEvents & AttachmentUploadedEvent: AttachmentUploadedEvent; BlockCreated: BlockCreationEvent; EdgelessToolPicked: EdgelessToolPickedEvent; - CreateEmbedBlock: TelemetryEvent; + CreateEmbedBlock: LinkEvent; }; export interface TelemetryService { diff --git a/blocksuite/affine/shared/src/services/telemetry-service/types.ts b/blocksuite/affine/shared/src/services/telemetry-service/types.ts index 090e1a924..2cc6d5978 100644 --- a/blocksuite/affine/shared/src/services/telemetry-service/types.ts +++ b/blocksuite/affine/shared/src/services/telemetry-service/types.ts @@ -86,3 +86,7 @@ export interface ElementUpdatedEvent extends TelemetryEvent { control: string; type?: string; } + +export interface LinkEvent extends TelemetryEvent { + result?: 'success' | 'failure'; +}