@oxyhq/services 28.0.0 → 29.0.0

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 (324) hide show
  1. package/NOTICE +10 -9
  2. package/README.md +65 -2
  3. package/android/src/main/java/so/oxy/devicesession/OxyDeviceSessionModule.kt +178 -0
  4. package/android/src/main/java/so/oxy/devicesession/OxyDeviceSessionProvider.kt +99 -0
  5. package/android/src/main/java/so/oxy/devicesession/OxyDeviceSessionStore.kt +115 -0
  6. package/expo-module.config.json +1 -0
  7. package/lib/commonjs/index.js +60 -16
  8. package/lib/commonjs/index.js.map +1 -1
  9. package/lib/commonjs/ui/boot/runProviderColdBoot.js +7 -0
  10. package/lib/commonjs/ui/boot/runProviderColdBoot.js.map +1 -1
  11. package/lib/commonjs/ui/client.js +12 -7
  12. package/lib/commonjs/ui/client.js.map +1 -1
  13. package/lib/commonjs/ui/components/OxyAccountDialogScreen.js +10 -27
  14. package/lib/commonjs/ui/components/OxyAccountDialogScreen.js.map +1 -1
  15. package/lib/commonjs/ui/components/OxyAuthChooser.js +132 -44
  16. package/lib/commonjs/ui/components/OxyAuthChooser.js.map +1 -1
  17. package/lib/commonjs/ui/components/OxyProvider.js +4 -2
  18. package/lib/commonjs/ui/components/OxyProvider.js.map +1 -1
  19. package/lib/commonjs/ui/components/SurfaceScreen.js +31 -3
  20. package/lib/commonjs/ui/components/SurfaceScreen.js.map +1 -1
  21. package/lib/commonjs/ui/components/authChooser/AccountsMenuView.js +209 -84
  22. package/lib/commonjs/ui/components/authChooser/AccountsMenuView.js.map +1 -1
  23. package/lib/commonjs/ui/components/authChooser/SignInEntryView.js +25 -7
  24. package/lib/commonjs/ui/components/authChooser/SignInEntryView.js.map +1 -1
  25. package/lib/commonjs/ui/components/authChooser/primitives.js +35 -22
  26. package/lib/commonjs/ui/components/authChooser/primitives.js.map +1 -1
  27. package/lib/commonjs/ui/components/authChooser/types.js +11 -0
  28. package/lib/commonjs/ui/components/authChooser/types.js.map +1 -1
  29. package/lib/commonjs/ui/context/OxyContext.js +257 -306
  30. package/lib/commonjs/ui/context/OxyContext.js.map +1 -1
  31. package/lib/commonjs/ui/context/hooks/useAuthOperations.js +27 -37
  32. package/lib/commonjs/ui/context/hooks/useAuthOperations.js.map +1 -1
  33. package/lib/commonjs/ui/context/oxyContextHelpers.js +0 -29
  34. package/lib/commonjs/ui/context/oxyContextHelpers.js.map +1 -1
  35. package/lib/commonjs/ui/context/useOxyAccountGraph.js +6 -17
  36. package/lib/commonjs/ui/context/useOxyAccountGraph.js.map +1 -1
  37. package/lib/commonjs/ui/hooks/accountDialogSnapshot.js +42 -0
  38. package/lib/commonjs/ui/hooks/accountDialogSnapshot.js.map +1 -0
  39. package/lib/commonjs/ui/hooks/mutations/useAccountMutations.js +0 -19
  40. package/lib/commonjs/ui/hooks/mutations/useAccountMutations.js.map +1 -1
  41. package/lib/commonjs/ui/hooks/useDeviceSwitcher.js +57 -0
  42. package/lib/commonjs/ui/hooks/useDeviceSwitcher.js.map +1 -0
  43. package/lib/commonjs/ui/hooks/useI18n.js +22 -3
  44. package/lib/commonjs/ui/hooks/useI18n.js.map +1 -1
  45. package/lib/commonjs/ui/hooks/useSessionManagement.js +46 -153
  46. package/lib/commonjs/ui/hooks/useSessionManagement.js.map +1 -1
  47. package/lib/commonjs/ui/index.js +12 -7
  48. package/lib/commonjs/ui/index.js.map +1 -1
  49. package/lib/commonjs/ui/navigation/routes.js +85 -73
  50. package/lib/commonjs/ui/navigation/routes.js.map +1 -1
  51. package/lib/commonjs/ui/navigation/surfaces.js +8 -7
  52. package/lib/commonjs/ui/navigation/surfaces.js.map +1 -1
  53. package/lib/commonjs/ui/runtime/createOxyRuntime.js +433 -0
  54. package/lib/commonjs/ui/runtime/createOxyRuntime.js.map +1 -0
  55. package/lib/commonjs/ui/runtime/index.js +63 -0
  56. package/lib/commonjs/ui/runtime/index.js.map +1 -0
  57. package/lib/commonjs/ui/runtime/runtimeContext.js +83 -0
  58. package/lib/commonjs/ui/runtime/runtimeContext.js.map +1 -0
  59. package/lib/commonjs/ui/runtime/types.js +6 -0
  60. package/lib/commonjs/ui/runtime/types.js.map +1 -0
  61. package/lib/commonjs/ui/runtime/useRuntimeSnapshot.js +57 -0
  62. package/lib/commonjs/ui/runtime/useRuntimeSnapshot.js.map +1 -0
  63. package/lib/commonjs/ui/server.js +1 -2
  64. package/lib/commonjs/ui/server.js.map +1 -1
  65. package/lib/commonjs/ui/session/authStore.js +45 -9
  66. package/lib/commonjs/ui/session/authStore.js.map +1 -1
  67. package/lib/commonjs/ui/session/sharedDeviceCredentialStore.js +306 -0
  68. package/lib/commonjs/ui/session/sharedDeviceCredentialStore.js.map +1 -0
  69. package/lib/commonjs/ui/stores/authStore.js +154 -55
  70. package/lib/commonjs/ui/stores/authStore.js.map +1 -1
  71. package/lib/commonjs/ui/utils/avatarUtils.js +2 -36
  72. package/lib/commonjs/ui/utils/avatarUtils.js.map +1 -1
  73. package/lib/module/index.js +16 -8
  74. package/lib/module/index.js.map +1 -1
  75. package/lib/module/ui/boot/runProviderColdBoot.js +7 -0
  76. package/lib/module/ui/boot/runProviderColdBoot.js.map +1 -1
  77. package/lib/module/ui/client.js +1 -2
  78. package/lib/module/ui/client.js.map +1 -1
  79. package/lib/module/ui/components/OxyAccountDialogScreen.js +10 -27
  80. package/lib/module/ui/components/OxyAccountDialogScreen.js.map +1 -1
  81. package/lib/module/ui/components/OxyAuthChooser.js +134 -44
  82. package/lib/module/ui/components/OxyAuthChooser.js.map +1 -1
  83. package/lib/module/ui/components/OxyProvider.js +5 -3
  84. package/lib/module/ui/components/OxyProvider.js.map +1 -1
  85. package/lib/module/ui/components/SurfaceScreen.js +33 -5
  86. package/lib/module/ui/components/SurfaceScreen.js.map +1 -1
  87. package/lib/module/ui/components/authChooser/AccountsMenuView.js +210 -85
  88. package/lib/module/ui/components/authChooser/AccountsMenuView.js.map +1 -1
  89. package/lib/module/ui/components/authChooser/SignInEntryView.js +25 -7
  90. package/lib/module/ui/components/authChooser/SignInEntryView.js.map +1 -1
  91. package/lib/module/ui/components/authChooser/primitives.js +35 -22
  92. package/lib/module/ui/components/authChooser/primitives.js.map +1 -1
  93. package/lib/module/ui/components/authChooser/types.js +11 -0
  94. package/lib/module/ui/components/authChooser/types.js.map +1 -1
  95. package/lib/module/ui/context/OxyContext.js +251 -303
  96. package/lib/module/ui/context/OxyContext.js.map +1 -1
  97. package/lib/module/ui/context/hooks/useAuthOperations.js +27 -37
  98. package/lib/module/ui/context/hooks/useAuthOperations.js.map +1 -1
  99. package/lib/module/ui/context/oxyContextHelpers.js +0 -28
  100. package/lib/module/ui/context/oxyContextHelpers.js.map +1 -1
  101. package/lib/module/ui/context/useOxyAccountGraph.js +6 -17
  102. package/lib/module/ui/context/useOxyAccountGraph.js.map +1 -1
  103. package/lib/module/ui/hooks/accountDialogSnapshot.js +38 -0
  104. package/lib/module/ui/hooks/accountDialogSnapshot.js.map +1 -0
  105. package/lib/module/ui/hooks/mutations/useAccountMutations.js +0 -19
  106. package/lib/module/ui/hooks/mutations/useAccountMutations.js.map +1 -1
  107. package/lib/module/ui/hooks/useDeviceSwitcher.js +53 -0
  108. package/lib/module/ui/hooks/useDeviceSwitcher.js.map +1 -0
  109. package/lib/module/ui/hooks/useI18n.js +24 -4
  110. package/lib/module/ui/hooks/useI18n.js.map +1 -1
  111. package/lib/module/ui/hooks/useSessionManagement.js +47 -155
  112. package/lib/module/ui/hooks/useSessionManagement.js.map +1 -1
  113. package/lib/module/ui/index.js +1 -2
  114. package/lib/module/ui/index.js.map +1 -1
  115. package/lib/module/ui/navigation/routes.js +84 -72
  116. package/lib/module/ui/navigation/routes.js.map +1 -1
  117. package/lib/module/ui/navigation/surfaces.js +6 -6
  118. package/lib/module/ui/navigation/surfaces.js.map +1 -1
  119. package/lib/module/ui/runtime/createOxyRuntime.js +430 -0
  120. package/lib/module/ui/runtime/createOxyRuntime.js.map +1 -0
  121. package/lib/module/ui/runtime/index.js +15 -0
  122. package/lib/module/ui/runtime/index.js.map +1 -0
  123. package/lib/module/ui/runtime/runtimeContext.js +75 -0
  124. package/lib/module/ui/runtime/runtimeContext.js.map +1 -0
  125. package/lib/module/ui/runtime/types.js +4 -0
  126. package/lib/module/ui/runtime/types.js.map +1 -0
  127. package/lib/module/ui/runtime/useRuntimeSnapshot.js +52 -0
  128. package/lib/module/ui/runtime/useRuntimeSnapshot.js.map +1 -0
  129. package/lib/module/ui/server.js +0 -1
  130. package/lib/module/ui/server.js.map +1 -1
  131. package/lib/module/ui/session/authStore.js +46 -11
  132. package/lib/module/ui/session/authStore.js.map +1 -1
  133. package/lib/module/ui/session/sharedDeviceCredentialStore.js +302 -0
  134. package/lib/module/ui/session/sharedDeviceCredentialStore.js.map +1 -0
  135. package/lib/module/ui/stores/authStore.js +154 -55
  136. package/lib/module/ui/stores/authStore.js.map +1 -1
  137. package/lib/module/ui/utils/avatarUtils.js +2 -35
  138. package/lib/module/ui/utils/avatarUtils.js.map +1 -1
  139. package/lib/typescript/commonjs/index.d.ts +5 -3
  140. package/lib/typescript/commonjs/index.d.ts.map +1 -1
  141. package/lib/typescript/commonjs/ui/boot/runProviderColdBoot.d.ts.map +1 -1
  142. package/lib/typescript/commonjs/ui/client.d.ts +1 -2
  143. package/lib/typescript/commonjs/ui/client.d.ts.map +1 -1
  144. package/lib/typescript/commonjs/ui/components/OxyAccountDialogScreen.d.ts.map +1 -1
  145. package/lib/typescript/commonjs/ui/components/OxyAuthChooser.d.ts.map +1 -1
  146. package/lib/typescript/commonjs/ui/components/OxyProvider.d.ts.map +1 -1
  147. package/lib/typescript/commonjs/ui/components/SurfaceScreen.d.ts.map +1 -1
  148. package/lib/typescript/commonjs/ui/components/authChooser/AccountsMenuView.d.ts +11 -4
  149. package/lib/typescript/commonjs/ui/components/authChooser/AccountsMenuView.d.ts.map +1 -1
  150. package/lib/typescript/commonjs/ui/components/authChooser/SignInEntryView.d.ts +3 -1
  151. package/lib/typescript/commonjs/ui/components/authChooser/SignInEntryView.d.ts.map +1 -1
  152. package/lib/typescript/commonjs/ui/components/authChooser/primitives.d.ts +18 -6
  153. package/lib/typescript/commonjs/ui/components/authChooser/primitives.d.ts.map +1 -1
  154. package/lib/typescript/commonjs/ui/components/authChooser/types.d.ts +33 -1
  155. package/lib/typescript/commonjs/ui/components/authChooser/types.d.ts.map +1 -1
  156. package/lib/typescript/commonjs/ui/context/OxyContext.d.ts +35 -4
  157. package/lib/typescript/commonjs/ui/context/OxyContext.d.ts.map +1 -1
  158. package/lib/typescript/commonjs/ui/context/hooks/useAuthOperations.d.ts +8 -12
  159. package/lib/typescript/commonjs/ui/context/hooks/useAuthOperations.d.ts.map +1 -1
  160. package/lib/typescript/commonjs/ui/context/oxyContextHelpers.d.ts +0 -2
  161. package/lib/typescript/commonjs/ui/context/oxyContextHelpers.d.ts.map +1 -1
  162. package/lib/typescript/commonjs/ui/context/oxyContextTypes.d.ts +9 -1
  163. package/lib/typescript/commonjs/ui/context/oxyContextTypes.d.ts.map +1 -1
  164. package/lib/typescript/commonjs/ui/context/useOxyAccountGraph.d.ts +1 -3
  165. package/lib/typescript/commonjs/ui/context/useOxyAccountGraph.d.ts.map +1 -1
  166. package/lib/typescript/commonjs/ui/hooks/accountDialogSnapshot.d.ts +15 -0
  167. package/lib/typescript/commonjs/ui/hooks/accountDialogSnapshot.d.ts.map +1 -0
  168. package/lib/typescript/commonjs/ui/hooks/mutations/useAccountMutations.d.ts.map +1 -1
  169. package/lib/typescript/commonjs/ui/hooks/useDeviceSwitcher.d.ts +49 -0
  170. package/lib/typescript/commonjs/ui/hooks/useDeviceSwitcher.d.ts.map +1 -0
  171. package/lib/typescript/commonjs/ui/hooks/useI18n.d.ts +13 -0
  172. package/lib/typescript/commonjs/ui/hooks/useI18n.d.ts.map +1 -1
  173. package/lib/typescript/commonjs/ui/hooks/useSessionManagement.d.ts +23 -18
  174. package/lib/typescript/commonjs/ui/hooks/useSessionManagement.d.ts.map +1 -1
  175. package/lib/typescript/commonjs/ui/index.d.ts +1 -2
  176. package/lib/typescript/commonjs/ui/index.d.ts.map +1 -1
  177. package/lib/typescript/commonjs/ui/navigation/routes.d.ts +15 -1
  178. package/lib/typescript/commonjs/ui/navigation/routes.d.ts.map +1 -1
  179. package/lib/typescript/commonjs/ui/navigation/surfaces.d.ts.map +1 -1
  180. package/lib/typescript/commonjs/ui/runtime/createOxyRuntime.d.ts +144 -0
  181. package/lib/typescript/commonjs/ui/runtime/createOxyRuntime.d.ts.map +1 -0
  182. package/lib/typescript/commonjs/ui/runtime/index.d.ts +16 -0
  183. package/lib/typescript/commonjs/ui/runtime/index.d.ts.map +1 -0
  184. package/lib/typescript/commonjs/ui/runtime/runtimeContext.d.ts +43 -0
  185. package/lib/typescript/commonjs/ui/runtime/runtimeContext.d.ts.map +1 -0
  186. package/lib/typescript/commonjs/ui/runtime/types.d.ts +89 -0
  187. package/lib/typescript/commonjs/ui/runtime/types.d.ts.map +1 -0
  188. package/lib/typescript/commonjs/ui/runtime/useRuntimeSnapshot.d.ts +23 -0
  189. package/lib/typescript/commonjs/ui/runtime/useRuntimeSnapshot.d.ts.map +1 -0
  190. package/lib/typescript/commonjs/ui/server.d.ts +0 -1
  191. package/lib/typescript/commonjs/ui/server.d.ts.map +1 -1
  192. package/lib/typescript/commonjs/ui/session/authStore.d.ts +60 -9
  193. package/lib/typescript/commonjs/ui/session/authStore.d.ts.map +1 -1
  194. package/lib/typescript/commonjs/ui/session/sharedDeviceCredentialStore.d.ts +32 -0
  195. package/lib/typescript/commonjs/ui/session/sharedDeviceCredentialStore.d.ts.map +1 -0
  196. package/lib/typescript/commonjs/ui/stores/authStore.d.ts +49 -5
  197. package/lib/typescript/commonjs/ui/stores/authStore.d.ts.map +1 -1
  198. package/lib/typescript/commonjs/ui/types/navigation.d.ts +26 -0
  199. package/lib/typescript/commonjs/ui/types/navigation.d.ts.map +1 -1
  200. package/lib/typescript/commonjs/ui/utils/avatarUtils.d.ts +2 -10
  201. package/lib/typescript/commonjs/ui/utils/avatarUtils.d.ts.map +1 -1
  202. package/lib/typescript/module/index.d.ts +5 -3
  203. package/lib/typescript/module/index.d.ts.map +1 -1
  204. package/lib/typescript/module/ui/boot/runProviderColdBoot.d.ts.map +1 -1
  205. package/lib/typescript/module/ui/client.d.ts +1 -2
  206. package/lib/typescript/module/ui/client.d.ts.map +1 -1
  207. package/lib/typescript/module/ui/components/OxyAccountDialogScreen.d.ts.map +1 -1
  208. package/lib/typescript/module/ui/components/OxyAuthChooser.d.ts.map +1 -1
  209. package/lib/typescript/module/ui/components/OxyProvider.d.ts.map +1 -1
  210. package/lib/typescript/module/ui/components/SurfaceScreen.d.ts.map +1 -1
  211. package/lib/typescript/module/ui/components/authChooser/AccountsMenuView.d.ts +11 -4
  212. package/lib/typescript/module/ui/components/authChooser/AccountsMenuView.d.ts.map +1 -1
  213. package/lib/typescript/module/ui/components/authChooser/SignInEntryView.d.ts +3 -1
  214. package/lib/typescript/module/ui/components/authChooser/SignInEntryView.d.ts.map +1 -1
  215. package/lib/typescript/module/ui/components/authChooser/primitives.d.ts +18 -6
  216. package/lib/typescript/module/ui/components/authChooser/primitives.d.ts.map +1 -1
  217. package/lib/typescript/module/ui/components/authChooser/types.d.ts +33 -1
  218. package/lib/typescript/module/ui/components/authChooser/types.d.ts.map +1 -1
  219. package/lib/typescript/module/ui/context/OxyContext.d.ts +35 -4
  220. package/lib/typescript/module/ui/context/OxyContext.d.ts.map +1 -1
  221. package/lib/typescript/module/ui/context/hooks/useAuthOperations.d.ts +8 -12
  222. package/lib/typescript/module/ui/context/hooks/useAuthOperations.d.ts.map +1 -1
  223. package/lib/typescript/module/ui/context/oxyContextHelpers.d.ts +0 -2
  224. package/lib/typescript/module/ui/context/oxyContextHelpers.d.ts.map +1 -1
  225. package/lib/typescript/module/ui/context/oxyContextTypes.d.ts +9 -1
  226. package/lib/typescript/module/ui/context/oxyContextTypes.d.ts.map +1 -1
  227. package/lib/typescript/module/ui/context/useOxyAccountGraph.d.ts +1 -3
  228. package/lib/typescript/module/ui/context/useOxyAccountGraph.d.ts.map +1 -1
  229. package/lib/typescript/module/ui/hooks/accountDialogSnapshot.d.ts +15 -0
  230. package/lib/typescript/module/ui/hooks/accountDialogSnapshot.d.ts.map +1 -0
  231. package/lib/typescript/module/ui/hooks/mutations/useAccountMutations.d.ts.map +1 -1
  232. package/lib/typescript/module/ui/hooks/useDeviceSwitcher.d.ts +49 -0
  233. package/lib/typescript/module/ui/hooks/useDeviceSwitcher.d.ts.map +1 -0
  234. package/lib/typescript/module/ui/hooks/useI18n.d.ts +13 -0
  235. package/lib/typescript/module/ui/hooks/useI18n.d.ts.map +1 -1
  236. package/lib/typescript/module/ui/hooks/useSessionManagement.d.ts +23 -18
  237. package/lib/typescript/module/ui/hooks/useSessionManagement.d.ts.map +1 -1
  238. package/lib/typescript/module/ui/index.d.ts +1 -2
  239. package/lib/typescript/module/ui/index.d.ts.map +1 -1
  240. package/lib/typescript/module/ui/navigation/routes.d.ts +15 -1
  241. package/lib/typescript/module/ui/navigation/routes.d.ts.map +1 -1
  242. package/lib/typescript/module/ui/navigation/surfaces.d.ts.map +1 -1
  243. package/lib/typescript/module/ui/runtime/createOxyRuntime.d.ts +144 -0
  244. package/lib/typescript/module/ui/runtime/createOxyRuntime.d.ts.map +1 -0
  245. package/lib/typescript/module/ui/runtime/index.d.ts +16 -0
  246. package/lib/typescript/module/ui/runtime/index.d.ts.map +1 -0
  247. package/lib/typescript/module/ui/runtime/runtimeContext.d.ts +43 -0
  248. package/lib/typescript/module/ui/runtime/runtimeContext.d.ts.map +1 -0
  249. package/lib/typescript/module/ui/runtime/types.d.ts +89 -0
  250. package/lib/typescript/module/ui/runtime/types.d.ts.map +1 -0
  251. package/lib/typescript/module/ui/runtime/useRuntimeSnapshot.d.ts +23 -0
  252. package/lib/typescript/module/ui/runtime/useRuntimeSnapshot.d.ts.map +1 -0
  253. package/lib/typescript/module/ui/server.d.ts +0 -1
  254. package/lib/typescript/module/ui/server.d.ts.map +1 -1
  255. package/lib/typescript/module/ui/session/authStore.d.ts +60 -9
  256. package/lib/typescript/module/ui/session/authStore.d.ts.map +1 -1
  257. package/lib/typescript/module/ui/session/sharedDeviceCredentialStore.d.ts +32 -0
  258. package/lib/typescript/module/ui/session/sharedDeviceCredentialStore.d.ts.map +1 -0
  259. package/lib/typescript/module/ui/stores/authStore.d.ts +49 -5
  260. package/lib/typescript/module/ui/stores/authStore.d.ts.map +1 -1
  261. package/lib/typescript/module/ui/types/navigation.d.ts +26 -0
  262. package/lib/typescript/module/ui/types/navigation.d.ts.map +1 -1
  263. package/lib/typescript/module/ui/utils/avatarUtils.d.ts +2 -10
  264. package/lib/typescript/module/ui/utils/avatarUtils.d.ts.map +1 -1
  265. package/package.json +6 -7
  266. package/plugins/withSharedDeviceSessionProvider.js +102 -0
  267. package/plugins/withSharedDeviceSessionReader.js +57 -0
  268. package/src/__tests__/esmSourcePurity.test.ts +61 -0
  269. package/src/index.ts +31 -9
  270. package/src/ui/boot/runProviderColdBoot.ts +7 -0
  271. package/src/ui/client.ts +1 -2
  272. package/src/ui/components/OxyAccountDialogScreen.tsx +10 -29
  273. package/src/ui/components/OxyAuthChooser.tsx +149 -50
  274. package/src/ui/components/OxyProvider.tsx +7 -5
  275. package/src/ui/components/SurfaceScreen.tsx +28 -4
  276. package/src/ui/components/authChooser/AccountsMenuView.tsx +246 -96
  277. package/src/ui/components/authChooser/SignInEntryView.tsx +31 -8
  278. package/src/ui/components/authChooser/primitives.tsx +37 -23
  279. package/src/ui/components/authChooser/types.ts +34 -1
  280. package/src/ui/context/OxyContext.tsx +269 -324
  281. package/src/ui/context/hooks/useAuthOperations.ts +32 -35
  282. package/src/ui/context/oxyContextHelpers.ts +0 -30
  283. package/src/ui/context/oxyContextTypes.ts +9 -1
  284. package/src/ui/context/useOxyAccountGraph.ts +5 -19
  285. package/src/ui/hooks/accountDialogSnapshot.ts +37 -0
  286. package/src/ui/hooks/mutations/useAccountMutations.ts +0 -19
  287. package/src/ui/hooks/queries/__tests__/userCache.test.ts +12 -1
  288. package/src/ui/hooks/useDeviceSwitcher.ts +110 -0
  289. package/src/ui/hooks/useI18n.ts +23 -3
  290. package/src/ui/hooks/useSessionManagement.ts +62 -211
  291. package/src/ui/index.ts +1 -2
  292. package/src/ui/navigation/routes.ts +85 -75
  293. package/src/ui/navigation/surfaces.ts +6 -9
  294. package/src/ui/runtime/createOxyRuntime.ts +623 -0
  295. package/src/ui/runtime/index.ts +34 -0
  296. package/src/ui/runtime/runtimeContext.tsx +111 -0
  297. package/src/ui/runtime/types.ts +110 -0
  298. package/src/ui/runtime/useRuntimeSnapshot.ts +52 -0
  299. package/src/ui/server.ts +0 -1
  300. package/src/ui/session/__tests__/authStore.test.ts +90 -0
  301. package/src/ui/session/__tests__/sharedDeviceCredentialStore.test.ts +289 -0
  302. package/src/ui/session/authStore.ts +78 -9
  303. package/src/ui/session/sharedDeviceCredentialStore.ts +318 -0
  304. package/src/ui/stores/authStore.ts +171 -43
  305. package/src/ui/types/navigation.ts +26 -0
  306. package/src/ui/utils/avatarUtils.ts +2 -37
  307. package/lib/commonjs/ui/hooks/useSwitchableAccounts.js +0 -64
  308. package/lib/commonjs/ui/hooks/useSwitchableAccounts.js.map +0 -1
  309. package/lib/commonjs/ui/stores/accountStore.js +0 -221
  310. package/lib/commonjs/ui/stores/accountStore.js.map +0 -1
  311. package/lib/module/ui/hooks/useSwitchableAccounts.js +0 -60
  312. package/lib/module/ui/hooks/useSwitchableAccounts.js.map +0 -1
  313. package/lib/module/ui/stores/accountStore.js +0 -213
  314. package/lib/module/ui/stores/accountStore.js.map +0 -1
  315. package/lib/typescript/commonjs/ui/hooks/useSwitchableAccounts.d.ts +0 -23
  316. package/lib/typescript/commonjs/ui/hooks/useSwitchableAccounts.d.ts.map +0 -1
  317. package/lib/typescript/commonjs/ui/stores/accountStore.d.ts +0 -27
  318. package/lib/typescript/commonjs/ui/stores/accountStore.d.ts.map +0 -1
  319. package/lib/typescript/module/ui/hooks/useSwitchableAccounts.d.ts +0 -23
  320. package/lib/typescript/module/ui/hooks/useSwitchableAccounts.d.ts.map +0 -1
  321. package/lib/typescript/module/ui/stores/accountStore.d.ts +0 -27
  322. package/lib/typescript/module/ui/stores/accountStore.d.ts.map +0 -1
  323. package/src/ui/hooks/useSwitchableAccounts.ts +0 -75
  324. package/src/ui/stores/accountStore.ts +0 -264
@@ -1,213 +0,0 @@
1
- "use strict";
2
-
3
- import { create } from 'zustand';
4
- import { buildAccountsArray, createQuickAccount } from '@oxyhq/core';
5
- const initialState = {
6
- accounts: {},
7
- accountOrder: [],
8
- accountsArray: [],
9
- loading: false,
10
- loadingSessionIds: new Set(),
11
- error: null
12
- };
13
- export const useAccountStore = create((set, get) => ({
14
- ...initialState,
15
- setAccounts: accounts => set(state => {
16
- const accountMap = {};
17
- const order = [];
18
- const seenSessionIds = new Set();
19
- for (const account of accounts) {
20
- if (seenSessionIds.has(account.sessionId)) continue;
21
- seenSessionIds.add(account.sessionId);
22
- accountMap[account.sessionId] = account;
23
- order.push(account.sessionId);
24
- }
25
- const accountsArray = buildAccountsArray(accountMap, order);
26
- const sameOrder = order.length === state.accountOrder.length && order.every((id, i) => id === state.accountOrder[i]);
27
- const sameAccounts = sameOrder && order.every(id => {
28
- const existing = state.accounts[id];
29
- const newAccount = accountMap[id];
30
- return existing && existing.sessionId === newAccount.sessionId && existing.userId === newAccount.userId && existing.avatar === newAccount.avatar && existing.avatarUrl === newAccount.avatarUrl;
31
- });
32
- if (sameAccounts) return {};
33
- return {
34
- accounts: accountMap,
35
- accountOrder: order,
36
- accountsArray
37
- };
38
- }),
39
- addAccount: account => set(state => {
40
- // Check if account with same sessionId exists
41
- if (state.accounts[account.sessionId]) {
42
- // Update existing
43
- const existing = state.accounts[account.sessionId];
44
- if (existing.avatar === account.avatar && existing.avatarUrl === account.avatarUrl) {
45
- return {}; // No change
46
- }
47
- const newAccounts = {
48
- ...state.accounts,
49
- [account.sessionId]: account
50
- };
51
- return {
52
- accounts: newAccounts,
53
- accountsArray: buildAccountsArray(newAccounts, state.accountOrder)
54
- };
55
- }
56
- const newAccounts = {
57
- ...state.accounts,
58
- [account.sessionId]: account
59
- };
60
- const newOrder = [account.sessionId, ...state.accountOrder];
61
- return {
62
- accounts: newAccounts,
63
- accountOrder: newOrder,
64
- accountsArray: buildAccountsArray(newAccounts, newOrder)
65
- };
66
- }),
67
- updateAccount: (sessionId, updates) => set(state => {
68
- const existing = state.accounts[sessionId];
69
- if (!existing) return {};
70
- const updated = {
71
- ...existing,
72
- ...updates
73
- };
74
- if (existing.avatar === updated.avatar && existing.avatarUrl === updated.avatarUrl) {
75
- return {}; // No change
76
- }
77
- const newAccounts = {
78
- ...state.accounts,
79
- [sessionId]: updated
80
- };
81
- return {
82
- accounts: newAccounts,
83
- accountsArray: buildAccountsArray(newAccounts, state.accountOrder)
84
- };
85
- }),
86
- removeAccount: sessionId => set(state => {
87
- if (!state.accounts[sessionId]) return {};
88
- const {
89
- [sessionId]: _removed,
90
- ...rest
91
- } = state.accounts;
92
- const newOrder = state.accountOrder.filter(id => id !== sessionId);
93
- return {
94
- accounts: rest,
95
- accountOrder: newOrder,
96
- accountsArray: buildAccountsArray(rest, newOrder)
97
- };
98
- }),
99
- moveAccountToTop: sessionId => set(state => {
100
- if (!state.accounts[sessionId]) return {};
101
- const filtered = state.accountOrder.filter(id => id !== sessionId);
102
- const newOrder = [sessionId, ...filtered];
103
- return {
104
- accountOrder: newOrder,
105
- accountsArray: buildAccountsArray(state.accounts, newOrder)
106
- };
107
- }),
108
- setLoading: loading => set({
109
- loading
110
- }),
111
- setLoadingSession: (sessionId, loading) => set(state => {
112
- const newSet = new Set(state.loadingSessionIds);
113
- if (loading) {
114
- newSet.add(sessionId);
115
- } else {
116
- newSet.delete(sessionId);
117
- }
118
- return {
119
- loadingSessionIds: newSet
120
- };
121
- }),
122
- setError: error => set({
123
- error
124
- }),
125
- loadAccounts: async (sessionIds, oxyServices, existingAccounts = [], preserveOrder = true) => {
126
- const state = get();
127
- const uniqueSessionIds = Array.from(new Set(sessionIds));
128
- if (uniqueSessionIds.length === 0) {
129
- get().setAccounts([]);
130
- return;
131
- }
132
-
133
- // Try to get data from TanStack Query cache first
134
- try {
135
- // This will be called from a component, so we need to access queryClient differently
136
- // For now, we'll keep the API call but optimize it
137
- const existingMap = new Map(existingAccounts.map(a => [a.sessionId, a]));
138
- for (const account of Object.values(state.accounts)) {
139
- existingMap.set(account.sessionId, account);
140
- }
141
- const missingSessionIds = uniqueSessionIds.filter(id => !existingMap.has(id));
142
- if (missingSessionIds.length === 0) {
143
- const ordered = uniqueSessionIds.map(id => existingMap.get(id)).filter(acc => acc !== undefined);
144
- get().setAccounts(ordered);
145
- return;
146
- }
147
- if (state.loading) {
148
- return;
149
- }
150
- set({
151
- loading: true,
152
- error: null
153
- });
154
- try {
155
- const batchResults = await oxyServices.getUsersBySessions(missingSessionIds);
156
- const accountMap = new Map();
157
- for (const {
158
- sessionId,
159
- user: userData
160
- } of batchResults) {
161
- if (userData && !accountMap.has(sessionId)) {
162
- const existing = existingMap.get(sessionId);
163
- accountMap.set(sessionId, createQuickAccount(sessionId, userData, existing, (fileId, variant) => oxyServices.getFileDownloadUrl(fileId, variant)));
164
- }
165
- }
166
- for (const [sessionId, account] of accountMap) {
167
- existingMap.set(sessionId, account);
168
- }
169
- const orderToUse = preserveOrder ? uniqueSessionIds : [...uniqueSessionIds, ...state.accountOrder];
170
- const seen = new Set();
171
- const ordered = [];
172
- for (const sessionId of orderToUse) {
173
- if (seen.has(sessionId)) continue;
174
- seen.add(sessionId);
175
- const account = existingMap.get(sessionId);
176
- if (account) ordered.push(account);
177
- }
178
- get().setAccounts(ordered);
179
- } catch (error) {
180
- const errorMessage = error instanceof Error ? error.message : 'Failed to load accounts';
181
- if (__DEV__) {
182
- console.error('AccountStore: Failed to load accounts:', error);
183
- }
184
- set({
185
- error: errorMessage
186
- });
187
- } finally {
188
- set({
189
- loading: false
190
- });
191
- }
192
- } catch (error) {
193
- const errorMessage = error instanceof Error ? error.message : 'Failed to load accounts';
194
- if (__DEV__) {
195
- console.error('AccountStore: Failed to load accounts:', error);
196
- }
197
- set({
198
- error: errorMessage,
199
- loading: false
200
- });
201
- }
202
- },
203
- reset: () => set(initialState)
204
- }));
205
-
206
- // Selectors for performance - return cached array to prevent infinite loops
207
- export const useAccounts = () => {
208
- return useAccountStore(state => state.accountsArray);
209
- };
210
- export const useAccountLoading = () => useAccountStore(s => s.loading);
211
- export const useAccountError = () => useAccountStore(s => s.error);
212
- export const useAccountLoadingSession = sessionId => useAccountStore(s => s.loadingSessionIds.has(sessionId));
213
- //# sourceMappingURL=accountStore.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["create","buildAccountsArray","createQuickAccount","initialState","accounts","accountOrder","accountsArray","loading","loadingSessionIds","Set","error","useAccountStore","set","get","setAccounts","state","accountMap","order","seenSessionIds","account","has","sessionId","add","push","sameOrder","length","every","id","i","sameAccounts","existing","newAccount","userId","avatar","avatarUrl","addAccount","newAccounts","newOrder","updateAccount","updates","updated","removeAccount","_removed","rest","filter","moveAccountToTop","filtered","setLoading","setLoadingSession","newSet","delete","setError","loadAccounts","sessionIds","oxyServices","existingAccounts","preserveOrder","uniqueSessionIds","Array","from","existingMap","Map","map","a","Object","values","missingSessionIds","ordered","acc","undefined","batchResults","getUsersBySessions","user","userData","fileId","variant","getFileDownloadUrl","orderToUse","seen","errorMessage","Error","message","__DEV__","console","reset","useAccounts","useAccountLoading","s","useAccountError","useAccountLoadingSession"],"sourceRoot":"../../../../src","sources":["ui/stores/accountStore.ts"],"mappings":"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","ignoreList":[]}
@@ -1,23 +0,0 @@
1
- import type { SwitchableAccount } from '@oxyhq/core';
2
- export interface UseSwitchableAccountsResult {
3
- /** Every switchable account (device sign-ins + linked graph accounts). */
4
- accounts: SwitchableAccount[];
5
- /** True until the initial account-list fetch settles with no data yet. */
6
- isLoading: boolean;
7
- /** The currently-active account's device session id, or `null`. */
8
- currentSessionId: string | null;
9
- }
10
- /**
11
- * Every account the signed-in user can switch into — device sign-ins AND linked
12
- * graph accounts (owned orgs + shared-with-you) — as one flat, deduped list with
13
- * real per-account name / email / avatar / color.
14
- *
15
- * This is a thin binding over the shared `AccountDialogController` in
16
- * `@oxyhq/core` (the SAME headless source the {@link OxyAccountDialogScreen} renders),
17
- * so there is ONE projection (`projectSwitchableAccounts`) and one switch path
18
- * (`controller.switchTo`) across the whole SDK — the local duplicate projection
19
- * this hook used to own has been removed. Every switch routes through
20
- * `useOxy().switchToAccount(accountId)` (or the dialog's row press).
21
- */
22
- export declare function useSwitchableAccounts(): UseSwitchableAccountsResult;
23
- //# sourceMappingURL=useSwitchableAccounts.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useSwitchableAccounts.d.ts","sourceRoot":"","sources":["../../../../../src/ui/hooks/useSwitchableAccounts.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAyB,MAAM,aAAa,CAAC;AAG5E,MAAM,WAAW,2BAA2B;IACxC,0EAA0E;IAC1E,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAC9B,0EAA0E;IAC1E,SAAS,EAAE,OAAO,CAAC;IACnB,mEAAmE;IACnE,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;CACnC;AA4BD;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,IAAI,2BAA2B,CAuBnE"}
@@ -1,27 +0,0 @@
1
- import type { OxyServices } from '@oxyhq/core';
2
- import type { QuickAccount } from '@oxyhq/core';
3
- export type { QuickAccount };
4
- interface AccountState {
5
- accounts: Record<string, QuickAccount>;
6
- accountOrder: string[];
7
- accountsArray: QuickAccount[];
8
- loading: boolean;
9
- loadingSessionIds: Set<string>;
10
- error: string | null;
11
- setAccounts: (accounts: QuickAccount[]) => void;
12
- addAccount: (account: QuickAccount) => void;
13
- updateAccount: (sessionId: string, updates: Partial<QuickAccount>) => void;
14
- removeAccount: (sessionId: string) => void;
15
- moveAccountToTop: (sessionId: string) => void;
16
- setLoading: (loading: boolean) => void;
17
- setLoadingSession: (sessionId: string, loading: boolean) => void;
18
- setError: (error: string | null) => void;
19
- loadAccounts: (sessionIds: string[], oxyServices: OxyServices, existingAccounts?: QuickAccount[], preserveOrder?: boolean) => Promise<void>;
20
- reset: () => void;
21
- }
22
- export declare const useAccountStore: import("zustand").UseBoundStore<import("zustand").StoreApi<AccountState>>;
23
- export declare const useAccounts: () => QuickAccount[];
24
- export declare const useAccountLoading: () => boolean;
25
- export declare const useAccountError: () => string | null;
26
- export declare const useAccountLoadingSession: (sessionId: string) => boolean;
27
- //# sourceMappingURL=accountStore.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"accountStore.d.ts","sourceRoot":"","sources":["../../../../../src/ui/stores/accountStore.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,YAAY,EAAE,YAAY,EAAE,CAAC;AAE7B,UAAU,YAAY;IAElB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACvC,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,aAAa,EAAE,YAAY,EAAE,CAAC;IAG9B,OAAO,EAAE,OAAO,CAAC;IACjB,iBAAiB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAG/B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAGrB,WAAW,EAAE,CAAC,QAAQ,EAAE,YAAY,EAAE,KAAK,IAAI,CAAC;IAChD,UAAU,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,IAAI,CAAC;IAC5C,aAAa,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,YAAY,CAAC,KAAK,IAAI,CAAC;IAC3E,aAAa,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,gBAAgB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAG9C,UAAU,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC,iBAAiB,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAGjE,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAGzC,YAAY,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,gBAAgB,CAAC,EAAE,YAAY,EAAE,EAAE,aAAa,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAG5I,KAAK,EAAE,MAAM,IAAI,CAAC;CACrB;AAYD,eAAO,MAAM,eAAe,2EAwMzB,CAAC;AAGJ,eAAO,MAAM,WAAW,QAAO,YAAY,EAE1C,CAAC;AAEF,eAAO,MAAM,iBAAiB,eAAwC,CAAC;AACvE,eAAO,MAAM,eAAe,qBAAsC,CAAC;AACnE,eAAO,MAAM,wBAAwB,GAAI,WAAW,MAAM,YACE,CAAC"}
@@ -1,23 +0,0 @@
1
- import type { SwitchableAccount } from '@oxyhq/core';
2
- export interface UseSwitchableAccountsResult {
3
- /** Every switchable account (device sign-ins + linked graph accounts). */
4
- accounts: SwitchableAccount[];
5
- /** True until the initial account-list fetch settles with no data yet. */
6
- isLoading: boolean;
7
- /** The currently-active account's device session id, or `null`. */
8
- currentSessionId: string | null;
9
- }
10
- /**
11
- * Every account the signed-in user can switch into — device sign-ins AND linked
12
- * graph accounts (owned orgs + shared-with-you) — as one flat, deduped list with
13
- * real per-account name / email / avatar / color.
14
- *
15
- * This is a thin binding over the shared `AccountDialogController` in
16
- * `@oxyhq/core` (the SAME headless source the {@link OxyAccountDialogScreen} renders),
17
- * so there is ONE projection (`projectSwitchableAccounts`) and one switch path
18
- * (`controller.switchTo`) across the whole SDK — the local duplicate projection
19
- * this hook used to own has been removed. Every switch routes through
20
- * `useOxy().switchToAccount(accountId)` (or the dialog's row press).
21
- */
22
- export declare function useSwitchableAccounts(): UseSwitchableAccountsResult;
23
- //# sourceMappingURL=useSwitchableAccounts.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useSwitchableAccounts.d.ts","sourceRoot":"","sources":["../../../../../src/ui/hooks/useSwitchableAccounts.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAyB,MAAM,aAAa,CAAC;AAG5E,MAAM,WAAW,2BAA2B;IACxC,0EAA0E;IAC1E,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAC9B,0EAA0E;IAC1E,SAAS,EAAE,OAAO,CAAC;IACnB,mEAAmE;IACnE,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;CACnC;AA4BD;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,IAAI,2BAA2B,CAuBnE"}
@@ -1,27 +0,0 @@
1
- import type { OxyServices } from '@oxyhq/core';
2
- import type { QuickAccount } from '@oxyhq/core';
3
- export type { QuickAccount };
4
- interface AccountState {
5
- accounts: Record<string, QuickAccount>;
6
- accountOrder: string[];
7
- accountsArray: QuickAccount[];
8
- loading: boolean;
9
- loadingSessionIds: Set<string>;
10
- error: string | null;
11
- setAccounts: (accounts: QuickAccount[]) => void;
12
- addAccount: (account: QuickAccount) => void;
13
- updateAccount: (sessionId: string, updates: Partial<QuickAccount>) => void;
14
- removeAccount: (sessionId: string) => void;
15
- moveAccountToTop: (sessionId: string) => void;
16
- setLoading: (loading: boolean) => void;
17
- setLoadingSession: (sessionId: string, loading: boolean) => void;
18
- setError: (error: string | null) => void;
19
- loadAccounts: (sessionIds: string[], oxyServices: OxyServices, existingAccounts?: QuickAccount[], preserveOrder?: boolean) => Promise<void>;
20
- reset: () => void;
21
- }
22
- export declare const useAccountStore: import("zustand").UseBoundStore<import("zustand").StoreApi<AccountState>>;
23
- export declare const useAccounts: () => QuickAccount[];
24
- export declare const useAccountLoading: () => boolean;
25
- export declare const useAccountError: () => string | null;
26
- export declare const useAccountLoadingSession: (sessionId: string) => boolean;
27
- //# sourceMappingURL=accountStore.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"accountStore.d.ts","sourceRoot":"","sources":["../../../../../src/ui/stores/accountStore.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,YAAY,EAAE,YAAY,EAAE,CAAC;AAE7B,UAAU,YAAY;IAElB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACvC,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,aAAa,EAAE,YAAY,EAAE,CAAC;IAG9B,OAAO,EAAE,OAAO,CAAC;IACjB,iBAAiB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAG/B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAGrB,WAAW,EAAE,CAAC,QAAQ,EAAE,YAAY,EAAE,KAAK,IAAI,CAAC;IAChD,UAAU,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,IAAI,CAAC;IAC5C,aAAa,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,YAAY,CAAC,KAAK,IAAI,CAAC;IAC3E,aAAa,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,gBAAgB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAG9C,UAAU,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC,iBAAiB,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAGjE,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAGzC,YAAY,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,gBAAgB,CAAC,EAAE,YAAY,EAAE,EAAE,aAAa,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAG5I,KAAK,EAAE,MAAM,IAAI,CAAC;CACrB;AAYD,eAAO,MAAM,eAAe,2EAwMzB,CAAC;AAGJ,eAAO,MAAM,WAAW,QAAO,YAAY,EAE1C,CAAC;AAEF,eAAO,MAAM,iBAAiB,eAAwC,CAAC;AACvE,eAAO,MAAM,eAAe,qBAAsC,CAAC;AACnE,eAAO,MAAM,wBAAwB,GAAI,WAAW,MAAM,YACE,CAAC"}
@@ -1,75 +0,0 @@
1
- import { useCallback, useMemo, useSyncExternalStore } from 'react';
2
- import type { SwitchableAccount, AccountDialogSnapshot } from '@oxyhq/core';
3
- import { useOxy } from '../context/OxyContext';
4
-
5
- export interface UseSwitchableAccountsResult {
6
- /** Every switchable account (device sign-ins + linked graph accounts). */
7
- accounts: SwitchableAccount[];
8
- /** True until the initial account-list fetch settles with no data yet. */
9
- isLoading: boolean;
10
- /** The currently-active account's device session id, or `null`. */
11
- currentSessionId: string | null;
12
- }
13
-
14
- /**
15
- * Stable empty snapshot for the no-provider loading state, so `useSyncExternalStore`
16
- * always has a getSnapshot that returns a constant reference before mount.
17
- */
18
- const EMPTY_SNAPSHOT: AccountDialogSnapshot = {
19
- view: 'accounts',
20
- accounts: [],
21
- activeAccountId: null,
22
- loading: false,
23
- error: null,
24
- switchingAccountId: null,
25
- signIn: {
26
- phase: 'idle',
27
- authorizeCode: null,
28
- qrPayload: null,
29
- expiresAt: null,
30
- error: null,
31
- route: null,
32
- routeFailed: false,
33
- pushSentAt: null,
34
- openedAt: null,
35
- progress: 'idle',
36
- },
37
- commonsAvailability: 'unknown',
38
- };
39
-
40
- /**
41
- * Every account the signed-in user can switch into — device sign-ins AND linked
42
- * graph accounts (owned orgs + shared-with-you) — as one flat, deduped list with
43
- * real per-account name / email / avatar / color.
44
- *
45
- * This is a thin binding over the shared `AccountDialogController` in
46
- * `@oxyhq/core` (the SAME headless source the {@link OxyAccountDialogScreen} renders),
47
- * so there is ONE projection (`projectSwitchableAccounts`) and one switch path
48
- * (`controller.switchTo`) across the whole SDK — the local duplicate projection
49
- * this hook used to own has been removed. Every switch routes through
50
- * `useOxy().switchToAccount(accountId)` (or the dialog's row press).
51
- */
52
- export function useSwitchableAccounts(): UseSwitchableAccountsResult {
53
- const { accountDialogController: controller } = useOxy();
54
-
55
- const subscribe = useCallback(
56
- (listener: () => void) => (controller ? controller.subscribe(listener) : () => undefined),
57
- [controller],
58
- );
59
- const getSnapshot = useCallback(
60
- () => (controller ? controller.getSnapshot() : EMPTY_SNAPSHOT),
61
- [controller],
62
- );
63
- const snapshot = useSyncExternalStore(subscribe, getSnapshot, getSnapshot);
64
-
65
- const currentSessionId = useMemo<string | null>(() => {
66
- const active = snapshot.accounts.find((account) => account.accountId === snapshot.activeAccountId);
67
- return active?.sessionId ?? null;
68
- }, [snapshot]);
69
-
70
- return {
71
- accounts: snapshot.accounts,
72
- isLoading: snapshot.loading,
73
- currentSessionId,
74
- };
75
- }