Skip to content

Commit dd59ac8

Browse files
authored
fix(clerk-js): Ensure updated session is emitted on user change (#4661)
1 parent 15ce5b1 commit dd59ac8

File tree

2 files changed

+14
-1
lines changed

2 files changed

+14
-1
lines changed

.changeset/bright-carpets-beam.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@clerk/clerk-js': patch
3+
---
4+
5+
Fix a bug where the the Clerk event listener was not emitting updates when a Session's user data changes.

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

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,8 @@ function sessionChanged(prev: SessionResource, next: SessionResource): boolean {
3232
prev.id !== next.id ||
3333
prev.updatedAt.getTime() < next.updatedAt.getTime() ||
3434
sessionFVAChanged(prev, next) ||
35-
sessionUserMembershipPermissionsChanged(prev, next)
35+
sessionUserMembershipPermissionsChanged(prev, next) ||
36+
sessionUserChanged(prev, next)
3637
);
3738
}
3839

@@ -59,6 +60,13 @@ function sessionFVAChanged(prev: SessionResource, next: SessionResource): boolea
5960
return prevFVA !== nextFVA;
6061
}
6162

63+
function sessionUserChanged(prev: SessionResource, next: SessionResource): boolean {
64+
if (!!prev.user !== !!next.user) {
65+
return true;
66+
}
67+
return !!prev.user && !!next.user && userChanged(prev.user, next.user);
68+
}
69+
6270
function sessionUserMembershipPermissionsChanged(prev: SessionResource, next: SessionResource): boolean {
6371
if (prev.lastActiveOrganizationId !== next.lastActiveOrganizationId) {
6472
return true;

0 commit comments

Comments
 (0)