feat(core): add no access to share menu (#10927)

This commit is contained in:
JimmFly
2025-03-20 07:31:11 +00:00
parent c16ae2d5b4
commit d47bb64597
13 changed files with 209 additions and 91 deletions

View File

@@ -28,6 +28,8 @@ const getRoleName = (t: ReturnType<typeof useI18n>, role?: DocRole) => {
return t['com.affine.share-menu.option.permission.can-edit']();
case DocRole.Reader:
return t['com.affine.share-menu.option.permission.can-read']();
case DocRole.None:
return t['com.affine.share-menu.option.permission.no-access']();
default:
return '';
}
@@ -53,7 +55,9 @@ export const MembersPermission = ({
[docDefaultRole, t]
);
const showTips =
docDefaultRole === DocRole.Reader || docDefaultRole === DocRole.Editor;
docDefaultRole === DocRole.Reader ||
docDefaultRole === DocRole.Editor ||
docDefaultRole === DocRole.None;
const changePermission = useAsyncCallback(
async (docRole: DocRole) => {
try {
@@ -93,6 +97,14 @@ export const MembersPermission = ({
changePermission(DocRole.Reader);
}, [changePermission, hittingPaywall, openPaywallModal]);
const selectNone = useCallback(() => {
if (hittingPaywall) {
openPaywallModal?.();
return;
}
changePermission(DocRole.None);
}, [changePermission, hittingPaywall, openPaywallModal]);
return (
<div className={styles.rowContainerStyle}>
<div className={styles.labelStyle}>
@@ -141,6 +153,17 @@ export const MembersPermission = ({
</div>
</div>
</MenuItem>
<MenuItem
onSelect={selectNone}
selected={docDefaultRole === DocRole.None}
>
<div className={styles.publicItemRowStyle}>
<div className={styles.tagContainerStyle}>
{t['com.affine.share-menu.option.permission.no-access']()}
{hittingPaywall ? <PlanTag /> : null}
</div>
</div>
</MenuItem>
</>
}
>