mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-08-18 02:21:51 +08:00
feat(core): add tracking events to doc role management (#10221)
This commit is contained in:
+2
@@ -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();
|
||||
},
|
||||
|
||||
+2
@@ -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,
|
||||
|
||||
+3
@@ -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();
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user