@oxyhq/services 10.1.0 → 10.2.1

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.
Files changed (232) hide show
  1. package/README.md +2 -2
  2. package/lib/commonjs/index.js +10 -0
  3. package/lib/commonjs/index.js.map +1 -1
  4. package/lib/commonjs/ui/components/AccountMenu.js +297 -226
  5. package/lib/commonjs/ui/components/AccountMenu.js.map +1 -1
  6. package/lib/commonjs/ui/components/AccountMenuButton.js.map +1 -1
  7. package/lib/commonjs/ui/components/OxySignInButton.js +1 -1
  8. package/lib/commonjs/ui/components/SignInModal.js +23 -14
  9. package/lib/commonjs/ui/components/SignInModal.js.map +1 -1
  10. package/lib/commonjs/ui/components/accountMenuRows.js +18 -30
  11. package/lib/commonjs/ui/components/accountMenuRows.js.map +1 -1
  12. package/lib/commonjs/ui/context/OxyContext.js +33 -65
  13. package/lib/commonjs/ui/context/OxyContext.js.map +1 -1
  14. package/lib/commonjs/ui/context/hooks/useAuthOperations.js +7 -13
  15. package/lib/commonjs/ui/context/hooks/useAuthOperations.js.map +1 -1
  16. package/lib/commonjs/ui/hooks/useAuth.js +9 -39
  17. package/lib/commonjs/ui/hooks/useAuth.js.map +1 -1
  18. package/lib/commonjs/ui/hooks/useDeviceAccounts.js +285 -0
  19. package/lib/commonjs/ui/hooks/useDeviceAccounts.js.map +1 -0
  20. package/lib/commonjs/ui/hooks/useSessionManagement.js +5 -6
  21. package/lib/commonjs/ui/hooks/useSessionManagement.js.map +1 -1
  22. package/lib/commonjs/ui/hooks/useSessionSocket.js +4 -5
  23. package/lib/commonjs/ui/hooks/useSessionSocket.js.map +1 -1
  24. package/lib/commonjs/ui/hooks/useWebSSO.js +1 -1
  25. package/lib/commonjs/ui/navigation/routes.js +7 -7
  26. package/lib/commonjs/ui/navigation/routes.js.map +1 -1
  27. package/lib/commonjs/ui/screens/OxyAuthScreen.js +21 -12
  28. package/lib/commonjs/ui/screens/OxyAuthScreen.js.map +1 -1
  29. package/lib/commonjs/ui/screens/ProfileScreen.js +18 -20
  30. package/lib/commonjs/ui/screens/ProfileScreen.js.map +1 -1
  31. package/lib/commonjs/ui/screens/WelcomeNewUserScreen.js +4 -4
  32. package/lib/commonjs/ui/screens/WelcomeNewUserScreen.js.map +1 -1
  33. package/lib/commonjs/ui/screens/{karma/KarmaAboutScreen.js → trust/TrustAboutScreen.js} +11 -11
  34. package/lib/commonjs/ui/screens/trust/TrustAboutScreen.js.map +1 -0
  35. package/lib/commonjs/ui/screens/{karma/KarmaCenterScreen.js → trust/TrustCenterScreen.js} +91 -41
  36. package/lib/commonjs/ui/screens/trust/TrustCenterScreen.js.map +1 -0
  37. package/lib/commonjs/ui/screens/{karma/KarmaFAQScreen.js → trust/TrustFAQScreen.js} +11 -11
  38. package/lib/commonjs/ui/screens/{karma/KarmaFAQScreen.js.map → trust/TrustFAQScreen.js.map} +1 -1
  39. package/lib/commonjs/ui/screens/{karma/KarmaLeaderboardScreen.js → trust/TrustLeaderboardScreen.js} +63 -42
  40. package/lib/commonjs/ui/screens/trust/TrustLeaderboardScreen.js.map +1 -0
  41. package/lib/commonjs/ui/screens/{karma/KarmaRewardsScreen.js → trust/TrustRewardsScreen.js} +54 -54
  42. package/lib/commonjs/ui/screens/trust/TrustRewardsScreen.js.map +1 -0
  43. package/lib/commonjs/ui/screens/{karma/KarmaRulesScreen.js → trust/TrustRulesScreen.js} +45 -16
  44. package/lib/commonjs/ui/screens/trust/TrustRulesScreen.js.map +1 -0
  45. package/lib/commonjs/ui/screens/trust/trustTier.js +23 -0
  46. package/lib/commonjs/ui/screens/trust/trustTier.js.map +1 -0
  47. package/lib/commonjs/utils/deviceFlowSignIn.js +12 -10
  48. package/lib/commonjs/utils/deviceFlowSignIn.js.map +1 -1
  49. package/lib/module/index.js +3 -0
  50. package/lib/module/index.js.map +1 -1
  51. package/lib/module/ui/components/AccountMenu.js +297 -226
  52. package/lib/module/ui/components/AccountMenu.js.map +1 -1
  53. package/lib/module/ui/components/AccountMenuButton.js.map +1 -1
  54. package/lib/module/ui/components/OxySignInButton.js +1 -1
  55. package/lib/module/ui/components/SignInModal.js +23 -14
  56. package/lib/module/ui/components/SignInModal.js.map +1 -1
  57. package/lib/module/ui/components/accountMenuRows.js +18 -30
  58. package/lib/module/ui/components/accountMenuRows.js.map +1 -1
  59. package/lib/module/ui/context/OxyContext.js +33 -65
  60. package/lib/module/ui/context/OxyContext.js.map +1 -1
  61. package/lib/module/ui/context/hooks/useAuthOperations.js +7 -13
  62. package/lib/module/ui/context/hooks/useAuthOperations.js.map +1 -1
  63. package/lib/module/ui/hooks/useAuth.js +9 -39
  64. package/lib/module/ui/hooks/useAuth.js.map +1 -1
  65. package/lib/module/ui/hooks/useDeviceAccounts.js +281 -0
  66. package/lib/module/ui/hooks/useDeviceAccounts.js.map +1 -0
  67. package/lib/module/ui/hooks/useSessionManagement.js +5 -6
  68. package/lib/module/ui/hooks/useSessionManagement.js.map +1 -1
  69. package/lib/module/ui/hooks/useSessionSocket.js +4 -5
  70. package/lib/module/ui/hooks/useSessionSocket.js.map +1 -1
  71. package/lib/module/ui/hooks/useWebSSO.js +1 -1
  72. package/lib/module/ui/navigation/routes.js +7 -7
  73. package/lib/module/ui/navigation/routes.js.map +1 -1
  74. package/lib/module/ui/screens/OxyAuthScreen.js +21 -12
  75. package/lib/module/ui/screens/OxyAuthScreen.js.map +1 -1
  76. package/lib/module/ui/screens/ProfileScreen.js +18 -20
  77. package/lib/module/ui/screens/ProfileScreen.js.map +1 -1
  78. package/lib/module/ui/screens/WelcomeNewUserScreen.js +4 -4
  79. package/lib/module/ui/screens/WelcomeNewUserScreen.js.map +1 -1
  80. package/lib/module/ui/screens/{karma/KarmaAboutScreen.js → trust/TrustAboutScreen.js} +11 -11
  81. package/lib/module/ui/screens/trust/TrustAboutScreen.js.map +1 -0
  82. package/lib/module/ui/screens/{karma/KarmaCenterScreen.js → trust/TrustCenterScreen.js} +92 -42
  83. package/lib/module/ui/screens/trust/TrustCenterScreen.js.map +1 -0
  84. package/lib/module/ui/screens/{karma/KarmaFAQScreen.js → trust/TrustFAQScreen.js} +11 -11
  85. package/lib/module/ui/screens/{karma/KarmaFAQScreen.js.map → trust/TrustFAQScreen.js.map} +1 -1
  86. package/lib/module/ui/screens/{karma/KarmaLeaderboardScreen.js → trust/TrustLeaderboardScreen.js} +63 -42
  87. package/lib/module/ui/screens/trust/TrustLeaderboardScreen.js.map +1 -0
  88. package/lib/module/ui/screens/{karma/KarmaRewardsScreen.js → trust/TrustRewardsScreen.js} +54 -54
  89. package/lib/module/ui/screens/trust/TrustRewardsScreen.js.map +1 -0
  90. package/lib/module/ui/screens/{karma/KarmaRulesScreen.js → trust/TrustRulesScreen.js} +45 -16
  91. package/lib/module/ui/screens/trust/TrustRulesScreen.js.map +1 -0
  92. package/lib/module/ui/screens/trust/trustTier.js +19 -0
  93. package/lib/module/ui/screens/trust/trustTier.js.map +1 -0
  94. package/lib/module/utils/deviceFlowSignIn.js +13 -10
  95. package/lib/module/utils/deviceFlowSignIn.js.map +1 -1
  96. package/lib/typescript/commonjs/index.d.ts +3 -1
  97. package/lib/typescript/commonjs/index.d.ts.map +1 -1
  98. package/lib/typescript/commonjs/ui/components/AccountMenu.d.ts +30 -10
  99. package/lib/typescript/commonjs/ui/components/AccountMenu.d.ts.map +1 -1
  100. package/lib/typescript/commonjs/ui/components/SignInModal.d.ts +1 -1
  101. package/lib/typescript/commonjs/ui/components/SignInModal.d.ts.map +1 -1
  102. package/lib/typescript/commonjs/ui/components/accountMenuRows.d.ts +19 -12
  103. package/lib/typescript/commonjs/ui/components/accountMenuRows.d.ts.map +1 -1
  104. package/lib/typescript/commonjs/ui/context/OxyContext.d.ts +3 -3
  105. package/lib/typescript/commonjs/ui/context/OxyContext.d.ts.map +1 -1
  106. package/lib/typescript/commonjs/ui/context/hooks/useAuthOperations.d.ts.map +1 -1
  107. package/lib/typescript/commonjs/ui/hooks/mutations/useAccountMutations.d.ts +1 -7
  108. package/lib/typescript/commonjs/ui/hooks/mutations/useAccountMutations.d.ts.map +1 -1
  109. package/lib/typescript/commonjs/ui/hooks/useAuth.d.ts +3 -7
  110. package/lib/typescript/commonjs/ui/hooks/useAuth.d.ts.map +1 -1
  111. package/lib/typescript/commonjs/ui/hooks/useDeviceAccounts.d.ts +133 -0
  112. package/lib/typescript/commonjs/ui/hooks/useDeviceAccounts.d.ts.map +1 -0
  113. package/lib/typescript/commonjs/ui/hooks/useSessionManagement.d.ts.map +1 -1
  114. package/lib/typescript/commonjs/ui/hooks/useSessionSocket.d.ts.map +1 -1
  115. package/lib/typescript/commonjs/ui/hooks/useWebSSO.d.ts +1 -1
  116. package/lib/typescript/commonjs/ui/navigation/routes.d.ts +1 -1
  117. package/lib/typescript/commonjs/ui/screens/OxyAuthScreen.d.ts.map +1 -1
  118. package/lib/typescript/commonjs/ui/screens/ProfileScreen.d.ts.map +1 -1
  119. package/lib/typescript/commonjs/ui/screens/trust/TrustAboutScreen.d.ts +5 -0
  120. package/lib/typescript/commonjs/ui/screens/{karma/KarmaAboutScreen.d.ts.map → trust/TrustAboutScreen.d.ts.map} +1 -1
  121. package/lib/typescript/commonjs/ui/screens/trust/TrustCenterScreen.d.ts +5 -0
  122. package/lib/typescript/commonjs/ui/screens/trust/TrustCenterScreen.d.ts.map +1 -0
  123. package/lib/typescript/{module/ui/screens/karma/KarmaFAQScreen.d.ts → commonjs/ui/screens/trust/TrustFAQScreen.d.ts} +1 -1
  124. package/lib/typescript/commonjs/ui/screens/trust/TrustFAQScreen.d.ts.map +1 -0
  125. package/lib/typescript/commonjs/ui/screens/trust/TrustLeaderboardScreen.d.ts +5 -0
  126. package/lib/typescript/commonjs/ui/screens/trust/TrustLeaderboardScreen.d.ts.map +1 -0
  127. package/lib/typescript/commonjs/ui/screens/trust/TrustRewardsScreen.d.ts +5 -0
  128. package/lib/typescript/commonjs/ui/screens/{karma/KarmaRewardsScreen.d.ts.map → trust/TrustRewardsScreen.d.ts.map} +1 -1
  129. package/lib/typescript/commonjs/ui/screens/trust/TrustRulesScreen.d.ts +5 -0
  130. package/lib/typescript/commonjs/ui/screens/trust/TrustRulesScreen.d.ts.map +1 -0
  131. package/lib/typescript/commonjs/ui/screens/trust/trustTier.d.ts +9 -0
  132. package/lib/typescript/commonjs/ui/screens/trust/trustTier.d.ts.map +1 -0
  133. package/lib/typescript/commonjs/ui/types/navigation.d.ts +1 -1
  134. package/lib/typescript/commonjs/utils/deviceFlowSignIn.d.ts +11 -9
  135. package/lib/typescript/commonjs/utils/deviceFlowSignIn.d.ts.map +1 -1
  136. package/lib/typescript/module/index.d.ts +3 -1
  137. package/lib/typescript/module/index.d.ts.map +1 -1
  138. package/lib/typescript/module/ui/components/AccountMenu.d.ts +30 -10
  139. package/lib/typescript/module/ui/components/AccountMenu.d.ts.map +1 -1
  140. package/lib/typescript/module/ui/components/SignInModal.d.ts +1 -1
  141. package/lib/typescript/module/ui/components/SignInModal.d.ts.map +1 -1
  142. package/lib/typescript/module/ui/components/accountMenuRows.d.ts +19 -12
  143. package/lib/typescript/module/ui/components/accountMenuRows.d.ts.map +1 -1
  144. package/lib/typescript/module/ui/context/OxyContext.d.ts +3 -3
  145. package/lib/typescript/module/ui/context/OxyContext.d.ts.map +1 -1
  146. package/lib/typescript/module/ui/context/hooks/useAuthOperations.d.ts.map +1 -1
  147. package/lib/typescript/module/ui/hooks/mutations/useAccountMutations.d.ts +1 -7
  148. package/lib/typescript/module/ui/hooks/mutations/useAccountMutations.d.ts.map +1 -1
  149. package/lib/typescript/module/ui/hooks/useAuth.d.ts +3 -7
  150. package/lib/typescript/module/ui/hooks/useAuth.d.ts.map +1 -1
  151. package/lib/typescript/module/ui/hooks/useDeviceAccounts.d.ts +133 -0
  152. package/lib/typescript/module/ui/hooks/useDeviceAccounts.d.ts.map +1 -0
  153. package/lib/typescript/module/ui/hooks/useSessionManagement.d.ts.map +1 -1
  154. package/lib/typescript/module/ui/hooks/useSessionSocket.d.ts.map +1 -1
  155. package/lib/typescript/module/ui/hooks/useWebSSO.d.ts +1 -1
  156. package/lib/typescript/module/ui/navigation/routes.d.ts +1 -1
  157. package/lib/typescript/module/ui/screens/OxyAuthScreen.d.ts.map +1 -1
  158. package/lib/typescript/module/ui/screens/ProfileScreen.d.ts.map +1 -1
  159. package/lib/typescript/module/ui/screens/trust/TrustAboutScreen.d.ts +5 -0
  160. package/lib/typescript/module/ui/screens/{karma/KarmaAboutScreen.d.ts.map → trust/TrustAboutScreen.d.ts.map} +1 -1
  161. package/lib/typescript/module/ui/screens/trust/TrustCenterScreen.d.ts +5 -0
  162. package/lib/typescript/module/ui/screens/trust/TrustCenterScreen.d.ts.map +1 -0
  163. package/lib/typescript/{commonjs/ui/screens/karma/KarmaFAQScreen.d.ts → module/ui/screens/trust/TrustFAQScreen.d.ts} +1 -1
  164. package/lib/typescript/module/ui/screens/trust/TrustFAQScreen.d.ts.map +1 -0
  165. package/lib/typescript/module/ui/screens/trust/TrustLeaderboardScreen.d.ts +5 -0
  166. package/lib/typescript/module/ui/screens/trust/TrustLeaderboardScreen.d.ts.map +1 -0
  167. package/lib/typescript/module/ui/screens/trust/TrustRewardsScreen.d.ts +5 -0
  168. package/lib/typescript/module/ui/screens/{karma/KarmaRewardsScreen.d.ts.map → trust/TrustRewardsScreen.d.ts.map} +1 -1
  169. package/lib/typescript/module/ui/screens/trust/TrustRulesScreen.d.ts +5 -0
  170. package/lib/typescript/module/ui/screens/trust/TrustRulesScreen.d.ts.map +1 -0
  171. package/lib/typescript/module/ui/screens/trust/trustTier.d.ts +9 -0
  172. package/lib/typescript/module/ui/screens/trust/trustTier.d.ts.map +1 -0
  173. package/lib/typescript/module/ui/types/navigation.d.ts +1 -1
  174. package/lib/typescript/module/utils/deviceFlowSignIn.d.ts +11 -9
  175. package/lib/typescript/module/utils/deviceFlowSignIn.d.ts.map +1 -1
  176. package/package.json +1 -1
  177. package/src/index.ts +10 -1
  178. package/src/ui/components/AccountMenu.tsx +311 -253
  179. package/src/ui/components/AccountMenuButton.tsx +2 -2
  180. package/src/ui/components/OxySignInButton.tsx +1 -1
  181. package/src/ui/components/SignInModal.tsx +26 -16
  182. package/src/ui/components/accountMenuRows.ts +28 -40
  183. package/src/ui/context/OxyContext.tsx +43 -61
  184. package/src/ui/context/hooks/useAuthOperations.ts +7 -13
  185. package/src/ui/hooks/useAuth.ts +11 -48
  186. package/src/ui/hooks/useDeviceAccounts.ts +348 -0
  187. package/src/ui/hooks/useSessionManagement.ts +5 -14
  188. package/src/ui/hooks/useSessionSocket.ts +4 -5
  189. package/src/ui/hooks/useWebSSO.ts +1 -1
  190. package/src/ui/navigation/routes.ts +13 -13
  191. package/src/ui/screens/OxyAuthScreen.tsx +21 -12
  192. package/src/ui/screens/ProfileScreen.tsx +15 -17
  193. package/src/ui/screens/WelcomeNewUserScreen.tsx +2 -2
  194. package/src/ui/screens/{karma/KarmaAboutScreen.tsx → trust/TrustAboutScreen.tsx} +15 -15
  195. package/src/ui/screens/{karma/KarmaCenterScreen.tsx → trust/TrustCenterScreen.tsx} +87 -41
  196. package/src/ui/screens/{karma/KarmaFAQScreen.tsx → trust/TrustFAQScreen.tsx} +10 -10
  197. package/src/ui/screens/trust/TrustLeaderboardScreen.tsx +101 -0
  198. package/src/ui/screens/{karma/KarmaRewardsScreen.tsx → trust/TrustRewardsScreen.tsx} +54 -54
  199. package/src/ui/screens/{karma/KarmaRulesScreen.tsx → trust/TrustRulesScreen.tsx} +27 -13
  200. package/src/ui/screens/trust/trustTier.ts +20 -0
  201. package/src/ui/types/navigation.ts +1 -2
  202. package/src/utils/__tests__/deviceFlowSignIn.test.ts +2 -3
  203. package/src/utils/deviceFlowSignIn.ts +18 -12
  204. package/lib/commonjs/ui/screens/karma/KarmaAboutScreen.js.map +0 -1
  205. package/lib/commonjs/ui/screens/karma/KarmaCenterScreen.js.map +0 -1
  206. package/lib/commonjs/ui/screens/karma/KarmaLeaderboardScreen.js.map +0 -1
  207. package/lib/commonjs/ui/screens/karma/KarmaRewardsScreen.js.map +0 -1
  208. package/lib/commonjs/ui/screens/karma/KarmaRulesScreen.js.map +0 -1
  209. package/lib/module/ui/screens/karma/KarmaAboutScreen.js.map +0 -1
  210. package/lib/module/ui/screens/karma/KarmaCenterScreen.js.map +0 -1
  211. package/lib/module/ui/screens/karma/KarmaLeaderboardScreen.js.map +0 -1
  212. package/lib/module/ui/screens/karma/KarmaRewardsScreen.js.map +0 -1
  213. package/lib/module/ui/screens/karma/KarmaRulesScreen.js.map +0 -1
  214. package/lib/typescript/commonjs/ui/screens/karma/KarmaAboutScreen.d.ts +0 -5
  215. package/lib/typescript/commonjs/ui/screens/karma/KarmaCenterScreen.d.ts +0 -5
  216. package/lib/typescript/commonjs/ui/screens/karma/KarmaCenterScreen.d.ts.map +0 -1
  217. package/lib/typescript/commonjs/ui/screens/karma/KarmaFAQScreen.d.ts.map +0 -1
  218. package/lib/typescript/commonjs/ui/screens/karma/KarmaLeaderboardScreen.d.ts +0 -5
  219. package/lib/typescript/commonjs/ui/screens/karma/KarmaLeaderboardScreen.d.ts.map +0 -1
  220. package/lib/typescript/commonjs/ui/screens/karma/KarmaRewardsScreen.d.ts +0 -5
  221. package/lib/typescript/commonjs/ui/screens/karma/KarmaRulesScreen.d.ts +0 -5
  222. package/lib/typescript/commonjs/ui/screens/karma/KarmaRulesScreen.d.ts.map +0 -1
  223. package/lib/typescript/module/ui/screens/karma/KarmaAboutScreen.d.ts +0 -5
  224. package/lib/typescript/module/ui/screens/karma/KarmaCenterScreen.d.ts +0 -5
  225. package/lib/typescript/module/ui/screens/karma/KarmaCenterScreen.d.ts.map +0 -1
  226. package/lib/typescript/module/ui/screens/karma/KarmaFAQScreen.d.ts.map +0 -1
  227. package/lib/typescript/module/ui/screens/karma/KarmaLeaderboardScreen.d.ts +0 -5
  228. package/lib/typescript/module/ui/screens/karma/KarmaLeaderboardScreen.d.ts.map +0 -1
  229. package/lib/typescript/module/ui/screens/karma/KarmaRewardsScreen.d.ts +0 -5
  230. package/lib/typescript/module/ui/screens/karma/KarmaRulesScreen.d.ts +0 -5
  231. package/lib/typescript/module/ui/screens/karma/KarmaRulesScreen.d.ts.map +0 -1
  232. package/src/ui/screens/karma/KarmaLeaderboardScreen.tsx +0 -88
@@ -0,0 +1,285 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.markCurrentAccount = markCurrentAccount;
7
+ exports.useDeviceAccounts = useDeviceAccounts;
8
+ var _react = require("react");
9
+ var _reactQuery = require("@tanstack/react-query");
10
+ var _core = require("@oxyhq/core");
11
+ var _OxyContext = require("../context/OxyContext.js");
12
+ var _useI18n = require("./useI18n.js");
13
+ var _queryKeys = require("./queries/queryKeys.js");
14
+ /**
15
+ * The per-account user shape carried by a {@link DeviceAccount}. Either:
16
+ * - the minimal projection returned by `POST /auth/refresh-all`
17
+ * ({@link RefreshAllAccountUser}, the shared apex path), or
18
+ * - the SDK's canonical {@link User} document (the active row on the local
19
+ * fallback path, which already has the full user loaded in `useOxy()`).
20
+ *
21
+ * Both satisfy `getAccountDisplayName`'s `DisplayNameUserShape`, so display
22
+ * resolution is uniform across paths.
23
+ */
24
+
25
+ /**
26
+ * One signed-in account on this device, fully hydrated for the account
27
+ * chooser. Unlike the old `AccountMenu` behaviour (which only carried the
28
+ * ACTIVE session's user), EVERY entry here carries real per-account
29
+ * `displayName` / `email` / `avatarUrl` / `color`.
30
+ */
31
+
32
+ /**
33
+ * Resolve which entries are the current account, robustly.
34
+ *
35
+ * Primary signal: `entry.sessionId === activeSessionId`. On the web shared-apex
36
+ * path, `refreshAllSessions()` returns SERVER-side session ids that may not
37
+ * equal the locally-stored `activeSessionId` (a different storage namespace /
38
+ * server perspective), so a pure `sessionId` match can flag NO row as current —
39
+ * the bug that surfaced as "Not signed in" even while authenticated.
40
+ *
41
+ * Fallbacks, applied only when the `sessionId` match found nothing AND the user
42
+ * is authenticated:
43
+ * 1. Match the live `user.id` against each entry's per-account user id.
44
+ * 2. If still nothing and there is exactly one account, mark that one current.
45
+ *
46
+ * At most ONE entry is ever marked current.
47
+ *
48
+ * Pure & side-effect free so it is unit-testable without rendering React.
49
+ */
50
+ function markCurrentAccount(accounts, activeSessionId, liveUserId, isAuthenticated) {
51
+ const bySession = accounts.map(account => ({
52
+ ...account,
53
+ isCurrent: Boolean(activeSessionId) && account.sessionId === activeSessionId
54
+ }));
55
+ if (bySession.some(account => account.isCurrent) || !isAuthenticated) {
56
+ return bySession;
57
+ }
58
+
59
+ // No row matched by session id: fall back to the live user's id, marking at
60
+ // most the FIRST matching entry current (never more than one).
61
+ if (liveUserId) {
62
+ let matched = false;
63
+ const byUser = bySession.map(account => {
64
+ if (!matched && account.user.id === liveUserId) {
65
+ matched = true;
66
+ return {
67
+ ...account,
68
+ isCurrent: true
69
+ };
70
+ }
71
+ return account;
72
+ });
73
+ if (matched) {
74
+ return byUser;
75
+ }
76
+ }
77
+
78
+ // Authenticated, nothing matched, but there is exactly one account → it must
79
+ // be the current one (single-account shared-apex / cross-domain case).
80
+ if (bySession.length === 1) {
81
+ return [{
82
+ ...bySession[0],
83
+ isCurrent: true
84
+ }];
85
+ }
86
+ return bySession;
87
+ }
88
+
89
+ /**
90
+ * Resolve every account signed in on this device for the unified account
91
+ * switcher, with real per-account name / email / avatar / color.
92
+ *
93
+ * ## Data sources (web vs native)
94
+ *
95
+ * - **Web on a `*.oxy.so` host** → `oxyServices.refreshAllSessions()` returns
96
+ * the full apex device-account list (identical to what `auth.oxy.so` sees,
97
+ * because the `Domain=oxy.so` refresh cookies reach `api.oxy.so`). Used
98
+ * directly — this is the `fromSharedApex: true` path.
99
+ * - **Cross-domain web (non-`oxy.so` apex)** OR **native (no browser cookies)**
100
+ * → `refreshAllSessions()` yields `{ accounts: [] }` (the apex cookies never
101
+ * reach the request: cross-domain by `Domain`, native by having no cookie
102
+ * jar at all; a 401 is also normalised to `{ accounts: [] }` inside the
103
+ * core mixin). In that case we FALL BACK to the SDK's local multi-account
104
+ * list from `useOxy()` (`sessions` + `activeSessionId` + the active `user`).
105
+ * This is the `fromSharedApex: false` path.
106
+ *
107
+ * The fallback decision is purely data-driven: **if `refreshAllSessions()`
108
+ * returns >0 accounts, use the shared path; otherwise fall back to local
109
+ * `useOxy()` sessions.** No host sniffing is needed — the cookie scoping does
110
+ * the discrimination for us, and the same code path works on native (where the
111
+ * fetch returns `{ accounts: [] }`).
112
+ *
113
+ * ## Why React Query (not a `useRef`/`useState` start-once like the auth app)
114
+ *
115
+ * The auth app's `use-device-accounts.ts` hand-rolls a `startedRef` because it
116
+ * has no React Query. The SDK does. `refreshAllSessions()` ROTATES single-use
117
+ * refresh cookies on every call, so it must run AT MOST ONCE per page load:
118
+ * we model that with `staleTime: Infinity` + `gcTime: Infinity` +
119
+ * `refetchOnWindowFocus/Reconnect/Mount: false` + `retry: false`. React Query
120
+ * dedupes concurrent mounts and caches the single result for the page's
121
+ * lifetime — the exact "run once" guarantee the auth app documents, but
122
+ * without the manual ref/state machinery.
123
+ *
124
+ * ## Validation note (intentionally NO zod re-parse)
125
+ *
126
+ * The auth app's hook calls `fetch` directly, so IT must `safeParse` the wire
127
+ * response with `@oxyhq/contracts`. This hook calls
128
+ * `oxyServices.refreshAllSessions()`, whose core mixin ALREADY validates and
129
+ * normalises the wire response (skips entries missing required fields,
130
+ * normalises `authuser` null→0, builds the `RefreshAllAccountUser` shape) — the
131
+ * mixin is the single source of truth. Re-validating the SDK's own already-typed
132
+ * output here would be redundant double-validation, so we do not re-parse.
133
+ *
134
+ * ## Error handling
135
+ *
136
+ * `refreshAllSessions()` already maps 401/404/abort to `{ accounts: [] }`
137
+ * internally. Any OTHER failure (network, 5xx) propagates as a thrown error and
138
+ * is surfaced by React Query (`query.isError`) — never swallowed. Callers that
139
+ * don't care can ignore it; the hook still returns the local fallback list so
140
+ * the chooser stays usable.
141
+ */
142
+ function useDeviceAccounts() {
143
+ const {
144
+ oxyServices,
145
+ sessions,
146
+ activeSessionId,
147
+ user,
148
+ isAuthenticated
149
+ } = (0, _OxyContext.useOxy)();
150
+ const {
151
+ locale
152
+ } = (0, _useI18n.useI18n)();
153
+
154
+ // Stable, per-API-origin query key. `refreshAllSessions` resolves against
155
+ // the session base url derived from `getBaseURL()`, so keying on it scopes
156
+ // the cached result to the API the provider is pointed at.
157
+ const baseURL = oxyServices.getBaseURL();
158
+ const query = (0, _reactQuery.useQuery)({
159
+ queryKey: [..._queryKeys.queryKeys.accounts.all, 'deviceAccounts', baseURL],
160
+ queryFn: () => oxyServices.refreshAllSessions(),
161
+ // Only attempt the shared apex path while signed in. When logged out
162
+ // there is nothing to enumerate and the fallback (also empty) is used.
163
+ enabled: isAuthenticated,
164
+ // Single-use cookie rotation → run at most once per page load.
165
+ staleTime: Number.POSITIVE_INFINITY,
166
+ gcTime: Number.POSITIVE_INFINITY,
167
+ refetchOnWindowFocus: false,
168
+ refetchOnReconnect: false,
169
+ refetchOnMount: false,
170
+ retry: false
171
+ });
172
+ const sharedAccounts = query.data?.accounts ?? [];
173
+ const fromSharedApex = sharedAccounts.length > 0;
174
+ const accounts = (0, _react.useMemo)(() => {
175
+ const resolveAvatarUrl = avatar => avatar ? oxyServices.getFileDownloadUrl(avatar, 'thumb') : undefined;
176
+
177
+ // Build a single current-account row from the live `useOxy().user`. Used
178
+ // as a last-resort fallback when neither the shared-apex probe nor the
179
+ // local session store yielded a row but the user IS authenticated (e.g.
180
+ // a cross-domain host where the apex probe returned empty before the
181
+ // local session store hydrated). The signed-in user must ALWAYS be
182
+ // represented. Email is the REAL email or the `@handle` line — never a
183
+ // synthesized `username@oxy.so`.
184
+ const liveUserRow = () => {
185
+ if (!isAuthenticated || !user || !activeSessionId) {
186
+ return [];
187
+ }
188
+ const displayName = (0, _core.getAccountDisplayName)(user, locale);
189
+ const handle = (0, _core.getAccountFallbackHandle)(user);
190
+ const secondaryHandle = handle ? `@${handle}` : null;
191
+ return [{
192
+ sessionId: activeSessionId,
193
+ authuser: undefined,
194
+ isCurrent: true,
195
+ displayName,
196
+ email: user.email ?? secondaryHandle,
197
+ avatarUrl: resolveAvatarUrl(user.avatar),
198
+ color: user.color ?? null,
199
+ user
200
+ }];
201
+ };
202
+ let built;
203
+ if (fromSharedApex) {
204
+ // Shared apex path: every entry carries a real per-account user.
205
+ built = sharedAccounts.map(entry => {
206
+ // `entry.user` is non-null on the refresh-all path; the core
207
+ // mixin skips entries without a valid user. The fallback below
208
+ // keeps rendering defensive if a server response is incomplete.
209
+ const accountUser = entry.user ?? {
210
+ id: '',
211
+ username: ''
212
+ };
213
+ const displayName = (0, _core.getAccountDisplayName)(accountUser, locale);
214
+ const handle = (0, _core.getAccountFallbackHandle)(accountUser);
215
+ const email = entry.user?.email ?? null;
216
+ const secondaryHandle = handle ? `@${handle}` : null;
217
+ return {
218
+ sessionId: entry.sessionId,
219
+ authuser: entry.authuser,
220
+ // Provisional; finalised by `markCurrentAccount` below so the
221
+ // shared-apex path is robust to server/local session-id skew.
222
+ isCurrent: false,
223
+ displayName,
224
+ // Real email, or null (NEVER synthesized). The UI uses the
225
+ // `@handle` line only when email is genuinely absent.
226
+ email: email ?? secondaryHandle,
227
+ avatarUrl: resolveAvatarUrl(entry.user?.avatar),
228
+ color: entry.user?.color ?? null,
229
+ user: accountUser
230
+ };
231
+ });
232
+ } else {
233
+ // Local fallback path: build from the SDK's multi-session store. The
234
+ // active session row gets the full loaded `user`; inactive fallback
235
+ // rows carry only what the `ClientSession` exposes (no synthesized
236
+ // identity — they show the active user's data only when active).
237
+ built = (sessions ?? []).map(session => {
238
+ const isCurrent = session.sessionId === activeSessionId;
239
+ const accountUser = isCurrent && user ? user : {
240
+ id: session.userId ?? '',
241
+ username: ''
242
+ };
243
+ const displayName = (0, _core.getAccountDisplayName)(accountUser, locale);
244
+ const handle = (0, _core.getAccountFallbackHandle)(accountUser);
245
+ const email = isCurrent && user?.email ? user.email : null;
246
+ const secondaryHandle = handle ? `@${handle}` : null;
247
+ const avatar = isCurrent && user ? user.avatar : undefined;
248
+ const color = isCurrent && user?.color ? user.color : null;
249
+ return {
250
+ sessionId: session.sessionId,
251
+ authuser: session.authuser,
252
+ isCurrent,
253
+ displayName,
254
+ email: email ?? secondaryHandle,
255
+ avatarUrl: resolveAvatarUrl(avatar),
256
+ color,
257
+ user: accountUser
258
+ };
259
+ });
260
+ }
261
+
262
+ // Robust current-account detection: tolerate server/local session-id
263
+ // skew on the shared-apex path by falling back to the live user's id and
264
+ // the single-account heuristic.
265
+ const flagged = markCurrentAccount(built, activeSessionId, user?.id ?? null, isAuthenticated);
266
+
267
+ // The signed-in user must ALWAYS be represented. If detection produced
268
+ // an empty list yet the user is authenticated, synthesize a single
269
+ // current row from the live `useOxy().user`.
270
+ if (flagged.length === 0) {
271
+ return liveUserRow();
272
+ }
273
+ return flagged;
274
+ }, [fromSharedApex, sharedAccounts, sessions, activeSessionId, user, isAuthenticated, locale, oxyServices]);
275
+ return {
276
+ accounts,
277
+ // `isLoading` only reflects the shared probe while it's the relevant
278
+ // source. Once we know we're on the fallback (probe settled with 0
279
+ // accounts) the local list is synchronously available.
280
+ isLoading: isAuthenticated && query.isLoading,
281
+ currentSessionId: activeSessionId ?? null,
282
+ fromSharedApex
283
+ };
284
+ }
285
+ //# sourceMappingURL=useDeviceAccounts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","require","_reactQuery","_core","_OxyContext","_useI18n","_queryKeys","markCurrentAccount","accounts","activeSessionId","liveUserId","isAuthenticated","bySession","map","account","isCurrent","Boolean","sessionId","some","matched","byUser","user","id","length","useDeviceAccounts","oxyServices","sessions","useOxy","locale","useI18n","baseURL","getBaseURL","query","useQuery","queryKey","queryKeys","all","queryFn","refreshAllSessions","enabled","staleTime","Number","POSITIVE_INFINITY","gcTime","refetchOnWindowFocus","refetchOnReconnect","refetchOnMount","retry","sharedAccounts","data","fromSharedApex","useMemo","resolveAvatarUrl","avatar","getFileDownloadUrl","undefined","liveUserRow","displayName","getAccountDisplayName","handle","getAccountFallbackHandle","secondaryHandle","authuser","email","avatarUrl","color","built","entry","accountUser","username","session","userId","flagged","isLoading","currentSessionId"],"sourceRoot":"../../../../src","sources":["ui/hooks/useDeviceAccounts.ts"],"mappings":"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","ignoreList":[]}
@@ -147,14 +147,13 @@ const useSessionManagement = ({
147
147
  onAuthStateChange?.(null);
148
148
  }, [clearSessionStorage, logoutStore, onAuthStateChange, oxyServices, queryClient, storage, logger]);
149
149
  const activateSession = (0, _react.useCallback)(async (sessionId, user) => {
150
- await oxyServices.getTokenBySession(sessionId);
151
150
  setTokenReady?.(true);
152
151
  setActiveSessionId(sessionId);
153
152
  loginSuccess(user);
154
153
  await saveActiveSessionId(sessionId);
155
154
  await applyLanguagePreference(user);
156
155
  onAuthStateChange?.(user);
157
- }, [applyLanguagePreference, loginSuccess, onAuthStateChange, oxyServices, saveActiveSessionId, setTokenReady]);
156
+ }, [applyLanguagePreference, loginSuccess, onAuthStateChange, saveActiveSessionId, setTokenReady]);
158
157
  const removalTimerIdsRef = (0, _react.useRef)(new Set());
159
158
  const trackRemovedSession = (0, _react.useCallback)(sessionId => {
160
159
  removedSessionsRef.current.add(sessionId);
@@ -196,10 +195,10 @@ const useSessionManagement = ({
196
195
  // `refreshAllSessions` it carries its `authuser` slot index. We
197
196
  // proactively plant that slot's access token via the httpOnly
198
197
  // refresh cookie BEFORE validating, so the bearer-protected
199
- // validate/getCurrentUser calls don't need a token that was never
200
- // in memory (cold reload / different browser tab). The native path
201
- // has no per-session cookies and continues to rely on
202
- // `validateSession` + `getTokenBySession` directly.
198
+ // validate/getCurrentUser calls have the correct in-memory token
199
+ // after a cold reload or account switch in another tab. The native
200
+ // path arrives here only after a bearer has been planted by
201
+ // `claimSessionByToken` or secure shared-session restore.
203
202
  if ((0, _useWebSSO.isWebBrowser)()) {
204
203
  const targetSession = sessionsRef.current.find(s => s.sessionId === sessionId);
205
204
  const targetAuthuser = targetSession?.authuser;
@@ -1 +1 @@
1
- {"version":3,"names":["_react","require","_core","_sessionHelpers","_storageHelpers","_errorHandlers","_queryClient","_useWebSSO","_activeAuthuser","DEFAULT_SAVE_ERROR_MESSAGE","CLEAR_STORAGE_ERROR","useSessionManagement","oxyServices","storage","storageKeyPrefix","loginSuccess","logoutStore","applyLanguagePreference","onAuthStateChange","onError","setAuthError","logger","setTokenReady","queryClient","sessions","setSessions","useState","activeSessionId","setActiveSessionId","sessionsRef","useRef","current","activeSessionIdRef","refreshInFlightRef","removedSessionsRef","Set","lastRefreshRef","storageKeys","useMemo","getStorageKeys","saveSessionIds","useCallback","sessionIds","uniqueIds","Array","from","setItem","JSON","stringify","error","__DEV__","console","warn","updateSessions","incoming","options","prevSessions","processed","merge","mergeSessions","normalizeAndSortSessions","map","session","sessionId","sessionsArraysEqual","saveActiveSessionId","handleAuthError","defaultMessage","code","removeActiveSessionId","removeItem","clearSessionStorage","clearSessionState","clearTokens","clear","clearQueryCache","activateSession","user","getTokenBySession","removalTimerIdsRef","trackRemovedSession","add","timerId","setTimeout","delete","useEffect","forEach","clearTimeout","findReplacementSession","length","validationResults","validateSessionBatch","maxConcurrency","validSession","find","result","valid","validation","validateSession","useHeaderValidation","switchSession","isWebBrowser","targetSession","s","targetAuthuser","authuser","refreshed","refreshTokenViaCookie","Error","httpService","setTokens","accessToken","writeActiveAuthuser","deviceSessions","fetchSessionsWithFallback","fallbackUserId","id","invalidSession","isInvalidSessionError","filter","otherSessionIds","has","replacementUser","refreshSessions","activeUserId","now","Date","refreshPromise","otherSessions","isRefreshInFlight","Boolean","exports"],"sourceRoot":"../../../../src","sources":["ui/hooks/useSessionManagement.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","require","_core","_sessionHelpers","_storageHelpers","_errorHandlers","_queryClient","_useWebSSO","_activeAuthuser","DEFAULT_SAVE_ERROR_MESSAGE","CLEAR_STORAGE_ERROR","useSessionManagement","oxyServices","storage","storageKeyPrefix","loginSuccess","logoutStore","applyLanguagePreference","onAuthStateChange","onError","setAuthError","logger","setTokenReady","queryClient","sessions","setSessions","useState","activeSessionId","setActiveSessionId","sessionsRef","useRef","current","activeSessionIdRef","refreshInFlightRef","removedSessionsRef","Set","lastRefreshRef","storageKeys","useMemo","getStorageKeys","saveSessionIds","useCallback","sessionIds","uniqueIds","Array","from","setItem","JSON","stringify","error","__DEV__","console","warn","updateSessions","incoming","options","prevSessions","processed","merge","mergeSessions","normalizeAndSortSessions","map","session","sessionId","sessionsArraysEqual","saveActiveSessionId","handleAuthError","defaultMessage","code","removeActiveSessionId","removeItem","clearSessionStorage","clearSessionState","clearTokens","clear","clearQueryCache","activateSession","user","removalTimerIdsRef","trackRemovedSession","add","timerId","setTimeout","delete","useEffect","forEach","clearTimeout","findReplacementSession","length","validationResults","validateSessionBatch","maxConcurrency","validSession","find","result","valid","validation","validateSession","useHeaderValidation","switchSession","isWebBrowser","targetSession","s","targetAuthuser","authuser","refreshed","refreshTokenViaCookie","Error","httpService","setTokens","accessToken","writeActiveAuthuser","deviceSessions","fetchSessionsWithFallback","fallbackUserId","id","invalidSession","isInvalidSessionError","filter","otherSessionIds","has","replacementUser","refreshSessions","activeUserId","now","Date","refreshPromise","otherSessions","isRefreshInFlight","Boolean","exports"],"sourceRoot":"../../../../src","sources":["ui/hooks/useSessionManagement.ts"],"mappings":"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","ignoreList":[]}
@@ -122,8 +122,7 @@ function useSessionSocket({
122
122
  // appear in the switch. Anything unknown falls through to `default`,
123
123
  // which is intentionally a no-op for session lifecycle — it only logs
124
124
  // in dev. This guards against future server-side event additions
125
- // (e.g. `session_created`) accidentally triggering sign-out via a
126
- // "legacy fallback" branch.
125
+ // accidentally triggering sign-out.
127
126
  switch (data.type) {
128
127
  case 'session_removed':
129
128
  {
@@ -169,9 +168,9 @@ function useSessionSocket({
169
168
  case 'session_update':
170
169
  {
171
170
  // Lifecycle event for the current user. Just resync the sessions
172
- // list — never sign out. Historically this branch had a legacy
173
- // fallback that compared `data.sessionId === currentActiveSessionId`
174
- // and signed the user out if true, which was catastrophic: a
171
+ // list — never sign out. A prior implementation compared
172
+ // `data.sessionId === currentActiveSessionId` and signed the user
173
+ // out if true, which was catastrophic: a
175
174
  // `session_created` event fired immediately after a successful
176
175
  // sign-in carries the user's NEW (now-active) session id, which
177
176
  // matched and triggered an instant remote sign-out toast on every
@@ -1 +1 @@
1
- {"version":3,"names":["_react","require","_socket","_interopRequireDefault","_bloom","_core","e","__esModule","default","debug","createDebugLogger","useSessionSocket","userId","activeSessionId","currentDeviceId","refreshSessions","clearSessionState","baseURL","getAccessToken","onRemoteSignOut","onSessionRemoved","socketRef","useRef","refreshSessionsRef","clearSessionStateRef","onRemoteSignOutRef","onSessionRemovedRef","activeSessionIdRef","currentDeviceIdRef","getAccessTokenRef","useEffect","current","disconnect","io","transports","auth","cb","token","socket","handleConnect","log","id","refreshSessionsSafe","catch","error","__DEV__","logger","component","triggerLocalSignOut","toastMessage","errorContext","toast","info","Error","String","handleSessionUpdate","data","currentActiveSessionId","currentDeviceIdValue","type","sessionId","sessionIds","deviceId","includes","warn","on","off"],"sourceRoot":"../../../../src","sources":["ui/hooks/useSessionSocket.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","require","_socket","_interopRequireDefault","_bloom","_core","e","__esModule","default","debug","createDebugLogger","useSessionSocket","userId","activeSessionId","currentDeviceId","refreshSessions","clearSessionState","baseURL","getAccessToken","onRemoteSignOut","onSessionRemoved","socketRef","useRef","refreshSessionsRef","clearSessionStateRef","onRemoteSignOutRef","onSessionRemovedRef","activeSessionIdRef","currentDeviceIdRef","getAccessTokenRef","useEffect","current","disconnect","io","transports","auth","cb","token","socket","handleConnect","log","id","refreshSessionsSafe","catch","error","__DEV__","logger","component","triggerLocalSignOut","toastMessage","errorContext","toast","info","Error","String","handleSessionUpdate","data","currentActiveSessionId","currentDeviceIdValue","type","sessionId","sessionIds","deviceId","includes","warn","on","off"],"sourceRoot":"../../../../src","sources":["ui/hooks/useSessionSocket.ts"],"mappings":"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","ignoreList":[]}
@@ -17,7 +17,7 @@ var _silentGuardKey = require("../../utils/silentGuardKey.js");
17
17
  * without relying on third-party cookies.
18
18
  *
19
19
  * For browsers without FedCM support, users will need to click a sign-in button
20
- * which triggers a popup-based authentication flow.
20
+ * which triggers redirect authentication.
21
21
  *
22
22
  * This is called automatically by OxyContext on web platforms.
23
23
  *
@@ -37,13 +37,13 @@ const screenLoaders = {
37
37
  EditProfileField: () => require('../screens/EditProfileFieldScreen').default,
38
38
  // Informational screens
39
39
  LearnMoreUsernames: () => require('../screens/LearnMoreUsernamesScreen').default,
40
- // Karma screens
41
- KarmaCenter: () => require('../screens/karma/KarmaCenterScreen').default,
42
- KarmaLeaderboard: () => require('../screens/karma/KarmaLeaderboardScreen').default,
43
- KarmaRewards: () => require('../screens/karma/KarmaRewardsScreen').default,
44
- KarmaRules: () => require('../screens/karma/KarmaRulesScreen').default,
45
- AboutKarma: () => require('../screens/karma/KarmaAboutScreen').default,
46
- KarmaFAQ: () => require('../screens/karma/KarmaFAQScreen').default,
40
+ // Oxy Trust screens
41
+ TrustCenter: () => require('../screens/trust/TrustCenterScreen').default,
42
+ TrustLeaderboard: () => require('../screens/trust/TrustLeaderboardScreen').default,
43
+ TrustRewards: () => require('../screens/trust/TrustRewardsScreen').default,
44
+ TrustRules: () => require('../screens/trust/TrustRulesScreen').default,
45
+ AboutTrust: () => require('../screens/trust/TrustAboutScreen').default,
46
+ TrustFAQ: () => require('../screens/trust/TrustFAQScreen').default,
47
47
  // User list screens (followers/following)
48
48
  FollowersList: () => require('../screens/FollowersListScreen').default,
49
49
  FollowingList: () => require('../screens/FollowingListScreen').default,
@@ -1 +1 @@
1
- {"version":3,"names":["screenLoaders","OxyAuth","require","default","ManageAccount","AccountVerification","PaymentGateway","Profile","LanguageSelector","PrivacySettings","SearchSettings","FileManagement","HelpSupport","FAQ","Feedback","LegalDocuments","AppInfo","PremiumSubscription","WelcomeNewUser","UserLinks","HistoryView","SavesCollections","EditProfileField","LearnMoreUsernames","KarmaCenter","KarmaLeaderboard","KarmaRewards","KarmaRules","AboutKarma","KarmaFAQ","FollowersList","FollowingList","CreateManagedAccount","AvatarCrop","Notifications","ConnectedApps","Preferences","screenCache","Map","getScreenComponent","routeName","has","get","loader","component","set","error","__DEV__","console","undefined","exports","isValidRoute","isFileManagementImageOnlyPicker","props","selectMode","disabled","disabledMimeTypes","Array","isArray","length","predicate","some","mt","blocksVideos","startsWith","blocksAudio","blocksDocs","DEFAULT_SHEET_CONFIG","scrollable","manualActivation","dynamicBackdrop","getSheetConfig","screenProps"],"sourceRoot":"../../../../src","sources":["ui/navigation/routes.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["screenLoaders","OxyAuth","require","default","ManageAccount","AccountVerification","PaymentGateway","Profile","LanguageSelector","PrivacySettings","SearchSettings","FileManagement","HelpSupport","FAQ","Feedback","LegalDocuments","AppInfo","PremiumSubscription","WelcomeNewUser","UserLinks","HistoryView","SavesCollections","EditProfileField","LearnMoreUsernames","TrustCenter","TrustLeaderboard","TrustRewards","TrustRules","AboutTrust","TrustFAQ","FollowersList","FollowingList","CreateManagedAccount","AvatarCrop","Notifications","ConnectedApps","Preferences","screenCache","Map","getScreenComponent","routeName","has","get","loader","component","set","error","__DEV__","console","undefined","exports","isValidRoute","isFileManagementImageOnlyPicker","props","selectMode","disabled","disabledMimeTypes","Array","isArray","length","predicate","some","mt","blocksVideos","startsWith","blocksAudio","blocksDocs","DEFAULT_SHEET_CONFIG","scrollable","manualActivation","dynamicBackdrop","getSheetConfig","screenProps"],"sourceRoot":"../../../../src","sources":["ui/navigation/routes.ts"],"mappings":"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","ignoreList":[]}
@@ -122,13 +122,12 @@ const OxyAuthScreen = ({
122
122
  // `claimSessionByToken` — the device-flow equivalent of OAuth's
123
123
  // code-for-token exchange (RFC 8628 §3.4).
124
124
  //
125
- // Without that exchange the SDK has no bearer token, so the subsequent
126
- // `switchSession` -> `getTokenBySession` call (`GET /session/token/:id`) 401s
127
- // against the C1-hardened API the session is authorized server-side but the
128
- // app never becomes authenticated and the sheet sits "Waiting for
129
- // authorization..." forever. Once `claimSessionByToken` plants the tokens in
130
- // the HttpService, the rest of the session wiring flows through the normal
131
- // `switchSession` path. This mirrors `SignInModal`'s web flow exactly.
125
+ // Without that exchange the SDK has no bearer token the session is
126
+ // authorized server-side but the app never becomes authenticated and the
127
+ // sheet sits "Waiting for authorization..." forever. Once
128
+ // `claimSessionByToken` plants the tokens in the HttpService, the rest of the
129
+ // session wiring flows through the normal `switchSession` path. This mirrors
130
+ // `SignInModal`'s web flow exactly.
132
131
  const handleAuthSuccess = (0, _react.useCallback)(async (sessionId, sessionToken) => {
133
132
  if (isProcessingRef.current) return;
134
133
  isProcessingRef.current = true;
@@ -194,8 +193,11 @@ const OxyAuthScreen = ({
194
193
  });
195
194
  socket.on('connect_error', err => {
196
195
  debug.log('Socket connection error, falling back to polling:', err instanceof Error ? err.message : null);
197
- // Fall back to polling if socket fails
196
+ // Realtime transport errored reflect the honest connection state. The
197
+ // poll is already running (started unconditionally in
198
+ // `generateAuthSession`), so `startPolling` here is a no-op backstop.
198
199
  socket.disconnect();
200
+ setConnectionType('polling');
199
201
  startPolling(sessionToken);
200
202
  });
201
203
  socket.on('disconnect', () => {
@@ -203,9 +205,13 @@ const OxyAuthScreen = ({
203
205
  });
204
206
  }, [oxyServices, handleAuthSuccess]);
205
207
 
206
- // Start polling for authorization (fallback)
208
+ // Start polling for authorization.
209
+ //
210
+ // Idempotent: if a poll interval is already running this is a no-op, so the
211
+ // `connect_error` path (which also calls this) cannot stack a second interval
212
+ // on top of the always-on poll started in `generateAuthSession`.
207
213
  const startPolling = (0, _react.useCallback)(sessionToken => {
208
- setConnectionType('polling');
214
+ if (pollingIntervalRef.current) return;
209
215
  pollingIntervalRef.current = setInterval(async () => {
210
216
  if (isProcessingRef.current) return;
211
217
  try {
@@ -279,14 +285,17 @@ const OxyAuthScreen = ({
279
285
  });
280
286
  setIsWaiting(true);
281
287
 
282
- // Try socket first, will fall back to polling if needed
288
+ // Socket is the fast path; the poll is a transport-independent backstop
289
+ // that guarantees completion even if the socket connects but silently
290
+ // never delivers auth_update (RN transport / idle-timeout).
283
291
  connectSocket(sessionToken);
292
+ startPolling(sessionToken);
284
293
  } catch (err) {
285
294
  setError((err instanceof Error ? err.message : null) || 'Failed to create auth session');
286
295
  } finally {
287
296
  setIsLoading(false);
288
297
  }
289
- }, [oxyServices, connectSocket, clientId]);
298
+ }, [oxyServices, connectSocket, startPolling, clientId]);
290
299
 
291
300
  // Generate a random session token
292
301
  const generateSessionToken = () => {