@oxy.so/services 1.0.3 → 1.2.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 (163) hide show
  1. package/lib/commonjs/index.js.map +1 -1
  2. package/lib/commonjs/ui/components/LanguageBridge.js +51 -0
  3. package/lib/commonjs/ui/components/LanguageBridge.js.map +1 -0
  4. package/lib/commonjs/ui/components/OxyAuthChooser.js +95 -140
  5. package/lib/commonjs/ui/components/OxyAuthChooser.js.map +1 -1
  6. package/lib/commonjs/ui/components/OxyConsentScreen.js +132 -2
  7. package/lib/commonjs/ui/components/OxyConsentScreen.js.map +1 -1
  8. package/lib/commonjs/ui/components/OxyProvider.js +19 -1
  9. package/lib/commonjs/ui/components/OxyProvider.js.map +1 -1
  10. package/lib/commonjs/ui/components/authChooser/AccountsMenuView.js +8 -1
  11. package/lib/commonjs/ui/components/authChooser/AccountsMenuView.js.map +1 -1
  12. package/lib/commonjs/ui/components/authChooser/SignInEntryView.js +35 -25
  13. package/lib/commonjs/ui/components/authChooser/SignInEntryView.js.map +1 -1
  14. package/lib/commonjs/ui/components/authChooser/SignInRequestView.js +2 -3
  15. package/lib/commonjs/ui/components/authChooser/SignInRequestView.js.map +1 -1
  16. package/lib/commonjs/ui/components/authChooser/SignUpView.js +12 -127
  17. package/lib/commonjs/ui/components/authChooser/SignUpView.js.map +1 -1
  18. package/lib/commonjs/ui/components/authChooser/signInFailureMessage.js +40 -0
  19. package/lib/commonjs/ui/components/authChooser/signInFailureMessage.js.map +1 -0
  20. package/lib/commonjs/ui/components/authChooser/types.js +4 -6
  21. package/lib/commonjs/ui/components/authChooser/types.js.map +1 -1
  22. package/lib/commonjs/ui/context/hooks/useAuthOperations.js +15 -2
  23. package/lib/commonjs/ui/context/hooks/useAuthOperations.js.map +1 -1
  24. package/lib/commonjs/ui/hooks/accountDialogSnapshot.js +3 -1
  25. package/lib/commonjs/ui/hooks/accountDialogSnapshot.js.map +1 -1
  26. package/lib/commonjs/ui/hooks/useProfileEditing.js +14 -0
  27. package/lib/commonjs/ui/hooks/useProfileEditing.js.map +1 -1
  28. package/lib/commonjs/ui/screens/EditProfileFieldScreen.js +225 -9
  29. package/lib/commonjs/ui/screens/EditProfileFieldScreen.js.map +1 -1
  30. package/lib/commonjs/ui/screens/ManageAccountScreen.js +10 -0
  31. package/lib/commonjs/ui/screens/ManageAccountScreen.js.map +1 -1
  32. package/lib/module/index.js.map +1 -1
  33. package/lib/module/ui/components/LanguageBridge.js +47 -0
  34. package/lib/module/ui/components/LanguageBridge.js.map +1 -0
  35. package/lib/module/ui/components/OxyAuthChooser.js +97 -142
  36. package/lib/module/ui/components/OxyAuthChooser.js.map +1 -1
  37. package/lib/module/ui/components/OxyConsentScreen.js +132 -2
  38. package/lib/module/ui/components/OxyConsentScreen.js.map +1 -1
  39. package/lib/module/ui/components/OxyProvider.js +19 -1
  40. package/lib/module/ui/components/OxyProvider.js.map +1 -1
  41. package/lib/module/ui/components/authChooser/AccountsMenuView.js +8 -1
  42. package/lib/module/ui/components/authChooser/AccountsMenuView.js.map +1 -1
  43. package/lib/module/ui/components/authChooser/SignInEntryView.js +35 -25
  44. package/lib/module/ui/components/authChooser/SignInEntryView.js.map +1 -1
  45. package/lib/module/ui/components/authChooser/SignInRequestView.js +2 -3
  46. package/lib/module/ui/components/authChooser/SignInRequestView.js.map +1 -1
  47. package/lib/module/ui/components/authChooser/SignUpView.js +14 -129
  48. package/lib/module/ui/components/authChooser/SignUpView.js.map +1 -1
  49. package/lib/module/ui/components/authChooser/signInFailureMessage.js +36 -0
  50. package/lib/module/ui/components/authChooser/signInFailureMessage.js.map +1 -0
  51. package/lib/module/ui/components/authChooser/types.js +4 -6
  52. package/lib/module/ui/components/authChooser/types.js.map +1 -1
  53. package/lib/module/ui/context/hooks/useAuthOperations.js +15 -2
  54. package/lib/module/ui/context/hooks/useAuthOperations.js.map +1 -1
  55. package/lib/module/ui/hooks/accountDialogSnapshot.js +3 -1
  56. package/lib/module/ui/hooks/accountDialogSnapshot.js.map +1 -1
  57. package/lib/module/ui/hooks/useProfileEditing.js +14 -0
  58. package/lib/module/ui/hooks/useProfileEditing.js.map +1 -1
  59. package/lib/module/ui/screens/EditProfileFieldScreen.js +225 -9
  60. package/lib/module/ui/screens/EditProfileFieldScreen.js.map +1 -1
  61. package/lib/module/ui/screens/ManageAccountScreen.js +12 -2
  62. package/lib/module/ui/screens/ManageAccountScreen.js.map +1 -1
  63. package/lib/typescript/commonjs/index.d.ts +2 -2
  64. package/lib/typescript/commonjs/index.d.ts.map +1 -1
  65. package/lib/typescript/commonjs/ui/components/LanguageBridge.d.ts +19 -0
  66. package/lib/typescript/commonjs/ui/components/LanguageBridge.d.ts.map +1 -0
  67. package/lib/typescript/commonjs/ui/components/OxyAuthChooser.d.ts +3 -4
  68. package/lib/typescript/commonjs/ui/components/OxyAuthChooser.d.ts.map +1 -1
  69. package/lib/typescript/commonjs/ui/components/OxyConsentScreen.d.ts +17 -1
  70. package/lib/typescript/commonjs/ui/components/OxyConsentScreen.d.ts.map +1 -1
  71. package/lib/typescript/commonjs/ui/components/OxyProvider.d.ts +14 -0
  72. package/lib/typescript/commonjs/ui/components/OxyProvider.d.ts.map +1 -1
  73. package/lib/typescript/commonjs/ui/components/authChooser/AccountsMenuView.d.ts.map +1 -1
  74. package/lib/typescript/commonjs/ui/components/authChooser/SignInEntryView.d.ts +11 -12
  75. package/lib/typescript/commonjs/ui/components/authChooser/SignInEntryView.d.ts.map +1 -1
  76. package/lib/typescript/commonjs/ui/components/authChooser/SignInRequestView.d.ts.map +1 -1
  77. package/lib/typescript/commonjs/ui/components/authChooser/SignUpView.d.ts +10 -13
  78. package/lib/typescript/commonjs/ui/components/authChooser/SignUpView.d.ts.map +1 -1
  79. package/lib/typescript/commonjs/ui/components/authChooser/signInFailureMessage.d.ts +16 -0
  80. package/lib/typescript/commonjs/ui/components/authChooser/signInFailureMessage.d.ts.map +1 -0
  81. package/lib/typescript/commonjs/ui/components/authChooser/types.d.ts +11 -13
  82. package/lib/typescript/commonjs/ui/components/authChooser/types.d.ts.map +1 -1
  83. package/lib/typescript/commonjs/ui/context/OxyContext.d.ts +1 -1
  84. package/lib/typescript/commonjs/ui/context/OxyContext.d.ts.map +1 -1
  85. package/lib/typescript/commonjs/ui/context/hooks/useAuthOperations.d.ts +3 -2
  86. package/lib/typescript/commonjs/ui/context/hooks/useAuthOperations.d.ts.map +1 -1
  87. package/lib/typescript/commonjs/ui/context/oxyContextTypes.d.ts +20 -2
  88. package/lib/typescript/commonjs/ui/context/oxyContextTypes.d.ts.map +1 -1
  89. package/lib/typescript/commonjs/ui/hooks/accountDialogSnapshot.d.ts.map +1 -1
  90. package/lib/typescript/commonjs/ui/hooks/mutations/useAccountMutations.d.ts +3 -0
  91. package/lib/typescript/commonjs/ui/hooks/mutations/useAccountMutations.d.ts.map +1 -1
  92. package/lib/typescript/commonjs/ui/hooks/useProfileEditing.d.ts +1 -0
  93. package/lib/typescript/commonjs/ui/hooks/useProfileEditing.d.ts.map +1 -1
  94. package/lib/typescript/commonjs/ui/screens/EditProfileFieldScreen.d.ts.map +1 -1
  95. package/lib/typescript/commonjs/ui/screens/ManageAccountScreen.d.ts.map +1 -1
  96. package/lib/typescript/commonjs/ui/types/navigation.d.ts +29 -0
  97. package/lib/typescript/commonjs/ui/types/navigation.d.ts.map +1 -1
  98. package/lib/typescript/module/index.d.ts +2 -2
  99. package/lib/typescript/module/index.d.ts.map +1 -1
  100. package/lib/typescript/module/ui/components/LanguageBridge.d.ts +19 -0
  101. package/lib/typescript/module/ui/components/LanguageBridge.d.ts.map +1 -0
  102. package/lib/typescript/module/ui/components/OxyAuthChooser.d.ts +3 -4
  103. package/lib/typescript/module/ui/components/OxyAuthChooser.d.ts.map +1 -1
  104. package/lib/typescript/module/ui/components/OxyConsentScreen.d.ts +17 -1
  105. package/lib/typescript/module/ui/components/OxyConsentScreen.d.ts.map +1 -1
  106. package/lib/typescript/module/ui/components/OxyProvider.d.ts +14 -0
  107. package/lib/typescript/module/ui/components/OxyProvider.d.ts.map +1 -1
  108. package/lib/typescript/module/ui/components/authChooser/AccountsMenuView.d.ts.map +1 -1
  109. package/lib/typescript/module/ui/components/authChooser/SignInEntryView.d.ts +11 -12
  110. package/lib/typescript/module/ui/components/authChooser/SignInEntryView.d.ts.map +1 -1
  111. package/lib/typescript/module/ui/components/authChooser/SignInRequestView.d.ts.map +1 -1
  112. package/lib/typescript/module/ui/components/authChooser/SignUpView.d.ts +10 -13
  113. package/lib/typescript/module/ui/components/authChooser/SignUpView.d.ts.map +1 -1
  114. package/lib/typescript/module/ui/components/authChooser/signInFailureMessage.d.ts +16 -0
  115. package/lib/typescript/module/ui/components/authChooser/signInFailureMessage.d.ts.map +1 -0
  116. package/lib/typescript/module/ui/components/authChooser/types.d.ts +11 -13
  117. package/lib/typescript/module/ui/components/authChooser/types.d.ts.map +1 -1
  118. package/lib/typescript/module/ui/context/OxyContext.d.ts +1 -1
  119. package/lib/typescript/module/ui/context/OxyContext.d.ts.map +1 -1
  120. package/lib/typescript/module/ui/context/hooks/useAuthOperations.d.ts +3 -2
  121. package/lib/typescript/module/ui/context/hooks/useAuthOperations.d.ts.map +1 -1
  122. package/lib/typescript/module/ui/context/oxyContextTypes.d.ts +20 -2
  123. package/lib/typescript/module/ui/context/oxyContextTypes.d.ts.map +1 -1
  124. package/lib/typescript/module/ui/hooks/accountDialogSnapshot.d.ts.map +1 -1
  125. package/lib/typescript/module/ui/hooks/mutations/useAccountMutations.d.ts +3 -0
  126. package/lib/typescript/module/ui/hooks/mutations/useAccountMutations.d.ts.map +1 -1
  127. package/lib/typescript/module/ui/hooks/useProfileEditing.d.ts +1 -0
  128. package/lib/typescript/module/ui/hooks/useProfileEditing.d.ts.map +1 -1
  129. package/lib/typescript/module/ui/screens/EditProfileFieldScreen.d.ts.map +1 -1
  130. package/lib/typescript/module/ui/screens/ManageAccountScreen.d.ts.map +1 -1
  131. package/lib/typescript/module/ui/types/navigation.d.ts +29 -0
  132. package/lib/typescript/module/ui/types/navigation.d.ts.map +1 -1
  133. package/package.json +5 -4
  134. package/src/index.ts +2 -1
  135. package/src/ui/components/LanguageBridge.tsx +44 -0
  136. package/src/ui/components/OxyAuthChooser.tsx +106 -156
  137. package/src/ui/components/OxyConsentScreen.tsx +127 -0
  138. package/src/ui/components/OxyProvider.tsx +17 -0
  139. package/src/ui/components/__tests__/LanguageBridge.test.tsx +81 -0
  140. package/src/ui/components/__tests__/OxyConsentScreen.test.tsx +32 -0
  141. package/src/ui/components/authChooser/AccountsMenuView.tsx +7 -0
  142. package/src/ui/components/authChooser/SignInEntryView.tsx +41 -44
  143. package/src/ui/components/authChooser/SignInRequestView.tsx +1 -4
  144. package/src/ui/components/authChooser/SignUpView.tsx +16 -114
  145. package/src/ui/components/authChooser/signInFailureMessage.ts +39 -0
  146. package/src/ui/components/authChooser/types.ts +11 -13
  147. package/src/ui/context/OxyContext.tsx +1 -1
  148. package/src/ui/context/hooks/useAuthOperations.ts +10 -5
  149. package/src/ui/context/oxyContextTypes.ts +16 -2
  150. package/src/ui/hooks/accountDialogSnapshot.ts +2 -0
  151. package/src/ui/hooks/useProfileEditing.ts +15 -0
  152. package/src/ui/screens/EditProfileFieldScreen.tsx +202 -7
  153. package/src/ui/screens/ManageAccountScreen.tsx +12 -0
  154. package/src/ui/types/navigation.ts +30 -0
  155. package/lib/commonjs/ui/components/authChooser/useUsernameAvailability.js +0 -50
  156. package/lib/commonjs/ui/components/authChooser/useUsernameAvailability.js.map +0 -1
  157. package/lib/module/ui/components/authChooser/useUsernameAvailability.js +0 -46
  158. package/lib/module/ui/components/authChooser/useUsernameAvailability.js.map +0 -1
  159. package/lib/typescript/commonjs/ui/components/authChooser/useUsernameAvailability.d.ts +0 -16
  160. package/lib/typescript/commonjs/ui/components/authChooser/useUsernameAvailability.d.ts.map +0 -1
  161. package/lib/typescript/module/ui/components/authChooser/useUsernameAvailability.d.ts +0 -16
  162. package/lib/typescript/module/ui/components/authChooser/useUsernameAvailability.d.ts.map +0 -1
  163. package/src/ui/components/authChooser/useUsernameAvailability.ts +0 -60
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+
3
+ import { useEffect, useMemo, useRef } from 'react';
4
+ import { coerceToSupportedLocale } from '@oxy.so/core';
5
+ import { useOxy } from "../context/OxyContext.js";
6
+ /**
7
+ * `OxyProvider`'s language config prop, realized. Oxy decides which
8
+ * language an account (or, signed out, the device/guest locale) should see;
9
+ * this is the ONE place that decision reaches the host app's own i18n library
10
+ * — so an app never re-derives or imperatively tracks a language of its own,
11
+ * and never mounts anything extra to get it. It owns only its translation
12
+ * catalogs.
13
+ *
14
+ * `currentLanguage` may name a locale the host app never shipped a catalog
15
+ * for — {@link coerceToSupportedLocale} narrows it to the closest one the app
16
+ * actually has (exact match, then same base language, then `fallbackLocale`).
17
+ *
18
+ * Renders nothing. Mounted by `OxyProvider` INSIDE `OxyRuntimeProvider` only
19
+ * when this config is supplied, so an app with no i18n of its own pays
20
+ * nothing.
21
+ */
22
+ export function LanguageBridge({
23
+ supportedLocales,
24
+ fallbackLocale,
25
+ onChange,
26
+ onError
27
+ }) {
28
+ const {
29
+ currentLanguage
30
+ } = useOxy();
31
+ const resolvedLocale = useMemo(() => coerceToSupportedLocale(currentLanguage, supportedLocales, fallbackLocale), [currentLanguage, supportedLocales, fallbackLocale]);
32
+
33
+ // Refs, not effect dependencies: an inline `onChange`/`onError` (the common
34
+ // case) must not re-fire the effect on every render — only a genuine
35
+ // change in the RESOLVED locale should call it again.
36
+ const onChangeRef = useRef(onChange);
37
+ onChangeRef.current = onChange;
38
+ const onErrorRef = useRef(onError);
39
+ onErrorRef.current = onError;
40
+ useEffect(() => {
41
+ Promise.resolve(onChangeRef.current(resolvedLocale)).catch(error => {
42
+ onErrorRef.current?.(error, resolvedLocale);
43
+ });
44
+ }, [resolvedLocale]);
45
+ return null;
46
+ }
47
+ //# sourceMappingURL=LanguageBridge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useEffect","useMemo","useRef","coerceToSupportedLocale","useOxy","LanguageBridge","supportedLocales","fallbackLocale","onChange","onError","currentLanguage","resolvedLocale","onChangeRef","current","onErrorRef","Promise","resolve","catch","error"],"sourceRoot":"../../../../src","sources":["ui/components/LanguageBridge.tsx"],"mappings":";;AAAA,SAASA,SAAS,EAAEC,OAAO,EAAEC,MAAM,QAAQ,OAAO;AAClD,SAASC,uBAAuB,QAAQ,cAAc;AACtD,SAASC,MAAM,QAAQ,0BAAuB;AAG9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,cAAcA,CAAC;EAAEC,gBAAgB;EAAEC,cAAc;EAAEC,QAAQ;EAAEC;AAA2B,CAAC,EAAQ;EAC7G,MAAM;IAAEC;EAAgB,CAAC,GAAGN,MAAM,CAAC,CAAC;EACpC,MAAMO,cAAc,GAAGV,OAAO,CAC1B,MAAME,uBAAuB,CAACO,eAAe,EAAEJ,gBAAgB,EAAEC,cAAc,CAAC,EAChF,CAACG,eAAe,EAAEJ,gBAAgB,EAAEC,cAAc,CACtD,CAAC;;EAED;EACA;EACA;EACA,MAAMK,WAAW,GAAGV,MAAM,CAACM,QAAQ,CAAC;EACpCI,WAAW,CAACC,OAAO,GAAGL,QAAQ;EAC9B,MAAMM,UAAU,GAAGZ,MAAM,CAACO,OAAO,CAAC;EAClCK,UAAU,CAACD,OAAO,GAAGJ,OAAO;EAE5BT,SAAS,CAAC,MAAM;IACZe,OAAO,CAACC,OAAO,CAACJ,WAAW,CAACC,OAAO,CAACF,cAAc,CAAC,CAAC,CAACM,KAAK,CAAEC,KAAc,IAAK;MAC3EJ,UAAU,CAACD,OAAO,GAAGK,KAAK,EAAEP,cAAc,CAAC;IAC/C,CAAC,CAAC;EACN,CAAC,EAAE,CAACA,cAAc,CAAC,CAAC;EAEpB,OAAO,IAAI;AACf","ignoreList":[]}
@@ -35,12 +35,12 @@
35
35
  * that do not use NativeWind (e.g. the accounts app).
36
36
  */
37
37
 
38
- import { useCallback, useMemo, useState, useSyncExternalStore } from 'react';
38
+ import { useCallback, useMemo, useSyncExternalStore } from 'react';
39
39
  import { Linking, Platform } from 'react-native';
40
40
  import { toast } from '@oxy.so/bloom/toast';
41
41
  import { surfaces } from '@oxy.so/bloom/surfaces';
42
42
  import { useTheme } from '@oxy.so/bloom/theme';
43
- import { getNormalizedUserHandle, isOxyRpOrigin } from '@oxy.so/core';
43
+ import { IDENTITY_WEB_ORIGIN, getNormalizedUserHandle } from '@oxy.so/core';
44
44
  import { useQueryClient } from '@tanstack/react-query';
45
45
  import { useOxy } from "../context/OxyContext.js";
46
46
  import { useDeviceSwitcher } from "../hooks/useDeviceSwitcher.js";
@@ -53,6 +53,7 @@ import AccountsMenuView from "./authChooser/AccountsMenuView.js";
53
53
  import SignInEntryView from "./authChooser/SignInEntryView.js";
54
54
  import SignInRequestView from "./authChooser/SignInRequestView.js";
55
55
  import SignUpView from "./authChooser/SignUpView.js";
56
+ import { signInFailureMessage } from "./authChooser/signInFailureMessage.js";
56
57
  import { resolveAccentHex } from "./authChooser/types.js";
57
58
  import { EMPTY_ACCOUNT_DIALOG_SNAPSHOT } from "../hooks/accountDialogSnapshot.js";
58
59
 
@@ -66,20 +67,27 @@ const COMMONS_CREATE_IDENTITY_URL = 'oxycommons://create-identity';
66
67
  * hands off to Commons; nothing here invents new API endpoints.
67
68
  */
68
69
  const ACCOUNTS_APP_URL = 'https://accounts.oxy.so';
70
+
71
+ /**
72
+ * The last sign-in attempt whose failure was toasted, per controller.
73
+ *
74
+ * Module-level, not per subscription: a failure is ONE event. Remounting the
75
+ * chooser (or re-subscribing to the same controller) must not report it again,
76
+ * while a NEW attempt that fails with the very same message must. The attempt
77
+ * identity is what tells those apart; the message text cannot.
78
+ */
79
+ const toastedFailureAttempt = new WeakMap();
69
80
  /**
70
81
  * The account switcher + sign-in/sign-up chooser. Mounted by `OxyAccountDialogScreen`
71
82
  * (wrapped in Bloom's `<Dialog>`) today; mountable bare by any future host that
72
83
  * supplies its own `onComplete`.
73
84
  */
74
85
  const OxyAuthChooser = ({
75
- onComplete,
76
- autoStartSignIn: autoStartSignInEnabled = true
86
+ onComplete
77
87
  }) => {
78
88
  const {
79
89
  accountDialogController: controller,
80
90
  showBottomSheet,
81
- signInWithPasskey,
82
- registerWithPasskey,
83
91
  oxyServices,
84
92
  logout,
85
93
  openAvatarPicker,
@@ -97,106 +105,39 @@ const OxyAuthChooser = ({
97
105
  principals
98
106
  } = useDeviceSwitcher();
99
107
 
100
- // A credential minted for `oxy.so` can only be ASSERTED there (or a loopback
101
- // dev host) — a hard WebAuthn RP-ID boundary the browser enforces, not
102
- // feature detection. On a first-party Oxy web origin the ceremony runs
103
- // directly ('direct'). On any OTHER web origin (b2) it can't run locally, so
104
- // the passkey action instead opens a popup at the auth.oxy.so passkey hub —
105
- // where the SAME ceremony IS first-party — and relays the resulting session
106
- // back via `AccountDialogController.startPasskeyHubSignIn` ('hub'). Native
107
- // has neither: Commons owns identity there ('none'). `isOxyRpOrigin()` reads
108
- // `location` once and is stable for the component's lifetime.
109
- const passkeyMode = useMemo(() => {
110
- if (!isWebBrowser()) return 'none';
111
- return isOxyRpOrigin() ? 'direct' : 'hub';
112
- }, []);
113
- const [signInPasskeyPending, setSignInPasskeyPending] = useState(false);
114
- const handleSignInWithPasskey = useCallback(async () => {
115
- if (signInPasskeyPending) return;
116
- setSignInPasskeyPending(true);
117
- try {
118
- await signInWithPasskey();
119
- onComplete?.();
120
- } catch (error) {
121
- // A cancelled/failed ceremony keeps the view open so the user can retry
122
- // or fall back to the QR — surface the reason as a toast (owner mandate:
123
- // errors never render inline inside the dialog), never swallow.
124
- toast.error(error instanceof Error && error.message ? error.message : t('accountSwitcher.toasts.passkeySignInFailed'));
125
- } finally {
126
- setSignInPasskeyPending(false);
127
- }
128
- }, [signInPasskeyPending, signInWithPasskey, onComplete, t]);
129
- const [createPasskeyPending, setCreatePasskeyPending] = useState(false);
130
- const handleCreateWithPasskey = useCallback(async username => {
131
- if (createPasskeyPending) return;
132
- setCreatePasskeyPending(true);
133
- try {
134
- await registerWithPasskey({
135
- username
136
- });
137
- onComplete?.();
138
- } catch (error) {
139
- toast.error(error instanceof Error && error.message ? error.message : t('signup.toasts.passkeyCreateFailed'));
140
- } finally {
141
- setCreatePasskeyPending(false);
142
- }
143
- }, [createPasskeyPending, registerWithPasskey, onComplete, t]);
144
-
145
- // Web: auto-start "Sign in with Oxy" when the sign-in entry becomes the shown
146
- // view — the request surface is the PRIMARY web route, not something behind a
147
- // second tap (the user's ONE action was the sign-in button that opened this).
148
- // `signInWithOxy()` tries the shared keychain first (silently, native-only)
149
- // then falls to the device flow, whose route the controller picks. Driven from
150
- // the EVENTS that reach that view — the initial `subscribe` pass below (an
151
- // open-to-sign-in) and the add / back-to-sign-in handlers — never a watcher
152
- // effect. Guarded so it never restarts a live flow (phase must be idle) and is
153
- // a no-op on native (button-driven). Reads the live snapshot at call time (an
154
- // event callback, not render), so it is stable across renders.
155
- const autoStartSignIn = useCallback(() => {
156
- if (!autoStartSignInEnabled || !controller || !isWebBrowser()) return;
157
- const {
158
- view: currentView,
159
- signIn
160
- } = controller.getSnapshot();
161
- if (currentView !== 'signin' && currentView !== 'add' || signIn.phase !== 'idle') return;
162
- void controller.signInWithOxy();
163
- }, [autoStartSignInEnabled, controller]);
108
+ // Web sign-in and sign-up run at the identity origin (`id.oxy.so`), never
109
+ // on this page, whatever this page's origin: that is where the passkey
110
+ // ceremony can run for any app AND where the account's identity is created
111
+ // and kept sealed under the passkey (one identity, two carriers). Native has
112
+ // no passkey path: Commons owns identity there ('none').
113
+ const passkeyMode = useMemo(() => isWebBrowser() ? 'hub' : 'none', []);
164
114
 
165
115
  // Bind the headless controller. `getSnapshot` returns a stable reference
166
116
  // between changes, so it is `useSyncExternalStore`-safe. Guard the no-provider
167
117
  // loading state (`controller` is `null`) with an inert store.
168
118
  //
169
- // The subscribe callback ALSO carries two owner-mandated reactions to the
170
- // controller. These run in the subscribe / notification callbacks — EVENT
171
- // callbacks, not render/effect — so neither is a React effect hook:
172
- // 1. Sign-in device-flow failures (poll / socket / popup-cancel land on
173
- // `signIn` asynchronously) are toasted at the notification site, deduped
174
- // per subscription — NEVER an inline banner in the request view (owner
175
- // mandate, same contract as account-switch).
176
- // 2. On subscribe (mount / re-subscribe — a passive effect, the SAME timing
177
- // the removed effects had) the web sign-in flow auto-starts if the opening
178
- // view is the sign-in entry.
119
+ // The subscribe callback ALSO toasts sign-in device-flow failures (poll /
120
+ // socket / popup-cancel land on `signIn` asynchronously) at the notification
121
+ // site — an EVENT callback, not render/effect — deduped per attempt, NEVER an
122
+ // inline banner in the request view (owner mandate).
179
123
  const subscribe = useCallback(listener => {
180
124
  if (!controller) return () => undefined;
181
- let lastToastedSignInError = null;
182
125
  const maybeToastSignInError = () => {
183
126
  const {
184
127
  signIn
185
128
  } = controller.getSnapshot();
186
- if (signIn.phase === 'error' && signIn.error && signIn.error !== lastToastedSignInError) {
187
- lastToastedSignInError = signIn.error;
188
- toast.error(signIn.error);
189
- } else if (signIn.phase !== 'error') {
190
- lastToastedSignInError = null;
191
- }
129
+ if (signIn.phase !== 'error') return;
130
+ if (toastedFailureAttempt.get(controller) === signIn.attempt) return;
131
+ toastedFailureAttempt.set(controller, signIn.attempt);
132
+ const message = signInFailureMessage(signIn.failure, t);
133
+ if (message) toast.error(message);
192
134
  };
193
135
  maybeToastSignInError();
194
- autoStartSignIn();
195
136
  return controller.subscribe(() => {
196
137
  maybeToastSignInError();
197
138
  listener();
198
139
  });
199
- }, [controller, autoStartSignIn]);
140
+ }, [controller, t]);
200
141
  const getSnapshot = useCallback(() => controller ? controller.getSnapshot() : EMPTY_ACCOUNT_DIALOG_SNAPSHOT, [controller]);
201
142
  const snapshot = useSyncExternalStore(subscribe, getSnapshot, getSnapshot);
202
143
  const {
@@ -205,31 +146,30 @@ const OxyAuthChooser = ({
205
146
  const consumerHooks = useSyncExternalStore(subscribeToAccountDialogConsumerHooks, getAccountDialogConsumerHooks, () => null);
206
147
  const handleActivate = useCallback(async contextId => {
207
148
  if (!controller) return;
208
- if (controller.getSnapshot().activatingContextId) return;
149
+ // Another switch or removal is already changing this device: the press is
150
+ // dropped, not queued — and it is not a failure to report.
151
+ if (controller.isDeviceMutationInFlight()) return;
209
152
  // Already live: activating it again bumps nothing server-side, so treat
210
153
  // the press as "yes, this one" and close.
211
154
  if (contextId === controller.getSnapshot().activeContext?.contextId) {
212
155
  onComplete?.();
213
156
  return;
214
157
  }
215
- try {
216
- await controller.activateContext(contextId);
217
- // Failures are recorded on the controller snapshot rather than thrown,
218
- // so the same path works with the real controller and with test doubles
219
- // that resolve void.
220
- if (controller.getSnapshot().error) {
221
- toast.error(t('accountSwitcher.toasts.activateFailed'));
222
- return;
223
- }
224
- // The subject changed, so every account-scoped query is now about
225
- // somebody else. The runtime resets its own caches between the bearer
226
- // commit and the notify; this drops the Query cache the same way the
227
- // account switch did.
228
- queryClient.invalidateQueries();
229
- onComplete?.();
230
- } catch {
158
+ // The controller's own verdict on the SWITCH — never `snapshot.error`,
159
+ // which the directory re-read after a successful switch can also set.
160
+ // Reading that as "the switch failed" left the dialog open on a false
161
+ // error with the previous account's queries still cached.
162
+ const switched = await controller.activateContext(contextId).catch(() => false);
163
+ if (!switched) {
231
164
  toast.error(t('accountSwitcher.toasts.activateFailed'));
165
+ return;
232
166
  }
167
+ // The subject changed, so every account-scoped query is now about
168
+ // somebody else. The runtime resets its own caches between the bearer
169
+ // commit and the notify; this drops the Query cache the same way the
170
+ // account switch did.
171
+ queryClient.invalidateQueries();
172
+ onComplete?.();
233
173
  }, [controller, onComplete, queryClient, t]);
234
174
 
235
175
  /**
@@ -241,7 +181,7 @@ const OxyAuthChooser = ({
241
181
  * would get wrong.
242
182
  */
243
183
  const handleRemoveContext = useCallback(async contextId => {
244
- if (!controller) return;
184
+ if (!controller || controller.isDeviceMutationInFlight()) return;
245
185
  const group = principals.find(principal => principal.contexts.some(context => context.contextId === contextId));
246
186
  const context = group?.contexts.find(row => row.contextId === contextId);
247
187
  if (!group || !context) return;
@@ -268,7 +208,7 @@ const OxyAuthChooser = ({
268
208
 
269
209
  /** Remove ONE PERSON and every account they reach here, and nobody else's. */
270
210
  const handleRemovePrincipal = useCallback(async principalId => {
271
- if (!controller) return;
211
+ if (!controller || controller.isDeviceMutationInFlight()) return;
272
212
  const group = principals.find(principal => principal.principalId === principalId);
273
213
  if (!group) return;
274
214
  const confirmed = await surfaces.confirm({
@@ -290,6 +230,37 @@ const OxyAuthChooser = ({
290
230
  name: group.displayName
291
231
  }));
292
232
  }, [controller, principals, t]);
233
+
234
+ /**
235
+ * Sign out of the current account, and close only once that is TRUE.
236
+ *
237
+ * Runs under the controller's device-mutation gate, so it can neither race a
238
+ * switch or removal nor be issued twice by a double press. A failed
239
+ * revocation keeps the dialog open and says so: closing it would read as
240
+ * "signed out" while this device still holds the session.
241
+ */
242
+ const handleSignOut = useCallback(async () => {
243
+ if (!controller) return;
244
+ const outcome = await controller.runDeviceMutation(() => logout());
245
+ if (!outcome.ran) return;
246
+ if (outcome.value.status === 'failed') {
247
+ toast.error(t('common.errors.signOutFailed'));
248
+ return;
249
+ }
250
+ onComplete?.();
251
+ }, [controller, logout, onComplete, t]);
252
+
253
+ /**
254
+ * Hand a URL to the OS. `Linking.openURL` REJECTS when nothing can open it
255
+ * (no browser, an unregistered scheme, a blocked navigation) — a press that
256
+ * then does nothing at all is exactly the dead end this reports instead.
257
+ */
258
+ const openExternal = useCallback(url => {
259
+ // Wrapped so a synchronous throw lands in the same handler as a rejection.
260
+ Promise.resolve().then(() => Linking.openURL(url)).catch(() => {
261
+ toast.error(t('accountSwitcher.linkOpenFailed'));
262
+ });
263
+ }, [t]);
293
264
  const handleManage = useCallback(() => {
294
265
  onComplete?.();
295
266
  if (consumerHooks?.onNavigateManage) {
@@ -304,11 +275,9 @@ const OxyAuthChooser = ({
304
275
  consumerHooks.onAddAccount();
305
276
  return;
306
277
  }
307
- // No consumer override: enter the "add account" view and auto-start the web
308
- // sign-in flow, from this handler (the event that reaches the view).
278
+ // No consumer override: enter the "add account" view.
309
279
  controller?.add();
310
- autoStartSignIn();
311
- }, [consumerHooks, controller, autoStartSignIn, onComplete]);
280
+ }, [consumerHooks, controller, onComplete]);
312
281
  const handlers = useMemo(() => ({
313
282
  onActivate: contextId => {
314
283
  void handleActivate(contextId);
@@ -343,22 +312,16 @@ const OxyAuthChooser = ({
343
312
  // surface and hides them behind "Having trouble?" (issue #691).
344
313
  const alternatives = useMemo(() => ({
345
314
  passkeyAvailable: passkeyMode !== 'none',
346
- // The hub-popup flow reports progress through `snapshot.signIn` (already
347
- // rendered by the request view) — only the DIRECT ceremony uses this
348
- // component-local pending flag. A ceremony FAILURE is toasted by
349
- // `handleSignInWithPasskey`, never rendered inline.
350
- passkeyPending: passkeyMode === 'direct' ? signInPasskeyPending : false,
351
- onSignInWithPasskey: () => {
352
- if (passkeyMode === 'direct') {
353
- void handleSignInWithPasskey();
354
- return;
355
- }
356
- void controller?.startPasskeyHubSignIn();
357
- },
315
+ // Called straight from the press: the popup opens before any await.
316
+ onSignInWithPasskey: () => void controller?.startPasskeyHubSignIn(),
358
317
  onShowQr: () => void controller?.showQr(),
359
- onGetCommons: () => void Linking.openURL(getCommonsAcquisitionUrl(Platform.OS)),
360
- onCreateAccount: () => controller?.startSignup()
361
- }), [passkeyMode, signInPasskeyPending, handleSignInWithPasskey, controller]);
318
+ onGetCommons: () => openExternal(getCommonsAcquisitionUrl(Platform.OS)),
319
+ // Web: the identity origin creates the account and its identity in the
320
+ // same window a sign-in uses. Native: Commons creates the identity.
321
+ onCreateAccount: () => {
322
+ if (passkeyMode === 'hub') void controller?.startPasskeyHubSignIn();else controller?.startSignup();
323
+ }
324
+ }), [passkeyMode, controller, openExternal]);
362
325
 
363
326
  // Real storage usage for the account menu's "Oxy storage" block. Disabled
364
327
  // (no fetch) until a private-API session exists, so it is inert on the
@@ -377,9 +340,7 @@ const OxyAuthChooser = ({
377
340
  // endpoints — the same handoff pattern `handleManage`/`getCommonsAcquisitionUrl`
378
341
  // already use.
379
342
  const accountMenu = useMemo(() => {
380
- const openUrl = url => {
381
- void Linking.openURL(url);
382
- };
343
+ const openUrl = openExternal;
383
344
  const openSheet = config => {
384
345
  onComplete?.();
385
346
  showBottomSheet?.(config);
@@ -403,9 +364,9 @@ const OxyAuthChooser = ({
403
364
  }
404
365
  }),
405
366
  onSignOut: () => {
406
- void logout();
407
- onComplete?.();
367
+ void handleSignOut();
408
368
  },
369
+ onOpenIdentity: passkeyMode === 'hub' ? () => openUrl(`${IDENTITY_WEB_ORIGIN}/`) : undefined,
409
370
  customItems: (consumerHooks?.menuItems ?? []).map(item => ({
410
371
  ...item,
411
372
  onPress: () => {
@@ -414,7 +375,7 @@ const OxyAuthChooser = ({
414
375
  }
415
376
  }))
416
377
  };
417
- }, [consumerHooks, onComplete, showBottomSheet, logout]);
378
+ }, [consumerHooks, onComplete, showBottomSheet, handleSignOut, openExternal, passkeyMode]);
418
379
  if (!controller) {
419
380
  return null;
420
381
  }
@@ -434,7 +395,7 @@ const OxyAuthChooser = ({
434
395
  return /*#__PURE__*/_jsx(SignInRequestView, {
435
396
  snapshot: snapshot,
436
397
  t: t,
437
- onRetry: () => void controller.showQr(),
398
+ onRetry: () => void controller.retrySignIn(),
438
399
  alternatives: alternatives
439
400
  });
440
401
  }
@@ -443,17 +404,11 @@ const OxyAuthChooser = ({
443
404
  snapshot: snapshot,
444
405
  theme: theme,
445
406
  t: t,
446
- oxyServices: oxyServices,
447
407
  passkeyMode: passkeyMode,
448
- onCreateWithPasskey: username => void handleCreateWithPasskey(username),
449
- createPending: createPasskeyPending,
450
408
  onOpenHub: () => void controller.startPasskeyHubSignIn(),
451
- onCreateIdentityInCommons: () => void Linking.openURL(COMMONS_CREATE_IDENTITY_URL),
409
+ onCreateIdentityInCommons: () => openExternal(COMMONS_CREATE_IDENTITY_URL),
452
410
  onGetCommons: alternatives.onGetCommons,
453
- onBackToSignIn: () => {
454
- controller.setView('signin');
455
- autoStartSignIn();
456
- }
411
+ onBackToSignIn: () => controller.setView('signin')
457
412
  });
458
413
  }
459
414
  return /*#__PURE__*/_jsx(SignInEntryView, {
@@ -1 +1 @@
1
- {"version":3,"names":["useCallback","useMemo","useState","useSyncExternalStore","Linking","Platform","toast","surfaces","useTheme","getNormalizedUserHandle","isOxyRpOrigin","useQueryClient","useOxy","useDeviceSwitcher","useI18n","getAccountDialogConsumerHooks","subscribeToAccountDialogConsumerHooks","isWebBrowser","getCommonsAcquisitionUrl","useAccountStorageUsage","AccountsMenuView","SignInEntryView","SignInRequestView","SignUpView","resolveAccentHex","EMPTY_ACCOUNT_DIALOG_SNAPSHOT","jsx","_jsx","COMMONS_CREATE_IDENTITY_URL","ACCOUNTS_APP_URL","OxyAuthChooser","onComplete","autoStartSignIn","autoStartSignInEnabled","accountDialogController","controller","showBottomSheet","signInWithPasskey","registerWithPasskey","oxyServices","logout","openAvatarPicker","user","theme","t","queryClient","principals","passkeyMode","signInPasskeyPending","setSignInPasskeyPending","handleSignInWithPasskey","error","Error","message","createPasskeyPending","setCreatePasskeyPending","handleCreateWithPasskey","username","view","currentView","signIn","getSnapshot","phase","signInWithOxy","subscribe","listener","undefined","lastToastedSignInError","maybeToastSignInError","snapshot","consumerHooks","handleActivate","contextId","activatingContextId","activeContext","activateContext","invalidateQueries","handleRemoveContext","group","find","principal","contexts","some","context","row","confirmed","confirm","title","description","person","displayName","account","confirmLabel","cancelLabel","destructive","removed","signOutContext","success","handleRemovePrincipal","principalId","name","signOutPrincipal","handleManage","onNavigateManage","handleAdd","onAddAccount","add","handlers","onActivate","onRemoveContext","onRemovePrincipal","onAdd","onManage","onEditAvatar","hero","buildHero","colors","primary","alternatives","passkeyAvailable","passkeyPending","onSignInWithPasskey","startPasskeyHubSignIn","onShowQr","showQr","onGetCommons","openURL","OS","onCreateAccount","startSignup","storageQuery","enabled","storage","data","usedBytes","totalUsedBytes","limitBytes","totalLimitBytes","accountMenu","openUrl","url","openSheet","config","onOpenSettings","onOpenData","onManageStorage","onUpgradeStorage","onHelp","onPrivacy","screen","props","initialStep","onTerms","onSignOut","customItems","menuItems","map","item","onPress","menu","onRetry","onCreateWithPasskey","createPending","onOpenHub","onCreateIdentityInCommons","onBackToSignIn","setView","onContinueWithOxy","fallbackAccent","handle","trim","addressLine","email","toLowerCase","endsWith","avatarUrl","avatar","getFileDownloadUrl","accentHex","color"],"sourceRoot":"../../../../src","sources":["ui/components/OxyAuthChooser.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["useCallback","useMemo","useSyncExternalStore","Linking","Platform","toast","surfaces","useTheme","IDENTITY_WEB_ORIGIN","getNormalizedUserHandle","useQueryClient","useOxy","useDeviceSwitcher","useI18n","getAccountDialogConsumerHooks","subscribeToAccountDialogConsumerHooks","isWebBrowser","getCommonsAcquisitionUrl","useAccountStorageUsage","AccountsMenuView","SignInEntryView","SignInRequestView","SignUpView","signInFailureMessage","resolveAccentHex","EMPTY_ACCOUNT_DIALOG_SNAPSHOT","jsx","_jsx","COMMONS_CREATE_IDENTITY_URL","ACCOUNTS_APP_URL","toastedFailureAttempt","WeakMap","OxyAuthChooser","onComplete","accountDialogController","controller","showBottomSheet","oxyServices","logout","openAvatarPicker","user","theme","t","queryClient","principals","passkeyMode","subscribe","listener","undefined","maybeToastSignInError","signIn","getSnapshot","phase","get","attempt","set","message","failure","error","snapshot","view","consumerHooks","handleActivate","contextId","isDeviceMutationInFlight","activeContext","switched","activateContext","catch","invalidateQueries","handleRemoveContext","group","find","principal","contexts","some","context","row","confirmed","confirm","title","description","person","displayName","account","confirmLabel","cancelLabel","destructive","removed","signOutContext","success","handleRemovePrincipal","principalId","name","signOutPrincipal","handleSignOut","outcome","runDeviceMutation","ran","value","status","openExternal","url","Promise","resolve","then","openURL","handleManage","onNavigateManage","handleAdd","onAddAccount","add","handlers","onActivate","onRemoveContext","onRemovePrincipal","onAdd","onManage","onEditAvatar","hero","buildHero","colors","primary","alternatives","passkeyAvailable","onSignInWithPasskey","startPasskeyHubSignIn","onShowQr","showQr","onGetCommons","OS","onCreateAccount","startSignup","storageQuery","enabled","storage","data","usedBytes","totalUsedBytes","limitBytes","totalLimitBytes","accountMenu","openUrl","openSheet","config","onOpenSettings","onOpenData","onManageStorage","onUpgradeStorage","onHelp","onPrivacy","screen","props","initialStep","onTerms","onSignOut","onOpenIdentity","customItems","menuItems","map","item","onPress","menu","onRetry","retrySignIn","onOpenHub","onCreateIdentityInCommons","onBackToSignIn","setView","onContinueWithOxy","signInWithOxy","fallbackAccent","handle","trim","addressLine","email","toLowerCase","endsWith","avatarUrl","avatar","getFileDownloadUrl","accentHex","color"],"sourceRoot":"../../../../src","sources":["ui/components/OxyAuthChooser.tsx"],"mappings":"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","ignoreList":[]}