feat(core): add fallback component to member list (#6672)
<img width="549" alt="image" src="https://github.com/toeverything/AFFiNE/assets/102217452/7246002f-ebfb-4486-abbc-35bbee8fba0e">
This commit is contained in:
@@ -208,8 +208,8 @@ export const CloudWorkspaceMembersPanel = () => {
|
|||||||
<MemberLimitModal
|
<MemberLimitModal
|
||||||
isFreePlan={!!plan}
|
isFreePlan={!!plan}
|
||||||
open={open}
|
open={open}
|
||||||
plan={workspaceQuota?.humanReadable.name ?? ''}
|
plan={workspaceQuota.humanReadable.name ?? ''}
|
||||||
quota={workspaceQuota?.humanReadable.memberLimit ?? ''}
|
quota={workspaceQuota.humanReadable.memberLimit ?? ''}
|
||||||
setOpen={setOpen}
|
setOpen={setOpen}
|
||||||
onConfirm={handleUpgradeConfirm}
|
onConfirm={handleUpgradeConfirm}
|
||||||
/>
|
/>
|
||||||
@@ -250,6 +250,21 @@ export const CloudWorkspaceMembersPanel = () => {
|
|||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
export const MembersPanelFallback = () => {
|
||||||
|
const t = useAFFiNEI18N();
|
||||||
|
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<SettingRow
|
||||||
|
name={t['Members']()}
|
||||||
|
desc={t['com.affine.payment.member.description2']()}
|
||||||
|
/>
|
||||||
|
<div className={style.membersPanel}>
|
||||||
|
<MemberListFallback memberCount={1} />
|
||||||
|
</div>
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
const MemberListFallback = ({ memberCount }: { memberCount: number }) => {
|
const MemberListFallback = ({ memberCount }: { memberCount: number }) => {
|
||||||
// prevent page jitter
|
// prevent page jitter
|
||||||
@@ -260,6 +275,7 @@ const MemberListFallback = ({ memberCount }: { memberCount: number }) => {
|
|||||||
}
|
}
|
||||||
return 'auto';
|
return 'auto';
|
||||||
}, [memberCount]);
|
}, [memberCount]);
|
||||||
|
const t = useAFFiNEI18N();
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div
|
<div
|
||||||
@@ -268,7 +284,8 @@ const MemberListFallback = ({ memberCount }: { memberCount: number }) => {
|
|||||||
}}
|
}}
|
||||||
className={style.membersFallback}
|
className={style.membersFallback}
|
||||||
>
|
>
|
||||||
<Loading size={40} />
|
<Loading size={20} />
|
||||||
|
<span>{t['com.affine.settings.member.loading']()}</span>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
@@ -388,7 +405,7 @@ export const MembersPanel = (): ReactElement | null => {
|
|||||||
}
|
}
|
||||||
return (
|
return (
|
||||||
<AffineErrorBoundary>
|
<AffineErrorBoundary>
|
||||||
<Suspense>
|
<Suspense fallback={<MembersPanelFallback />}>
|
||||||
<CloudWorkspaceMembersPanel />
|
<CloudWorkspaceMembersPanel />
|
||||||
</Suspense>
|
</Suspense>
|
||||||
</AffineErrorBoundary>
|
</AffineErrorBoundary>
|
||||||
|
|||||||
@@ -84,8 +84,11 @@ export const fakeWrapper = style({
|
|||||||
export const membersFallback = style({
|
export const membersFallback = style({
|
||||||
display: 'flex',
|
display: 'flex',
|
||||||
justifyContent: 'center',
|
justifyContent: 'center',
|
||||||
alignItems: 'center',
|
alignItems: 'flexStart',
|
||||||
color: cssVar('primaryColor'),
|
color: cssVar('textSecondaryColor'),
|
||||||
|
gap: '4px',
|
||||||
|
padding: '8px',
|
||||||
|
fontSize: cssVar('fontXs'),
|
||||||
});
|
});
|
||||||
export const membersPanel = style({
|
export const membersPanel = style({
|
||||||
padding: '4px',
|
padding: '4px',
|
||||||
|
|||||||
@@ -1075,6 +1075,7 @@
|
|||||||
"com.affine.settings.email.action.change": "Change Email",
|
"com.affine.settings.email.action.change": "Change Email",
|
||||||
"com.affine.settings.email.action.verify": "Verify Email",
|
"com.affine.settings.email.action.verify": "Verify Email",
|
||||||
"com.affine.settings.member-tooltip": "Enable AFFiNE Cloud to collaborate with others",
|
"com.affine.settings.member-tooltip": "Enable AFFiNE Cloud to collaborate with others",
|
||||||
|
"com.affine.settings.member.loading": "Loading member list...",
|
||||||
"com.affine.settings.noise-style": "Noise background on the sidebar",
|
"com.affine.settings.noise-style": "Noise background on the sidebar",
|
||||||
"com.affine.settings.noise-style-description": "Use background noise effect on the sidebar.",
|
"com.affine.settings.noise-style-description": "Use background noise effect on the sidebar.",
|
||||||
"com.affine.settings.password": "Password",
|
"com.affine.settings.password": "Password",
|
||||||
|
|||||||
Reference in New Issue
Block a user