Skip to content

Commit 798ee62

Browse files
committed
fix(clerk-js): Emit changes in organization to listeners
Added organization in the resources that are being emitted to the listeners. https://www.notion.so/clerkdev/Add-ClerkJS-method-to-set-the-active-organization-2f551fafdbd14834a7b5519e87c6f254
1 parent 04cd4f0 commit 798ee62

File tree

6 files changed

+26
-6
lines changed

6 files changed

+26
-6
lines changed

packages/clerk-js/src/core/clerk.ts

+2
Original file line numberDiff line numberDiff line change
@@ -400,6 +400,7 @@ export default class Clerk implements ClerkInterface {
400400
client: this.client,
401401
session: this.session,
402402
user: this.user,
403+
organization: this.organization,
403404
});
404405
}
405406

@@ -846,6 +847,7 @@ export default class Clerk implements ClerkInterface {
846847
client: this.client,
847848
session: this.session,
848849
user: this.user,
850+
organization: this.organization,
849851
});
850852
}
851853
}

packages/clerk-js/src/ui/contexts/CoreClerkContextWrapper.tsx

+1
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ export function CoreClerkContextWrapper(props: CoreClerkContextWrapperProps): JS
2323
client: clerk.client,
2424
session: clerk.session,
2525
user: clerk.user,
26+
organization: clerk.organization,
2627
});
2728

2829
React.useEffect(() => {

packages/clerk-js/src/utils/memoizeStateListenerCallback.ts

+13-6
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,15 @@
1-
import { ClientResource, ListenerCallback, Resources, SessionResource, UserResource } from '@clerk/types';
1+
import {
2+
ClientResource,
3+
ListenerCallback,
4+
OrganizationResource,
5+
Resources,
6+
SessionResource,
7+
UserResource,
8+
} from '@clerk/types';
29

310
import { Client, Session, User } from '../core/resources/internal';
411

5-
type AcceptedResource = UserResource | ClientResource | SessionResource;
12+
type AcceptedResource = UserResource | ClientResource | SessionResource | OrganizationResource;
613

714
function clientChanged(prev: ClientResource, next: ClientResource): boolean {
815
return (
@@ -56,10 +63,9 @@ function resourceChanged<T extends AcceptedResource | undefined | null>(prev: T,
5663
return true;
5764
}
5865

59-
function getSameOrUpdatedResource<T extends UserResource | ClientResource | SessionResource | undefined | null>(
60-
prev: T,
61-
next: T,
62-
): T {
66+
function getSameOrUpdatedResource<
67+
T extends UserResource | ClientResource | SessionResource | OrganizationResource | undefined | null,
68+
>(prev: T, next: T): T {
6369
return resourceChanged(prev, next) ? next : prev;
6470
}
6571

@@ -68,6 +74,7 @@ function stateWithMemoizedResources(cur: Resources, next: Resources): Resources
6874
client: getSameOrUpdatedResource(cur.client, next.client),
6975
session: getSameOrUpdatedResource(cur.session, next.session),
7076
user: getSameOrUpdatedResource(cur.user, next.user),
77+
organization: getSameOrUpdatedResource(cur.organization, next.organization),
7178
};
7279
}
7380

packages/react/src/contexts/ClerkContextProvider.tsx

+1
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ export function ClerkContextProvider(props: ClerkContextProvider): JSX.Element |
2424
client: clerk.client as ClientResource,
2525
session: clerk.session,
2626
user: clerk.user,
27+
organization: clerk.organization,
2728
});
2829
const derivedState = deriveState(clerkLoaded, state, initialState);
2930

packages/react/src/isomorphicClerk.ts

+8
Original file line numberDiff line numberDiff line change
@@ -229,6 +229,14 @@ export default class IsomorphicClerk {
229229
}
230230
}
231231

232+
get organization(): OrganizationResource | undefined | null {
233+
if (this.clerkjs) {
234+
return this.clerkjs.organization;
235+
} else {
236+
return undefined;
237+
}
238+
}
239+
232240
// TODO: Remove temp use of __unstable__environment
233241
get __unstable__environment(): any {
234242
if (this.clerkjs) {

packages/types/src/clerk.ts

+1
Original file line numberDiff line numberDiff line change
@@ -299,6 +299,7 @@ export interface Resources {
299299
client: ClientResource;
300300
session?: ActiveSessionResource | null;
301301
user?: UserResource | null;
302+
organization?: OrganizationResource | null;
302303
}
303304

304305
export type RoutingStrategy = 'path' | 'hash' | 'virtual';

0 commit comments

Comments
 (0)