diff --git a/packages/frontend/component/src/components/member-components/join-failed-page.tsx b/packages/frontend/component/src/components/member-components/join-failed-page.tsx
index 7469262d80..f9ff41fb11 100644
--- a/packages/frontend/component/src/components/member-components/join-failed-page.tsx
+++ b/packages/frontend/component/src/components/member-components/join-failed-page.tsx
@@ -10,7 +10,7 @@ export const JoinFailedPage = ({
inviteInfo,
error,
}: {
- inviteInfo: GetInviteInfoQuery['getInviteInfo'];
+ inviteInfo?: GetInviteInfoQuery['getInviteInfo'];
error?: any;
}) => {
const userFriendlyError = UserFriendlyError.fromAny(error);
@@ -27,8 +27,8 @@ export const JoinFailedPage = ({
1: (
@@ -37,7 +37,7 @@ export const JoinFailedPage = ({
2:
,
}}
values={{
- workspaceName: inviteInfo.workspace.name,
+ workspaceName: inviteInfo?.workspace.name,
}}
/>
{t['com.affine.fail-to-join-workspace.description-2']()}
diff --git a/packages/frontend/component/src/components/member-components/request-to-join-page.tsx b/packages/frontend/component/src/components/member-components/request-to-join-page.tsx
index 354bbf928c..80ae649f26 100644
--- a/packages/frontend/component/src/components/member-components/request-to-join-page.tsx
+++ b/packages/frontend/component/src/components/member-components/request-to-join-page.tsx
@@ -16,7 +16,7 @@ export const RequestToJoinPage = ({
onSignOut,
}: {
user: User | null;
- inviteInfo: GetInviteInfoQuery['getInviteInfo'];
+ inviteInfo?: GetInviteInfoQuery['getInviteInfo'];
requestToJoin: () => void;
onSignOut: () => void;
}) => {
@@ -28,23 +28,23 @@ export const RequestToJoinPage = ({
-
{inviteInfo.user.name}
+
{inviteInfo?.user.name}
{t['invited you to join']()}
- {inviteInfo.workspace.name}
+ {inviteInfo?.workspace.name}
diff --git a/packages/frontend/core/src/desktop/pages/invite/index.tsx b/packages/frontend/core/src/desktop/pages/invite/index.tsx
index aaff12be12..ad1a9382e4 100644
--- a/packages/frontend/core/src/desktop/pages/invite/index.tsx
+++ b/packages/frontend/core/src/desktop/pages/invite/index.tsx
@@ -2,7 +2,6 @@ import { notify } from '@affine/component';
import {
AcceptInvitePage,
ExpiredPage,
- FailedToSendPage,
JoinFailedPage,
RequestToJoinPage,
SentRequestPage,
@@ -35,6 +34,7 @@ const AcceptInvite = ({ inviteId: targetInviteId }: { inviteId: string }) => {
const workspaces = useLiveData(workspacesService.list.workspaces$);
const navigateHelper = useNavigateHelper();
const [accepted, setAccepted] = useState(false);
+ const [requestToJoinLoading, setRequestToJoinLoading] = useState(false);
const [acceptError, setAcceptError] = useState
(
null
);
@@ -63,6 +63,7 @@ const AcceptInvite = ({ inviteId: targetInviteId }: { inviteId: string }) => {
}, [accepted, inviteInfo?.workspace.id, openWorkspace, workspaces]);
const requestToJoin = useAsyncCallback(async () => {
+ setRequestToJoinLoading(true);
await invitationService
.acceptInvite(targetInviteId)
.then(() => {
@@ -77,17 +78,18 @@ const AcceptInvite = ({ inviteId: targetInviteId }: { inviteId: string }) => {
setAcceptError(err);
notify.error(err);
});
+ setRequestToJoinLoading(false);
}, [invitationService, openWorkspace, targetInviteId]);
const onSignOut = useAsyncCallback(async () => {
await authService.signOut();
}, [authService]);
- if (loading || inviteId !== targetInviteId) {
+ if ((loading && !requestToJoinLoading) || inviteId !== targetInviteId) {
return null;
}
- if (!inviteInfo) {
+ if (!inviteInfo && !loading) {
return ;
}
@@ -98,7 +100,7 @@ const AcceptInvite = ({ inviteId: targetInviteId }: { inviteId: string }) => {
}
// for email invite
- if (accepted && inviteInfo.status === WorkspaceMemberStatus.Accepted) {
+ if (accepted && inviteInfo?.status === WorkspaceMemberStatus.Accepted) {
return (
{
);
}
- if (inviteInfo.status === WorkspaceMemberStatus.UnderReview) {
- return ;
- }
-
if (
- inviteInfo.status === WorkspaceMemberStatus.NeedMoreSeatAndReview ||
- inviteInfo.status === WorkspaceMemberStatus.NeedMoreSeat
+ inviteInfo?.status === WorkspaceMemberStatus.UnderReview ||
+ inviteInfo?.status === WorkspaceMemberStatus.NeedMoreSeatAndReview ||
+ inviteInfo?.status === WorkspaceMemberStatus.NeedMoreSeat
) {
- return ;
+ return ;
}
return (