Skip to content

Commit 213092f

Browse files
committed
Add revalidation on user update
1 parent ffcf16e commit 213092f

File tree

2 files changed

+17
-6
lines changed

2 files changed

+17
-6
lines changed

packages/clerk-js/src/ui/components/SessionTasks/tasks/TaskChooseOrganization/ChooseOrganizationScreen.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ const MembershipPreview = withCardStateProvider((props: { organization: Organiza
130130
const InvitationPreview = withCardStateProvider((props: UserOrganizationInvitationResource) => {
131131
const card = useCardState();
132132
const { getOrganization } = useClerk();
133-
const [acceptInvitation, setAcceptedInvitation] = useState<OrganizationResource | null>(null);
133+
const [acceptedInvitation, setAcceptedInvitation] = useState<OrganizationResource | null>(null);
134134
const { userInvitations, userMemberships } = useOrganizationList({
135135
userInvitations: organizationListParams.userInvitations,
136136
userMemberships: organizationListParams.userMemberships,
@@ -163,8 +163,8 @@ const InvitationPreview = withCardStateProvider((props: UserOrganizationInvitati
163163
return null;
164164
}
165165

166-
if (acceptInvitation) {
167-
return <MembershipPreview organization={acceptInvitation} />;
166+
if (acceptedInvitation) {
167+
return <MembershipPreview organization={acceptedInvitation} />;
168168
}
169169

170170
return (

packages/clerk-js/src/ui/components/SessionTasks/tasks/TaskChooseOrganization/index.tsx

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import { useClerk, useSession, useUser } from '@clerk/shared/react';
2-
import { useState } from 'react';
1+
import { useClerk, useSession, useUserContext } from '@clerk/shared/react';
2+
import { useEffect, useState } from 'react';
33

44
import { useSignOutContext, withCoreSessionSwitchGuard } from '@/ui/contexts';
55
import { descriptors, Flex, Flow, localizationKeys, Spinner } from '@/ui/customizables';
@@ -14,7 +14,7 @@ import { CreateOrganizationScreen } from './CreateOrganizationScreen';
1414

1515
const TaskChooseOrganizationInternal = () => {
1616
const { signOut } = useClerk();
17-
const { user } = useUser();
17+
const user = useUserContext();
1818
const { session } = useSession();
1919
const { userMemberships, userSuggestions, userInvitations } = useOrganizationListInView();
2020
const { otherSessions } = useMultipleSessions({ user });
@@ -32,6 +32,17 @@ const TaskChooseOrganizationInternal = () => {
3232
const hasExistingResources = !!(userMemberships?.count || userInvitations?.count || userSuggestions?.count);
3333
const identifier = user?.primaryEmailAddress?.emailAddress ?? user?.username;
3434

35+
// Revalidates organization memberships from client piggybacking
36+
// TODO (ORGS-784): Introduce architecture to invalidate SWR queries based on client piggybacking
37+
const hasUpdatedOnClient = user?.organizationMemberships?.length !== userMemberships.count;
38+
useEffect(() => {
39+
if (!hasUpdatedOnClient) {
40+
return;
41+
}
42+
43+
void userMemberships?.revalidate?.();
44+
}, [hasUpdatedOnClient, userMemberships]);
45+
3546
return (
3647
<Flow.Root flow='taskChooseOrganization'>
3748
<Card.Root>

0 commit comments

Comments
 (0)