feat(core): add tracking events to doc role management (#10221)

This commit is contained in:
JimmFly
2025-02-19 16:39:50 +08:00
committed by GitHub
parent bc34516e6c
commit e5a1595980
4 changed files with 35 additions and 1 deletions
@@ -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();
},
@@ -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,
@@ -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();
+28 -1
View File
@@ -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