From cc257f4fbe6e6a540e6c7aea92fb6c228d6275e3 Mon Sep 17 00:00:00 2001 From: Flrande <50035259+Flrande@users.noreply.github.com> Date: Thu, 10 Apr 2025 16:33:11 +0800 Subject: [PATCH] chore(editor): add track for mention (#11594) --- .../modules/at-menu-config/services/index.ts | 16 +++++++++++++++ packages/frontend/track/src/events.ts | 20 +++++++++++++++++-- 2 files changed, 34 insertions(+), 2 deletions(-) diff --git a/packages/frontend/core/src/modules/at-menu-config/services/index.ts b/packages/frontend/core/src/modules/at-menu-config/services/index.ts index 7442bfbf9a..7a0d619481 100644 --- a/packages/frontend/core/src/modules/at-menu-config/services/index.ts +++ b/packages/frontend/core/src/modules/at-menu-config/services/index.ts @@ -376,6 +376,10 @@ export class AtMenuConfigService extends Service { close(); + track.doc.editor.atMenu.mentionMember({ + type: 'member', + }); + const inlineRange = inlineEditor.getInlineRange(); if (!inlineRange || inlineRange.length !== 0) return; @@ -440,6 +444,8 @@ export class AtMenuConfigService extends Service { const err = UserFriendlyError.fromAny(error); if (err.is(ErrorNames.MENTION_USER_DOC_ACCESS_DENIED)) { + track.doc.editor.atMenu.noAccessPrompted(); + const canUserManage = this.guardService.can$( 'Doc_Users_Manage', docId @@ -456,6 +462,11 @@ export class AtMenuConfigService extends Service { action: { label: 'Invite', onClick: async () => { + track.$.sharePanel.$.inviteUserDocRole({ + control: 'member list', + role: 'reader', + }); + try { await this.docGrantedUsersService.updateUserRole( id, @@ -517,6 +528,11 @@ export class AtMenuConfigService extends Service { icon: UserIcon(), action: () => { close(); + + track.doc.editor.atMenu.mentionMember({ + type: 'invite', + }); + this.dialogService.open('setting', { activeTab: 'workspace:members', }); diff --git a/packages/frontend/track/src/events.ts b/packages/frontend/track/src/events.ts index a8e82b5345..2ac854cd0b 100644 --- a/packages/frontend/track/src/events.ts +++ b/packages/frontend/track/src/events.ts @@ -177,6 +177,10 @@ type MeetingEvents = | 'activeMenubarAppItem'; // END SECTION +// SECTION: mention +type MentionEvents = 'mentionMember' | 'noAccessPrompted'; +// END SECTION + type UserEvents = | GeneralEvents | AppEvents @@ -198,7 +202,9 @@ type UserEvents = | TemplateEvents | NotificationEvents | IntegrationEvents - | MeetingEvents; + | MeetingEvents + | MentionEvents; + interface PageDivision { [page: string]: { [segment: string]: { @@ -405,7 +411,13 @@ const PageEvents = { doc: { editor: { slashMenu: ['linkDoc', 'createDoc', 'bookmark'], - atMenu: ['linkDoc', 'import', 'createDoc'], + atMenu: [ + 'linkDoc', + 'import', + 'createDoc', + 'mentionMember', + 'noAccessPrompted', + ], quickSearch: ['createDoc'], formatToolbar: ['bold'], pageRef: ['navigate'], @@ -698,6 +710,10 @@ export type EventArgs = { | 'Meeting Settings' | 'Quit AFFiNE Completely'; }; + mentionMember: { + type: 'member' | 'invite' | 'more'; + }; + noAccessPrompted: {}; }; // for type checking