diff --git a/packages/frontend/core/src/modules/share-menu/view/share-menu/general-access/members-permission.tsx b/packages/frontend/core/src/modules/share-menu/view/share-menu/general-access/members-permission.tsx index 1cd705382..922d21542 100644 --- a/packages/frontend/core/src/modules/share-menu/view/share-menu/general-access/members-permission.tsx +++ b/packages/frontend/core/src/modules/share-menu/view/share-menu/general-access/members-permission.tsx @@ -4,6 +4,7 @@ import { DocGrantedUsersService } from '@affine/core/modules/permissions'; import { ShareInfoService } from '@affine/core/modules/share-doc'; import { DocRole } from '@affine/graphql'; import { useI18n } from '@affine/i18n'; +import { track } from '@affine/track'; import { InformationIcon } from '@blocksuite/icons/rc'; import { useLiveData, useService } from '@toeverything/infra'; import clsx from 'clsx'; @@ -48,6 +49,7 @@ export const MembersPermission = ({ docDefaultRole === DocRole.Reader || docDefaultRole === DocRole.Editor; const changePermission = useCallback( async (docRole: DocRole) => { + track.$.sharePanel.$.modifyDocDefaultRole(); await docGrantedUsersService.updateDocDefaultRole(docRole); shareInfoService.shareInfo.revalidate(); }, diff --git a/packages/frontend/core/src/modules/share-menu/view/share-menu/invite-member-editor/invite-member-editor.tsx b/packages/frontend/core/src/modules/share-menu/view/share-menu/invite-member-editor/invite-member-editor.tsx index bdaf3d2cd..f23b55856 100644 --- a/packages/frontend/core/src/modules/share-menu/view/share-menu/invite-member-editor/invite-member-editor.tsx +++ b/packages/frontend/core/src/modules/share-menu/view/share-menu/invite-member-editor/invite-member-editor.tsx @@ -20,6 +20,7 @@ import { WorkspaceMemberStatus, } from '@affine/graphql'; import { useI18n } from '@affine/i18n'; +import { track } from '@affine/track'; import { ArrowLeftBigIcon } from '@blocksuite/icons/rc'; import { useLiveData, useService } from '@toeverything/infra'; import clsx from 'clsx'; @@ -100,6 +101,7 @@ export const InviteMemberEditor = ({ const onInvite = useAsyncCallback(async () => { const selectedMemberIds = selectedMembers.map(member => member.id); + track.$.sharePanel.$.inviteUserDocRole({ control: 'member list' }); try { await docGrantedUsersService.grantUsersRole( selectedMemberIds, diff --git a/packages/frontend/core/src/modules/share-menu/view/share-menu/member-management/member-item.tsx b/packages/frontend/core/src/modules/share-menu/view/share-menu/member-management/member-item.tsx index 8c70cb4e2..52c0f82c6 100644 --- a/packages/frontend/core/src/modules/share-menu/view/share-menu/member-management/member-item.tsx +++ b/packages/frontend/core/src/modules/share-menu/view/share-menu/member-management/member-item.tsx @@ -19,6 +19,7 @@ import { } from '@affine/core/modules/permissions'; import { DocRole, UserFriendlyError } from '@affine/graphql'; import { useI18n } from '@affine/i18n'; +import track from '@affine/track'; import { useLiveData, useService } from '@toeverything/infra'; import clsx from 'clsx'; import { useCallback, useMemo } from 'react'; @@ -148,6 +149,7 @@ const Options = ({ const updateUserRole = useCallback( async (userId: string, role: DocRole) => { + track.$.sharePanel.$.modifyUserDocRole({ control: role }); try { const res = await docGrantedUsersService.updateUserRole(userId, role); if (res) { @@ -214,6 +216,7 @@ const Options = ({ }, [changeToOwner, openConfirmModal, t]); const removeMember = useAsyncCallback(async () => { + track.$.sharePanel.$.modifyUserDocRole({ control: 'Remove' }); try { await docGrantedUsersService.revokeUsersRole(userId); docGrantedUsersService.loadMore(); diff --git a/packages/frontend/track/src/events.ts b/packages/frontend/track/src/events.ts index 41d465daf..e5cf72339 100644 --- a/packages/frontend/track/src/events.ts +++ b/packages/frontend/track/src/events.ts @@ -103,6 +103,10 @@ type ShareEvents = | 'copyShareLink' | 'openShareMenu' | 'share'; +type DocRoleEvents = + | 'modifyDocDefaultRole' + | 'modifyUserDocRole' + | 'inviteUserDocRole'; type AuthEvents = | 'requestSignIn' | 'signIn' @@ -147,6 +151,7 @@ type UserEvents = | CmdkEvents | OrganizeEvents | ShareEvents + | DocRoleEvents | AuthEvents | AccountEvents | PaymentEvents @@ -176,7 +181,15 @@ const PageEvents = { auth: ['requestSignIn', 'signIn', 'signedIn', 'signInFail', 'signOut'], }, sharePanel: { - $: ['createShareLink', 'copyShareLink', 'export', 'open'], + $: [ + 'createShareLink', + 'copyShareLink', + 'export', + 'open', + 'modifyDocDefaultRole', + 'modifyUserDocRole', + 'inviteUserDocRole', + ], }, docInfoPanel: { $: ['open'], @@ -417,6 +430,14 @@ type AttachmentEventArgs = { type: string; // file type }; +type DocRoleControlType = + | 'Owner' + | 'Editor' + | 'Manager' + | 'Reader' + | 'External' + | 'Remove'; + type TabActionControlType = | 'click' | 'dnd' @@ -512,6 +533,12 @@ export type EventArgs = { openAttachmentInNewTab: AttachmentEventArgs; openAttachmentInPeekView: AttachmentEventArgs; openAttachmentInSplitView: AttachmentEventArgs; + modifyUserDocRole: { + control: DocRoleControlType; + }; + inviteUserDocRole: { + control: 'member list'; + }; }; // for type checking