@oxyhq/services 10.2.1 → 10.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -7,6 +7,7 @@ exports.useFollowerCounts = exports.useFollowForButton = exports.useFollow = voi
7
7
  var _react = require("react");
8
8
  var _followStore = require("../stores/followStore.js");
9
9
  var _OxyContext = require("../context/OxyContext.js");
10
+ var _core = require("@oxyhq/core");
10
11
  var _shallow = require("zustand/react/shallow");
11
12
  /**
12
13
  * useFollow — Hook for follow state management.
@@ -23,8 +24,12 @@ var _shallow = require("zustand/react/shallow");
23
24
  */
24
25
  const useFollow = userId => {
25
26
  const {
26
- oxyServices
27
+ oxyServices,
28
+ isAuthenticated,
29
+ isAuthResolved,
30
+ isTokenReady
27
31
  } = (0, _OxyContext.useOxy)();
32
+ const canUsePrivateApi = isAuthResolved && isTokenReady && isAuthenticated;
28
33
  const userIds = (0, _react.useMemo)(() => Array.isArray(userId) ? userId : userId ? [userId] : [], [userId]);
29
34
  const isSingleUser = typeof userId === 'string';
30
35
 
@@ -70,17 +75,19 @@ const useFollow = userId => {
70
75
  // Store actions are accessed via getState() to avoid subscribing to them.
71
76
  const toggleFollow = (0, _react.useCallback)(async () => {
72
77
  if (!isSingleUser || !userId) throw new Error('toggleFollow is only available for single user mode');
78
+ if (!canUsePrivateApi) throw new Error('Authentication is required to follow users');
73
79
  const currentlyFollowing = _followStore.useFollowStore.getState().followingUsers[userId] ?? false;
74
80
  await _followStore.useFollowStore.getState().toggleFollowUser(userId, oxyServices, currentlyFollowing);
75
- }, [isSingleUser, userId, oxyServices]);
81
+ }, [isSingleUser, userId, canUsePrivateApi, oxyServices]);
76
82
  const setFollowStatus = (0, _react.useCallback)(following => {
77
83
  if (!isSingleUser || !userId) throw new Error('setFollowStatus is only available for single user mode');
78
84
  _followStore.useFollowStore.getState().setFollowingStatus(userId, following);
79
85
  }, [isSingleUser, userId]);
80
86
  const fetchStatus = (0, _react.useCallback)(async () => {
81
87
  if (!isSingleUser || !userId) throw new Error('fetchStatus is only available for single user mode');
88
+ if (!canUsePrivateApi) return;
82
89
  await _followStore.useFollowStore.getState().fetchFollowStatus(userId, oxyServices);
83
- }, [isSingleUser, userId, oxyServices]);
90
+ }, [isSingleUser, userId, canUsePrivateApi, oxyServices]);
84
91
  const clearError = (0, _react.useCallback)(() => {
85
92
  if (!isSingleUser || !userId) throw new Error('clearError is only available for single user mode');
86
93
  _followStore.useFollowStore.getState().clearFollowError(userId);
@@ -102,25 +109,32 @@ const useFollow = userId => {
102
109
  (0, _react.useEffect)(() => {
103
110
  if (!isSingleUser || !userId) return;
104
111
  if ((followerCount === null || followingCount === null) && !isLoadingCounts) {
105
- fetchUserCounts().catch(err => console.warn('useFollow: fetchUserCounts failed', err));
112
+ fetchUserCounts().catch(error => {
113
+ _core.logger.warn('useFollow: fetchUserCounts failed', {
114
+ component: 'useFollow'
115
+ }, error);
116
+ });
106
117
  }
107
118
  }, [isSingleUser, userId, followerCount, followingCount, isLoadingCounts, fetchUserCounts]);
108
119
 
109
120
  // Multi-user callbacks
110
121
  const toggleFollowForUser = (0, _react.useCallback)(async targetUserId => {
122
+ if (!canUsePrivateApi) throw new Error('Authentication is required to follow users');
111
123
  const currentState = _followStore.useFollowStore.getState().followingUsers[targetUserId] ?? false;
112
124
  await _followStore.useFollowStore.getState().toggleFollowUser(targetUserId, oxyServices, currentState);
113
- }, [oxyServices]);
125
+ }, [canUsePrivateApi, oxyServices]);
114
126
  const setFollowStatusForUser = (0, _react.useCallback)((targetUserId, following) => {
115
127
  _followStore.useFollowStore.getState().setFollowingStatus(targetUserId, following);
116
128
  }, []);
117
129
  const fetchStatusForUser = (0, _react.useCallback)(async targetUserId => {
130
+ if (!canUsePrivateApi) return;
118
131
  await _followStore.useFollowStore.getState().fetchFollowStatus(targetUserId, oxyServices);
119
- }, [oxyServices]);
132
+ }, [canUsePrivateApi, oxyServices]);
120
133
  const fetchAllStatuses = (0, _react.useCallback)(async () => {
134
+ if (!canUsePrivateApi) return;
121
135
  const store = _followStore.useFollowStore.getState();
122
136
  await Promise.all(userIds.map(uid => store.fetchFollowStatus(uid, oxyServices)));
123
- }, [userIds, oxyServices]);
137
+ }, [canUsePrivateApi, userIds, oxyServices]);
124
138
  const clearErrorForUser = (0, _react.useCallback)(targetUserId => {
125
139
  _followStore.useFollowStore.getState().clearFollowError(targetUserId);
126
140
  }, []);
@@ -1 +1 @@
1
- {"version":3,"names":["_react","require","_followStore","_OxyContext","_shallow","useFollow","userId","oxyServices","useOxy","userIds","useMemo","Array","isArray","isSingleUser","isFollowing","useFollowStore","useCallback","s","followingUsers","isLoading","loadingUsers","error","errors","followerCount","followerCounts","followingCount","followingCounts","isLoadingCounts","loadingCounts","followData","useShallow","data","uid","multiUserLoadingState","isAnyLoading","hasAnyError","allFollowing","allNotFollowing","some","every","toggleFollow","Error","currentlyFollowing","getState","toggleFollowUser","setFollowStatus","following","setFollowingStatus","fetchStatus","fetchFollowStatus","clearError","clearFollowError","fetchUserCounts","setFollowerCount","count","setFollowingCount","useEffect","catch","err","console","warn","toggleFollowForUser","targetUserId","currentState","setFollowStatusForUser","fetchStatusForUser","fetchAllStatuses","store","Promise","all","map","clearErrorForUser","updateCountsFromFollowAction","action","counts","currentUserId","getCurrentUserId","undefined","exports","useFollowForButton","useFollowerCounts"],"sourceRoot":"../../../../src","sources":["ui/hooks/useFollow.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","require","_followStore","_OxyContext","_core","_shallow","useFollow","userId","oxyServices","isAuthenticated","isAuthResolved","isTokenReady","useOxy","canUsePrivateApi","userIds","useMemo","Array","isArray","isSingleUser","isFollowing","useFollowStore","useCallback","s","followingUsers","isLoading","loadingUsers","error","errors","followerCount","followerCounts","followingCount","followingCounts","isLoadingCounts","loadingCounts","followData","useShallow","data","uid","multiUserLoadingState","isAnyLoading","hasAnyError","allFollowing","allNotFollowing","some","every","toggleFollow","Error","currentlyFollowing","getState","toggleFollowUser","setFollowStatus","following","setFollowingStatus","fetchStatus","fetchFollowStatus","clearError","clearFollowError","fetchUserCounts","setFollowerCount","count","setFollowingCount","useEffect","catch","loggerUtil","warn","component","toggleFollowForUser","targetUserId","currentState","setFollowStatusForUser","fetchStatusForUser","fetchAllStatuses","store","Promise","all","map","clearErrorForUser","updateCountsFromFollowAction","action","counts","currentUserId","getCurrentUserId","undefined","exports","useFollowForButton","useFollowerCounts"],"sourceRoot":"../../../../src","sources":["ui/hooks/useFollow.ts"],"mappings":"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","ignoreList":[]}
@@ -74,11 +74,13 @@ const FollowButton = props => {
74
74
  const {
75
75
  oxyServices,
76
76
  isAuthenticated,
77
+ isAuthResolved,
78
+ isTokenReady,
77
79
  user: currentUser
78
80
  } = useOxy();
79
81
  const currentUserId = currentUser?.id ? String(currentUser.id).trim() : '';
80
82
  const targetUserId = props.userId ? String(props.userId).trim() : '';
81
- if (!isAuthenticated || !targetUserId || currentUserId && currentUserId === targetUserId) {
83
+ if (!isAuthResolved || !isTokenReady || !isAuthenticated || !targetUserId || currentUserId && currentUserId === targetUserId) {
82
84
  return null;
83
85
  }
84
86
  return /*#__PURE__*/_jsx(FollowButtonInner, {
@@ -1 +1 @@
1
- {"version":3,"names":["React","useEffect","useCallback","memo","TouchableOpacity","Text","Platform","ActivityIndicator","useOxy","toast","useFollowForButton","useTheme","jsx","_jsx","FollowButtonInner","userId","oxyServices","initiallyFollowing","size","onFollowChange","style","textStyle","disabled","showLoadingState","preventParentActions","colors","isFollowing","isLoading","toggleFollow","setFollowStatus","fetchStatus","handlePress","event","preventDefault","stopPropagation","err","error","Error","String","message","baseButtonStyle","getBaseButtonStyle","baseTextStyle","getBaseTextStyle","className","onPress","activeOpacity","children","color","text","negativeForeground","FollowButton","props","isAuthenticated","user","currentUser","currentUserId","id","trim","targetUserId","baseStyle","flexDirection","alignItems","justifyContent","borderWidth","select","web","default","shadowColor","shadowOffset","width","height","shadowOpacity","shadowRadius","elevation","sizeStyle","paddingVertical","paddingHorizontal","minWidth","borderRadius","fontWeight","sizeTextStyle","fontSize"],"sourceRoot":"../../../../src","sources":["ui/components/FollowButton.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","useEffect","useCallback","memo","TouchableOpacity","Text","Platform","ActivityIndicator","useOxy","toast","useFollowForButton","useTheme","jsx","_jsx","FollowButtonInner","userId","oxyServices","initiallyFollowing","size","onFollowChange","style","textStyle","disabled","showLoadingState","preventParentActions","colors","isFollowing","isLoading","toggleFollow","setFollowStatus","fetchStatus","handlePress","event","preventDefault","stopPropagation","err","error","Error","String","message","baseButtonStyle","getBaseButtonStyle","baseTextStyle","getBaseTextStyle","className","onPress","activeOpacity","children","color","text","negativeForeground","FollowButton","props","isAuthenticated","isAuthResolved","isTokenReady","user","currentUser","currentUserId","id","trim","targetUserId","baseStyle","flexDirection","alignItems","justifyContent","borderWidth","select","web","default","shadowColor","shadowOffset","width","height","shadowOpacity","shadowRadius","elevation","sizeStyle","paddingVertical","paddingHorizontal","minWidth","borderRadius","fontWeight","sizeTextStyle","fontSize"],"sourceRoot":"../../../../src","sources":["ui/components/FollowButton.tsx"],"mappings":"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","ignoreList":[]}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
 
3
- import { createContext, useCallback, useContext, useEffect, useMemo, useRef, useState } from 'react';
3
+ import { createContext, useCallback, useContext, useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react';
4
4
  import { OxyServices, oxyClient } from '@oxyhq/core';
5
5
  import { KeyManager } from '@oxyhq/core';
6
6
  import { runColdBoot, resolveCentralAuthUrl, autoDetectAuthWebUrl, SSO_CALLBACK_PATH, ssoStateKey, ssoGuardKey, ssoDestKey, ssoNoSessionKey, ssoAttemptedKey, isCentralIdPOrigin, guardActive, ssoNavigate, buildSsoBounceUrl, consumeSsoReturn } from '@oxyhq/core';
@@ -118,6 +118,30 @@ const COOKIE_RESTORE_TIMEOUT = 3000;
118
118
  * which is bounded well under this, so the deadline never alters native flow.
119
119
  */
120
120
  const COLD_BOOT_OVERALL_DEADLINE = 20000;
121
+ function getHttpStatus(error) {
122
+ if (!error || typeof error !== 'object') {
123
+ return undefined;
124
+ }
125
+ if ('status' in error) {
126
+ const status = error.status;
127
+ if (typeof status === 'number') {
128
+ return status;
129
+ }
130
+ }
131
+ if ('response' in error) {
132
+ const response = error.response;
133
+ if (response && typeof response === 'object' && 'status' in response) {
134
+ const status = response.status;
135
+ if (typeof status === 'number') {
136
+ return status;
137
+ }
138
+ }
139
+ }
140
+ return undefined;
141
+ }
142
+ function isUnauthorizedStatus(error) {
143
+ return getHttpStatus(error) === 401;
144
+ }
121
145
 
122
146
  /**
123
147
  * Whether `idpOrigin` is a same-site, first-party host of the current page —
@@ -141,7 +165,12 @@ function isSameSiteIdP(idpOrigin) {
141
165
  let idpHostname;
142
166
  try {
143
167
  idpHostname = new URL(idpOrigin).hostname;
144
- } catch {
168
+ } catch (parseError) {
169
+ if (__DEV__) {
170
+ loggerUtil.debug('Invalid IdP origin while checking same-site session status', {
171
+ component: 'OxyContext'
172
+ }, parseError);
173
+ }
145
174
  return false;
146
175
  }
147
176
  const pageHostname = window.location.hostname;
@@ -155,6 +184,10 @@ function isSameSiteIdP(idpOrigin) {
155
184
  if (apexOf(idpHostname) !== pageApex) return false;
156
185
  return idpHostname === pageApex || idpHostname.endsWith(`.${pageApex}`);
157
186
  }
187
+ function isOnSsoCallbackPath() {
188
+ return isWebBrowser() && window.location.pathname === SSO_CALLBACK_PATH;
189
+ }
190
+ const useBrowserLayoutEffect = typeof document !== 'undefined' ? useLayoutEffect : useEffect;
158
191
  let cachedUseFollowHook = null;
159
192
  const loadUseFollowHook = () => {
160
193
  if (cachedUseFollowHook) {
@@ -244,7 +277,12 @@ export const OxyProvider = ({
244
277
  // `isAuthResolved` on the context type for the consumer contract.
245
278
  const [authResolved, setAuthResolved] = useState(false);
246
279
  const authResolvedRef = useRef(false);
280
+ const userRef = useRef(user);
281
+ const isAuthenticatedRef = useRef(isAuthenticated);
282
+ userRef.current = user;
283
+ isAuthenticatedRef.current = isAuthenticated;
247
284
  const [initialized, setInitialized] = useState(false);
285
+ const [ssoCallbackIntercepting, setSsoCallbackIntercepting] = useState(false);
248
286
  const setAuthState = useAuthStore.setState;
249
287
 
250
288
  // Keep the shared `oxyClient` singleton's token store in lockstep with the
@@ -480,6 +518,36 @@ export const OxyProvider = ({
480
518
  updateSessionsRef.current = updateSessions;
481
519
  const clearSessionStateRef = useRef(clearSessionState);
482
520
  clearSessionStateRef.current = clearSessionState;
521
+ const clearingInvalidTokenRef = useRef(false);
522
+ useEffect(() => {
523
+ const handleTokenChange = accessToken => {
524
+ if (accessToken) {
525
+ setTokenReady(true);
526
+ return;
527
+ }
528
+ if (userRef.current || isAuthenticatedRef.current) {
529
+ setTokenReady(false);
530
+ if (clearingInvalidTokenRef.current) {
531
+ return;
532
+ }
533
+ clearingInvalidTokenRef.current = true;
534
+ clearSessionStateRef.current().catch(clearError => {
535
+ logger('Failed to clear invalidated auth session', clearError);
536
+ }).finally(() => {
537
+ clearingInvalidTokenRef.current = false;
538
+ if (authResolvedRef.current) {
539
+ setTokenReady(true);
540
+ }
541
+ });
542
+ return;
543
+ }
544
+ if (authResolvedRef.current) {
545
+ setTokenReady(true);
546
+ }
547
+ };
548
+ handleTokenChange(oxyServices.getAccessToken());
549
+ return oxyServices.onTokensChanged(handleTokenChange);
550
+ }, [logger, oxyServices]);
483
551
 
484
552
  // Durable, navigation-safe session persistence.
485
553
  //
@@ -498,12 +566,14 @@ export const OxyProvider = ({
498
566
  let sessionIds = [];
499
567
  try {
500
568
  sessionIds = existingIds ? JSON.parse(existingIds) : [];
501
- } catch {/* corrupted storage */}
569
+ } catch (parseError) {
570
+ logger('Failed to parse persisted session ids; replacing corrupted storage value', parseError);
571
+ }
502
572
  if (!sessionIds.includes(sessionId)) {
503
573
  sessionIds.push(sessionId);
504
574
  await readyStorage.setItem(storageKeys.sessionIds, JSON.stringify(sessionIds));
505
575
  }
506
- }, [getReadyStorage, storageKeys.activeSessionId, storageKeys.sessionIds]);
576
+ }, [getReadyStorage, logger, storageKeys.activeSessionId, storageKeys.sessionIds]);
507
577
 
508
578
  // Refs so the cold-boot restore can plant session state without widening its
509
579
  // dependency array (mirrors the existing ref pattern above).
@@ -1138,13 +1208,12 @@ export const OxyProvider = ({
1138
1208
  // +not-found screen before the storage-gated cold-boot `sso-return` step gets
1139
1209
  // a chance to strip the fragment and restore the real destination.
1140
1210
  //
1141
- // This effect fires the SAME `runSsoReturn` kernel the instant we mount ON the
1142
- // callback path, BEFORE the cold boot (which awaits storage init). It restores
1143
- // the pre-bounce destination (and, on `ok`, commits the exchanged session via
1144
- // `handleWebSSOSession`) immediately, so the router re-syncs off the callback
1145
- // path and never lingers on it. Because the SDK owns this interception
1146
- // entirely, NO app needs a `/__oxy/sso-callback` route — it works identically
1147
- // across every consumer with zero per-app code.
1211
+ // This effect fires the SAME `runSsoReturn` kernel the instant we hydrate ON
1212
+ // the callback path, BEFORE the cold boot (which awaits storage init). The
1213
+ // first render intentionally matches the app/router's static HTML; the
1214
+ // browser layout effect then hides the internal route and consumes the
1215
+ // callback before the first visible paint. That keeps SSR/SSG hydration stable
1216
+ // while still ensuring no app needs a `/__oxy/sso-callback` route.
1148
1217
  //
1149
1218
  // It is purely ADDITIVE. The later cold-boot `sso-return` step stays as
1150
1219
  // defense-in-depth for the non-callback-path case; `consumeSsoReturn` strips
@@ -1160,13 +1229,13 @@ export const OxyProvider = ({
1160
1229
  // already wired when this fires at eager-mount time. If for any reason it were
1161
1230
  // not yet set, the later cold-boot `sso-return` step would commit it — but the
1162
1231
  // ref IS set during render, so the eager `ok` commit works.
1163
- useEffect(() => {
1164
- if (!isWebBrowser()) {
1165
- return;
1166
- }
1167
- if (window.location.pathname !== SSO_CALLBACK_PATH) {
1232
+ useBrowserLayoutEffect(() => {
1233
+ if (!isOnSsoCallbackPath()) {
1234
+ setSsoCallbackIntercepting(false);
1168
1235
  return;
1169
1236
  }
1237
+ let mounted = true;
1238
+ setSsoCallbackIntercepting(true);
1170
1239
  runSsoReturnRef.current().catch(error => {
1171
1240
  if (__DEV__) {
1172
1241
  loggerUtil.debug('Eager SSO callback interception failed (non-fatal)', {
@@ -1174,7 +1243,14 @@ export const OxyProvider = ({
1174
1243
  method: 'eagerSsoCallbackIntercept'
1175
1244
  }, error);
1176
1245
  }
1246
+ }).finally(() => {
1247
+ if (mounted) {
1248
+ setSsoCallbackIntercepting(false);
1249
+ }
1177
1250
  });
1251
+ return () => {
1252
+ mounted = false;
1253
+ };
1178
1254
  }, []);
1179
1255
 
1180
1256
  // Web SSO: automatically check for cross-domain session on web platforms.
@@ -1227,7 +1303,13 @@ export const OxyProvider = ({
1227
1303
  let fullUser;
1228
1304
  try {
1229
1305
  fullUser = await oxyServices.getCurrentUser();
1230
- } catch {
1306
+ } catch (profileError) {
1307
+ if (__DEV__) {
1308
+ loggerUtil.debug('Failed to fetch full user after web session; using session user fallback', {
1309
+ component: 'OxyContext',
1310
+ method: 'handleWebSSOSession'
1311
+ }, profileError);
1312
+ }
1231
1313
  // If the profile fetch fails, fall back to the minimal data from the session
1232
1314
  // so the user is still logged in (the store accepts User, but the shapes overlap at runtime).
1233
1315
  fullUser = session.user;
@@ -1421,18 +1503,26 @@ export const OxyProvider = ({
1421
1503
 
1422
1504
  // Load managed accounts when authenticated
1423
1505
  const refreshManagedAccounts = useCallback(async () => {
1424
- if (!isAuthenticated) return;
1506
+ if (!isAuthenticated || !tokenReady || !oxyServices.getAccessToken()) {
1507
+ setManagedAccounts([]);
1508
+ return;
1509
+ }
1425
1510
  try {
1426
1511
  const accounts = await oxyServices.getManagedAccounts();
1427
1512
  setManagedAccounts(accounts);
1428
1513
  } catch (err) {
1514
+ if (isUnauthorizedStatus(err)) {
1515
+ setManagedAccounts([]);
1516
+ await clearSessionStateRef.current();
1517
+ return;
1518
+ }
1429
1519
  if (__DEV__) {
1430
1520
  loggerUtil.debug('Failed to load managed accounts', {
1431
1521
  component: 'OxyContext'
1432
1522
  }, err);
1433
1523
  }
1434
1524
  }
1435
- }, [isAuthenticated, oxyServices]);
1525
+ }, [isAuthenticated, oxyServices, tokenReady]);
1436
1526
  useEffect(() => {
1437
1527
  if (isAuthenticated && initialized && tokenReady) {
1438
1528
  refreshManagedAccounts();
@@ -1444,9 +1534,17 @@ export const OxyProvider = ({
1444
1534
  // Persist to storage
1445
1535
  if (storage) {
1446
1536
  if (userId) {
1447
- storage.setItem(`${storageKeyPrefix}_acting_as`, userId).catch(() => {});
1537
+ storage.setItem(`${storageKeyPrefix}_acting_as`, userId).catch(persistError => {
1538
+ loggerUtil.debug('Failed to persist acting-as account', {
1539
+ component: 'OxyContext'
1540
+ }, persistError);
1541
+ });
1448
1542
  } else {
1449
- storage.removeItem(`${storageKeyPrefix}_acting_as`).catch(() => {});
1543
+ storage.removeItem(`${storageKeyPrefix}_acting_as`).catch(persistError => {
1544
+ loggerUtil.debug('Failed to clear acting-as account', {
1545
+ component: 'OxyContext'
1546
+ }, persistError);
1547
+ });
1450
1548
  }
1451
1549
  }
1452
1550
  }, [oxyServices, storage, storageKeyPrefix]);
@@ -1498,7 +1596,7 @@ export const OxyProvider = ({
1498
1596
  }), [activeSessionId, signIn, handleWebSSOSession, currentLanguage, currentLanguageMetadata, currentLanguageName, currentNativeLanguageName, error, getDeviceSessions, getPublicKey, hasIdentity, isAuthenticated, isLoading, logout, logoutAll, logoutAllDeviceSessions, oxyServices, storageKeyPrefix, clientId, refreshSessionsWithUser, sessions, setLanguage, storage, switchSessionForContext, tokenReady, authResolved, updateDeviceName, clearAllAccountData, useFollowHook, user, showBottomSheetForContext, openAvatarPicker, actingAs, managedAccounts, setActingAs, refreshManagedAccounts, createManagedAccountFn]);
1499
1597
  return /*#__PURE__*/_jsx(OxyContext.Provider, {
1500
1598
  value: contextValue,
1501
- children: children
1599
+ children: ssoCallbackIntercepting ? null : children
1502
1600
  });
1503
1601
  };
1504
1602
  export const OxyContextProvider = OxyProvider;