@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.
- package/README.md +7 -11
- package/lib/commonjs/ui/components/FollowButton.js +3 -1
- package/lib/commonjs/ui/components/FollowButton.js.map +1 -1
- package/lib/commonjs/ui/context/OxyContext.js +119 -21
- package/lib/commonjs/ui/context/OxyContext.js.map +1 -1
- package/lib/commonjs/ui/hooks/useAuth.js +1 -1
- package/lib/commonjs/ui/hooks/useAuth.js.map +1 -1
- package/lib/commonjs/ui/hooks/useFollow.js +21 -7
- package/lib/commonjs/ui/hooks/useFollow.js.map +1 -1
- package/lib/module/ui/components/FollowButton.js +3 -1
- package/lib/module/ui/components/FollowButton.js.map +1 -1
- package/lib/module/ui/context/OxyContext.js +120 -22
- package/lib/module/ui/context/OxyContext.js.map +1 -1
- package/lib/module/ui/hooks/useAuth.js +1 -1
- package/lib/module/ui/hooks/useAuth.js.map +1 -1
- package/lib/module/ui/hooks/useFollow.js +21 -7
- package/lib/module/ui/hooks/useFollow.js.map +1 -1
- package/lib/typescript/commonjs/ui/context/OxyContext.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/hooks/useFollow.d.ts +1 -1
- package/lib/typescript/commonjs/ui/hooks/useFollow.d.ts.map +1 -1
- package/lib/typescript/module/ui/context/OxyContext.d.ts.map +1 -1
- package/lib/typescript/module/ui/hooks/useFollow.d.ts +1 -1
- package/lib/typescript/module/ui/hooks/useFollow.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/ui/components/FollowButton.tsx +2 -2
- package/src/ui/context/OxyContext.tsx +128 -21
- package/src/ui/hooks/useAuth.ts +1 -1
- package/src/ui/hooks/useFollow.ts +16 -8
|
@@ -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(
|
|
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":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,WAAA,GAAAF,OAAA;AAEA,IAAAG,QAAA,GAAAH,OAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMI,SAAS,GAAIC,MAA0B,IAAK;EACvD,MAAM;IAAEC;EAAY,CAAC,GAAG,IAAAC,kBAAM,EAAC,CAAC;EAChC,MAAMC,OAAO,GAAG,IAAAC,cAAO,EAAC,MAAOC,KAAK,CAACC,OAAO,CAACN,MAAM,CAAC,GAAGA,MAAM,GAAGA,MAAM,GAAG,CAACA,MAAM,CAAC,GAAG,EAAG,EAAE,CAACA,MAAM,CAAC,CAAC;EAClG,MAAMO,YAAY,GAAG,OAAOP,MAAM,KAAK,QAAQ;;EAE/C;EACA,MAAMQ,WAAW,GAAG,IAAAC,2BAAc,EAChC,IAAAC,kBAAW,EAAEC,CAAC,IAAMJ,YAAY,IAAIP,MAAM,GAAGW,CAAC,CAACC,cAAc,CAACZ,MAAM,CAAC,IAAI,KAAK,GAAG,KAAM,EAAE,CAACO,YAAY,EAAEP,MAAM,CAAC,CACjH,CAAC;EACD,MAAMa,SAAS,GAAG,IAAAJ,2BAAc,EAC9B,IAAAC,kBAAW,EAAEC,CAAC,IAAMJ,YAAY,IAAIP,MAAM,GAAGW,CAAC,CAACG,YAAY,CAACd,MAAM,CAAC,IAAI,KAAK,GAAG,KAAM,EAAE,CAACO,YAAY,EAAEP,MAAM,CAAC,CAC/G,CAAC;EACD,MAAMe,KAAK,GAAG,IAAAN,2BAAc,EAC1B,IAAAC,kBAAW,EAAEC,CAAC,IAAMJ,YAAY,IAAIP,MAAM,GAAGW,CAAC,CAACK,MAAM,CAAChB,MAAM,CAAC,IAAI,IAAI,GAAG,IAAK,EAAE,CAACO,YAAY,EAAEP,MAAM,CAAC,CACvG,CAAC;EACD,MAAMiB,aAAa,GAAG,IAAAR,2BAAc,EAClC,IAAAC,kBAAW,EAAEC,CAAC,IAAMJ,YAAY,IAAIP,MAAM,GAAGW,CAAC,CAACO,cAAc,CAAClB,MAAM,CAAC,IAAI,IAAI,GAAG,IAAK,EAAE,CAACO,YAAY,EAAEP,MAAM,CAAC,CAC/G,CAAC;EACD,MAAMmB,cAAc,GAAG,IAAAV,2BAAc,EACnC,IAAAC,kBAAW,EAAEC,CAAC,IAAMJ,YAAY,IAAIP,MAAM,GAAGW,CAAC,CAACS,eAAe,CAACpB,MAAM,CAAC,IAAI,IAAI,GAAG,IAAK,EAAE,CAACO,YAAY,EAAEP,MAAM,CAAC,CAChH,CAAC;EACD,MAAMqB,eAAe,GAAG,IAAAZ,2BAAc,EACpC,IAAAC,kBAAW,EAAEC,CAAC,IAAMJ,YAAY,IAAIP,MAAM,GAAGW,CAAC,CAACW,aAAa,CAACtB,MAAM,CAAC,IAAI,KAAK,GAAG,KAAM,EAAE,CAACO,YAAY,EAAEP,MAAM,CAAC,CAChH,CAAC;;EAED;EACA,MAAMuB,UAAU,GAAG,IAAAd,2BAAc,EAC/B,IAAAe,mBAAU,EAAEb,CAAC,IAAK;IAChB,IAAIJ,YAAY,EAAE,OAAO,CAAC,CAAC;IAC3B,MAAMkB,IAAwF,GAAG,CAAC,CAAC;IACnG,KAAK,MAAMC,GAAG,IAAIvB,OAAO,EAAE;MACzBsB,IAAI,CAACC,GAAG,CAAC,GAAG;QACVlB,WAAW,EAAEG,CAAC,CAACC,cAAc,CAACc,GAAG,CAAC,IAAI,KAAK;QAC3Cb,SAAS,EAAEF,CAAC,CAACG,YAAY,CAACY,GAAG,CAAC,IAAI,KAAK;QACvCX,KAAK,EAAEJ,CAAC,CAACK,MAAM,CAACU,GAAG,CAAC,IAAI;MAC1B,CAAC;IACH;IACA,OAAOD,IAAI;EACb,CAAC,CACH,CAAC;;EAED;EACA,MAAME,qBAAqB,GAAG,IAAAlB,2BAAc,EAC1C,IAAAe,mBAAU,EAAEb,CAAC,IAAK;IAChB,IAAIJ,YAAY,EAAE,OAAO;MAAEqB,YAAY,EAAE,KAAK;MAAEC,WAAW,EAAE,KAAK;MAAEC,YAAY,EAAE,IAAI;MAAEC,eAAe,EAAE;IAAK,CAAC;IAC/G,OAAO;MACLH,YAAY,EAAEzB,OAAO,CAAC6B,IAAI,CAACN,GAAG,IAAIf,CAAC,CAACG,YAAY,CAACY,GAAG,CAAC,CAAC;MACtDG,WAAW,EAAE1B,OAAO,CAAC6B,IAAI,CAACN,GAAG,IAAI,CAAC,CAACf,CAAC,CAACK,MAAM,CAACU,GAAG,CAAC,CAAC;MACjDI,YAAY,EAAE3B,OAAO,CAAC8B,KAAK,CAACP,GAAG,IAAIf,CAAC,CAACC,cAAc,CAACc,GAAG,CAAC,CAAC;MACzDK,eAAe,EAAE5B,OAAO,CAAC8B,KAAK,CAACP,GAAG,IAAI,CAACf,CAAC,CAACC,cAAc,CAACc,GAAG,CAAC;IAC9D,CAAC;EACH,CAAC,CACH,CAAC;;EAED;EACA;EACA,MAAMQ,YAAY,GAAG,IAAAxB,kBAAW,EAAC,YAAY;IAC3C,IAAI,CAACH,YAAY,IAAI,CAACP,MAAM,EAAE,MAAM,IAAImC,KAAK,CAAC,qDAAqD,CAAC;IACpG,MAAMC,kBAAkB,GAAG3B,2BAAc,CAAC4B,QAAQ,CAAC,CAAC,CAACzB,cAAc,CAACZ,MAAM,CAAC,IAAI,KAAK;IACpF,MAAMS,2BAAc,CAAC4B,QAAQ,CAAC,CAAC,CAACC,gBAAgB,CAACtC,MAAM,EAAEC,WAAW,EAAEmC,kBAAkB,CAAC;EAC3F,CAAC,EAAE,CAAC7B,YAAY,EAAEP,MAAM,EAAEC,WAAW,CAAC,CAAC;EAEvC,MAAMsC,eAAe,GAAG,IAAA7B,kBAAW,EAAE8B,SAAkB,IAAK;IAC1D,IAAI,CAACjC,YAAY,IAAI,CAACP,MAAM,EAAE,MAAM,IAAImC,KAAK,CAAC,wDAAwD,CAAC;IACvG1B,2BAAc,CAAC4B,QAAQ,CAAC,CAAC,CAACI,kBAAkB,CAACzC,MAAM,EAAEwC,SAAS,CAAC;EACjE,CAAC,EAAE,CAACjC,YAAY,EAAEP,MAAM,CAAC,CAAC;EAE1B,MAAM0C,WAAW,GAAG,IAAAhC,kBAAW,EAAC,YAAY;IAC1C,IAAI,CAACH,YAAY,IAAI,CAACP,MAAM,EAAE,MAAM,IAAImC,KAAK,CAAC,oDAAoD,CAAC;IACnG,MAAM1B,2BAAc,CAAC4B,QAAQ,CAAC,CAAC,CAACM,iBAAiB,CAAC3C,MAAM,EAAEC,WAAW,CAAC;EACxE,CAAC,EAAE,CAACM,YAAY,EAAEP,MAAM,EAAEC,WAAW,CAAC,CAAC;EAEvC,MAAM2C,UAAU,GAAG,IAAAlC,kBAAW,EAAC,MAAM;IACnC,IAAI,CAACH,YAAY,IAAI,CAACP,MAAM,EAAE,MAAM,IAAImC,KAAK,CAAC,mDAAmD,CAAC;IAClG1B,2BAAc,CAAC4B,QAAQ,CAAC,CAAC,CAACQ,gBAAgB,CAAC7C,MAAM,CAAC;EACpD,CAAC,EAAE,CAACO,YAAY,EAAEP,MAAM,CAAC,CAAC;EAE1B,MAAM8C,eAAe,GAAG,IAAApC,kBAAW,EAAC,YAAY;IAC9C,IAAI,CAACH,YAAY,IAAI,CAACP,MAAM,EAAE,MAAM,IAAImC,KAAK,CAAC,wDAAwD,CAAC;IACvG,MAAM1B,2BAAc,CAAC4B,QAAQ,CAAC,CAAC,CAACS,eAAe,CAAC9C,MAAM,EAAEC,WAAW,CAAC;EACtE,CAAC,EAAE,CAACM,YAAY,EAAEP,MAAM,EAAEC,WAAW,CAAC,CAAC;EAEvC,MAAM8C,gBAAgB,GAAG,IAAArC,kBAAW,EAAEsC,KAAa,IAAK;IACtD,IAAI,CAACzC,YAAY,IAAI,CAACP,MAAM,EAAE,MAAM,IAAImC,KAAK,CAAC,yDAAyD,CAAC;IACxG1B,2BAAc,CAAC4B,QAAQ,CAAC,CAAC,CAACU,gBAAgB,CAAC/C,MAAM,EAAEgD,KAAK,CAAC;EAC3D,CAAC,EAAE,CAACzC,YAAY,EAAEP,MAAM,CAAC,CAAC;EAE1B,MAAMiD,iBAAiB,GAAG,IAAAvC,kBAAW,EAAEsC,KAAa,IAAK;IACvD,IAAI,CAACzC,YAAY,IAAI,CAACP,MAAM,EAAE,MAAM,IAAImC,KAAK,CAAC,0DAA0D,CAAC;IACzG1B,2BAAc,CAAC4B,QAAQ,CAAC,CAAC,CAACY,iBAAiB,CAACjD,MAAM,EAAEgD,KAAK,CAAC;EAC5D,CAAC,EAAE,CAACzC,YAAY,EAAEP,MAAM,CAAC,CAAC;;EAE1B;EACA,IAAAkD,gBAAS,EAAC,MAAM;IACd,IAAI,CAAC3C,YAAY,IAAI,CAACP,MAAM,EAAE;IAE9B,IAAI,CAACiB,aAAa,KAAK,IAAI,IAAIE,cAAc,KAAK,IAAI,KAAK,CAACE,eAAe,EAAE;MAC3EyB,eAAe,CAAC,CAAC,CAACK,KAAK,CAAEC,GAAY,IAAKC,OAAO,CAACC,IAAI,CAAC,mCAAmC,EAAEF,GAAG,CAAC,CAAC;IACnG;EACF,CAAC,EAAE,CAAC7C,YAAY,EAAEP,MAAM,EAAEiB,aAAa,EAAEE,cAAc,EAAEE,eAAe,EAAEyB,eAAe,CAAC,CAAC;;EAE3F;EACA,MAAMS,mBAAmB,GAAG,IAAA7C,kBAAW,EAAC,MAAO8C,YAAoB,IAAK;IACtE,MAAMC,YAAY,GAAGhD,2BAAc,CAAC4B,QAAQ,CAAC,CAAC,CAACzB,cAAc,CAAC4C,YAAY,CAAC,IAAI,KAAK;IACpF,MAAM/C,2BAAc,CAAC4B,QAAQ,CAAC,CAAC,CAACC,gBAAgB,CAACkB,YAAY,EAAEvD,WAAW,EAAEwD,YAAY,CAAC;EAC3F,CAAC,EAAE,CAACxD,WAAW,CAAC,CAAC;EAEjB,MAAMyD,sBAAsB,GAAG,IAAAhD,kBAAW,EAAC,CAAC8C,YAAoB,EAAEhB,SAAkB,KAAK;IACvF/B,2BAAc,CAAC4B,QAAQ,CAAC,CAAC,CAACI,kBAAkB,CAACe,YAAY,EAAEhB,SAAS,CAAC;EACvE,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMmB,kBAAkB,GAAG,IAAAjD,kBAAW,EAAC,MAAO8C,YAAoB,IAAK;IACrE,MAAM/C,2BAAc,CAAC4B,QAAQ,CAAC,CAAC,CAACM,iBAAiB,CAACa,YAAY,EAAEvD,WAAW,CAAC;EAC9E,CAAC,EAAE,CAACA,WAAW,CAAC,CAAC;EAEjB,MAAM2D,gBAAgB,GAAG,IAAAlD,kBAAW,EAAC,YAAY;IAC/C,MAAMmD,KAAK,GAAGpD,2BAAc,CAAC4B,QAAQ,CAAC,CAAC;IACvC,MAAMyB,OAAO,CAACC,GAAG,CAAC5D,OAAO,CAAC6D,GAAG,CAACtC,GAAG,IAAImC,KAAK,CAAClB,iBAAiB,CAACjB,GAAG,EAAEzB,WAAW,CAAC,CAAC,CAAC;EAClF,CAAC,EAAE,CAACE,OAAO,EAAEF,WAAW,CAAC,CAAC;EAE1B,MAAMgE,iBAAiB,GAAG,IAAAvD,kBAAW,EAAE8C,YAAoB,IAAK;IAC9D/C,2BAAc,CAAC4B,QAAQ,CAAC,CAAC,CAACQ,gBAAgB,CAACW,YAAY,CAAC;EAC1D,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMU,4BAA4B,GAAG,IAAAxD,kBAAW,EAAC,CAAC8C,YAAoB,EAAEW,MAA6B,EAAEC,MAAgD,KAAK;IAC1J,MAAMC,aAAa,GAAGpE,WAAW,CAACqE,gBAAgB,CAAC,CAAC,IAAIC,SAAS;IACjE9D,2BAAc,CAAC4B,QAAQ,CAAC,CAAC,CAAC6B,4BAA4B,CAACV,YAAY,EAAEW,MAAM,EAAEC,MAAM,EAAEC,aAAa,CAAC;EACrG,CAAC,EAAE,CAACpE,WAAW,CAAC,CAAC;EAEjB,IAAIM,YAAY,IAAIP,MAAM,EAAE;IAC1B,OAAO;MACLQ,WAAW;MACXK,SAAS;MACTE,KAAK;MACLmB,YAAY;MACZK,eAAe;MACfG,WAAW;MACXE,UAAU;MACV3B,aAAa;MACbE,cAAc;MACdE,eAAe;MACfyB,eAAe;MACfC,gBAAgB;MAChBE;IACF,CAAC;EACH;EAEA,OAAO;IACL1B,UAAU;IACVgC,mBAAmB;IACnBG,sBAAsB;IACtBC,kBAAkB;IAClBC,gBAAgB;IAChBK,iBAAiB;IACjBrC,YAAY,EAAED,qBAAqB,CAACC,YAAY;IAChDC,WAAW,EAAEF,qBAAqB,CAACE,WAAW;IAC9CC,YAAY,EAAEH,qBAAqB,CAACG,YAAY;IAChDC,eAAe,EAAEJ,qBAAqB,CAACI;EACzC,CAAC;AACH,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAPAyC,OAAA,CAAAzE,SAAA,GAAAA,SAAA;AAQO,MAAM0E,kBAAkB,GAAGA,CAACzE,MAAc,EAAEC,WAAwB,KAAK;EAC9E,MAAMO,WAAW,GAAG,IAAAC,2BAAc,EAChC,IAAAC,kBAAW,EAAEC,CAAC,IAAKA,CAAC,CAACC,cAAc,CAACZ,MAAM,CAAC,IAAI,KAAK,EAAE,CAACA,MAAM,CAAC,CAChE,CAAC;EACD,MAAMa,SAAS,GAAG,IAAAJ,2BAAc,EAC9B,IAAAC,kBAAW,EAAEC,CAAC,IAAKA,CAAC,CAACG,YAAY,CAACd,MAAM,CAAC,IAAI,KAAK,EAAE,CAACA,MAAM,CAAC,CAC9D,CAAC;EACD,MAAMe,KAAK,GAAG,IAAAN,2BAAc,EAC1B,IAAAC,kBAAW,EAAEC,CAAC,IAAKA,CAAC,CAACK,MAAM,CAAChB,MAAM,CAAC,IAAI,IAAI,EAAE,CAACA,MAAM,CAAC,CACvD,CAAC;EAED,MAAMkC,YAAY,GAAG,IAAAxB,kBAAW,EAAC,YAAY;IAC3C,MAAM0B,kBAAkB,GAAG3B,2BAAc,CAAC4B,QAAQ,CAAC,CAAC,CAACzB,cAAc,CAACZ,MAAM,CAAC,IAAI,KAAK;IACpF,MAAMS,2BAAc,CAAC4B,QAAQ,CAAC,CAAC,CAACC,gBAAgB,CAACtC,MAAM,EAAEC,WAAW,EAAEmC,kBAAkB,CAAC;EAC3F,CAAC,EAAE,CAACpC,MAAM,EAAEC,WAAW,CAAC,CAAC;EAEzB,MAAMyC,WAAW,GAAG,IAAAhC,kBAAW,EAAC,YAAY;IAC1C,MAAMD,2BAAc,CAAC4B,QAAQ,CAAC,CAAC,CAACM,iBAAiB,CAAC3C,MAAM,EAAEC,WAAW,CAAC;EACxE,CAAC,EAAE,CAACD,MAAM,EAAEC,WAAW,CAAC,CAAC;EAEzB,MAAMsC,eAAe,GAAG,IAAA7B,kBAAW,EAAE8B,SAAkB,IAAK;IAC1D/B,2BAAc,CAAC4B,QAAQ,CAAC,CAAC,CAACI,kBAAkB,CAACzC,MAAM,EAAEwC,SAAS,CAAC;EACjE,CAAC,EAAE,CAACxC,MAAM,CAAC,CAAC;EAEZ,MAAM4C,UAAU,GAAG,IAAAlC,kBAAW,EAAC,MAAM;IACnCD,2BAAc,CAAC4B,QAAQ,CAAC,CAAC,CAACQ,gBAAgB,CAAC7C,MAAM,CAAC;EACpD,CAAC,EAAE,CAACA,MAAM,CAAC,CAAC;EAEZ,OAAO;IACLQ,WAAW;IACXK,SAAS;IACTE,KAAK;IACLmB,YAAY;IACZQ,WAAW;IACXH,eAAe;IACfK;EACF,CAAC;AACH,CAAC;;AAED;AAAA4B,OAAA,CAAAC,kBAAA,GAAAA,kBAAA;AACO,MAAMC,iBAAiB,GAAI1E,MAAc,IAAK;EACnD,MAAM;IAAEC;EAAY,CAAC,GAAG,IAAAC,kBAAM,EAAC,CAAC;EAEhC,MAAMe,aAAa,GAAG,IAAAR,2BAAc,EAClC,IAAAC,kBAAW,EAAEC,CAAC,IAAKA,CAAC,CAACO,cAAc,CAAClB,MAAM,CAAC,IAAI,IAAI,EAAE,CAACA,MAAM,CAAC,CAC/D,CAAC;EACD,MAAMmB,cAAc,GAAG,IAAAV,2BAAc,EACnC,IAAAC,kBAAW,EAAEC,CAAC,IAAKA,CAAC,CAACS,eAAe,CAACpB,MAAM,CAAC,IAAI,IAAI,EAAE,CAACA,MAAM,CAAC,CAChE,CAAC;EACD,MAAMqB,eAAe,GAAG,IAAAZ,2BAAc,EACpC,IAAAC,kBAAW,EAAEC,CAAC,IAAKA,CAAC,CAACW,aAAa,CAACtB,MAAM,CAAC,IAAI,KAAK,EAAE,CAACA,MAAM,CAAC,CAC/D,CAAC;EAED,MAAM8C,eAAe,GAAG,IAAApC,kBAAW,EAAC,YAAY;IAC9C,MAAMD,2BAAc,CAAC4B,QAAQ,CAAC,CAAC,CAACS,eAAe,CAAC9C,MAAM,EAAEC,WAAW,CAAC;EACtE,CAAC,EAAE,CAACD,MAAM,EAAEC,WAAW,CAAC,CAAC;EAEzB,MAAM8C,gBAAgB,GAAG,IAAArC,kBAAW,EAAEsC,KAAa,IAAK;IACtDvC,2BAAc,CAAC4B,QAAQ,CAAC,CAAC,CAACU,gBAAgB,CAAC/C,MAAM,EAAEgD,KAAK,CAAC;EAC3D,CAAC,EAAE,CAAChD,MAAM,CAAC,CAAC;EAEZ,MAAMiD,iBAAiB,GAAG,IAAAvC,kBAAW,EAAEsC,KAAa,IAAK;IACvDvC,2BAAc,CAAC4B,QAAQ,CAAC,CAAC,CAACY,iBAAiB,CAACjD,MAAM,EAAEgD,KAAK,CAAC;EAC5D,CAAC,EAAE,CAAChD,MAAM,CAAC,CAAC;EAEZ,OAAO;IACLiB,aAAa;IACbE,cAAc;IACdE,eAAe;IACfyB,eAAe;IACfC,gBAAgB;IAChBE;EACF,CAAC;AACH,CAAC;AAACuB,OAAA,CAAAE,iBAAA,GAAAA,iBAAA","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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
|
|
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 {
|
|
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
|
|
1142
|
-
// callback path, BEFORE the cold boot (which awaits storage init).
|
|
1143
|
-
//
|
|
1144
|
-
//
|
|
1145
|
-
//
|
|
1146
|
-
//
|
|
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
|
-
|
|
1164
|
-
if (!
|
|
1165
|
-
|
|
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)
|
|
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;
|