@oxyhq/services 10.2.0 → 10.2.2

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 (246) hide show
  1. package/README.md +9 -13
  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/FollowButton.js +3 -1
  8. package/lib/commonjs/ui/components/FollowButton.js.map +1 -1
  9. package/lib/commonjs/ui/components/OxySignInButton.js +1 -1
  10. package/lib/commonjs/ui/components/SignInModal.js +11 -12
  11. package/lib/commonjs/ui/components/SignInModal.js.map +1 -1
  12. package/lib/commonjs/ui/components/accountMenuRows.js +18 -30
  13. package/lib/commonjs/ui/components/accountMenuRows.js.map +1 -1
  14. package/lib/commonjs/ui/context/OxyContext.js +57 -78
  15. package/lib/commonjs/ui/context/OxyContext.js.map +1 -1
  16. package/lib/commonjs/ui/context/hooks/useAuthOperations.js +7 -13
  17. package/lib/commonjs/ui/context/hooks/useAuthOperations.js.map +1 -1
  18. package/lib/commonjs/ui/hooks/useAuth.js +10 -40
  19. package/lib/commonjs/ui/hooks/useAuth.js.map +1 -1
  20. package/lib/commonjs/ui/hooks/useDeviceAccounts.js +285 -0
  21. package/lib/commonjs/ui/hooks/useDeviceAccounts.js.map +1 -0
  22. package/lib/commonjs/ui/hooks/useFollow.js +21 -7
  23. package/lib/commonjs/ui/hooks/useFollow.js.map +1 -1
  24. package/lib/commonjs/ui/hooks/useSessionManagement.js +5 -6
  25. package/lib/commonjs/ui/hooks/useSessionManagement.js.map +1 -1
  26. package/lib/commonjs/ui/hooks/useSessionSocket.js +4 -5
  27. package/lib/commonjs/ui/hooks/useSessionSocket.js.map +1 -1
  28. package/lib/commonjs/ui/hooks/useWebSSO.js +1 -1
  29. package/lib/commonjs/ui/navigation/routes.js +7 -7
  30. package/lib/commonjs/ui/navigation/routes.js.map +1 -1
  31. package/lib/commonjs/ui/screens/OxyAuthScreen.js +6 -7
  32. package/lib/commonjs/ui/screens/OxyAuthScreen.js.map +1 -1
  33. package/lib/commonjs/ui/screens/ProfileScreen.js +18 -20
  34. package/lib/commonjs/ui/screens/ProfileScreen.js.map +1 -1
  35. package/lib/commonjs/ui/screens/WelcomeNewUserScreen.js +4 -4
  36. package/lib/commonjs/ui/screens/WelcomeNewUserScreen.js.map +1 -1
  37. package/lib/commonjs/ui/screens/{karma/KarmaAboutScreen.js → trust/TrustAboutScreen.js} +11 -11
  38. package/lib/commonjs/ui/screens/trust/TrustAboutScreen.js.map +1 -0
  39. package/lib/commonjs/ui/screens/{karma/KarmaCenterScreen.js → trust/TrustCenterScreen.js} +91 -41
  40. package/lib/commonjs/ui/screens/trust/TrustCenterScreen.js.map +1 -0
  41. package/lib/commonjs/ui/screens/{karma/KarmaFAQScreen.js → trust/TrustFAQScreen.js} +11 -11
  42. package/lib/commonjs/ui/screens/{karma/KarmaFAQScreen.js.map → trust/TrustFAQScreen.js.map} +1 -1
  43. package/lib/commonjs/ui/screens/{karma/KarmaLeaderboardScreen.js → trust/TrustLeaderboardScreen.js} +63 -42
  44. package/lib/commonjs/ui/screens/trust/TrustLeaderboardScreen.js.map +1 -0
  45. package/lib/commonjs/ui/screens/{karma/KarmaRewardsScreen.js → trust/TrustRewardsScreen.js} +54 -54
  46. package/lib/commonjs/ui/screens/trust/TrustRewardsScreen.js.map +1 -0
  47. package/lib/commonjs/ui/screens/{karma/KarmaRulesScreen.js → trust/TrustRulesScreen.js} +45 -16
  48. package/lib/commonjs/ui/screens/trust/TrustRulesScreen.js.map +1 -0
  49. package/lib/commonjs/ui/screens/trust/trustTier.js +23 -0
  50. package/lib/commonjs/ui/screens/trust/trustTier.js.map +1 -0
  51. package/lib/commonjs/utils/deviceFlowSignIn.js +12 -10
  52. package/lib/commonjs/utils/deviceFlowSignIn.js.map +1 -1
  53. package/lib/module/index.js +3 -0
  54. package/lib/module/index.js.map +1 -1
  55. package/lib/module/ui/components/AccountMenu.js +297 -226
  56. package/lib/module/ui/components/AccountMenu.js.map +1 -1
  57. package/lib/module/ui/components/AccountMenuButton.js.map +1 -1
  58. package/lib/module/ui/components/FollowButton.js +3 -1
  59. package/lib/module/ui/components/FollowButton.js.map +1 -1
  60. package/lib/module/ui/components/OxySignInButton.js +1 -1
  61. package/lib/module/ui/components/SignInModal.js +11 -12
  62. package/lib/module/ui/components/SignInModal.js.map +1 -1
  63. package/lib/module/ui/components/accountMenuRows.js +18 -30
  64. package/lib/module/ui/components/accountMenuRows.js.map +1 -1
  65. package/lib/module/ui/context/OxyContext.js +58 -79
  66. package/lib/module/ui/context/OxyContext.js.map +1 -1
  67. package/lib/module/ui/context/hooks/useAuthOperations.js +7 -13
  68. package/lib/module/ui/context/hooks/useAuthOperations.js.map +1 -1
  69. package/lib/module/ui/hooks/useAuth.js +10 -40
  70. package/lib/module/ui/hooks/useAuth.js.map +1 -1
  71. package/lib/module/ui/hooks/useDeviceAccounts.js +281 -0
  72. package/lib/module/ui/hooks/useDeviceAccounts.js.map +1 -0
  73. package/lib/module/ui/hooks/useFollow.js +21 -7
  74. package/lib/module/ui/hooks/useFollow.js.map +1 -1
  75. package/lib/module/ui/hooks/useSessionManagement.js +5 -6
  76. package/lib/module/ui/hooks/useSessionManagement.js.map +1 -1
  77. package/lib/module/ui/hooks/useSessionSocket.js +4 -5
  78. package/lib/module/ui/hooks/useSessionSocket.js.map +1 -1
  79. package/lib/module/ui/hooks/useWebSSO.js +1 -1
  80. package/lib/module/ui/navigation/routes.js +7 -7
  81. package/lib/module/ui/navigation/routes.js.map +1 -1
  82. package/lib/module/ui/screens/OxyAuthScreen.js +6 -7
  83. package/lib/module/ui/screens/OxyAuthScreen.js.map +1 -1
  84. package/lib/module/ui/screens/ProfileScreen.js +18 -20
  85. package/lib/module/ui/screens/ProfileScreen.js.map +1 -1
  86. package/lib/module/ui/screens/WelcomeNewUserScreen.js +4 -4
  87. package/lib/module/ui/screens/WelcomeNewUserScreen.js.map +1 -1
  88. package/lib/module/ui/screens/{karma/KarmaAboutScreen.js → trust/TrustAboutScreen.js} +11 -11
  89. package/lib/module/ui/screens/trust/TrustAboutScreen.js.map +1 -0
  90. package/lib/module/ui/screens/{karma/KarmaCenterScreen.js → trust/TrustCenterScreen.js} +92 -42
  91. package/lib/module/ui/screens/trust/TrustCenterScreen.js.map +1 -0
  92. package/lib/module/ui/screens/{karma/KarmaFAQScreen.js → trust/TrustFAQScreen.js} +11 -11
  93. package/lib/module/ui/screens/{karma/KarmaFAQScreen.js.map → trust/TrustFAQScreen.js.map} +1 -1
  94. package/lib/module/ui/screens/{karma/KarmaLeaderboardScreen.js → trust/TrustLeaderboardScreen.js} +63 -42
  95. package/lib/module/ui/screens/trust/TrustLeaderboardScreen.js.map +1 -0
  96. package/lib/module/ui/screens/{karma/KarmaRewardsScreen.js → trust/TrustRewardsScreen.js} +54 -54
  97. package/lib/module/ui/screens/trust/TrustRewardsScreen.js.map +1 -0
  98. package/lib/module/ui/screens/{karma/KarmaRulesScreen.js → trust/TrustRulesScreen.js} +45 -16
  99. package/lib/module/ui/screens/trust/TrustRulesScreen.js.map +1 -0
  100. package/lib/module/ui/screens/trust/trustTier.js +19 -0
  101. package/lib/module/ui/screens/trust/trustTier.js.map +1 -0
  102. package/lib/module/utils/deviceFlowSignIn.js +13 -10
  103. package/lib/module/utils/deviceFlowSignIn.js.map +1 -1
  104. package/lib/typescript/commonjs/index.d.ts +3 -1
  105. package/lib/typescript/commonjs/index.d.ts.map +1 -1
  106. package/lib/typescript/commonjs/ui/components/AccountMenu.d.ts +30 -10
  107. package/lib/typescript/commonjs/ui/components/AccountMenu.d.ts.map +1 -1
  108. package/lib/typescript/commonjs/ui/components/SignInModal.d.ts +1 -1
  109. package/lib/typescript/commonjs/ui/components/SignInModal.d.ts.map +1 -1
  110. package/lib/typescript/commonjs/ui/components/accountMenuRows.d.ts +19 -12
  111. package/lib/typescript/commonjs/ui/components/accountMenuRows.d.ts.map +1 -1
  112. package/lib/typescript/commonjs/ui/context/OxyContext.d.ts +3 -3
  113. package/lib/typescript/commonjs/ui/context/OxyContext.d.ts.map +1 -1
  114. package/lib/typescript/commonjs/ui/context/hooks/useAuthOperations.d.ts.map +1 -1
  115. package/lib/typescript/commonjs/ui/hooks/mutations/useAccountMutations.d.ts +1 -7
  116. package/lib/typescript/commonjs/ui/hooks/mutations/useAccountMutations.d.ts.map +1 -1
  117. package/lib/typescript/commonjs/ui/hooks/useAuth.d.ts +3 -7
  118. package/lib/typescript/commonjs/ui/hooks/useAuth.d.ts.map +1 -1
  119. package/lib/typescript/commonjs/ui/hooks/useDeviceAccounts.d.ts +133 -0
  120. package/lib/typescript/commonjs/ui/hooks/useDeviceAccounts.d.ts.map +1 -0
  121. package/lib/typescript/commonjs/ui/hooks/useFollow.d.ts +1 -1
  122. package/lib/typescript/commonjs/ui/hooks/useFollow.d.ts.map +1 -1
  123. package/lib/typescript/commonjs/ui/hooks/useSessionManagement.d.ts.map +1 -1
  124. package/lib/typescript/commonjs/ui/hooks/useSessionSocket.d.ts.map +1 -1
  125. package/lib/typescript/commonjs/ui/hooks/useWebSSO.d.ts +1 -1
  126. package/lib/typescript/commonjs/ui/navigation/routes.d.ts +1 -1
  127. package/lib/typescript/commonjs/ui/screens/OxyAuthScreen.d.ts.map +1 -1
  128. package/lib/typescript/commonjs/ui/screens/ProfileScreen.d.ts.map +1 -1
  129. package/lib/typescript/commonjs/ui/screens/trust/TrustAboutScreen.d.ts +5 -0
  130. package/lib/typescript/commonjs/ui/screens/{karma/KarmaAboutScreen.d.ts.map → trust/TrustAboutScreen.d.ts.map} +1 -1
  131. package/lib/typescript/commonjs/ui/screens/trust/TrustCenterScreen.d.ts +5 -0
  132. package/lib/typescript/commonjs/ui/screens/trust/TrustCenterScreen.d.ts.map +1 -0
  133. package/lib/typescript/{module/ui/screens/karma/KarmaFAQScreen.d.ts → commonjs/ui/screens/trust/TrustFAQScreen.d.ts} +1 -1
  134. package/lib/typescript/commonjs/ui/screens/trust/TrustFAQScreen.d.ts.map +1 -0
  135. package/lib/typescript/commonjs/ui/screens/trust/TrustLeaderboardScreen.d.ts +5 -0
  136. package/lib/typescript/commonjs/ui/screens/trust/TrustLeaderboardScreen.d.ts.map +1 -0
  137. package/lib/typescript/commonjs/ui/screens/trust/TrustRewardsScreen.d.ts +5 -0
  138. package/lib/typescript/commonjs/ui/screens/{karma/KarmaRewardsScreen.d.ts.map → trust/TrustRewardsScreen.d.ts.map} +1 -1
  139. package/lib/typescript/commonjs/ui/screens/trust/TrustRulesScreen.d.ts +5 -0
  140. package/lib/typescript/commonjs/ui/screens/trust/TrustRulesScreen.d.ts.map +1 -0
  141. package/lib/typescript/commonjs/ui/screens/trust/trustTier.d.ts +9 -0
  142. package/lib/typescript/commonjs/ui/screens/trust/trustTier.d.ts.map +1 -0
  143. package/lib/typescript/commonjs/ui/types/navigation.d.ts +1 -1
  144. package/lib/typescript/commonjs/utils/deviceFlowSignIn.d.ts +11 -9
  145. package/lib/typescript/commonjs/utils/deviceFlowSignIn.d.ts.map +1 -1
  146. package/lib/typescript/module/index.d.ts +3 -1
  147. package/lib/typescript/module/index.d.ts.map +1 -1
  148. package/lib/typescript/module/ui/components/AccountMenu.d.ts +30 -10
  149. package/lib/typescript/module/ui/components/AccountMenu.d.ts.map +1 -1
  150. package/lib/typescript/module/ui/components/SignInModal.d.ts +1 -1
  151. package/lib/typescript/module/ui/components/SignInModal.d.ts.map +1 -1
  152. package/lib/typescript/module/ui/components/accountMenuRows.d.ts +19 -12
  153. package/lib/typescript/module/ui/components/accountMenuRows.d.ts.map +1 -1
  154. package/lib/typescript/module/ui/context/OxyContext.d.ts +3 -3
  155. package/lib/typescript/module/ui/context/OxyContext.d.ts.map +1 -1
  156. package/lib/typescript/module/ui/context/hooks/useAuthOperations.d.ts.map +1 -1
  157. package/lib/typescript/module/ui/hooks/mutations/useAccountMutations.d.ts +1 -7
  158. package/lib/typescript/module/ui/hooks/mutations/useAccountMutations.d.ts.map +1 -1
  159. package/lib/typescript/module/ui/hooks/useAuth.d.ts +3 -7
  160. package/lib/typescript/module/ui/hooks/useAuth.d.ts.map +1 -1
  161. package/lib/typescript/module/ui/hooks/useDeviceAccounts.d.ts +133 -0
  162. package/lib/typescript/module/ui/hooks/useDeviceAccounts.d.ts.map +1 -0
  163. package/lib/typescript/module/ui/hooks/useFollow.d.ts +1 -1
  164. package/lib/typescript/module/ui/hooks/useFollow.d.ts.map +1 -1
  165. package/lib/typescript/module/ui/hooks/useSessionManagement.d.ts.map +1 -1
  166. package/lib/typescript/module/ui/hooks/useSessionSocket.d.ts.map +1 -1
  167. package/lib/typescript/module/ui/hooks/useWebSSO.d.ts +1 -1
  168. package/lib/typescript/module/ui/navigation/routes.d.ts +1 -1
  169. package/lib/typescript/module/ui/screens/OxyAuthScreen.d.ts.map +1 -1
  170. package/lib/typescript/module/ui/screens/ProfileScreen.d.ts.map +1 -1
  171. package/lib/typescript/module/ui/screens/trust/TrustAboutScreen.d.ts +5 -0
  172. package/lib/typescript/module/ui/screens/{karma/KarmaAboutScreen.d.ts.map → trust/TrustAboutScreen.d.ts.map} +1 -1
  173. package/lib/typescript/module/ui/screens/trust/TrustCenterScreen.d.ts +5 -0
  174. package/lib/typescript/module/ui/screens/trust/TrustCenterScreen.d.ts.map +1 -0
  175. package/lib/typescript/{commonjs/ui/screens/karma/KarmaFAQScreen.d.ts → module/ui/screens/trust/TrustFAQScreen.d.ts} +1 -1
  176. package/lib/typescript/module/ui/screens/trust/TrustFAQScreen.d.ts.map +1 -0
  177. package/lib/typescript/module/ui/screens/trust/TrustLeaderboardScreen.d.ts +5 -0
  178. package/lib/typescript/module/ui/screens/trust/TrustLeaderboardScreen.d.ts.map +1 -0
  179. package/lib/typescript/module/ui/screens/trust/TrustRewardsScreen.d.ts +5 -0
  180. package/lib/typescript/module/ui/screens/{karma/KarmaRewardsScreen.d.ts.map → trust/TrustRewardsScreen.d.ts.map} +1 -1
  181. package/lib/typescript/module/ui/screens/trust/TrustRulesScreen.d.ts +5 -0
  182. package/lib/typescript/module/ui/screens/trust/TrustRulesScreen.d.ts.map +1 -0
  183. package/lib/typescript/module/ui/screens/trust/trustTier.d.ts +9 -0
  184. package/lib/typescript/module/ui/screens/trust/trustTier.d.ts.map +1 -0
  185. package/lib/typescript/module/ui/types/navigation.d.ts +1 -1
  186. package/lib/typescript/module/utils/deviceFlowSignIn.d.ts +11 -9
  187. package/lib/typescript/module/utils/deviceFlowSignIn.d.ts.map +1 -1
  188. package/package.json +2 -2
  189. package/src/index.ts +10 -1
  190. package/src/ui/components/AccountMenu.tsx +311 -253
  191. package/src/ui/components/AccountMenuButton.tsx +2 -2
  192. package/src/ui/components/FollowButton.tsx +2 -2
  193. package/src/ui/components/OxySignInButton.tsx +1 -1
  194. package/src/ui/components/SignInModal.tsx +13 -14
  195. package/src/ui/components/accountMenuRows.ts +28 -40
  196. package/src/ui/context/OxyContext.tsx +71 -74
  197. package/src/ui/context/hooks/useAuthOperations.ts +7 -13
  198. package/src/ui/hooks/useAuth.ts +12 -49
  199. package/src/ui/hooks/useDeviceAccounts.ts +348 -0
  200. package/src/ui/hooks/useFollow.ts +16 -8
  201. package/src/ui/hooks/useSessionManagement.ts +5 -14
  202. package/src/ui/hooks/useSessionSocket.ts +4 -5
  203. package/src/ui/hooks/useWebSSO.ts +1 -1
  204. package/src/ui/navigation/routes.ts +13 -13
  205. package/src/ui/screens/OxyAuthScreen.tsx +6 -7
  206. package/src/ui/screens/ProfileScreen.tsx +15 -17
  207. package/src/ui/screens/WelcomeNewUserScreen.tsx +2 -2
  208. package/src/ui/screens/{karma/KarmaAboutScreen.tsx → trust/TrustAboutScreen.tsx} +15 -15
  209. package/src/ui/screens/{karma/KarmaCenterScreen.tsx → trust/TrustCenterScreen.tsx} +87 -41
  210. package/src/ui/screens/{karma/KarmaFAQScreen.tsx → trust/TrustFAQScreen.tsx} +10 -10
  211. package/src/ui/screens/trust/TrustLeaderboardScreen.tsx +101 -0
  212. package/src/ui/screens/{karma/KarmaRewardsScreen.tsx → trust/TrustRewardsScreen.tsx} +54 -54
  213. package/src/ui/screens/{karma/KarmaRulesScreen.tsx → trust/TrustRulesScreen.tsx} +27 -13
  214. package/src/ui/screens/trust/trustTier.ts +20 -0
  215. package/src/ui/types/navigation.ts +1 -2
  216. package/src/utils/__tests__/deviceFlowSignIn.test.ts +2 -3
  217. package/src/utils/deviceFlowSignIn.ts +18 -12
  218. package/lib/commonjs/ui/screens/karma/KarmaAboutScreen.js.map +0 -1
  219. package/lib/commonjs/ui/screens/karma/KarmaCenterScreen.js.map +0 -1
  220. package/lib/commonjs/ui/screens/karma/KarmaLeaderboardScreen.js.map +0 -1
  221. package/lib/commonjs/ui/screens/karma/KarmaRewardsScreen.js.map +0 -1
  222. package/lib/commonjs/ui/screens/karma/KarmaRulesScreen.js.map +0 -1
  223. package/lib/module/ui/screens/karma/KarmaAboutScreen.js.map +0 -1
  224. package/lib/module/ui/screens/karma/KarmaCenterScreen.js.map +0 -1
  225. package/lib/module/ui/screens/karma/KarmaLeaderboardScreen.js.map +0 -1
  226. package/lib/module/ui/screens/karma/KarmaRewardsScreen.js.map +0 -1
  227. package/lib/module/ui/screens/karma/KarmaRulesScreen.js.map +0 -1
  228. package/lib/typescript/commonjs/ui/screens/karma/KarmaAboutScreen.d.ts +0 -5
  229. package/lib/typescript/commonjs/ui/screens/karma/KarmaCenterScreen.d.ts +0 -5
  230. package/lib/typescript/commonjs/ui/screens/karma/KarmaCenterScreen.d.ts.map +0 -1
  231. package/lib/typescript/commonjs/ui/screens/karma/KarmaFAQScreen.d.ts.map +0 -1
  232. package/lib/typescript/commonjs/ui/screens/karma/KarmaLeaderboardScreen.d.ts +0 -5
  233. package/lib/typescript/commonjs/ui/screens/karma/KarmaLeaderboardScreen.d.ts.map +0 -1
  234. package/lib/typescript/commonjs/ui/screens/karma/KarmaRewardsScreen.d.ts +0 -5
  235. package/lib/typescript/commonjs/ui/screens/karma/KarmaRulesScreen.d.ts +0 -5
  236. package/lib/typescript/commonjs/ui/screens/karma/KarmaRulesScreen.d.ts.map +0 -1
  237. package/lib/typescript/module/ui/screens/karma/KarmaAboutScreen.d.ts +0 -5
  238. package/lib/typescript/module/ui/screens/karma/KarmaCenterScreen.d.ts +0 -5
  239. package/lib/typescript/module/ui/screens/karma/KarmaCenterScreen.d.ts.map +0 -1
  240. package/lib/typescript/module/ui/screens/karma/KarmaFAQScreen.d.ts.map +0 -1
  241. package/lib/typescript/module/ui/screens/karma/KarmaLeaderboardScreen.d.ts +0 -5
  242. package/lib/typescript/module/ui/screens/karma/KarmaLeaderboardScreen.d.ts.map +0 -1
  243. package/lib/typescript/module/ui/screens/karma/KarmaRewardsScreen.d.ts +0 -5
  244. package/lib/typescript/module/ui/screens/karma/KarmaRulesScreen.d.ts +0 -5
  245. package/lib/typescript/module/ui/screens/karma/KarmaRulesScreen.d.ts.map +0 -1
  246. package/src/ui/screens/karma/KarmaLeaderboardScreen.tsx +0 -88
@@ -22,7 +22,7 @@
22
22
  * Cross-domain SSO:
23
23
  * - Web: Automatic via FedCM (Chrome 108+, Safari 16.4+)
24
24
  * - Native: Automatic via shared Keychain/Account Manager
25
- * - Manual sign-in: signIn() opens popup (web) or auth sheet (native)
25
+ * - Manual sign-in: signIn() redirects to the IdP (web) or opens the auth sheet (native)
26
26
  */
27
27
 
28
28
  import { useCallback } from 'react';
@@ -46,7 +46,6 @@ export function useAuth() {
46
46
  isAuthResolved,
47
47
  error,
48
48
  signIn: oxySignIn,
49
- handlePopupSession,
50
49
  logout,
51
50
  logoutAll,
52
51
  refreshSessions,
@@ -56,7 +55,7 @@ export function useAuth() {
56
55
  showBottomSheet,
57
56
  openAvatarPicker
58
57
  } = useOxy();
59
- const signIn = useCallback(async (publicKey, preOpenedPopup) => {
58
+ const signIn = useCallback(async publicKey => {
60
59
  // Check if we're on the identity provider itself
61
60
  // Only the IdP has local login forms - other apps are client apps
62
61
  const authWebUrl = oxyServices.config?.authWebUrl;
@@ -68,42 +67,13 @@ export function useAuth() {
68
67
  }
69
68
  const isIdentityProvider = isWebBrowser() && window.location.hostname === idpHostname;
70
69
 
71
- // Web (not on IdP): Use popup-based authentication
72
- // We go straight to popup to preserve the "user gesture" (click event)
73
- // FedCM silent SSO already runs on page load via useWebSSO
74
- // If user is clicking "Sign In", they need interactive auth NOW
70
+ // Web (not on IdP): use the tokenless redirect SSO flow. FedCM / silent SSO
71
+ // already run on page load; an explicit click needs interactive auth.
75
72
  if (isWebBrowser() && !publicKey && !isIdentityProvider) {
76
- // Open the popup SYNCHRONOUSLY before any `await` runs so Chrome's
77
- // transient user-activation is preserved across the async chain
78
- // (React state updates + the `await` into `signInWithPopup`). If the
79
- // caller already pre-opened one (e.g. they did so to be extra safe
80
- // ahead of their own awaits), reuse it.
81
- const popup = preOpenedPopup ?? oxyServices.openBlankPopup?.() ?? null;
82
- try {
83
- const popupSession = await oxyServices.signInWithPopup?.({
84
- popup
85
- });
86
- if (popupSession?.user) {
87
- // The popup auth flow fetches full user data, so the session user
88
- // contains full User fields even though the base type is MinimalUserData.
89
- // Cast to the expected shape for handlePopupSession.
90
- const sessionWithUser = {
91
- ...popupSession,
92
- user: popupSession.user
93
- };
94
- await handlePopupSession(sessionWithUser);
95
- return sessionWithUser.user;
96
- }
97
- throw new Error('Sign-in failed. Please try again.');
98
- } catch (popupError) {
99
- if (popup && !popup.closed) {
100
- popup.close();
101
- }
102
- if (popupError instanceof Error && popupError.message.includes('blocked')) {
103
- throw new Error('Popup blocked. Please allow popups for this site.');
104
- }
105
- throw popupError;
106
- }
73
+ oxyServices.signInWithRedirect?.({
74
+ redirectUri: window.location.href
75
+ });
76
+ return new Promise(() => undefined);
107
77
  }
108
78
 
109
79
  // Native: Use cryptographic identity
@@ -138,7 +108,7 @@ export function useAuth() {
138
108
  return new Promise(() => {}); // Never resolves, page will redirect
139
109
  }
140
110
  throw new Error('No authentication method available');
141
- }, [oxySignIn, hasIdentity, getPublicKey, showBottomSheet, oxyServices, handlePopupSession]);
111
+ }, [oxySignIn, hasIdentity, getPublicKey, showBottomSheet, oxyServices]);
142
112
  const signOut = useCallback(async () => {
143
113
  await logout();
144
114
  }, [logout]);
@@ -152,7 +122,7 @@ export function useAuth() {
152
122
  // State
153
123
  user,
154
124
  isAuthenticated,
155
- isLoading,
125
+ isLoading: isLoading || !isAuthResolved,
156
126
  isReady: isTokenReady,
157
127
  isAuthResolved,
158
128
  error,
@@ -1 +1 @@
1
- {"version":3,"names":["useCallback","useOxy","isWebBrowser","useAuth","user","isAuthenticated","isLoading","isTokenReady","isAuthResolved","error","signIn","oxySignIn","handlePopupSession","logout","logoutAll","refreshSessions","oxyServices","hasIdentity","getPublicKey","showBottomSheet","openAvatarPicker","publicKey","preOpenedPopup","authWebUrl","config","idpHostname","URL","hostname","isIdentityProvider","window","location","popup","openBlankPopup","popupSession","signInWithPopup","sessionWithUser","Error","popupError","closed","close","message","includes","hasExisting","existingKey","Promise","_","reject","authBase","loginUrl","href","signOut","signOutAll","refresh","isReady"],"sourceRoot":"../../../../src","sources":["ui/hooks/useAuth.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,WAAW,QAAkB,OAAO;AAC7C,SAASC,MAAM,QAAQ,0BAAuB;AAE9C,SAASC,YAAY,QAAQ,gBAAa;AAsE1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,OAAOA,CAAA,EAAkB;EACvC,MAAM;IACJC,IAAI;IACJC,eAAe;IACfC,SAAS;IACTC,YAAY;IACZC,cAAc;IACdC,KAAK;IACLC,MAAM,EAAEC,SAAS;IACjBC,kBAAkB;IAClBC,MAAM;IACNC,SAAS;IACTC,eAAe;IACfC,WAAW;IACXC,WAAW;IACXC,YAAY;IACZC,eAAe;IACfC;EACF,CAAC,GAAGnB,MAAM,CAAC,CAAC;EAEZ,MAAMS,MAAM,GAAGV,WAAW,CAAC,OAAOqB,SAAkB,EAAEC,cAA8B,KAAoB;IACtG;IACA;IACA,MAAMC,UAAU,GAAGP,WAAW,CAACQ,MAAM,EAAED,UAAU;IACjD,IAAIE,WAAW,GAAG,aAAa;IAC/B,IAAIF,UAAU,EAAE;MACd,IAAI;QAAEE,WAAW,GAAG,IAAIC,GAAG,CAACH,UAAU,CAAC,CAACI,QAAQ;MAAE,CAAC,CAAC,MAAM,CAAE;IAC9D;IACA,MAAMC,kBAAkB,GAAG1B,YAAY,CAAC,CAAC,IACvC2B,MAAM,CAACC,QAAQ,CAACH,QAAQ,KAAKF,WAAW;;IAE1C;IACA;IACA;IACA;IACA,IAAIvB,YAAY,CAAC,CAAC,IAAI,CAACmB,SAAS,IAAI,CAACO,kBAAkB,EAAE;MACvD;MACA;MACA;MACA;MACA;MACA,MAAMG,KAAoB,GAAGT,cAAc,IACtCN,WAAW,CAACgB,cAAc,GAAG,CAAC,IAC9B,IAAI;MACT,IAAI;QACF,MAAMC,YAAY,GAAG,MAAMjB,WAAW,CAACkB,eAAe,GAAG;UACvDH;QACF,CAAC,CAAC;QACF,IAAIE,YAAY,EAAE7B,IAAI,EAAE;UACtB;UACA;UACA;UACA,MAAM+B,eAAe,GAAG;YACtB,GAAGF,YAAY;YACf7B,IAAI,EAAE6B,YAAY,CAAC7B;UACrB,CAAC;UACD,MAAMQ,kBAAkB,CAACuB,eAAe,CAAC;UACzC,OAAOA,eAAe,CAAC/B,IAAI;QAC7B;QACA,MAAM,IAAIgC,KAAK,CAAC,mCAAmC,CAAC;MACtD,CAAC,CAAC,OAAOC,UAAU,EAAE;QACnB,IAAIN,KAAK,IAAI,CAACA,KAAK,CAACO,MAAM,EAAE;UAC1BP,KAAK,CAACQ,KAAK,CAAC,CAAC;QACf;QACA,IAAIF,UAAU,YAAYD,KAAK,IAAIC,UAAU,CAACG,OAAO,CAACC,QAAQ,CAAC,SAAS,CAAC,EAAE;UACzE,MAAM,IAAIL,KAAK,CAAC,mDAAmD,CAAC;QACtE;QACA,MAAMC,UAAU;MAClB;IACF;;IAEA;IACA;IACA,IAAIhB,SAAS,EAAE;MACb,OAAOV,SAAS,CAACU,SAAS,CAAC;IAC7B;;IAEA;IACA,MAAMqB,WAAW,GAAG,MAAMzB,WAAW,CAAC,CAAC;IAEvC,IAAIyB,WAAW,EAAE;MACf,MAAMC,WAAW,GAAG,MAAMzB,YAAY,CAAC,CAAC;MACxC,IAAIyB,WAAW,EAAE;QACf,OAAOhC,SAAS,CAACgC,WAAW,CAAC;MAC/B;IACF;;IAEA;IACA,IAAIxB,eAAe,EAAE;MACnBA,eAAe,CAAC,SAAS,CAAC;MAC1B;MACA,OAAO,IAAIyB,OAAO,CAAC,CAACC,CAAC,EAAEC,MAAM,KAAK;QAChCA,MAAM,CAAC,IAAIV,KAAK,CAAC,2CAA2C,CAAC,CAAC;MAChE,CAAC,CAAC;IACJ;;IAEA;IACA,IAAIlC,YAAY,CAAC,CAAC,EAAE;MAClB,MAAM6C,QAAQ,GAAGxB,UAAU,IAAI,yBAAyB;MACxD,MAAMyB,QAAQ,GAAGnB,MAAM,CAACC,QAAQ,CAACH,QAAQ,CAACc,QAAQ,CAAC,QAAQ,CAAC,GACxD,QAAQ,GACR,GAAGM,QAAQ,QAAQ;MACvBlB,MAAM,CAACC,QAAQ,CAACmB,IAAI,GAAGD,QAAQ;MAC/B,OAAO,IAAIJ,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAChC;IAEA,MAAM,IAAIR,KAAK,CAAC,oCAAoC,CAAC;EACvD,CAAC,EAAE,CAACzB,SAAS,EAAEM,WAAW,EAAEC,YAAY,EAAEC,eAAe,EAAEH,WAAW,EAAEJ,kBAAkB,CAAC,CAAC;EAE5F,MAAMsC,OAAO,GAAGlD,WAAW,CAAC,YAA2B;IACrD,MAAMa,MAAM,CAAC,CAAC;EAChB,CAAC,EAAE,CAACA,MAAM,CAAC,CAAC;EAEZ,MAAMsC,UAAU,GAAGnD,WAAW,CAAC,YAA2B;IACxD,MAAMc,SAAS,CAAC,CAAC;EACnB,CAAC,EAAE,CAACA,SAAS,CAAC,CAAC;EAEf,MAAMsC,OAAO,GAAGpD,WAAW,CAAC,YAA2B;IACrD,MAAMe,eAAe,CAAC,CAAC;EACzB,CAAC,EAAE,CAACA,eAAe,CAAC,CAAC;EAErB,OAAO;IACL;IACAX,IAAI;IACJC,eAAe;IACfC,SAAS;IACT+C,OAAO,EAAE9C,YAAY;IACrBC,cAAc;IACdC,KAAK;IAEL;IACAC,MAAM;IACNwC,OAAO;IACPC,UAAU;IACVC,OAAO;IAEP;IACApC,WAAW;IACXG,eAAe;IACfC;EACF,CAAC;AACH","ignoreList":[]}
1
+ {"version":3,"names":["useCallback","useOxy","isWebBrowser","useAuth","user","isAuthenticated","isLoading","isTokenReady","isAuthResolved","error","signIn","oxySignIn","logout","logoutAll","refreshSessions","oxyServices","hasIdentity","getPublicKey","showBottomSheet","openAvatarPicker","publicKey","authWebUrl","config","idpHostname","URL","hostname","isIdentityProvider","window","location","signInWithRedirect","redirectUri","href","Promise","undefined","hasExisting","existingKey","_","reject","Error","authBase","loginUrl","includes","signOut","signOutAll","refresh","isReady"],"sourceRoot":"../../../../src","sources":["ui/hooks/useAuth.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,281 @@
1
+ "use strict";
2
+
3
+ import { useMemo } from 'react';
4
+ import { useQuery } from '@tanstack/react-query';
5
+ import { getAccountDisplayName, getAccountFallbackHandle } from '@oxyhq/core';
6
+ import { useOxy } from "../context/OxyContext.js";
7
+ import { useI18n } from "./useI18n.js";
8
+ import { queryKeys } from "./queries/queryKeys.js";
9
+
10
+ /**
11
+ * The per-account user shape carried by a {@link DeviceAccount}. Either:
12
+ * - the minimal projection returned by `POST /auth/refresh-all`
13
+ * ({@link RefreshAllAccountUser}, the shared apex path), or
14
+ * - the SDK's canonical {@link User} document (the active row on the local
15
+ * fallback path, which already has the full user loaded in `useOxy()`).
16
+ *
17
+ * Both satisfy `getAccountDisplayName`'s `DisplayNameUserShape`, so display
18
+ * resolution is uniform across paths.
19
+ */
20
+
21
+ /**
22
+ * One signed-in account on this device, fully hydrated for the account
23
+ * chooser. Unlike the old `AccountMenu` behaviour (which only carried the
24
+ * ACTIVE session's user), EVERY entry here carries real per-account
25
+ * `displayName` / `email` / `avatarUrl` / `color`.
26
+ */
27
+
28
+ /**
29
+ * Resolve which entries are the current account, robustly.
30
+ *
31
+ * Primary signal: `entry.sessionId === activeSessionId`. On the web shared-apex
32
+ * path, `refreshAllSessions()` returns SERVER-side session ids that may not
33
+ * equal the locally-stored `activeSessionId` (a different storage namespace /
34
+ * server perspective), so a pure `sessionId` match can flag NO row as current —
35
+ * the bug that surfaced as "Not signed in" even while authenticated.
36
+ *
37
+ * Fallbacks, applied only when the `sessionId` match found nothing AND the user
38
+ * is authenticated:
39
+ * 1. Match the live `user.id` against each entry's per-account user id.
40
+ * 2. If still nothing and there is exactly one account, mark that one current.
41
+ *
42
+ * At most ONE entry is ever marked current.
43
+ *
44
+ * Pure & side-effect free so it is unit-testable without rendering React.
45
+ */
46
+ export function markCurrentAccount(accounts, activeSessionId, liveUserId, isAuthenticated) {
47
+ const bySession = accounts.map(account => ({
48
+ ...account,
49
+ isCurrent: Boolean(activeSessionId) && account.sessionId === activeSessionId
50
+ }));
51
+ if (bySession.some(account => account.isCurrent) || !isAuthenticated) {
52
+ return bySession;
53
+ }
54
+
55
+ // No row matched by session id: fall back to the live user's id, marking at
56
+ // most the FIRST matching entry current (never more than one).
57
+ if (liveUserId) {
58
+ let matched = false;
59
+ const byUser = bySession.map(account => {
60
+ if (!matched && account.user.id === liveUserId) {
61
+ matched = true;
62
+ return {
63
+ ...account,
64
+ isCurrent: true
65
+ };
66
+ }
67
+ return account;
68
+ });
69
+ if (matched) {
70
+ return byUser;
71
+ }
72
+ }
73
+
74
+ // Authenticated, nothing matched, but there is exactly one account → it must
75
+ // be the current one (single-account shared-apex / cross-domain case).
76
+ if (bySession.length === 1) {
77
+ return [{
78
+ ...bySession[0],
79
+ isCurrent: true
80
+ }];
81
+ }
82
+ return bySession;
83
+ }
84
+
85
+ /**
86
+ * Resolve every account signed in on this device for the unified account
87
+ * switcher, with real per-account name / email / avatar / color.
88
+ *
89
+ * ## Data sources (web vs native)
90
+ *
91
+ * - **Web on a `*.oxy.so` host** → `oxyServices.refreshAllSessions()` returns
92
+ * the full apex device-account list (identical to what `auth.oxy.so` sees,
93
+ * because the `Domain=oxy.so` refresh cookies reach `api.oxy.so`). Used
94
+ * directly — this is the `fromSharedApex: true` path.
95
+ * - **Cross-domain web (non-`oxy.so` apex)** OR **native (no browser cookies)**
96
+ * → `refreshAllSessions()` yields `{ accounts: [] }` (the apex cookies never
97
+ * reach the request: cross-domain by `Domain`, native by having no cookie
98
+ * jar at all; a 401 is also normalised to `{ accounts: [] }` inside the
99
+ * core mixin). In that case we FALL BACK to the SDK's local multi-account
100
+ * list from `useOxy()` (`sessions` + `activeSessionId` + the active `user`).
101
+ * This is the `fromSharedApex: false` path.
102
+ *
103
+ * The fallback decision is purely data-driven: **if `refreshAllSessions()`
104
+ * returns >0 accounts, use the shared path; otherwise fall back to local
105
+ * `useOxy()` sessions.** No host sniffing is needed — the cookie scoping does
106
+ * the discrimination for us, and the same code path works on native (where the
107
+ * fetch returns `{ accounts: [] }`).
108
+ *
109
+ * ## Why React Query (not a `useRef`/`useState` start-once like the auth app)
110
+ *
111
+ * The auth app's `use-device-accounts.ts` hand-rolls a `startedRef` because it
112
+ * has no React Query. The SDK does. `refreshAllSessions()` ROTATES single-use
113
+ * refresh cookies on every call, so it must run AT MOST ONCE per page load:
114
+ * we model that with `staleTime: Infinity` + `gcTime: Infinity` +
115
+ * `refetchOnWindowFocus/Reconnect/Mount: false` + `retry: false`. React Query
116
+ * dedupes concurrent mounts and caches the single result for the page's
117
+ * lifetime — the exact "run once" guarantee the auth app documents, but
118
+ * without the manual ref/state machinery.
119
+ *
120
+ * ## Validation note (intentionally NO zod re-parse)
121
+ *
122
+ * The auth app's hook calls `fetch` directly, so IT must `safeParse` the wire
123
+ * response with `@oxyhq/contracts`. This hook calls
124
+ * `oxyServices.refreshAllSessions()`, whose core mixin ALREADY validates and
125
+ * normalises the wire response (skips entries missing required fields,
126
+ * normalises `authuser` null→0, builds the `RefreshAllAccountUser` shape) — the
127
+ * mixin is the single source of truth. Re-validating the SDK's own already-typed
128
+ * output here would be redundant double-validation, so we do not re-parse.
129
+ *
130
+ * ## Error handling
131
+ *
132
+ * `refreshAllSessions()` already maps 401/404/abort to `{ accounts: [] }`
133
+ * internally. Any OTHER failure (network, 5xx) propagates as a thrown error and
134
+ * is surfaced by React Query (`query.isError`) — never swallowed. Callers that
135
+ * don't care can ignore it; the hook still returns the local fallback list so
136
+ * the chooser stays usable.
137
+ */
138
+ export function useDeviceAccounts() {
139
+ const {
140
+ oxyServices,
141
+ sessions,
142
+ activeSessionId,
143
+ user,
144
+ isAuthenticated
145
+ } = useOxy();
146
+ const {
147
+ locale
148
+ } = useI18n();
149
+
150
+ // Stable, per-API-origin query key. `refreshAllSessions` resolves against
151
+ // the session base url derived from `getBaseURL()`, so keying on it scopes
152
+ // the cached result to the API the provider is pointed at.
153
+ const baseURL = oxyServices.getBaseURL();
154
+ const query = useQuery({
155
+ queryKey: [...queryKeys.accounts.all, 'deviceAccounts', baseURL],
156
+ queryFn: () => oxyServices.refreshAllSessions(),
157
+ // Only attempt the shared apex path while signed in. When logged out
158
+ // there is nothing to enumerate and the fallback (also empty) is used.
159
+ enabled: isAuthenticated,
160
+ // Single-use cookie rotation → run at most once per page load.
161
+ staleTime: Number.POSITIVE_INFINITY,
162
+ gcTime: Number.POSITIVE_INFINITY,
163
+ refetchOnWindowFocus: false,
164
+ refetchOnReconnect: false,
165
+ refetchOnMount: false,
166
+ retry: false
167
+ });
168
+ const sharedAccounts = query.data?.accounts ?? [];
169
+ const fromSharedApex = sharedAccounts.length > 0;
170
+ const accounts = useMemo(() => {
171
+ const resolveAvatarUrl = avatar => avatar ? oxyServices.getFileDownloadUrl(avatar, 'thumb') : undefined;
172
+
173
+ // Build a single current-account row from the live `useOxy().user`. Used
174
+ // as a last-resort fallback when neither the shared-apex probe nor the
175
+ // local session store yielded a row but the user IS authenticated (e.g.
176
+ // a cross-domain host where the apex probe returned empty before the
177
+ // local session store hydrated). The signed-in user must ALWAYS be
178
+ // represented. Email is the REAL email or the `@handle` line — never a
179
+ // synthesized `username@oxy.so`.
180
+ const liveUserRow = () => {
181
+ if (!isAuthenticated || !user || !activeSessionId) {
182
+ return [];
183
+ }
184
+ const displayName = getAccountDisplayName(user, locale);
185
+ const handle = getAccountFallbackHandle(user);
186
+ const secondaryHandle = handle ? `@${handle}` : null;
187
+ return [{
188
+ sessionId: activeSessionId,
189
+ authuser: undefined,
190
+ isCurrent: true,
191
+ displayName,
192
+ email: user.email ?? secondaryHandle,
193
+ avatarUrl: resolveAvatarUrl(user.avatar),
194
+ color: user.color ?? null,
195
+ user
196
+ }];
197
+ };
198
+ let built;
199
+ if (fromSharedApex) {
200
+ // Shared apex path: every entry carries a real per-account user.
201
+ built = sharedAccounts.map(entry => {
202
+ // `entry.user` is non-null on the refresh-all path; the core
203
+ // mixin skips entries without a valid user. The fallback below
204
+ // keeps rendering defensive if a server response is incomplete.
205
+ const accountUser = entry.user ?? {
206
+ id: '',
207
+ username: ''
208
+ };
209
+ const displayName = getAccountDisplayName(accountUser, locale);
210
+ const handle = getAccountFallbackHandle(accountUser);
211
+ const email = entry.user?.email ?? null;
212
+ const secondaryHandle = handle ? `@${handle}` : null;
213
+ return {
214
+ sessionId: entry.sessionId,
215
+ authuser: entry.authuser,
216
+ // Provisional; finalised by `markCurrentAccount` below so the
217
+ // shared-apex path is robust to server/local session-id skew.
218
+ isCurrent: false,
219
+ displayName,
220
+ // Real email, or null (NEVER synthesized). The UI uses the
221
+ // `@handle` line only when email is genuinely absent.
222
+ email: email ?? secondaryHandle,
223
+ avatarUrl: resolveAvatarUrl(entry.user?.avatar),
224
+ color: entry.user?.color ?? null,
225
+ user: accountUser
226
+ };
227
+ });
228
+ } else {
229
+ // Local fallback path: build from the SDK's multi-session store. The
230
+ // active session row gets the full loaded `user`; inactive fallback
231
+ // rows carry only what the `ClientSession` exposes (no synthesized
232
+ // identity — they show the active user's data only when active).
233
+ built = (sessions ?? []).map(session => {
234
+ const isCurrent = session.sessionId === activeSessionId;
235
+ const accountUser = isCurrent && user ? user : {
236
+ id: session.userId ?? '',
237
+ username: ''
238
+ };
239
+ const displayName = getAccountDisplayName(accountUser, locale);
240
+ const handle = getAccountFallbackHandle(accountUser);
241
+ const email = isCurrent && user?.email ? user.email : null;
242
+ const secondaryHandle = handle ? `@${handle}` : null;
243
+ const avatar = isCurrent && user ? user.avatar : undefined;
244
+ const color = isCurrent && user?.color ? user.color : null;
245
+ return {
246
+ sessionId: session.sessionId,
247
+ authuser: session.authuser,
248
+ isCurrent,
249
+ displayName,
250
+ email: email ?? secondaryHandle,
251
+ avatarUrl: resolveAvatarUrl(avatar),
252
+ color,
253
+ user: accountUser
254
+ };
255
+ });
256
+ }
257
+
258
+ // Robust current-account detection: tolerate server/local session-id
259
+ // skew on the shared-apex path by falling back to the live user's id and
260
+ // the single-account heuristic.
261
+ const flagged = markCurrentAccount(built, activeSessionId, user?.id ?? null, isAuthenticated);
262
+
263
+ // The signed-in user must ALWAYS be represented. If detection produced
264
+ // an empty list yet the user is authenticated, synthesize a single
265
+ // current row from the live `useOxy().user`.
266
+ if (flagged.length === 0) {
267
+ return liveUserRow();
268
+ }
269
+ return flagged;
270
+ }, [fromSharedApex, sharedAccounts, sessions, activeSessionId, user, isAuthenticated, locale, oxyServices]);
271
+ return {
272
+ accounts,
273
+ // `isLoading` only reflects the shared probe while it's the relevant
274
+ // source. Once we know we're on the fallback (probe settled with 0
275
+ // accounts) the local list is synchronously available.
276
+ isLoading: isAuthenticated && query.isLoading,
277
+ currentSessionId: activeSessionId ?? null,
278
+ fromSharedApex
279
+ };
280
+ }
281
+ //# sourceMappingURL=useDeviceAccounts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useMemo","useQuery","getAccountDisplayName","getAccountFallbackHandle","useOxy","useI18n","queryKeys","markCurrentAccount","accounts","activeSessionId","liveUserId","isAuthenticated","bySession","map","account","isCurrent","Boolean","sessionId","some","matched","byUser","user","id","length","useDeviceAccounts","oxyServices","sessions","locale","baseURL","getBaseURL","query","queryKey","all","queryFn","refreshAllSessions","enabled","staleTime","Number","POSITIVE_INFINITY","gcTime","refetchOnWindowFocus","refetchOnReconnect","refetchOnMount","retry","sharedAccounts","data","fromSharedApex","resolveAvatarUrl","avatar","getFileDownloadUrl","undefined","liveUserRow","displayName","handle","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":[]}
@@ -3,6 +3,7 @@
3
3
  import { useCallback, useMemo, useEffect } from 'react';
4
4
  import { useFollowStore } from "../stores/followStore.js";
5
5
  import { useOxy } from "../context/OxyContext.js";
6
+ import { logger as loggerUtil } from '@oxyhq/core';
6
7
  import { useShallow } from 'zustand/react/shallow';
7
8
 
8
9
  /**
@@ -20,8 +21,12 @@ import { useShallow } from 'zustand/react/shallow';
20
21
  */
21
22
  export const useFollow = userId => {
22
23
  const {
23
- oxyServices
24
+ oxyServices,
25
+ isAuthenticated,
26
+ isAuthResolved,
27
+ isTokenReady
24
28
  } = useOxy();
29
+ const canUsePrivateApi = isAuthResolved && isTokenReady && isAuthenticated;
25
30
  const userIds = useMemo(() => Array.isArray(userId) ? userId : userId ? [userId] : [], [userId]);
26
31
  const isSingleUser = typeof userId === 'string';
27
32
 
@@ -67,17 +72,19 @@ export const useFollow = userId => {
67
72
  // Store actions are accessed via getState() to avoid subscribing to them.
68
73
  const toggleFollow = useCallback(async () => {
69
74
  if (!isSingleUser || !userId) throw new Error('toggleFollow is only available for single user mode');
75
+ if (!canUsePrivateApi) throw new Error('Authentication is required to follow users');
70
76
  const currentlyFollowing = useFollowStore.getState().followingUsers[userId] ?? false;
71
77
  await useFollowStore.getState().toggleFollowUser(userId, oxyServices, currentlyFollowing);
72
- }, [isSingleUser, userId, oxyServices]);
78
+ }, [isSingleUser, userId, canUsePrivateApi, oxyServices]);
73
79
  const setFollowStatus = useCallback(following => {
74
80
  if (!isSingleUser || !userId) throw new Error('setFollowStatus is only available for single user mode');
75
81
  useFollowStore.getState().setFollowingStatus(userId, following);
76
82
  }, [isSingleUser, userId]);
77
83
  const fetchStatus = useCallback(async () => {
78
84
  if (!isSingleUser || !userId) throw new Error('fetchStatus is only available for single user mode');
85
+ if (!canUsePrivateApi) return;
79
86
  await useFollowStore.getState().fetchFollowStatus(userId, oxyServices);
80
- }, [isSingleUser, userId, oxyServices]);
87
+ }, [isSingleUser, userId, canUsePrivateApi, oxyServices]);
81
88
  const clearError = useCallback(() => {
82
89
  if (!isSingleUser || !userId) throw new Error('clearError is only available for single user mode');
83
90
  useFollowStore.getState().clearFollowError(userId);
@@ -99,25 +106,32 @@ export const useFollow = userId => {
99
106
  useEffect(() => {
100
107
  if (!isSingleUser || !userId) return;
101
108
  if ((followerCount === null || followingCount === null) && !isLoadingCounts) {
102
- fetchUserCounts().catch(err => console.warn('useFollow: fetchUserCounts failed', err));
109
+ fetchUserCounts().catch(error => {
110
+ loggerUtil.warn('useFollow: fetchUserCounts failed', {
111
+ component: 'useFollow'
112
+ }, error);
113
+ });
103
114
  }
104
115
  }, [isSingleUser, userId, followerCount, followingCount, isLoadingCounts, fetchUserCounts]);
105
116
 
106
117
  // Multi-user callbacks
107
118
  const toggleFollowForUser = useCallback(async targetUserId => {
119
+ if (!canUsePrivateApi) throw new Error('Authentication is required to follow users');
108
120
  const currentState = useFollowStore.getState().followingUsers[targetUserId] ?? false;
109
121
  await useFollowStore.getState().toggleFollowUser(targetUserId, oxyServices, currentState);
110
- }, [oxyServices]);
122
+ }, [canUsePrivateApi, oxyServices]);
111
123
  const setFollowStatusForUser = useCallback((targetUserId, following) => {
112
124
  useFollowStore.getState().setFollowingStatus(targetUserId, following);
113
125
  }, []);
114
126
  const fetchStatusForUser = useCallback(async targetUserId => {
127
+ if (!canUsePrivateApi) return;
115
128
  await useFollowStore.getState().fetchFollowStatus(targetUserId, oxyServices);
116
- }, [oxyServices]);
129
+ }, [canUsePrivateApi, oxyServices]);
117
130
  const fetchAllStatuses = useCallback(async () => {
131
+ if (!canUsePrivateApi) return;
118
132
  const store = useFollowStore.getState();
119
133
  await Promise.all(userIds.map(uid => store.fetchFollowStatus(uid, oxyServices)));
120
- }, [userIds, oxyServices]);
134
+ }, [canUsePrivateApi, userIds, oxyServices]);
121
135
  const clearErrorForUser = useCallback(targetUserId => {
122
136
  useFollowStore.getState().clearFollowError(targetUserId);
123
137
  }, []);
@@ -1 +1 @@
1
- {"version":3,"names":["useCallback","useMemo","useEffect","useFollowStore","useOxy","useShallow","useFollow","userId","oxyServices","userIds","Array","isArray","isSingleUser","isFollowing","s","followingUsers","isLoading","loadingUsers","error","errors","followerCount","followerCounts","followingCount","followingCounts","isLoadingCounts","loadingCounts","followData","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","catch","err","console","warn","toggleFollowForUser","targetUserId","currentState","setFollowStatusForUser","fetchStatusForUser","fetchAllStatuses","store","Promise","all","map","clearErrorForUser","updateCountsFromFollowAction","action","counts","currentUserId","getCurrentUserId","undefined","useFollowForButton","useFollowerCounts"],"sourceRoot":"../../../../src","sources":["ui/hooks/useFollow.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["useCallback","useMemo","useEffect","useFollowStore","useOxy","logger","loggerUtil","useShallow","useFollow","userId","oxyServices","isAuthenticated","isAuthResolved","isTokenReady","canUsePrivateApi","userIds","Array","isArray","isSingleUser","isFollowing","s","followingUsers","isLoading","loadingUsers","error","errors","followerCount","followerCounts","followingCount","followingCounts","isLoadingCounts","loadingCounts","followData","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","catch","warn","component","toggleFollowForUser","targetUserId","currentState","setFollowStatusForUser","fetchStatusForUser","fetchAllStatuses","store","Promise","all","map","clearErrorForUser","updateCountsFromFollowAction","action","counts","currentUserId","getCurrentUserId","undefined","useFollowForButton","useFollowerCounts"],"sourceRoot":"../../../../src","sources":["ui/hooks/useFollow.ts"],"mappings":"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","ignoreList":[]}
@@ -143,14 +143,13 @@ export const useSessionManagement = ({
143
143
  onAuthStateChange?.(null);
144
144
  }, [clearSessionStorage, logoutStore, onAuthStateChange, oxyServices, queryClient, storage, logger]);
145
145
  const activateSession = useCallback(async (sessionId, user) => {
146
- await oxyServices.getTokenBySession(sessionId);
147
146
  setTokenReady?.(true);
148
147
  setActiveSessionId(sessionId);
149
148
  loginSuccess(user);
150
149
  await saveActiveSessionId(sessionId);
151
150
  await applyLanguagePreference(user);
152
151
  onAuthStateChange?.(user);
153
- }, [applyLanguagePreference, loginSuccess, onAuthStateChange, oxyServices, saveActiveSessionId, setTokenReady]);
152
+ }, [applyLanguagePreference, loginSuccess, onAuthStateChange, saveActiveSessionId, setTokenReady]);
154
153
  const removalTimerIdsRef = useRef(new Set());
155
154
  const trackRemovedSession = useCallback(sessionId => {
156
155
  removedSessionsRef.current.add(sessionId);
@@ -192,10 +191,10 @@ export const useSessionManagement = ({
192
191
  // `refreshAllSessions` it carries its `authuser` slot index. We
193
192
  // proactively plant that slot's access token via the httpOnly
194
193
  // refresh cookie BEFORE validating, so the bearer-protected
195
- // validate/getCurrentUser calls don't need a token that was never
196
- // in memory (cold reload / different browser tab). The native path
197
- // has no per-session cookies and continues to rely on
198
- // `validateSession` + `getTokenBySession` directly.
194
+ // validate/getCurrentUser calls have the correct in-memory token
195
+ // after a cold reload or account switch in another tab. The native
196
+ // path arrives here only after a bearer has been planted by
197
+ // `claimSessionByToken` or secure shared-session restore.
199
198
  if (isWebBrowser()) {
200
199
  const targetSession = sessionsRef.current.find(s => s.sessionId === sessionId);
201
200
  const targetAuthuser = targetSession?.authuser;
@@ -1 +1 @@
1
- {"version":3,"names":["useCallback","useEffect","useMemo","useRef","useState","mergeSessions","normalizeAndSortSessions","sessionsArraysEqual","fetchSessionsWithFallback","validateSessionBatch","getStorageKeys","handleAuthError","isInvalidSessionError","clearQueryCache","isWebBrowser","writeActiveAuthuser","DEFAULT_SAVE_ERROR_MESSAGE","CLEAR_STORAGE_ERROR","useSessionManagement","oxyServices","storage","storageKeyPrefix","loginSuccess","logoutStore","applyLanguagePreference","onAuthStateChange","onError","setAuthError","logger","setTokenReady","queryClient","sessions","setSessions","activeSessionId","setActiveSessionId","sessionsRef","current","activeSessionIdRef","refreshInFlightRef","removedSessionsRef","Set","lastRefreshRef","storageKeys","saveSessionIds","sessionIds","uniqueIds","Array","from","setItem","JSON","stringify","error","__DEV__","console","warn","updateSessions","incoming","options","prevSessions","processed","merge","map","session","sessionId","saveActiveSessionId","defaultMessage","code","removeActiveSessionId","removeItem","clearSessionStorage","clearSessionState","clearTokens","clear","activateSession","user","getTokenBySession","removalTimerIdsRef","trackRemovedSession","add","timerId","setTimeout","delete","forEach","clearTimeout","findReplacementSession","length","validationResults","maxConcurrency","validSession","find","result","valid","validation","validateSession","useHeaderValidation","switchSession","targetSession","s","targetAuthuser","authuser","refreshed","refreshTokenViaCookie","Error","httpService","setTokens","accessToken","deviceSessions","fallbackUserId","id","invalidSession","filter","otherSessionIds","has","replacementUser","refreshSessions","activeUserId","now","Date","refreshPromise","otherSessions","isRefreshInFlight","Boolean"],"sourceRoot":"../../../../src","sources":["ui/hooks/useSessionManagement.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["useCallback","useEffect","useMemo","useRef","useState","mergeSessions","normalizeAndSortSessions","sessionsArraysEqual","fetchSessionsWithFallback","validateSessionBatch","getStorageKeys","handleAuthError","isInvalidSessionError","clearQueryCache","isWebBrowser","writeActiveAuthuser","DEFAULT_SAVE_ERROR_MESSAGE","CLEAR_STORAGE_ERROR","useSessionManagement","oxyServices","storage","storageKeyPrefix","loginSuccess","logoutStore","applyLanguagePreference","onAuthStateChange","onError","setAuthError","logger","setTokenReady","queryClient","sessions","setSessions","activeSessionId","setActiveSessionId","sessionsRef","current","activeSessionIdRef","refreshInFlightRef","removedSessionsRef","Set","lastRefreshRef","storageKeys","saveSessionIds","sessionIds","uniqueIds","Array","from","setItem","JSON","stringify","error","__DEV__","console","warn","updateSessions","incoming","options","prevSessions","processed","merge","map","session","sessionId","saveActiveSessionId","defaultMessage","code","removeActiveSessionId","removeItem","clearSessionStorage","clearSessionState","clearTokens","clear","activateSession","user","removalTimerIdsRef","trackRemovedSession","add","timerId","setTimeout","delete","forEach","clearTimeout","findReplacementSession","length","validationResults","maxConcurrency","validSession","find","result","valid","validation","validateSession","useHeaderValidation","switchSession","targetSession","s","targetAuthuser","authuser","refreshed","refreshTokenViaCookie","Error","httpService","setTokens","accessToken","deviceSessions","fallbackUserId","id","invalidSession","filter","otherSessionIds","has","replacementUser","refreshSessions","activeUserId","now","Date","refreshPromise","otherSessions","isRefreshInFlight","Boolean"],"sourceRoot":"../../../../src","sources":["ui/hooks/useSessionManagement.ts"],"mappings":"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","ignoreList":[]}