@oxyhq/services 22.13.0 → 23.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 (445) hide show
  1. package/README.md +1 -1
  2. package/lib/commonjs/index.js +74 -0
  3. package/lib/commonjs/index.js.map +1 -1
  4. package/lib/commonjs/notifications/deviceNotifications.js +424 -0
  5. package/lib/commonjs/notifications/deviceNotifications.js.map +1 -0
  6. package/lib/commonjs/ui/boot/runProviderColdBoot.js +20 -64
  7. package/lib/commonjs/ui/boot/runProviderColdBoot.js.map +1 -1
  8. package/lib/commonjs/ui/components/AvatarCameraBadge.js +3 -2
  9. package/lib/commonjs/ui/components/AvatarCameraBadge.js.map +1 -1
  10. package/lib/commonjs/ui/components/OxyAuthChooser.js +5 -4
  11. package/lib/commonjs/ui/components/OxyAuthChooser.js.map +1 -1
  12. package/lib/commonjs/ui/components/OxyProvider.js +5 -6
  13. package/lib/commonjs/ui/components/OxyProvider.js.map +1 -1
  14. package/lib/commonjs/ui/components/OxySignInRequestSurface.js +147 -0
  15. package/lib/commonjs/ui/components/OxySignInRequestSurface.js.map +1 -0
  16. package/lib/commonjs/ui/components/ProfileButton.js +4 -3
  17. package/lib/commonjs/ui/components/ProfileButton.js.map +1 -1
  18. package/lib/commonjs/ui/components/SettingsIcon.js +3 -2
  19. package/lib/commonjs/ui/components/SettingsIcon.js.map +1 -1
  20. package/lib/commonjs/ui/components/authChooser/AccountsMenuView.js +7 -7
  21. package/lib/commonjs/ui/components/authChooser/AccountsMenuView.js.map +1 -1
  22. package/lib/commonjs/ui/components/authChooser/SignInEntryView.js.map +1 -1
  23. package/lib/commonjs/ui/components/authChooser/SignInRequestView.js +65 -103
  24. package/lib/commonjs/ui/components/authChooser/SignInRequestView.js.map +1 -1
  25. package/lib/commonjs/ui/components/authChooser/TroubleDisclosure.js +0 -2
  26. package/lib/commonjs/ui/components/authChooser/TroubleDisclosure.js.map +1 -1
  27. package/lib/commonjs/ui/components/authChooser/primitives.js +5 -4
  28. package/lib/commonjs/ui/components/authChooser/primitives.js.map +1 -1
  29. package/lib/commonjs/ui/components/authChooser/requestSurfaces.js +14 -10
  30. package/lib/commonjs/ui/components/authChooser/requestSurfaces.js.map +1 -1
  31. package/lib/commonjs/ui/components/authChooser/types.js +11 -0
  32. package/lib/commonjs/ui/components/authChooser/types.js.map +1 -1
  33. package/lib/commonjs/ui/components/fileManagement/AnimatedButton.js +3 -2
  34. package/lib/commonjs/ui/components/fileManagement/AnimatedButton.js.map +1 -1
  35. package/lib/commonjs/ui/components/fileManagement/FileDetailsModal.js +3 -2
  36. package/lib/commonjs/ui/components/fileManagement/FileDetailsModal.js.map +1 -1
  37. package/lib/commonjs/ui/components/fileManagement/FileViewer.js +15 -14
  38. package/lib/commonjs/ui/components/fileManagement/FileViewer.js.map +1 -1
  39. package/lib/commonjs/ui/components/fileManagement/UploadPreview.js +6 -5
  40. package/lib/commonjs/ui/components/fileManagement/UploadPreview.js.map +1 -1
  41. package/lib/commonjs/ui/components/modals/DeleteAccountModal.js +3 -2
  42. package/lib/commonjs/ui/components/modals/DeleteAccountModal.js.map +1 -1
  43. package/lib/commonjs/ui/components/payment/PaymentDetailsStep.js +6 -6
  44. package/lib/commonjs/ui/components/payment/PaymentDetailsStep.js.map +1 -1
  45. package/lib/commonjs/ui/components/payment/PaymentMethodStep.js +5 -5
  46. package/lib/commonjs/ui/components/payment/PaymentMethodStep.js.map +1 -1
  47. package/lib/commonjs/ui/components/payment/PaymentReviewStep.js +10 -9
  48. package/lib/commonjs/ui/components/payment/PaymentReviewStep.js.map +1 -1
  49. package/lib/commonjs/ui/components/payment/PaymentSuccessStep.js +4 -3
  50. package/lib/commonjs/ui/components/payment/PaymentSuccessStep.js.map +1 -1
  51. package/lib/commonjs/ui/components/payment/PaymentSummaryStep.js +6 -5
  52. package/lib/commonjs/ui/components/payment/PaymentSummaryStep.js.map +1 -1
  53. package/lib/commonjs/ui/components/styles/shadow.js.map +1 -1
  54. package/lib/commonjs/ui/context/OxyContext.js +14 -45
  55. package/lib/commonjs/ui/context/OxyContext.js.map +1 -1
  56. package/lib/commonjs/ui/context/commitSessionFlow.js +0 -43
  57. package/lib/commonjs/ui/context/commitSessionFlow.js.map +1 -1
  58. package/lib/commonjs/ui/context/useOxyAccountGraph.js +3 -4
  59. package/lib/commonjs/ui/context/useOxyAccountGraph.js.map +1 -1
  60. package/lib/commonjs/ui/hooks/queries/userCache.js +17 -17
  61. package/lib/commonjs/ui/hooks/queries/userCache.js.map +1 -1
  62. package/lib/commonjs/ui/hooks/useAssets.js.map +1 -1
  63. package/lib/commonjs/ui/hooks/useAuth.js +4 -2
  64. package/lib/commonjs/ui/hooks/useAuth.js.map +1 -1
  65. package/lib/commonjs/ui/hooks/useOnlineStatus.js +3 -2
  66. package/lib/commonjs/ui/hooks/useOnlineStatus.js.map +1 -1
  67. package/lib/commonjs/ui/hooks/useSessionManagement.js +0 -2
  68. package/lib/commonjs/ui/hooks/useSessionManagement.js.map +1 -1
  69. package/lib/commonjs/ui/screens/AccountMembersScreen.js +4 -3
  70. package/lib/commonjs/ui/screens/AccountMembersScreen.js.map +1 -1
  71. package/lib/commonjs/ui/screens/ConnectedAppsScreen.js +1 -1
  72. package/lib/commonjs/ui/screens/ConnectedAppsScreen.js.map +1 -1
  73. package/lib/commonjs/ui/screens/CreateAccountScreen.js +7 -6
  74. package/lib/commonjs/ui/screens/CreateAccountScreen.js.map +1 -1
  75. package/lib/commonjs/ui/screens/EditProfileFieldScreen.js +4 -3
  76. package/lib/commonjs/ui/screens/EditProfileFieldScreen.js.map +1 -1
  77. package/lib/commonjs/ui/screens/FAQScreen.js +3 -2
  78. package/lib/commonjs/ui/screens/FAQScreen.js.map +1 -1
  79. package/lib/commonjs/ui/screens/FeedbackScreen.js +96 -96
  80. package/lib/commonjs/ui/screens/FeedbackScreen.js.map +1 -1
  81. package/lib/commonjs/ui/screens/FileManagementScreen.js +19 -18
  82. package/lib/commonjs/ui/screens/FileManagementScreen.js.map +1 -1
  83. package/lib/commonjs/ui/screens/HistoryViewScreen.js +4 -29
  84. package/lib/commonjs/ui/screens/HistoryViewScreen.js.map +1 -1
  85. package/lib/commonjs/ui/screens/LanguageSelectorScreen.js +4 -3
  86. package/lib/commonjs/ui/screens/LanguageSelectorScreen.js.map +1 -1
  87. package/lib/commonjs/ui/screens/ManageAccountScreen.js +2 -2
  88. package/lib/commonjs/ui/screens/ManageAccountScreen.js.map +1 -1
  89. package/lib/commonjs/ui/screens/PaymentGatewayScreen.js +3 -3
  90. package/lib/commonjs/ui/screens/PaymentGatewayScreen.js.map +1 -1
  91. package/lib/commonjs/ui/screens/PremiumSubscriptionScreen.js +10 -9
  92. package/lib/commonjs/ui/screens/PremiumSubscriptionScreen.js.map +1 -1
  93. package/lib/commonjs/ui/screens/PrivacySettingsScreen.js +1 -0
  94. package/lib/commonjs/ui/screens/PrivacySettingsScreen.js.map +1 -1
  95. package/lib/commonjs/ui/screens/ProfileScreen.js +12 -13
  96. package/lib/commonjs/ui/screens/ProfileScreen.js.map +1 -1
  97. package/lib/commonjs/ui/screens/UserListScreen.js +4 -4
  98. package/lib/commonjs/ui/screens/UserListScreen.js.map +1 -1
  99. package/lib/commonjs/ui/screens/WelcomeNewUserScreen.js +6 -6
  100. package/lib/commonjs/ui/screens/WelcomeNewUserScreen.js.map +1 -1
  101. package/lib/commonjs/ui/screens/fileManagement/FileLibraryError.js +4 -3
  102. package/lib/commonjs/ui/screens/fileManagement/FileLibraryError.js.map +1 -1
  103. package/lib/commonjs/ui/screens/fileManagement/FileListSection.js +4 -3
  104. package/lib/commonjs/ui/screens/fileManagement/FileListSection.js.map +1 -1
  105. package/lib/commonjs/ui/screens/fileManagement/PhotoPickerSection.js +5 -7
  106. package/lib/commonjs/ui/screens/fileManagement/PhotoPickerSection.js.map +1 -1
  107. package/lib/commonjs/ui/screens/fileManagement/UploadBar.js +3 -2
  108. package/lib/commonjs/ui/screens/fileManagement/UploadBar.js.map +1 -1
  109. package/lib/commonjs/ui/screens/trust/TrustCenterScreen.js +3 -2
  110. package/lib/commonjs/ui/screens/trust/TrustCenterScreen.js.map +1 -1
  111. package/lib/commonjs/ui/screens/trust/TrustLeaderboardScreen.js +5 -4
  112. package/lib/commonjs/ui/screens/trust/TrustLeaderboardScreen.js.map +1 -1
  113. package/lib/commonjs/ui/screens/trust/TrustRewardsScreen.js +4 -3
  114. package/lib/commonjs/ui/screens/trust/TrustRewardsScreen.js.map +1 -1
  115. package/lib/commonjs/ui/utils/fileManagement.js +24 -24
  116. package/lib/commonjs/ui/utils/fileManagement.js.map +1 -1
  117. package/lib/commonjs/ui/utils/netConnectivity.js +28 -0
  118. package/lib/commonjs/ui/utils/netConnectivity.js.map +1 -0
  119. package/lib/commonjs/ui/utils/oauthReturn.js +15 -28
  120. package/lib/commonjs/ui/utils/oauthReturn.js.map +1 -1
  121. package/lib/module/index.js +18 -0
  122. package/lib/module/index.js.map +1 -1
  123. package/lib/module/notifications/deviceNotifications.js +414 -0
  124. package/lib/module/notifications/deviceNotifications.js.map +1 -0
  125. package/lib/module/ui/boot/runProviderColdBoot.js +21 -65
  126. package/lib/module/ui/boot/runProviderColdBoot.js.map +1 -1
  127. package/lib/module/ui/components/AvatarCameraBadge.js +1 -1
  128. package/lib/module/ui/components/AvatarCameraBadge.js.map +1 -1
  129. package/lib/module/ui/components/OxyAuthChooser.js +5 -4
  130. package/lib/module/ui/components/OxyAuthChooser.js.map +1 -1
  131. package/lib/module/ui/components/OxyProvider.js +5 -6
  132. package/lib/module/ui/components/OxyProvider.js.map +1 -1
  133. package/lib/module/ui/components/OxySignInRequestSurface.js +141 -0
  134. package/lib/module/ui/components/OxySignInRequestSurface.js.map +1 -0
  135. package/lib/module/ui/components/ProfileButton.js +1 -1
  136. package/lib/module/ui/components/ProfileButton.js.map +1 -1
  137. package/lib/module/ui/components/SettingsIcon.js +1 -1
  138. package/lib/module/ui/components/SettingsIcon.js.map +1 -1
  139. package/lib/module/ui/components/authChooser/AccountsMenuView.js +1 -1
  140. package/lib/module/ui/components/authChooser/AccountsMenuView.js.map +1 -1
  141. package/lib/module/ui/components/authChooser/SignInEntryView.js.map +1 -1
  142. package/lib/module/ui/components/authChooser/SignInRequestView.js +66 -104
  143. package/lib/module/ui/components/authChooser/SignInRequestView.js.map +1 -1
  144. package/lib/module/ui/components/authChooser/TroubleDisclosure.js +0 -2
  145. package/lib/module/ui/components/authChooser/TroubleDisclosure.js.map +1 -1
  146. package/lib/module/ui/components/authChooser/primitives.js +1 -1
  147. package/lib/module/ui/components/authChooser/primitives.js.map +1 -1
  148. package/lib/module/ui/components/authChooser/requestSurfaces.js +13 -9
  149. package/lib/module/ui/components/authChooser/requestSurfaces.js.map +1 -1
  150. package/lib/module/ui/components/authChooser/types.js +11 -0
  151. package/lib/module/ui/components/authChooser/types.js.map +1 -1
  152. package/lib/module/ui/components/fileManagement/AnimatedButton.js +1 -1
  153. package/lib/module/ui/components/fileManagement/AnimatedButton.js.map +1 -1
  154. package/lib/module/ui/components/fileManagement/FileDetailsModal.js +1 -1
  155. package/lib/module/ui/components/fileManagement/FileDetailsModal.js.map +1 -1
  156. package/lib/module/ui/components/fileManagement/FileViewer.js +1 -1
  157. package/lib/module/ui/components/fileManagement/FileViewer.js.map +1 -1
  158. package/lib/module/ui/components/fileManagement/UploadPreview.js +1 -1
  159. package/lib/module/ui/components/fileManagement/UploadPreview.js.map +1 -1
  160. package/lib/module/ui/components/modals/DeleteAccountModal.js +1 -1
  161. package/lib/module/ui/components/modals/DeleteAccountModal.js.map +1 -1
  162. package/lib/module/ui/components/payment/PaymentDetailsStep.js +1 -1
  163. package/lib/module/ui/components/payment/PaymentDetailsStep.js.map +1 -1
  164. package/lib/module/ui/components/payment/PaymentMethodStep.js +1 -1
  165. package/lib/module/ui/components/payment/PaymentMethodStep.js.map +1 -1
  166. package/lib/module/ui/components/payment/PaymentReviewStep.js +1 -1
  167. package/lib/module/ui/components/payment/PaymentReviewStep.js.map +1 -1
  168. package/lib/module/ui/components/payment/PaymentSuccessStep.js +1 -1
  169. package/lib/module/ui/components/payment/PaymentSuccessStep.js.map +1 -1
  170. package/lib/module/ui/components/payment/PaymentSummaryStep.js +1 -1
  171. package/lib/module/ui/components/payment/PaymentSummaryStep.js.map +1 -1
  172. package/lib/module/ui/components/styles/shadow.js.map +1 -1
  173. package/lib/module/ui/context/OxyContext.js +16 -47
  174. package/lib/module/ui/context/OxyContext.js.map +1 -1
  175. package/lib/module/ui/context/commitSessionFlow.js +0 -42
  176. package/lib/module/ui/context/commitSessionFlow.js.map +1 -1
  177. package/lib/module/ui/context/useOxyAccountGraph.js +3 -4
  178. package/lib/module/ui/context/useOxyAccountGraph.js.map +1 -1
  179. package/lib/module/ui/hooks/queries/userCache.js +17 -17
  180. package/lib/module/ui/hooks/queries/userCache.js.map +1 -1
  181. package/lib/module/ui/hooks/useAssets.js.map +1 -1
  182. package/lib/module/ui/hooks/useAuth.js +4 -2
  183. package/lib/module/ui/hooks/useAuth.js.map +1 -1
  184. package/lib/module/ui/hooks/useOnlineStatus.js +3 -2
  185. package/lib/module/ui/hooks/useOnlineStatus.js.map +1 -1
  186. package/lib/module/ui/hooks/useSessionManagement.js +0 -2
  187. package/lib/module/ui/hooks/useSessionManagement.js.map +1 -1
  188. package/lib/module/ui/screens/AccountMembersScreen.js +1 -1
  189. package/lib/module/ui/screens/AccountMembersScreen.js.map +1 -1
  190. package/lib/module/ui/screens/ConnectedAppsScreen.js +1 -1
  191. package/lib/module/ui/screens/ConnectedAppsScreen.js.map +1 -1
  192. package/lib/module/ui/screens/CreateAccountScreen.js +1 -1
  193. package/lib/module/ui/screens/CreateAccountScreen.js.map +1 -1
  194. package/lib/module/ui/screens/EditProfileFieldScreen.js +1 -1
  195. package/lib/module/ui/screens/EditProfileFieldScreen.js.map +1 -1
  196. package/lib/module/ui/screens/FAQScreen.js +1 -1
  197. package/lib/module/ui/screens/FAQScreen.js.map +1 -1
  198. package/lib/module/ui/screens/FeedbackScreen.js +91 -90
  199. package/lib/module/ui/screens/FeedbackScreen.js.map +1 -1
  200. package/lib/module/ui/screens/FileManagementScreen.js +2 -1
  201. package/lib/module/ui/screens/FileManagementScreen.js.map +1 -1
  202. package/lib/module/ui/screens/HistoryViewScreen.js +4 -29
  203. package/lib/module/ui/screens/HistoryViewScreen.js.map +1 -1
  204. package/lib/module/ui/screens/LanguageSelectorScreen.js +1 -1
  205. package/lib/module/ui/screens/LanguageSelectorScreen.js.map +1 -1
  206. package/lib/module/ui/screens/ManageAccountScreen.js +1 -1
  207. package/lib/module/ui/screens/ManageAccountScreen.js.map +1 -1
  208. package/lib/module/ui/screens/PaymentGatewayScreen.js +1 -1
  209. package/lib/module/ui/screens/PaymentGatewayScreen.js.map +1 -1
  210. package/lib/module/ui/screens/PremiumSubscriptionScreen.js +2 -2
  211. package/lib/module/ui/screens/PremiumSubscriptionScreen.js.map +1 -1
  212. package/lib/module/ui/screens/PrivacySettingsScreen.js +1 -0
  213. package/lib/module/ui/screens/PrivacySettingsScreen.js.map +1 -1
  214. package/lib/module/ui/screens/ProfileScreen.js +4 -5
  215. package/lib/module/ui/screens/ProfileScreen.js.map +1 -1
  216. package/lib/module/ui/screens/UserListScreen.js +3 -3
  217. package/lib/module/ui/screens/UserListScreen.js.map +1 -1
  218. package/lib/module/ui/screens/WelcomeNewUserScreen.js +5 -6
  219. package/lib/module/ui/screens/WelcomeNewUserScreen.js.map +1 -1
  220. package/lib/module/ui/screens/fileManagement/FileLibraryError.js +1 -1
  221. package/lib/module/ui/screens/fileManagement/FileLibraryError.js.map +1 -1
  222. package/lib/module/ui/screens/fileManagement/FileListSection.js +1 -1
  223. package/lib/module/ui/screens/fileManagement/FileListSection.js.map +1 -1
  224. package/lib/module/ui/screens/fileManagement/PhotoPickerSection.js +3 -5
  225. package/lib/module/ui/screens/fileManagement/PhotoPickerSection.js.map +1 -1
  226. package/lib/module/ui/screens/fileManagement/UploadBar.js +1 -1
  227. package/lib/module/ui/screens/fileManagement/UploadBar.js.map +1 -1
  228. package/lib/module/ui/screens/trust/TrustCenterScreen.js +1 -1
  229. package/lib/module/ui/screens/trust/TrustCenterScreen.js.map +1 -1
  230. package/lib/module/ui/screens/trust/TrustLeaderboardScreen.js +3 -3
  231. package/lib/module/ui/screens/trust/TrustLeaderboardScreen.js.map +1 -1
  232. package/lib/module/ui/screens/trust/TrustRewardsScreen.js +1 -1
  233. package/lib/module/ui/screens/trust/TrustRewardsScreen.js.map +1 -1
  234. package/lib/module/ui/utils/fileManagement.js +25 -25
  235. package/lib/module/ui/utils/fileManagement.js.map +1 -1
  236. package/lib/module/ui/utils/netConnectivity.js +23 -0
  237. package/lib/module/ui/utils/netConnectivity.js.map +1 -0
  238. package/lib/module/ui/utils/oauthReturn.js +15 -27
  239. package/lib/module/ui/utils/oauthReturn.js.map +1 -1
  240. package/lib/typescript/commonjs/index.d.ts +5 -0
  241. package/lib/typescript/commonjs/index.d.ts.map +1 -1
  242. package/lib/typescript/commonjs/notifications/deviceNotifications.d.ts +173 -0
  243. package/lib/typescript/commonjs/notifications/deviceNotifications.d.ts.map +1 -0
  244. package/lib/typescript/commonjs/ui/boot/runProviderColdBoot.d.ts +11 -30
  245. package/lib/typescript/commonjs/ui/boot/runProviderColdBoot.d.ts.map +1 -1
  246. package/lib/typescript/commonjs/ui/components/OxyAuthChooser.d.ts +5 -3
  247. package/lib/typescript/commonjs/ui/components/OxyAuthChooser.d.ts.map +1 -1
  248. package/lib/typescript/commonjs/ui/components/OxyProvider.d.ts.map +1 -1
  249. package/lib/typescript/commonjs/ui/components/OxySignInRequestSurface.d.ts +108 -0
  250. package/lib/typescript/commonjs/ui/components/OxySignInRequestSurface.d.ts.map +1 -0
  251. package/lib/typescript/commonjs/ui/components/SettingsIcon.d.ts +1 -1
  252. package/lib/typescript/commonjs/ui/components/SettingsIcon.d.ts.map +1 -1
  253. package/lib/typescript/commonjs/ui/components/authChooser/SignInEntryView.d.ts.map +1 -1
  254. package/lib/typescript/commonjs/ui/components/authChooser/SignInRequestView.d.ts +18 -18
  255. package/lib/typescript/commonjs/ui/components/authChooser/SignInRequestView.d.ts.map +1 -1
  256. package/lib/typescript/commonjs/ui/components/authChooser/TroubleDisclosure.d.ts +3 -10
  257. package/lib/typescript/commonjs/ui/components/authChooser/TroubleDisclosure.d.ts.map +1 -1
  258. package/lib/typescript/commonjs/ui/components/authChooser/requestSurfaces.d.ts +8 -4
  259. package/lib/typescript/commonjs/ui/components/authChooser/requestSurfaces.d.ts.map +1 -1
  260. package/lib/typescript/commonjs/ui/components/authChooser/types.d.ts +18 -0
  261. package/lib/typescript/commonjs/ui/components/authChooser/types.d.ts.map +1 -1
  262. package/lib/typescript/commonjs/ui/components/payment/types.d.ts +6 -6
  263. package/lib/typescript/commonjs/ui/components/payment/types.d.ts.map +1 -1
  264. package/lib/typescript/commonjs/ui/context/OxyContext.d.ts.map +1 -1
  265. package/lib/typescript/commonjs/ui/context/commitSessionFlow.d.ts +0 -40
  266. package/lib/typescript/commonjs/ui/context/commitSessionFlow.d.ts.map +1 -1
  267. package/lib/typescript/commonjs/ui/context/oxyContextTypes.d.ts +4 -7
  268. package/lib/typescript/commonjs/ui/context/oxyContextTypes.d.ts.map +1 -1
  269. package/lib/typescript/commonjs/ui/context/useOxyAccountGraph.d.ts +0 -1
  270. package/lib/typescript/commonjs/ui/context/useOxyAccountGraph.d.ts.map +1 -1
  271. package/lib/typescript/commonjs/ui/hooks/queries/userCache.d.ts +2 -2
  272. package/lib/typescript/commonjs/ui/hooks/queries/userCache.d.ts.map +1 -1
  273. package/lib/typescript/commonjs/ui/hooks/useAssets.d.ts +1 -1
  274. package/lib/typescript/commonjs/ui/hooks/useAssets.d.ts.map +1 -1
  275. package/lib/typescript/commonjs/ui/hooks/useAsyncAction.d.ts +2 -2
  276. package/lib/typescript/commonjs/ui/hooks/useAsyncAction.d.ts.map +1 -1
  277. package/lib/typescript/commonjs/ui/hooks/useAuth.d.ts +4 -2
  278. package/lib/typescript/commonjs/ui/hooks/useAuth.d.ts.map +1 -1
  279. package/lib/typescript/commonjs/ui/hooks/useOnlineStatus.d.ts +3 -2
  280. package/lib/typescript/commonjs/ui/hooks/useOnlineStatus.d.ts.map +1 -1
  281. package/lib/typescript/commonjs/ui/hooks/useSessionManagement.d.ts.map +1 -1
  282. package/lib/typescript/commonjs/ui/screens/FeedbackScreen.d.ts +2 -2
  283. package/lib/typescript/commonjs/ui/screens/FeedbackScreen.d.ts.map +1 -1
  284. package/lib/typescript/commonjs/ui/screens/FileManagementScreen.d.ts.map +1 -1
  285. package/lib/typescript/commonjs/ui/screens/HistoryViewScreen.d.ts.map +1 -1
  286. package/lib/typescript/commonjs/ui/screens/PrivacySettingsScreen.d.ts.map +1 -1
  287. package/lib/typescript/commonjs/ui/screens/ProfileScreen.d.ts.map +1 -1
  288. package/lib/typescript/commonjs/ui/screens/WelcomeNewUserScreen.d.ts.map +1 -1
  289. package/lib/typescript/commonjs/ui/screens/fileManagement/PhotoPickerSection.d.ts.map +1 -1
  290. package/lib/typescript/commonjs/ui/screens/trust/TrustLeaderboardScreen.d.ts.map +1 -1
  291. package/lib/typescript/commonjs/ui/types/navigation.d.ts +20 -19
  292. package/lib/typescript/commonjs/ui/types/navigation.d.ts.map +1 -1
  293. package/lib/typescript/commonjs/ui/utils/fileManagement.d.ts +5 -5
  294. package/lib/typescript/commonjs/ui/utils/fileManagement.d.ts.map +1 -1
  295. package/lib/typescript/commonjs/ui/utils/netConnectivity.d.ts +17 -0
  296. package/lib/typescript/commonjs/ui/utils/netConnectivity.d.ts.map +1 -0
  297. package/lib/typescript/commonjs/ui/utils/oauthReturn.d.ts +15 -12
  298. package/lib/typescript/commonjs/ui/utils/oauthReturn.d.ts.map +1 -1
  299. package/lib/typescript/module/index.d.ts +5 -0
  300. package/lib/typescript/module/index.d.ts.map +1 -1
  301. package/lib/typescript/module/notifications/deviceNotifications.d.ts +173 -0
  302. package/lib/typescript/module/notifications/deviceNotifications.d.ts.map +1 -0
  303. package/lib/typescript/module/ui/boot/runProviderColdBoot.d.ts +11 -30
  304. package/lib/typescript/module/ui/boot/runProviderColdBoot.d.ts.map +1 -1
  305. package/lib/typescript/module/ui/components/OxyAuthChooser.d.ts +5 -3
  306. package/lib/typescript/module/ui/components/OxyAuthChooser.d.ts.map +1 -1
  307. package/lib/typescript/module/ui/components/OxyProvider.d.ts.map +1 -1
  308. package/lib/typescript/module/ui/components/OxySignInRequestSurface.d.ts +108 -0
  309. package/lib/typescript/module/ui/components/OxySignInRequestSurface.d.ts.map +1 -0
  310. package/lib/typescript/module/ui/components/SettingsIcon.d.ts +1 -1
  311. package/lib/typescript/module/ui/components/SettingsIcon.d.ts.map +1 -1
  312. package/lib/typescript/module/ui/components/authChooser/SignInEntryView.d.ts.map +1 -1
  313. package/lib/typescript/module/ui/components/authChooser/SignInRequestView.d.ts +18 -18
  314. package/lib/typescript/module/ui/components/authChooser/SignInRequestView.d.ts.map +1 -1
  315. package/lib/typescript/module/ui/components/authChooser/TroubleDisclosure.d.ts +3 -10
  316. package/lib/typescript/module/ui/components/authChooser/TroubleDisclosure.d.ts.map +1 -1
  317. package/lib/typescript/module/ui/components/authChooser/requestSurfaces.d.ts +8 -4
  318. package/lib/typescript/module/ui/components/authChooser/requestSurfaces.d.ts.map +1 -1
  319. package/lib/typescript/module/ui/components/authChooser/types.d.ts +18 -0
  320. package/lib/typescript/module/ui/components/authChooser/types.d.ts.map +1 -1
  321. package/lib/typescript/module/ui/components/payment/types.d.ts +6 -6
  322. package/lib/typescript/module/ui/components/payment/types.d.ts.map +1 -1
  323. package/lib/typescript/module/ui/context/OxyContext.d.ts.map +1 -1
  324. package/lib/typescript/module/ui/context/commitSessionFlow.d.ts +0 -40
  325. package/lib/typescript/module/ui/context/commitSessionFlow.d.ts.map +1 -1
  326. package/lib/typescript/module/ui/context/oxyContextTypes.d.ts +4 -7
  327. package/lib/typescript/module/ui/context/oxyContextTypes.d.ts.map +1 -1
  328. package/lib/typescript/module/ui/context/useOxyAccountGraph.d.ts +0 -1
  329. package/lib/typescript/module/ui/context/useOxyAccountGraph.d.ts.map +1 -1
  330. package/lib/typescript/module/ui/hooks/queries/userCache.d.ts +2 -2
  331. package/lib/typescript/module/ui/hooks/queries/userCache.d.ts.map +1 -1
  332. package/lib/typescript/module/ui/hooks/useAssets.d.ts +1 -1
  333. package/lib/typescript/module/ui/hooks/useAssets.d.ts.map +1 -1
  334. package/lib/typescript/module/ui/hooks/useAsyncAction.d.ts +2 -2
  335. package/lib/typescript/module/ui/hooks/useAsyncAction.d.ts.map +1 -1
  336. package/lib/typescript/module/ui/hooks/useAuth.d.ts +4 -2
  337. package/lib/typescript/module/ui/hooks/useAuth.d.ts.map +1 -1
  338. package/lib/typescript/module/ui/hooks/useOnlineStatus.d.ts +3 -2
  339. package/lib/typescript/module/ui/hooks/useOnlineStatus.d.ts.map +1 -1
  340. package/lib/typescript/module/ui/hooks/useSessionManagement.d.ts.map +1 -1
  341. package/lib/typescript/module/ui/screens/FeedbackScreen.d.ts +2 -2
  342. package/lib/typescript/module/ui/screens/FeedbackScreen.d.ts.map +1 -1
  343. package/lib/typescript/module/ui/screens/FileManagementScreen.d.ts.map +1 -1
  344. package/lib/typescript/module/ui/screens/HistoryViewScreen.d.ts.map +1 -1
  345. package/lib/typescript/module/ui/screens/PrivacySettingsScreen.d.ts.map +1 -1
  346. package/lib/typescript/module/ui/screens/ProfileScreen.d.ts.map +1 -1
  347. package/lib/typescript/module/ui/screens/WelcomeNewUserScreen.d.ts.map +1 -1
  348. package/lib/typescript/module/ui/screens/fileManagement/PhotoPickerSection.d.ts.map +1 -1
  349. package/lib/typescript/module/ui/screens/trust/TrustLeaderboardScreen.d.ts.map +1 -1
  350. package/lib/typescript/module/ui/types/navigation.d.ts +20 -19
  351. package/lib/typescript/module/ui/types/navigation.d.ts.map +1 -1
  352. package/lib/typescript/module/ui/utils/fileManagement.d.ts +5 -5
  353. package/lib/typescript/module/ui/utils/fileManagement.d.ts.map +1 -1
  354. package/lib/typescript/module/ui/utils/netConnectivity.d.ts +17 -0
  355. package/lib/typescript/module/ui/utils/netConnectivity.d.ts.map +1 -0
  356. package/lib/typescript/module/ui/utils/oauthReturn.d.ts +15 -12
  357. package/lib/typescript/module/ui/utils/oauthReturn.d.ts.map +1 -1
  358. package/package.json +18 -8
  359. package/src/index.ts +32 -0
  360. package/src/notifications/deviceNotifications.ts +458 -0
  361. package/src/ui/boot/__tests__/coldBootNoIdpRedirect.test.ts +215 -0
  362. package/src/ui/boot/runProviderColdBoot.ts +24 -101
  363. package/src/ui/components/AvatarCameraBadge.tsx +1 -1
  364. package/src/ui/components/OxyAuthChooser.tsx +5 -4
  365. package/src/ui/components/OxyProvider.tsx +5 -6
  366. package/src/ui/components/OxySignInRequestSurface.tsx +202 -0
  367. package/src/ui/components/ProfileButton.tsx +1 -1
  368. package/src/ui/components/SettingsIcon.tsx +1 -1
  369. package/src/ui/components/authChooser/AccountsMenuView.tsx +1 -1
  370. package/src/ui/components/authChooser/SignInEntryView.tsx +9 -3
  371. package/src/ui/components/authChooser/SignInRequestView.tsx +78 -111
  372. package/src/ui/components/authChooser/TroubleDisclosure.tsx +3 -11
  373. package/src/ui/components/authChooser/primitives.tsx +1 -1
  374. package/src/ui/components/authChooser/requestSurfaces.tsx +15 -11
  375. package/src/ui/components/authChooser/types.ts +19 -0
  376. package/src/ui/components/fileManagement/AnimatedButton.tsx +1 -1
  377. package/src/ui/components/fileManagement/FileDetailsModal.tsx +1 -1
  378. package/src/ui/components/fileManagement/FileViewer.tsx +1 -1
  379. package/src/ui/components/fileManagement/UploadPreview.tsx +1 -1
  380. package/src/ui/components/modals/DeleteAccountModal.tsx +1 -1
  381. package/src/ui/components/payment/PaymentDetailsStep.tsx +1 -1
  382. package/src/ui/components/payment/PaymentMethodStep.tsx +1 -1
  383. package/src/ui/components/payment/PaymentReviewStep.tsx +1 -1
  384. package/src/ui/components/payment/PaymentSuccessStep.tsx +1 -1
  385. package/src/ui/components/payment/PaymentSummaryStep.tsx +1 -1
  386. package/src/ui/components/payment/types.ts +24 -24
  387. package/src/ui/components/styles/shadow.tsx +2 -2
  388. package/src/ui/context/OxyContext.tsx +15 -46
  389. package/src/ui/context/__tests__/commitSessionFlow.test.ts +0 -89
  390. package/src/ui/context/commitSessionFlow.ts +0 -61
  391. package/src/ui/context/oxyContextTypes.ts +4 -7
  392. package/src/ui/context/useOxyAccountGraph.ts +4 -4
  393. package/src/ui/hooks/queries/userCache.ts +169 -148
  394. package/src/ui/hooks/useAssets.ts +1 -1
  395. package/src/ui/hooks/useAsyncAction.ts +2 -2
  396. package/src/ui/hooks/useAuth.ts +4 -2
  397. package/src/ui/hooks/useOnlineStatus.ts +3 -2
  398. package/src/ui/hooks/useSessionManagement.ts +0 -2
  399. package/src/ui/screens/AccountMembersScreen.tsx +1 -1
  400. package/src/ui/screens/ConnectedAppsScreen.tsx +1 -1
  401. package/src/ui/screens/CreateAccountScreen.tsx +1 -1
  402. package/src/ui/screens/EditProfileFieldScreen.tsx +1 -1
  403. package/src/ui/screens/FAQScreen.tsx +1 -1
  404. package/src/ui/screens/FeedbackScreen.tsx +740 -574
  405. package/src/ui/screens/FileManagementScreen.tsx +2 -1
  406. package/src/ui/screens/HistoryViewScreen.tsx +4 -19
  407. package/src/ui/screens/LanguageSelectorScreen.tsx +1 -1
  408. package/src/ui/screens/ManageAccountScreen.tsx +1 -1
  409. package/src/ui/screens/PaymentGatewayScreen.tsx +1 -1
  410. package/src/ui/screens/PremiumSubscriptionScreen.tsx +2 -2
  411. package/src/ui/screens/PrivacySettingsScreen.tsx +1 -0
  412. package/src/ui/screens/ProfileScreen.tsx +6 -4
  413. package/src/ui/screens/UserListScreen.tsx +3 -3
  414. package/src/ui/screens/WelcomeNewUserScreen.tsx +6 -6
  415. package/src/ui/screens/fileManagement/FileLibraryError.tsx +1 -1
  416. package/src/ui/screens/fileManagement/FileListSection.tsx +1 -1
  417. package/src/ui/screens/fileManagement/PhotoPickerSection.tsx +3 -2
  418. package/src/ui/screens/fileManagement/UploadBar.tsx +1 -1
  419. package/src/ui/screens/trust/TrustCenterScreen.tsx +1 -1
  420. package/src/ui/screens/trust/TrustLeaderboardScreen.tsx +4 -3
  421. package/src/ui/screens/trust/TrustRewardsScreen.tsx +1 -1
  422. package/src/ui/types/navigation.ts +20 -19
  423. package/src/ui/utils/fileManagement.ts +108 -92
  424. package/src/ui/utils/netConnectivity.ts +27 -0
  425. package/src/ui/utils/oauthReturn.ts +15 -30
  426. package/lib/commonjs/ui/oauth/legacyRedirectLanes.js +0 -48
  427. package/lib/commonjs/ui/oauth/legacyRedirectLanes.js.map +0 -1
  428. package/lib/commonjs/ui/utils/crossOriginRestore.js +0 -140
  429. package/lib/commonjs/ui/utils/crossOriginRestore.js.map +0 -1
  430. package/lib/module/ui/oauth/legacyRedirectLanes.js +0 -44
  431. package/lib/module/ui/oauth/legacyRedirectLanes.js.map +0 -1
  432. package/lib/module/ui/utils/crossOriginRestore.js +0 -131
  433. package/lib/module/ui/utils/crossOriginRestore.js.map +0 -1
  434. package/lib/typescript/commonjs/ui/oauth/legacyRedirectLanes.d.ts +0 -40
  435. package/lib/typescript/commonjs/ui/oauth/legacyRedirectLanes.d.ts.map +0 -1
  436. package/lib/typescript/commonjs/ui/utils/crossOriginRestore.d.ts +0 -43
  437. package/lib/typescript/commonjs/ui/utils/crossOriginRestore.d.ts.map +0 -1
  438. package/lib/typescript/module/ui/oauth/legacyRedirectLanes.d.ts +0 -40
  439. package/lib/typescript/module/ui/oauth/legacyRedirectLanes.d.ts.map +0 -1
  440. package/lib/typescript/module/ui/utils/crossOriginRestore.d.ts +0 -43
  441. package/lib/typescript/module/ui/utils/crossOriginRestore.d.ts.map +0 -1
  442. package/src/ui/boot/__tests__/coldBootWebAuthMode.test.ts +0 -281
  443. package/src/ui/oauth/legacyRedirectLanes.ts +0 -43
  444. package/src/ui/utils/__tests__/crossOriginRestore.test.ts +0 -160
  445. package/src/ui/utils/crossOriginRestore.ts +0 -168
@@ -1,40 +1,33 @@
1
1
  /**
2
- * The ACTIVE REQUEST surface (`qr` view) the route Oxy chose, plus honest
3
- * progress (issue #691, Phase 5).
2
+ * The ACTIVE REQUEST surface (`qr` view) as the account dialog drives it
3
+ * `AccountDialogController`'s device flow bound to the shared, presentational
4
+ * {@link OxySignInRequestSurface} (issue #691, Phase 5).
4
5
  *
5
- * The user already performed their one action. From here the surface only
6
- * REPORTS: the route-appropriate primary visual (`RequestPrimarySurface`), the
7
- * status line derived from the controller's real signals
8
- * (`signInProgressLabel`), and nothing else at the same weight. Alternatives
9
- * stay behind "Having trouble?" until `signIn.routeFailed` says the chosen route
10
- * could not be carried out — the controller never silently cascades, so
11
- * revealing them is this view's decision and this view's alone.
6
+ * This module owns WIRING only. Every pixel comes from the shared surface, which
7
+ * the auth.oxy.so IdP mounts from its own OAuth-bound request; there is one
8
+ * implementation of the request presentation, not two. What lives here is what
9
+ * only the account dialog knows:
12
10
  *
13
- * Two surfaces take over when there is no working primary route to report on:
14
- * - a FAILED request, whose reason is toasted by the container (never inline),
15
- * leaves "Try again" as the primary action with the alternatives revealed;
16
- * - a native device with NO Commons installed, where a same-device QR would be
17
- * a dead end. There, "Get Commons" is the genuine primary route not a
18
- * fallback so it renders as the one primary action and the QR handoff moves
19
- * behind the disclosure ("I have Commons on another device").
11
+ * - which of the controller's facts map onto the surface's props;
12
+ * - which alternatives are genuine ones for the CURRENT presentation (the
13
+ * passkey ceremony is pointless once the request is already being confirmed,
14
+ * and a QR link is redundant while the QR itself is the primary visual);
15
+ * - the one piece of local intent the controller has no opinion on: leaving the
16
+ * acquisition surface via "I have Commons on another device".
17
+ *
18
+ * Failures are NOT rendered here. The container toasts them at the point they
19
+ * arrive (owner mandate: no error renders inline inside the dialog); this view
20
+ * only reports that the request failed, so the surface can offer "Try again".
20
21
  */
21
22
 
22
23
  import type React from 'react';
23
24
  import { useState } from 'react';
24
- import { View } from 'react-native';
25
- import { Button } from '@oxyhq/bloom/button';
26
- import { Text } from '@oxyhq/bloom/typography';
27
25
  import type { AccountDialogSnapshot } from '@oxyhq/core';
28
- import TroubleDisclosure, { type TroubleAction } from './TroubleDisclosure';
29
- import { SubtleLink } from './primitives';
30
- import { GetCommonsPrompt, RequestPrimarySurface } from './requestSurfaces';
31
- import { signInProgressLabel } from './signInProgress';
32
- import { authChooserStyles as styles } from './styles';
33
- import type { SignInAlternatives, Theme, Translate } from './types';
26
+ import OxySignInRequestSurface from '../OxySignInRequestSurface';
27
+ import type { OxySignInSurfaceAction, SignInAlternatives, Translate } from './types';
34
28
 
35
29
  interface SignInRequestViewProps {
36
30
  snapshot: AccountDialogSnapshot;
37
- theme: Theme;
38
31
  t: Translate;
39
32
  /** Restart the request after a failure. */
40
33
  onRetry: () => void;
@@ -43,7 +36,6 @@ interface SignInRequestViewProps {
43
36
 
44
37
  const SignInRequestView: React.FC<SignInRequestViewProps> = ({
45
38
  snapshot,
46
- theme,
47
39
  t,
48
40
  onRetry,
49
41
  alternatives,
@@ -53,10 +45,15 @@ const SignInRequestView: React.FC<SignInRequestViewProps> = ({
53
45
  // an explicit user choice to leave the acquisition surface, never inferred.
54
46
  const [qrRequested, setQrRequested] = useState(false);
55
47
 
48
+ const failed = signIn.phase === 'error';
49
+ // A same-device QR is a dead end without Commons, so the acquisition surface
50
+ // leads — until the user explicitly asks for the QR anyway.
51
+ const acquiring = !failed && commonsAvailability === 'unavailable' && !qrRequested;
52
+
56
53
  // A ceremony is pointless once the request is already being confirmed, and a
57
54
  // ceremony FAILURE is toasted by the container — this link never renders an
58
55
  // error of its own (owner mandate).
59
- const passkeyAction: TroubleAction[] =
56
+ const passkeyAction: OxySignInSurfaceAction[] =
60
57
  alternatives.passkeyAvailable && signIn.phase !== 'authorized' && signIn.phase !== 'completed'
61
58
  ? [
62
59
  {
@@ -70,93 +67,63 @@ const SignInRequestView: React.FC<SignInRequestViewProps> = ({
70
67
  ]
71
68
  : [];
72
69
 
73
- const signUpLink = (
74
- // Account CREATION is not an authentication method, and on web this surface
75
- // is the FIRST one a signed-out user sees (the entry auto-starts straight
76
- // through it) so the way in for someone with no Oxy ID stays visible as a
77
- // subordinate link rather than hiding behind a troubleshooting affordance.
78
- <SubtleLink
79
- label={t('signin.createAccountLink')}
80
- theme={theme}
81
- onPress={alternatives.onCreateAccount}
82
- testID="create-account-link"
83
- />
84
- );
85
-
86
- if (signIn.phase === 'error') {
87
- return (
88
- <View style={styles.centeredBlock}>
89
- <Button variant="primary" onPress={onRetry} style={styles.primaryButton}>
90
- {t('common.actions.tryAgain')}
91
- </Button>
92
- {signUpLink}
93
- <TroubleDisclosure actions={passkeyAction} revealed theme={theme} t={t} />
94
- </View>
95
- );
96
- }
97
-
98
- if (commonsAvailability === 'unavailable' && !qrRequested) {
99
- return (
100
- <View style={styles.centeredBlock}>
101
- <GetCommonsPrompt theme={theme} t={t} onGetCommons={alternatives.onGetCommons} />
102
- {signUpLink}
103
- <TroubleDisclosure
104
- actions={[
70
+ const troubleActions = ((): OxySignInSurfaceAction[] => {
71
+ // Nothing about the chosen route is actionable any more only the
72
+ // authentication alternatives are.
73
+ if (failed) return passkeyAction;
74
+ if (acquiring) {
75
+ return [
76
+ {
77
+ key: 'show-qr-anyway-link',
78
+ label: t('accountSwitcher.showQrAnyway'),
79
+ onPress: () => setQrRequested(true),
80
+ },
81
+ ...passkeyAction,
82
+ ];
83
+ }
84
+ return [
85
+ // Redundant while the QR already IS the primary surface.
86
+ ...(signIn.route === 'qr'
87
+ ? []
88
+ : [
105
89
  {
106
- key: 'show-qr-anyway-link',
107
- label: t('accountSwitcher.showQrAnyway'),
108
- onPress: () => setQrRequested(true),
90
+ key: 'scan-qr-link',
91
+ label: t('accountSwitcher.scanQr'),
92
+ onPress: alternatives.onShowQr,
109
93
  },
110
- ...passkeyAction,
111
- ]}
112
- revealed={false}
113
- theme={theme}
114
- t={t}
115
- />
116
- </View>
117
- );
118
- }
119
-
120
- const status = signInProgressLabel(signIn.progress, signIn.route, t);
121
- const troubleActions: TroubleAction[] = [
122
- // Redundant while the QR already IS the primary surface.
123
- ...(signIn.route === 'qr'
124
- ? []
125
- : [
126
- {
127
- key: 'scan-qr-link',
128
- label: t('accountSwitcher.scanQr'),
129
- onPress: alternatives.onShowQr,
130
- },
131
- ]),
132
- ...passkeyAction,
133
- {
134
- key: 'get-commons-link',
135
- label: t('accountSwitcher.getCommons'),
136
- onPress: alternatives.onGetCommons,
137
- },
138
- ];
94
+ ]),
95
+ ...passkeyAction,
96
+ {
97
+ key: 'get-commons-link',
98
+ label: t('accountSwitcher.getCommons'),
99
+ onPress: alternatives.onGetCommons,
100
+ },
101
+ ];
102
+ })();
139
103
 
140
104
  return (
141
- <View style={styles.centeredBlock}>
142
- <RequestPrimarySurface signIn={signIn} theme={theme} t={t} />
143
- {status ? (
144
- <Text
145
- style={[styles.mutedText, { color: theme.colors.textSecondary }]}
146
- accessibilityLiveRegion="polite"
147
- testID="signin-progress"
148
- >
149
- {status}
150
- </Text>
151
- ) : null}
152
- {signUpLink}
153
- <TroubleDisclosure
154
- actions={troubleActions}
155
- revealed={signIn.routeFailed}
156
- theme={theme}
157
- t={t}
158
- />
159
- </View>
105
+ <OxySignInRequestSurface
106
+ route={signIn.route}
107
+ progress={signIn.progress}
108
+ qrPayload={signIn.qrPayload}
109
+ routeFailed={signIn.routeFailed}
110
+ failed={failed}
111
+ onRetry={onRetry}
112
+ onAcquireCommons={acquiring ? alternatives.onGetCommons : undefined}
113
+ subordinate={[
114
+ // Account CREATION is not an authentication method, and on web this
115
+ // surface is the FIRST one a signed-out user sees (the entry auto-starts
116
+ // straight through it) — so the way in for someone with no Oxy ID stays
117
+ // visible as a subordinate link rather than hiding behind a
118
+ // troubleshooting affordance.
119
+ {
120
+ key: 'create-account-link',
121
+ label: t('signin.createAccountLink'),
122
+ onPress: alternatives.onCreateAccount,
123
+ },
124
+ ]}
125
+ alternatives={troubleActions}
126
+ />
160
127
  );
161
128
  };
162
129
 
@@ -23,19 +23,11 @@ import { View } from 'react-native';
23
23
  import { Collapsible } from '@oxyhq/bloom/collapsible';
24
24
  import { SubtleLink } from './primitives';
25
25
  import { authChooserStyles as styles } from './styles';
26
- import type { Theme, Translate } from './types';
27
-
28
- /** One alternative route out of the current surface. Always a subordinate link. */
29
- export interface TroubleAction {
30
- /** Stable identity for the list, and the action's `testID`. */
31
- key: string;
32
- label: string;
33
- onPress: () => void;
34
- disabled?: boolean;
35
- }
26
+ import type { OxySignInSurfaceAction, Theme, Translate } from './types';
36
27
 
37
28
  interface TroubleDisclosureProps {
38
- actions: TroubleAction[];
29
+ /** The alternative routes out of the current surface. Always subordinate links. */
30
+ actions: readonly OxySignInSurfaceAction[];
39
31
  /**
40
32
  * `true` when the primary route could not be carried out (`signIn.routeFailed`)
41
33
  * or the surface has no working primary at all (a failed request). The
@@ -7,7 +7,7 @@
7
7
  import type React from 'react';
8
8
  import { useState } from 'react';
9
9
  import { Pressable, View } from 'react-native';
10
- import { MaterialCommunityIcons } from '@expo/vector-icons';
10
+ import MaterialCommunityIcons from '@expo/vector-icons/MaterialCommunityIcons';
11
11
  import { Avatar } from '@oxyhq/bloom/avatar';
12
12
  import { Text } from '@oxyhq/bloom/typography';
13
13
  import { BloomColorScope } from '@oxyhq/bloom/theme';
@@ -14,12 +14,12 @@
14
14
 
15
15
  import type React from 'react';
16
16
  import { View } from 'react-native';
17
- import { MaterialCommunityIcons } from '@expo/vector-icons';
17
+ import MaterialCommunityIcons from '@expo/vector-icons/MaterialCommunityIcons';
18
18
  import QRCode from 'react-native-qrcode-svg';
19
19
  import { Button } from '@oxyhq/bloom/button';
20
20
  import { Loading } from '@oxyhq/bloom/loading';
21
21
  import { Text } from '@oxyhq/bloom/typography';
22
- import type { SignInFlowState } from '@oxyhq/core';
22
+ import type { CommonsDeliveryRoute, SignInProgress } from '@oxyhq/core';
23
23
  import { authChooserStyles as styles } from './styles';
24
24
  import type { Theme, Translate } from './types';
25
25
 
@@ -88,26 +88,30 @@ export const GetCommonsPrompt: React.FC<{
88
88
  *
89
89
  * Ordered most-terminal-first, so a late-arriving route can never pull the
90
90
  * surface back from "confirming" to a QR the user has already scanned. Every
91
- * branch reads only controller facts — there is no local timeline.
91
+ * branch reads only the facts it is handed — there is no local timeline, and no
92
+ * dependency on WHICH kind of request produced them (the account dialog's device
93
+ * flow and the IdP's OAuth-bound lane both resolve the same three).
92
94
  */
93
95
  export const RequestPrimarySurface: React.FC<{
94
- signIn: SignInFlowState;
96
+ route: CommonsDeliveryRoute | null;
97
+ progress: SignInProgress;
98
+ qrPayload: string | null;
95
99
  theme: Theme;
96
100
  t: Translate;
97
- }> = ({ signIn, theme, t }) => {
98
- if (signIn.progress === 'identity-confirmed') {
101
+ }> = ({ route, progress, qrPayload, theme, t }) => {
102
+ if (progress === 'identity-confirmed') {
99
103
  return <RouteGlyph name="check-circle" color={theme.colors.success} />;
100
104
  }
101
- if (signIn.progress === 'confirming-identity') {
105
+ if (progress === 'confirming-identity') {
102
106
  return <PreparingSurface />;
103
107
  }
104
- if (signIn.route === 'qr' && signIn.qrPayload) {
105
- return <QrPlate payload={signIn.qrPayload} theme={theme} t={t} />;
108
+ if (route === 'qr' && qrPayload) {
109
+ return <QrPlate payload={qrPayload} theme={theme} t={t} />;
106
110
  }
107
- if (signIn.route === 'await-push') {
111
+ if (route === 'await-push') {
108
112
  return <RouteGlyph name="cellphone-message" color={theme.colors.primary} />;
109
113
  }
110
- if (signIn.route === 'open-commons') {
114
+ if (route === 'open-commons') {
111
115
  return <RouteGlyph name="open-in-app" color={theme.colors.primary} />;
112
116
  }
113
117
  // No route resolved yet (or a route with no payload to render): the request is
@@ -13,6 +13,25 @@ import type { useI18n } from '../../hooks/useI18n';
13
13
  export type Theme = ReturnType<typeof useTheme>;
14
14
  export type Translate = ReturnType<typeof useI18n>['t'];
15
15
 
16
+ /**
17
+ * One SUBORDINATE action on a sign-in surface — an alternative revealed behind
18
+ * "Having trouble?", or a non-competing link under the primary.
19
+ *
20
+ * Never a primary button: a sign-in surface presents exactly ONE of those (issue
21
+ * #691), and keeping every other affordance on this single shape is what stops
22
+ * one of them quietly growing into a co-equal button again.
23
+ *
24
+ * Part of the public SDK surface — `OxySignInRequestSurface` takes these.
25
+ */
26
+ export interface OxySignInSurfaceAction {
27
+ /** Stable identity for the list, and the action's `testID`. */
28
+ key: string;
29
+ /** Already-localized label. The host resolves its own copy. */
30
+ label: string;
31
+ onPress: () => void;
32
+ disabled?: boolean;
33
+ }
34
+
16
35
  /** The account-row actions the container wires for the switcher + menu views. */
17
36
  export interface OxyAuthChooserHandlers {
18
37
  onSwitch: (accountId: string) => void;
@@ -1,7 +1,7 @@
1
1
  import type React from 'react';
2
2
  import { useEffect, useRef } from 'react';
3
3
  import { TouchableOpacity, Animated, Easing } from 'react-native';
4
- import { MaterialCommunityIcons } from '@expo/vector-icons';
4
+ import MaterialCommunityIcons from '@expo/vector-icons/MaterialCommunityIcons';
5
5
 
6
6
  interface AnimatedButtonProps {
7
7
  isSelected: boolean;
@@ -1,6 +1,6 @@
1
1
  import type React from 'react';
2
2
  import { View, Text } from 'react-native';
3
- import { Ionicons } from '@expo/vector-icons';
3
+ import Ionicons from '@expo/vector-icons/Ionicons';
4
4
  import { Button } from '@oxyhq/bloom/button';
5
5
  import { useTheme } from '@oxyhq/bloom/theme';
6
6
  import { surfaces, type SurfaceControls } from '@oxyhq/bloom/surfaces';
@@ -2,7 +2,7 @@ import type React from 'react';
2
2
  import { useMemo, useState, useEffect } from 'react';
3
3
  import { View, Text, TouchableOpacity, ScrollView, ActivityIndicator, Image, StyleSheet } from 'react-native';
4
4
  import { Image as ExpoImage } from 'expo-image';
5
- import { MaterialCommunityIcons } from '@expo/vector-icons';
5
+ import MaterialCommunityIcons from '@expo/vector-icons/MaterialCommunityIcons';
6
6
  import { useTheme } from '@oxyhq/bloom/theme';
7
7
  import type { FileMetadata } from '@oxyhq/core';
8
8
  import { formatFileSize } from '../../utils/fileManagement';
@@ -1,7 +1,7 @@
1
1
  import type React from 'react';
2
2
  import { View, Text, TouchableOpacity, ScrollView, StyleSheet } from 'react-native';
3
3
  import { Image as ExpoImage } from 'expo-image';
4
- import { Ionicons } from '@expo/vector-icons';
4
+ import Ionicons from '@expo/vector-icons/Ionicons';
5
5
  import { Dialog, type DialogControlProps } from '@oxyhq/bloom';
6
6
  import { useTheme } from '@oxyhq/bloom/theme';
7
7
  import { formatFileSize, getFileIcon } from '../../utils/fileManagement';
@@ -1,7 +1,7 @@
1
1
  import type React from 'react';
2
2
  import { useState, useCallback } from 'react';
3
3
  import { View, Text, TextInput } from 'react-native';
4
- import { Ionicons } from '@expo/vector-icons';
4
+ import Ionicons from '@expo/vector-icons/Ionicons';
5
5
  import { Button } from '@oxyhq/bloom/button';
6
6
  import { useTheme } from '@oxyhq/bloom/theme';
7
7
  import { surfaces, type SurfaceControls } from '@oxyhq/bloom/surfaces';
@@ -1,7 +1,7 @@
1
1
  import type React from 'react';
2
2
  import { useMemo } from 'react';
3
3
  import { View, Text, Animated, TouchableOpacity, Clipboard, Linking } from 'react-native';
4
- import { Ionicons } from '@expo/vector-icons';
4
+ import Ionicons from '@expo/vector-icons/Ionicons';
5
5
  import { Button } from '@oxyhq/bloom/button';
6
6
  import { TextField, TextFieldInput } from '@oxyhq/bloom/text-field';
7
7
  import FAIRWalletIcon from '../icon/FAIRWalletIcon';
@@ -1,7 +1,7 @@
1
1
  import type React from 'react';
2
2
  import { useMemo } from 'react';
3
3
  import { View, Text, Animated } from 'react-native';
4
- import { Ionicons } from '@expo/vector-icons';
4
+ import Ionicons from '@expo/vector-icons/Ionicons';
5
5
  import { SettingsListGroup, SettingsListItem } from '@oxyhq/bloom/settings-list';
6
6
  import { Button } from '@oxyhq/bloom/button';
7
7
  import FAIRWalletIcon from '../icon/FAIRWalletIcon';
@@ -1,7 +1,7 @@
1
1
  import type React from 'react';
2
2
  import { useMemo } from 'react';
3
3
  import { View, Text, Animated, ActivityIndicator } from 'react-native';
4
- import { Ionicons } from '@expo/vector-icons';
4
+ import Ionicons from '@expo/vector-icons/Ionicons';
5
5
  import { SettingsListGroup, SettingsListItem } from '@oxyhq/bloom/settings-list';
6
6
  import { Button } from '@oxyhq/bloom/button';
7
7
  import { createPaymentStyles } from './paymentStyles';
@@ -1,7 +1,7 @@
1
1
  import type React from 'react';
2
2
  import { useMemo } from 'react';
3
3
  import { View, Text, Animated } from 'react-native';
4
- import { Ionicons } from '@expo/vector-icons';
4
+ import Ionicons from '@expo/vector-icons/Ionicons';
5
5
  import { Button } from '@oxyhq/bloom/button';
6
6
  import { createPaymentStyles } from './paymentStyles';
7
7
  import type { PaymentColors, PaymentStepAnimations } from './types';
@@ -2,7 +2,7 @@ import type React from 'react';
2
2
  import type { ComponentProps } from 'react';
3
3
  import { useMemo } from 'react';
4
4
  import { View, Text, Animated } from 'react-native';
5
- import { Ionicons } from '@expo/vector-icons';
5
+ import Ionicons from '@expo/vector-icons/Ionicons';
6
6
  import { SettingsListGroup, SettingsListItem } from '@oxyhq/bloom/settings-list';
7
7
  import { Button } from '@oxyhq/bloom/button';
8
8
  import { createPaymentStyles } from './paymentStyles';
@@ -1,41 +1,41 @@
1
- import type React from 'react';
2
- import type { Animated } from 'react-native';
3
- import type { Ionicons } from '@expo/vector-icons';
4
- import type { ThemeColors } from '@oxyhq/bloom/theme';
1
+ import type Ionicons from "@expo/vector-icons/Ionicons";
2
+ import type { ThemeColors } from "@oxyhq/bloom/theme";
3
+ import type React from "react";
4
+ import type { Animated } from "react-native";
5
5
 
6
6
  export type PaymentItem = {
7
- type: 'product' | 'subscription' | 'service' | 'fee' | string;
8
- name: string;
9
- description?: string;
10
- quantity?: number;
11
- period?: string;
12
- price: number;
13
- currency?: string;
7
+ type: "product" | "subscription" | "service" | "fee" | string;
8
+ name: string;
9
+ description?: string;
10
+ quantity?: number;
11
+ period?: string;
12
+ price: number;
13
+ currency?: string;
14
14
  };
15
15
 
16
16
  export interface PaymentGatewayResult {
17
- success: boolean;
18
- details?: Record<string, string | number | boolean | null>;
19
- error?: string;
17
+ success: boolean;
18
+ details?: Record<string, string | number | boolean | null>;
19
+ error?: string;
20
20
  }
21
21
 
22
22
  export interface CardDetails {
23
- number: string;
24
- expiry: string;
25
- cvv: string;
23
+ number: string;
24
+ expiry: string;
25
+ cvv: string;
26
26
  }
27
27
 
28
28
  export interface PaymentMethod {
29
- key: string;
30
- label: string;
31
- icon: React.ComponentProps<typeof Ionicons>['name'];
32
- description: string;
29
+ key: string;
30
+ label: string;
31
+ icon: React.ComponentProps<typeof Ionicons>["name"];
32
+ description: string;
33
33
  }
34
34
 
35
35
  export interface PaymentStepAnimations {
36
- fadeAnim: Animated.Value;
37
- slideAnim: Animated.Value;
38
- scaleAnim: Animated.Value;
36
+ fadeAnim: Animated.Value;
37
+ slideAnim: Animated.Value;
38
+ scaleAnim: Animated.Value;
39
39
  }
40
40
 
41
41
  /**
@@ -48,8 +48,8 @@ function v2Shadow(elevation: number | Animated.Value = 0): ViewStyle | ShadowSty
48
48
  return {};
49
49
  }
50
50
 
51
- let height;
52
- let radius;
51
+ let height: number;
52
+ let radius: number;
53
53
  switch (elevation) {
54
54
  case 1:
55
55
  height = 0.5;