diff --git a/packages/frontend/core/src/modules/permissions/services/doc-granted-users.ts b/packages/frontend/core/src/modules/permissions/services/doc-granted-users.ts index e7eb5327d8..5de0b766de 100644 --- a/packages/frontend/core/src/modules/permissions/services/doc-granted-users.ts +++ b/packages/frontend/core/src/modules/permissions/services/doc-granted-users.ts @@ -1,4 +1,4 @@ -import type { DocRole, GetPageGrantedUsersListQuery } from '@affine/graphql'; +import { DocRole, type GetPageGrantedUsersListQuery } from '@affine/graphql'; import { backoffRetry, catchErrorInto, @@ -123,20 +123,29 @@ export class DocGrantedUsersService extends Service { } async updateUserRole(userId: string, role: DocRole) { - await this.store.updateDocUserRole( + const res = await this.store.updateDocUserRole( this.workspaceService.workspace.id, this.docService.doc.id, userId, role ); - this.grantedUsers$.next( - this.grantedUsers$.value.map(user => { - if (user.user.id === userId) { - return { ...user, role }; - } - return user; - }) - ); + if (res) { + if (role === DocRole.Owner) { + this.reset(); + this.loadMore(); + return res; + } + this.grantedUsers$.next( + this.grantedUsers$.value.map(user => { + if (user.user.id === userId) { + return { ...user, role }; + } + return user; + }) + ); + } + + return res; } async updateDocDefaultRole(role: DocRole) { diff --git a/packages/frontend/core/src/modules/share-menu/view/share-menu/copy-link-button.css.ts b/packages/frontend/core/src/modules/share-menu/view/share-menu/copy-link-button.css.ts index 740d0c2b22..0df94db284 100644 --- a/packages/frontend/core/src/modules/share-menu/view/share-menu/copy-link-button.css.ts +++ b/packages/frontend/core/src/modules/share-menu/view/share-menu/copy-link-button.css.ts @@ -2,7 +2,6 @@ import { cssVarV2 } from '@toeverything/theme/v2'; import { globalStyle, style } from '@vanilla-extract/css'; export const copyLinkContainerStyle = style({ - padding: '4px', display: 'flex', alignItems: 'center', width: '100%', @@ -18,6 +17,7 @@ export const copyLinkButtonStyle = style({ flex: 1, padding: '4px 12px', paddingRight: '6px', + borderRadius: '4px', borderRight: 'none', borderTopRightRadius: '0', borderBottomRightRadius: '0', @@ -35,6 +35,7 @@ export const copyLinkButtonStyle = style({ export const copyLinkLabelContainerStyle = style({ width: '100%', borderRight: 'none', + borderRadius: '4px', borderTopRightRadius: '0', borderBottomRightRadius: '0', position: 'relative', @@ -70,6 +71,7 @@ export const copyLinkShortcutStyle = style({ }); export const copyLinkTriggerStyle = style({ padding: '4px 12px 4px 8px', + borderRadius: '4px', borderLeft: 'none', borderTopLeftRadius: '0', borderBottomLeftRadius: '0', 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 ddc48b4502..1cd7053821 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 @@ -1,10 +1,12 @@ -import { Menu, MenuItem, MenuTrigger } from '@affine/component'; +import { Menu, MenuItem, MenuTrigger, Tooltip } from '@affine/component'; import { useAsyncCallback } from '@affine/core/components/hooks/affine-async-hooks'; 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 { InformationIcon } from '@blocksuite/icons/rc'; import { useLiveData, useService } from '@toeverything/infra'; +import clsx from 'clsx'; import { useCallback, useMemo } from 'react'; import { PlanTag } from '../plan-tag'; @@ -42,7 +44,8 @@ export const MembersPermission = ({ () => getRoleName(t, docDefaultRole), [docDefaultRole, t] ); - + const showTips = + docDefaultRole === DocRole.Reader || docDefaultRole === DocRole.Editor; const changePermission = useCallback( async (docRole: DocRole) => { await docGrantedUsersService.updateDocDefaultRole(docRole); @@ -76,12 +79,16 @@ export const MembersPermission = ({