@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.
- package/NOTICE +10 -9
- package/README.md +65 -2
- package/android/src/main/java/so/oxy/devicesession/OxyDeviceSessionModule.kt +178 -0
- package/android/src/main/java/so/oxy/devicesession/OxyDeviceSessionProvider.kt +99 -0
- package/android/src/main/java/so/oxy/devicesession/OxyDeviceSessionStore.kt +115 -0
- package/expo-module.config.json +1 -0
- package/lib/commonjs/index.js +60 -16
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/ui/boot/runProviderColdBoot.js +7 -0
- package/lib/commonjs/ui/boot/runProviderColdBoot.js.map +1 -1
- package/lib/commonjs/ui/client.js +12 -7
- package/lib/commonjs/ui/client.js.map +1 -1
- package/lib/commonjs/ui/components/OxyAccountDialogScreen.js +10 -27
- package/lib/commonjs/ui/components/OxyAccountDialogScreen.js.map +1 -1
- package/lib/commonjs/ui/components/OxyAuthChooser.js +132 -44
- package/lib/commonjs/ui/components/OxyAuthChooser.js.map +1 -1
- package/lib/commonjs/ui/components/OxyProvider.js +4 -2
- package/lib/commonjs/ui/components/OxyProvider.js.map +1 -1
- package/lib/commonjs/ui/components/SurfaceScreen.js +31 -3
- package/lib/commonjs/ui/components/SurfaceScreen.js.map +1 -1
- package/lib/commonjs/ui/components/authChooser/AccountsMenuView.js +209 -84
- package/lib/commonjs/ui/components/authChooser/AccountsMenuView.js.map +1 -1
- package/lib/commonjs/ui/components/authChooser/SignInEntryView.js +25 -7
- package/lib/commonjs/ui/components/authChooser/SignInEntryView.js.map +1 -1
- package/lib/commonjs/ui/components/authChooser/primitives.js +35 -22
- package/lib/commonjs/ui/components/authChooser/primitives.js.map +1 -1
- package/lib/commonjs/ui/components/authChooser/types.js +11 -0
- package/lib/commonjs/ui/components/authChooser/types.js.map +1 -1
- package/lib/commonjs/ui/context/OxyContext.js +257 -306
- package/lib/commonjs/ui/context/OxyContext.js.map +1 -1
- package/lib/commonjs/ui/context/hooks/useAuthOperations.js +27 -37
- package/lib/commonjs/ui/context/hooks/useAuthOperations.js.map +1 -1
- package/lib/commonjs/ui/context/oxyContextHelpers.js +0 -29
- package/lib/commonjs/ui/context/oxyContextHelpers.js.map +1 -1
- package/lib/commonjs/ui/context/useOxyAccountGraph.js +6 -17
- package/lib/commonjs/ui/context/useOxyAccountGraph.js.map +1 -1
- package/lib/commonjs/ui/hooks/accountDialogSnapshot.js +42 -0
- package/lib/commonjs/ui/hooks/accountDialogSnapshot.js.map +1 -0
- package/lib/commonjs/ui/hooks/mutations/useAccountMutations.js +0 -19
- package/lib/commonjs/ui/hooks/mutations/useAccountMutations.js.map +1 -1
- package/lib/commonjs/ui/hooks/useDeviceSwitcher.js +57 -0
- package/lib/commonjs/ui/hooks/useDeviceSwitcher.js.map +1 -0
- package/lib/commonjs/ui/hooks/useI18n.js +22 -3
- package/lib/commonjs/ui/hooks/useI18n.js.map +1 -1
- package/lib/commonjs/ui/hooks/useSessionManagement.js +46 -153
- package/lib/commonjs/ui/hooks/useSessionManagement.js.map +1 -1
- package/lib/commonjs/ui/index.js +12 -7
- package/lib/commonjs/ui/index.js.map +1 -1
- package/lib/commonjs/ui/navigation/routes.js +85 -73
- package/lib/commonjs/ui/navigation/routes.js.map +1 -1
- package/lib/commonjs/ui/navigation/surfaces.js +8 -7
- package/lib/commonjs/ui/navigation/surfaces.js.map +1 -1
- package/lib/commonjs/ui/runtime/createOxyRuntime.js +433 -0
- package/lib/commonjs/ui/runtime/createOxyRuntime.js.map +1 -0
- package/lib/commonjs/ui/runtime/index.js +63 -0
- package/lib/commonjs/ui/runtime/index.js.map +1 -0
- package/lib/commonjs/ui/runtime/runtimeContext.js +83 -0
- package/lib/commonjs/ui/runtime/runtimeContext.js.map +1 -0
- package/lib/commonjs/ui/runtime/types.js +6 -0
- package/lib/commonjs/ui/runtime/types.js.map +1 -0
- package/lib/commonjs/ui/runtime/useRuntimeSnapshot.js +57 -0
- package/lib/commonjs/ui/runtime/useRuntimeSnapshot.js.map +1 -0
- package/lib/commonjs/ui/server.js +1 -2
- package/lib/commonjs/ui/server.js.map +1 -1
- package/lib/commonjs/ui/session/authStore.js +45 -9
- package/lib/commonjs/ui/session/authStore.js.map +1 -1
- package/lib/commonjs/ui/session/sharedDeviceCredentialStore.js +306 -0
- package/lib/commonjs/ui/session/sharedDeviceCredentialStore.js.map +1 -0
- package/lib/commonjs/ui/stores/authStore.js +154 -55
- package/lib/commonjs/ui/stores/authStore.js.map +1 -1
- package/lib/commonjs/ui/utils/avatarUtils.js +2 -36
- package/lib/commonjs/ui/utils/avatarUtils.js.map +1 -1
- package/lib/module/index.js +16 -8
- package/lib/module/index.js.map +1 -1
- package/lib/module/ui/boot/runProviderColdBoot.js +7 -0
- package/lib/module/ui/boot/runProviderColdBoot.js.map +1 -1
- package/lib/module/ui/client.js +1 -2
- package/lib/module/ui/client.js.map +1 -1
- package/lib/module/ui/components/OxyAccountDialogScreen.js +10 -27
- package/lib/module/ui/components/OxyAccountDialogScreen.js.map +1 -1
- package/lib/module/ui/components/OxyAuthChooser.js +134 -44
- package/lib/module/ui/components/OxyAuthChooser.js.map +1 -1
- package/lib/module/ui/components/OxyProvider.js +5 -3
- package/lib/module/ui/components/OxyProvider.js.map +1 -1
- package/lib/module/ui/components/SurfaceScreen.js +33 -5
- package/lib/module/ui/components/SurfaceScreen.js.map +1 -1
- package/lib/module/ui/components/authChooser/AccountsMenuView.js +210 -85
- package/lib/module/ui/components/authChooser/AccountsMenuView.js.map +1 -1
- package/lib/module/ui/components/authChooser/SignInEntryView.js +25 -7
- package/lib/module/ui/components/authChooser/SignInEntryView.js.map +1 -1
- package/lib/module/ui/components/authChooser/primitives.js +35 -22
- package/lib/module/ui/components/authChooser/primitives.js.map +1 -1
- package/lib/module/ui/components/authChooser/types.js +11 -0
- package/lib/module/ui/components/authChooser/types.js.map +1 -1
- package/lib/module/ui/context/OxyContext.js +251 -303
- package/lib/module/ui/context/OxyContext.js.map +1 -1
- package/lib/module/ui/context/hooks/useAuthOperations.js +27 -37
- package/lib/module/ui/context/hooks/useAuthOperations.js.map +1 -1
- package/lib/module/ui/context/oxyContextHelpers.js +0 -28
- package/lib/module/ui/context/oxyContextHelpers.js.map +1 -1
- package/lib/module/ui/context/useOxyAccountGraph.js +6 -17
- package/lib/module/ui/context/useOxyAccountGraph.js.map +1 -1
- package/lib/module/ui/hooks/accountDialogSnapshot.js +38 -0
- package/lib/module/ui/hooks/accountDialogSnapshot.js.map +1 -0
- package/lib/module/ui/hooks/mutations/useAccountMutations.js +0 -19
- package/lib/module/ui/hooks/mutations/useAccountMutations.js.map +1 -1
- package/lib/module/ui/hooks/useDeviceSwitcher.js +53 -0
- package/lib/module/ui/hooks/useDeviceSwitcher.js.map +1 -0
- package/lib/module/ui/hooks/useI18n.js +24 -4
- package/lib/module/ui/hooks/useI18n.js.map +1 -1
- package/lib/module/ui/hooks/useSessionManagement.js +47 -155
- package/lib/module/ui/hooks/useSessionManagement.js.map +1 -1
- package/lib/module/ui/index.js +1 -2
- package/lib/module/ui/index.js.map +1 -1
- package/lib/module/ui/navigation/routes.js +84 -72
- package/lib/module/ui/navigation/routes.js.map +1 -1
- package/lib/module/ui/navigation/surfaces.js +6 -6
- package/lib/module/ui/navigation/surfaces.js.map +1 -1
- package/lib/module/ui/runtime/createOxyRuntime.js +430 -0
- package/lib/module/ui/runtime/createOxyRuntime.js.map +1 -0
- package/lib/module/ui/runtime/index.js +15 -0
- package/lib/module/ui/runtime/index.js.map +1 -0
- package/lib/module/ui/runtime/runtimeContext.js +75 -0
- package/lib/module/ui/runtime/runtimeContext.js.map +1 -0
- package/lib/module/ui/runtime/types.js +4 -0
- package/lib/module/ui/runtime/types.js.map +1 -0
- package/lib/module/ui/runtime/useRuntimeSnapshot.js +52 -0
- package/lib/module/ui/runtime/useRuntimeSnapshot.js.map +1 -0
- package/lib/module/ui/server.js +0 -1
- package/lib/module/ui/server.js.map +1 -1
- package/lib/module/ui/session/authStore.js +46 -11
- package/lib/module/ui/session/authStore.js.map +1 -1
- package/lib/module/ui/session/sharedDeviceCredentialStore.js +302 -0
- package/lib/module/ui/session/sharedDeviceCredentialStore.js.map +1 -0
- package/lib/module/ui/stores/authStore.js +154 -55
- package/lib/module/ui/stores/authStore.js.map +1 -1
- package/lib/module/ui/utils/avatarUtils.js +2 -35
- package/lib/module/ui/utils/avatarUtils.js.map +1 -1
- package/lib/typescript/commonjs/index.d.ts +5 -3
- package/lib/typescript/commonjs/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/boot/runProviderColdBoot.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/client.d.ts +1 -2
- package/lib/typescript/commonjs/ui/client.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/OxyAccountDialogScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/OxyAuthChooser.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/OxyProvider.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/SurfaceScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/authChooser/AccountsMenuView.d.ts +11 -4
- package/lib/typescript/commonjs/ui/components/authChooser/AccountsMenuView.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/authChooser/SignInEntryView.d.ts +3 -1
- package/lib/typescript/commonjs/ui/components/authChooser/SignInEntryView.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/authChooser/primitives.d.ts +18 -6
- package/lib/typescript/commonjs/ui/components/authChooser/primitives.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/authChooser/types.d.ts +33 -1
- package/lib/typescript/commonjs/ui/components/authChooser/types.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/context/OxyContext.d.ts +35 -4
- package/lib/typescript/commonjs/ui/context/OxyContext.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/context/hooks/useAuthOperations.d.ts +8 -12
- package/lib/typescript/commonjs/ui/context/hooks/useAuthOperations.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/context/oxyContextHelpers.d.ts +0 -2
- package/lib/typescript/commonjs/ui/context/oxyContextHelpers.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/context/oxyContextTypes.d.ts +9 -1
- package/lib/typescript/commonjs/ui/context/oxyContextTypes.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/context/useOxyAccountGraph.d.ts +1 -3
- package/lib/typescript/commonjs/ui/context/useOxyAccountGraph.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/hooks/accountDialogSnapshot.d.ts +15 -0
- package/lib/typescript/commonjs/ui/hooks/accountDialogSnapshot.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/hooks/mutations/useAccountMutations.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/hooks/useDeviceSwitcher.d.ts +49 -0
- package/lib/typescript/commonjs/ui/hooks/useDeviceSwitcher.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/hooks/useI18n.d.ts +13 -0
- package/lib/typescript/commonjs/ui/hooks/useI18n.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/hooks/useSessionManagement.d.ts +23 -18
- package/lib/typescript/commonjs/ui/hooks/useSessionManagement.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/index.d.ts +1 -2
- package/lib/typescript/commonjs/ui/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/navigation/routes.d.ts +15 -1
- package/lib/typescript/commonjs/ui/navigation/routes.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/navigation/surfaces.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/runtime/createOxyRuntime.d.ts +144 -0
- package/lib/typescript/commonjs/ui/runtime/createOxyRuntime.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/runtime/index.d.ts +16 -0
- package/lib/typescript/commonjs/ui/runtime/index.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/runtime/runtimeContext.d.ts +43 -0
- package/lib/typescript/commonjs/ui/runtime/runtimeContext.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/runtime/types.d.ts +89 -0
- package/lib/typescript/commonjs/ui/runtime/types.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/runtime/useRuntimeSnapshot.d.ts +23 -0
- package/lib/typescript/commonjs/ui/runtime/useRuntimeSnapshot.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/server.d.ts +0 -1
- package/lib/typescript/commonjs/ui/server.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/session/authStore.d.ts +60 -9
- package/lib/typescript/commonjs/ui/session/authStore.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/session/sharedDeviceCredentialStore.d.ts +32 -0
- package/lib/typescript/commonjs/ui/session/sharedDeviceCredentialStore.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/stores/authStore.d.ts +49 -5
- package/lib/typescript/commonjs/ui/stores/authStore.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/types/navigation.d.ts +26 -0
- package/lib/typescript/commonjs/ui/types/navigation.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/utils/avatarUtils.d.ts +2 -10
- package/lib/typescript/commonjs/ui/utils/avatarUtils.d.ts.map +1 -1
- package/lib/typescript/module/index.d.ts +5 -3
- package/lib/typescript/module/index.d.ts.map +1 -1
- package/lib/typescript/module/ui/boot/runProviderColdBoot.d.ts.map +1 -1
- package/lib/typescript/module/ui/client.d.ts +1 -2
- package/lib/typescript/module/ui/client.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/OxyAccountDialogScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/OxyAuthChooser.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/OxyProvider.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/SurfaceScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/authChooser/AccountsMenuView.d.ts +11 -4
- package/lib/typescript/module/ui/components/authChooser/AccountsMenuView.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/authChooser/SignInEntryView.d.ts +3 -1
- package/lib/typescript/module/ui/components/authChooser/SignInEntryView.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/authChooser/primitives.d.ts +18 -6
- package/lib/typescript/module/ui/components/authChooser/primitives.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/authChooser/types.d.ts +33 -1
- package/lib/typescript/module/ui/components/authChooser/types.d.ts.map +1 -1
- package/lib/typescript/module/ui/context/OxyContext.d.ts +35 -4
- package/lib/typescript/module/ui/context/OxyContext.d.ts.map +1 -1
- package/lib/typescript/module/ui/context/hooks/useAuthOperations.d.ts +8 -12
- package/lib/typescript/module/ui/context/hooks/useAuthOperations.d.ts.map +1 -1
- package/lib/typescript/module/ui/context/oxyContextHelpers.d.ts +0 -2
- package/lib/typescript/module/ui/context/oxyContextHelpers.d.ts.map +1 -1
- package/lib/typescript/module/ui/context/oxyContextTypes.d.ts +9 -1
- package/lib/typescript/module/ui/context/oxyContextTypes.d.ts.map +1 -1
- package/lib/typescript/module/ui/context/useOxyAccountGraph.d.ts +1 -3
- package/lib/typescript/module/ui/context/useOxyAccountGraph.d.ts.map +1 -1
- package/lib/typescript/module/ui/hooks/accountDialogSnapshot.d.ts +15 -0
- package/lib/typescript/module/ui/hooks/accountDialogSnapshot.d.ts.map +1 -0
- package/lib/typescript/module/ui/hooks/mutations/useAccountMutations.d.ts.map +1 -1
- package/lib/typescript/module/ui/hooks/useDeviceSwitcher.d.ts +49 -0
- package/lib/typescript/module/ui/hooks/useDeviceSwitcher.d.ts.map +1 -0
- package/lib/typescript/module/ui/hooks/useI18n.d.ts +13 -0
- package/lib/typescript/module/ui/hooks/useI18n.d.ts.map +1 -1
- package/lib/typescript/module/ui/hooks/useSessionManagement.d.ts +23 -18
- package/lib/typescript/module/ui/hooks/useSessionManagement.d.ts.map +1 -1
- package/lib/typescript/module/ui/index.d.ts +1 -2
- package/lib/typescript/module/ui/index.d.ts.map +1 -1
- package/lib/typescript/module/ui/navigation/routes.d.ts +15 -1
- package/lib/typescript/module/ui/navigation/routes.d.ts.map +1 -1
- package/lib/typescript/module/ui/navigation/surfaces.d.ts.map +1 -1
- package/lib/typescript/module/ui/runtime/createOxyRuntime.d.ts +144 -0
- package/lib/typescript/module/ui/runtime/createOxyRuntime.d.ts.map +1 -0
- package/lib/typescript/module/ui/runtime/index.d.ts +16 -0
- package/lib/typescript/module/ui/runtime/index.d.ts.map +1 -0
- package/lib/typescript/module/ui/runtime/runtimeContext.d.ts +43 -0
- package/lib/typescript/module/ui/runtime/runtimeContext.d.ts.map +1 -0
- package/lib/typescript/module/ui/runtime/types.d.ts +89 -0
- package/lib/typescript/module/ui/runtime/types.d.ts.map +1 -0
- package/lib/typescript/module/ui/runtime/useRuntimeSnapshot.d.ts +23 -0
- package/lib/typescript/module/ui/runtime/useRuntimeSnapshot.d.ts.map +1 -0
- package/lib/typescript/module/ui/server.d.ts +0 -1
- package/lib/typescript/module/ui/server.d.ts.map +1 -1
- package/lib/typescript/module/ui/session/authStore.d.ts +60 -9
- package/lib/typescript/module/ui/session/authStore.d.ts.map +1 -1
- package/lib/typescript/module/ui/session/sharedDeviceCredentialStore.d.ts +32 -0
- package/lib/typescript/module/ui/session/sharedDeviceCredentialStore.d.ts.map +1 -0
- package/lib/typescript/module/ui/stores/authStore.d.ts +49 -5
- package/lib/typescript/module/ui/stores/authStore.d.ts.map +1 -1
- package/lib/typescript/module/ui/types/navigation.d.ts +26 -0
- package/lib/typescript/module/ui/types/navigation.d.ts.map +1 -1
- package/lib/typescript/module/ui/utils/avatarUtils.d.ts +2 -10
- package/lib/typescript/module/ui/utils/avatarUtils.d.ts.map +1 -1
- package/package.json +6 -7
- package/plugins/withSharedDeviceSessionProvider.js +102 -0
- package/plugins/withSharedDeviceSessionReader.js +57 -0
- package/src/__tests__/esmSourcePurity.test.ts +61 -0
- package/src/index.ts +31 -9
- package/src/ui/boot/runProviderColdBoot.ts +7 -0
- package/src/ui/client.ts +1 -2
- package/src/ui/components/OxyAccountDialogScreen.tsx +10 -29
- package/src/ui/components/OxyAuthChooser.tsx +149 -50
- package/src/ui/components/OxyProvider.tsx +7 -5
- package/src/ui/components/SurfaceScreen.tsx +28 -4
- package/src/ui/components/authChooser/AccountsMenuView.tsx +246 -96
- package/src/ui/components/authChooser/SignInEntryView.tsx +31 -8
- package/src/ui/components/authChooser/primitives.tsx +37 -23
- package/src/ui/components/authChooser/types.ts +34 -1
- package/src/ui/context/OxyContext.tsx +269 -324
- package/src/ui/context/hooks/useAuthOperations.ts +32 -35
- package/src/ui/context/oxyContextHelpers.ts +0 -30
- package/src/ui/context/oxyContextTypes.ts +9 -1
- package/src/ui/context/useOxyAccountGraph.ts +5 -19
- package/src/ui/hooks/accountDialogSnapshot.ts +37 -0
- package/src/ui/hooks/mutations/useAccountMutations.ts +0 -19
- package/src/ui/hooks/queries/__tests__/userCache.test.ts +12 -1
- package/src/ui/hooks/useDeviceSwitcher.ts +110 -0
- package/src/ui/hooks/useI18n.ts +23 -3
- package/src/ui/hooks/useSessionManagement.ts +62 -211
- package/src/ui/index.ts +1 -2
- package/src/ui/navigation/routes.ts +85 -75
- package/src/ui/navigation/surfaces.ts +6 -9
- package/src/ui/runtime/createOxyRuntime.ts +623 -0
- package/src/ui/runtime/index.ts +34 -0
- package/src/ui/runtime/runtimeContext.tsx +111 -0
- package/src/ui/runtime/types.ts +110 -0
- package/src/ui/runtime/useRuntimeSnapshot.ts +52 -0
- package/src/ui/server.ts +0 -1
- package/src/ui/session/__tests__/authStore.test.ts +90 -0
- package/src/ui/session/__tests__/sharedDeviceCredentialStore.test.ts +289 -0
- package/src/ui/session/authStore.ts +78 -9
- package/src/ui/session/sharedDeviceCredentialStore.ts +318 -0
- package/src/ui/stores/authStore.ts +171 -43
- package/src/ui/types/navigation.ts +26 -0
- package/src/ui/utils/avatarUtils.ts +2 -37
- package/lib/commonjs/ui/hooks/useSwitchableAccounts.js +0 -64
- package/lib/commonjs/ui/hooks/useSwitchableAccounts.js.map +0 -1
- package/lib/commonjs/ui/stores/accountStore.js +0 -221
- package/lib/commonjs/ui/stores/accountStore.js.map +0 -1
- package/lib/module/ui/hooks/useSwitchableAccounts.js +0 -60
- package/lib/module/ui/hooks/useSwitchableAccounts.js.map +0 -1
- package/lib/module/ui/stores/accountStore.js +0 -213
- package/lib/module/ui/stores/accountStore.js.map +0 -1
- package/lib/typescript/commonjs/ui/hooks/useSwitchableAccounts.d.ts +0 -23
- package/lib/typescript/commonjs/ui/hooks/useSwitchableAccounts.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/stores/accountStore.d.ts +0 -27
- package/lib/typescript/commonjs/ui/stores/accountStore.d.ts.map +0 -1
- package/lib/typescript/module/ui/hooks/useSwitchableAccounts.d.ts +0 -23
- package/lib/typescript/module/ui/hooks/useSwitchableAccounts.d.ts.map +0 -1
- package/lib/typescript/module/ui/stores/accountStore.d.ts +0 -27
- package/lib/typescript/module/ui/stores/accountStore.d.ts.map +0 -1
- package/src/ui/hooks/useSwitchableAccounts.ts +0 -75
- 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
|
-
}
|