From 022e5f2c93b222d8f7677c86479ce5d3958a2953 Mon Sep 17 00:00:00 2001 From: donteatfriedrice Date: Wed, 16 Apr 2025 09:53:38 +0000 Subject: [PATCH] fix(editor): update embed iframe block event tracker (#11736) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Close [BS-3151](https://linear.app/affine-design/issue/BS-3151/埋一下-reload-link-成功失败) --- .../components/embed-iframe-error-card.ts | 7 ++++--- .../embed-iframe-link-edit-popup.ts | 2 +- .../embed-iframe-link-input-popup.ts | 2 +- .../src/embed-iframe-block/configs/toolbar.ts | 19 +++++++++++++------ .../embed-iframe-block/embed-iframe-block.ts | 6 ++++-- .../src/services/telemetry-service/link.ts | 4 ++-- .../telemetry-service/telemetry-service.ts | 3 ++- .../src/services/telemetry-service/types.ts | 4 ++++ 8 files changed, 31 insertions(+), 16 deletions(-) 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'; +}