Skip to content

Commit 21fc0a9

Browse files
committed
fix: only enforce OFFLINE on no-session users for setActive claims
1 parent fe59253 commit 21fc0a9

1 file changed

Lines changed: 5 additions & 3 deletions

File tree

ee/packages/presence/src/lib/presenceEngine.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -165,10 +165,12 @@ export function processPresence(
165165
const statusDefault = set.statusDefault ?? user.statusDefault ?? UserStatus.ONLINE;
166166
const clear = unset.length ? unset : undefined;
167167

168-
// users without DDP sessions still go through computeStatus so that
169-
// offline connection precedence is respected (e.g. after claim expiration)
168+
// setActive with no DDP sessions: user is disconnected but holding a claim — persist
169+
// it for reconnect but display OFFLINE. Other types (clearActive/endActive) use
170+
// statusDefault so REST-only callers and bots can appear online.
170171
if (!sessions.length) {
171-
return { values: { ...set, status: computeStatus(UserStatus.OFFLINE, statusDefault), statusConnection: UserStatus.OFFLINE }, clear };
172+
const status = claimUpdate.type === 'setActive' ? UserStatus.OFFLINE : statusDefault;
173+
return { values: { ...set, status, statusConnection: UserStatus.OFFLINE }, clear };
172174
}
173175

174176
const statusConnection = sessions.map((s) => s.status).reduce(reduceConnections, UserStatus.OFFLINE);

0 commit comments

Comments
 (0)