@oxyhq/services 22.13.1 → 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 (377) hide show
  1. package/README.md +1 -1
  2. package/lib/commonjs/ui/boot/runProviderColdBoot.js +20 -64
  3. package/lib/commonjs/ui/boot/runProviderColdBoot.js.map +1 -1
  4. package/lib/commonjs/ui/components/AvatarCameraBadge.js +3 -2
  5. package/lib/commonjs/ui/components/AvatarCameraBadge.js.map +1 -1
  6. package/lib/commonjs/ui/components/OxyProvider.js +5 -6
  7. package/lib/commonjs/ui/components/OxyProvider.js.map +1 -1
  8. package/lib/commonjs/ui/components/ProfileButton.js +4 -3
  9. package/lib/commonjs/ui/components/ProfileButton.js.map +1 -1
  10. package/lib/commonjs/ui/components/SettingsIcon.js +3 -2
  11. package/lib/commonjs/ui/components/SettingsIcon.js.map +1 -1
  12. package/lib/commonjs/ui/components/authChooser/AccountsMenuView.js +7 -7
  13. package/lib/commonjs/ui/components/authChooser/AccountsMenuView.js.map +1 -1
  14. package/lib/commonjs/ui/components/authChooser/primitives.js +5 -4
  15. package/lib/commonjs/ui/components/authChooser/primitives.js.map +1 -1
  16. package/lib/commonjs/ui/components/authChooser/requestSurfaces.js +2 -2
  17. package/lib/commonjs/ui/components/authChooser/requestSurfaces.js.map +1 -1
  18. package/lib/commonjs/ui/components/fileManagement/AnimatedButton.js +3 -2
  19. package/lib/commonjs/ui/components/fileManagement/AnimatedButton.js.map +1 -1
  20. package/lib/commonjs/ui/components/fileManagement/FileDetailsModal.js +3 -2
  21. package/lib/commonjs/ui/components/fileManagement/FileDetailsModal.js.map +1 -1
  22. package/lib/commonjs/ui/components/fileManagement/FileViewer.js +15 -14
  23. package/lib/commonjs/ui/components/fileManagement/FileViewer.js.map +1 -1
  24. package/lib/commonjs/ui/components/fileManagement/UploadPreview.js +6 -5
  25. package/lib/commonjs/ui/components/fileManagement/UploadPreview.js.map +1 -1
  26. package/lib/commonjs/ui/components/modals/DeleteAccountModal.js +3 -2
  27. package/lib/commonjs/ui/components/modals/DeleteAccountModal.js.map +1 -1
  28. package/lib/commonjs/ui/components/payment/PaymentDetailsStep.js +6 -6
  29. package/lib/commonjs/ui/components/payment/PaymentDetailsStep.js.map +1 -1
  30. package/lib/commonjs/ui/components/payment/PaymentMethodStep.js +5 -5
  31. package/lib/commonjs/ui/components/payment/PaymentMethodStep.js.map +1 -1
  32. package/lib/commonjs/ui/components/payment/PaymentReviewStep.js +10 -9
  33. package/lib/commonjs/ui/components/payment/PaymentReviewStep.js.map +1 -1
  34. package/lib/commonjs/ui/components/payment/PaymentSuccessStep.js +4 -3
  35. package/lib/commonjs/ui/components/payment/PaymentSuccessStep.js.map +1 -1
  36. package/lib/commonjs/ui/components/payment/PaymentSummaryStep.js +6 -5
  37. package/lib/commonjs/ui/components/payment/PaymentSummaryStep.js.map +1 -1
  38. package/lib/commonjs/ui/components/styles/shadow.js.map +1 -1
  39. package/lib/commonjs/ui/context/OxyContext.js +14 -45
  40. package/lib/commonjs/ui/context/OxyContext.js.map +1 -1
  41. package/lib/commonjs/ui/context/commitSessionFlow.js +0 -43
  42. package/lib/commonjs/ui/context/commitSessionFlow.js.map +1 -1
  43. package/lib/commonjs/ui/context/useOxyAccountGraph.js +3 -4
  44. package/lib/commonjs/ui/context/useOxyAccountGraph.js.map +1 -1
  45. package/lib/commonjs/ui/hooks/queries/userCache.js +17 -17
  46. package/lib/commonjs/ui/hooks/queries/userCache.js.map +1 -1
  47. package/lib/commonjs/ui/hooks/useAssets.js.map +1 -1
  48. package/lib/commonjs/ui/hooks/useAuth.js +4 -2
  49. package/lib/commonjs/ui/hooks/useAuth.js.map +1 -1
  50. package/lib/commonjs/ui/hooks/useOnlineStatus.js +3 -2
  51. package/lib/commonjs/ui/hooks/useOnlineStatus.js.map +1 -1
  52. package/lib/commonjs/ui/hooks/useSessionManagement.js +0 -2
  53. package/lib/commonjs/ui/hooks/useSessionManagement.js.map +1 -1
  54. package/lib/commonjs/ui/screens/AccountMembersScreen.js +4 -3
  55. package/lib/commonjs/ui/screens/AccountMembersScreen.js.map +1 -1
  56. package/lib/commonjs/ui/screens/ConnectedAppsScreen.js +1 -1
  57. package/lib/commonjs/ui/screens/ConnectedAppsScreen.js.map +1 -1
  58. package/lib/commonjs/ui/screens/CreateAccountScreen.js +7 -6
  59. package/lib/commonjs/ui/screens/CreateAccountScreen.js.map +1 -1
  60. package/lib/commonjs/ui/screens/EditProfileFieldScreen.js +4 -3
  61. package/lib/commonjs/ui/screens/EditProfileFieldScreen.js.map +1 -1
  62. package/lib/commonjs/ui/screens/FAQScreen.js +3 -2
  63. package/lib/commonjs/ui/screens/FAQScreen.js.map +1 -1
  64. package/lib/commonjs/ui/screens/FeedbackScreen.js +96 -96
  65. package/lib/commonjs/ui/screens/FeedbackScreen.js.map +1 -1
  66. package/lib/commonjs/ui/screens/FileManagementScreen.js +19 -18
  67. package/lib/commonjs/ui/screens/FileManagementScreen.js.map +1 -1
  68. package/lib/commonjs/ui/screens/HistoryViewScreen.js +4 -29
  69. package/lib/commonjs/ui/screens/HistoryViewScreen.js.map +1 -1
  70. package/lib/commonjs/ui/screens/LanguageSelectorScreen.js +4 -3
  71. package/lib/commonjs/ui/screens/LanguageSelectorScreen.js.map +1 -1
  72. package/lib/commonjs/ui/screens/ManageAccountScreen.js +2 -2
  73. package/lib/commonjs/ui/screens/ManageAccountScreen.js.map +1 -1
  74. package/lib/commonjs/ui/screens/PaymentGatewayScreen.js +3 -3
  75. package/lib/commonjs/ui/screens/PaymentGatewayScreen.js.map +1 -1
  76. package/lib/commonjs/ui/screens/PremiumSubscriptionScreen.js +10 -9
  77. package/lib/commonjs/ui/screens/PremiumSubscriptionScreen.js.map +1 -1
  78. package/lib/commonjs/ui/screens/PrivacySettingsScreen.js +1 -0
  79. package/lib/commonjs/ui/screens/PrivacySettingsScreen.js.map +1 -1
  80. package/lib/commonjs/ui/screens/ProfileScreen.js +12 -13
  81. package/lib/commonjs/ui/screens/ProfileScreen.js.map +1 -1
  82. package/lib/commonjs/ui/screens/UserListScreen.js +4 -4
  83. package/lib/commonjs/ui/screens/UserListScreen.js.map +1 -1
  84. package/lib/commonjs/ui/screens/WelcomeNewUserScreen.js +6 -6
  85. package/lib/commonjs/ui/screens/WelcomeNewUserScreen.js.map +1 -1
  86. package/lib/commonjs/ui/screens/fileManagement/FileLibraryError.js +4 -3
  87. package/lib/commonjs/ui/screens/fileManagement/FileLibraryError.js.map +1 -1
  88. package/lib/commonjs/ui/screens/fileManagement/FileListSection.js +4 -3
  89. package/lib/commonjs/ui/screens/fileManagement/FileListSection.js.map +1 -1
  90. package/lib/commonjs/ui/screens/fileManagement/PhotoPickerSection.js +5 -7
  91. package/lib/commonjs/ui/screens/fileManagement/PhotoPickerSection.js.map +1 -1
  92. package/lib/commonjs/ui/screens/fileManagement/UploadBar.js +3 -2
  93. package/lib/commonjs/ui/screens/fileManagement/UploadBar.js.map +1 -1
  94. package/lib/commonjs/ui/screens/trust/TrustCenterScreen.js +3 -2
  95. package/lib/commonjs/ui/screens/trust/TrustCenterScreen.js.map +1 -1
  96. package/lib/commonjs/ui/screens/trust/TrustLeaderboardScreen.js +5 -4
  97. package/lib/commonjs/ui/screens/trust/TrustLeaderboardScreen.js.map +1 -1
  98. package/lib/commonjs/ui/screens/trust/TrustRewardsScreen.js +4 -3
  99. package/lib/commonjs/ui/screens/trust/TrustRewardsScreen.js.map +1 -1
  100. package/lib/commonjs/ui/utils/fileManagement.js +24 -24
  101. package/lib/commonjs/ui/utils/fileManagement.js.map +1 -1
  102. package/lib/commonjs/ui/utils/netConnectivity.js +28 -0
  103. package/lib/commonjs/ui/utils/netConnectivity.js.map +1 -0
  104. package/lib/commonjs/ui/utils/oauthReturn.js +15 -28
  105. package/lib/commonjs/ui/utils/oauthReturn.js.map +1 -1
  106. package/lib/module/ui/boot/runProviderColdBoot.js +21 -65
  107. package/lib/module/ui/boot/runProviderColdBoot.js.map +1 -1
  108. package/lib/module/ui/components/AvatarCameraBadge.js +1 -1
  109. package/lib/module/ui/components/AvatarCameraBadge.js.map +1 -1
  110. package/lib/module/ui/components/OxyProvider.js +5 -6
  111. package/lib/module/ui/components/OxyProvider.js.map +1 -1
  112. package/lib/module/ui/components/ProfileButton.js +1 -1
  113. package/lib/module/ui/components/ProfileButton.js.map +1 -1
  114. package/lib/module/ui/components/SettingsIcon.js +1 -1
  115. package/lib/module/ui/components/SettingsIcon.js.map +1 -1
  116. package/lib/module/ui/components/authChooser/AccountsMenuView.js +1 -1
  117. package/lib/module/ui/components/authChooser/AccountsMenuView.js.map +1 -1
  118. package/lib/module/ui/components/authChooser/primitives.js +1 -1
  119. package/lib/module/ui/components/authChooser/primitives.js.map +1 -1
  120. package/lib/module/ui/components/authChooser/requestSurfaces.js +1 -1
  121. package/lib/module/ui/components/authChooser/requestSurfaces.js.map +1 -1
  122. package/lib/module/ui/components/fileManagement/AnimatedButton.js +1 -1
  123. package/lib/module/ui/components/fileManagement/AnimatedButton.js.map +1 -1
  124. package/lib/module/ui/components/fileManagement/FileDetailsModal.js +1 -1
  125. package/lib/module/ui/components/fileManagement/FileDetailsModal.js.map +1 -1
  126. package/lib/module/ui/components/fileManagement/FileViewer.js +1 -1
  127. package/lib/module/ui/components/fileManagement/FileViewer.js.map +1 -1
  128. package/lib/module/ui/components/fileManagement/UploadPreview.js +1 -1
  129. package/lib/module/ui/components/fileManagement/UploadPreview.js.map +1 -1
  130. package/lib/module/ui/components/modals/DeleteAccountModal.js +1 -1
  131. package/lib/module/ui/components/modals/DeleteAccountModal.js.map +1 -1
  132. package/lib/module/ui/components/payment/PaymentDetailsStep.js +1 -1
  133. package/lib/module/ui/components/payment/PaymentDetailsStep.js.map +1 -1
  134. package/lib/module/ui/components/payment/PaymentMethodStep.js +1 -1
  135. package/lib/module/ui/components/payment/PaymentMethodStep.js.map +1 -1
  136. package/lib/module/ui/components/payment/PaymentReviewStep.js +1 -1
  137. package/lib/module/ui/components/payment/PaymentReviewStep.js.map +1 -1
  138. package/lib/module/ui/components/payment/PaymentSuccessStep.js +1 -1
  139. package/lib/module/ui/components/payment/PaymentSuccessStep.js.map +1 -1
  140. package/lib/module/ui/components/payment/PaymentSummaryStep.js +1 -1
  141. package/lib/module/ui/components/payment/PaymentSummaryStep.js.map +1 -1
  142. package/lib/module/ui/components/styles/shadow.js.map +1 -1
  143. package/lib/module/ui/context/OxyContext.js +16 -47
  144. package/lib/module/ui/context/OxyContext.js.map +1 -1
  145. package/lib/module/ui/context/commitSessionFlow.js +0 -42
  146. package/lib/module/ui/context/commitSessionFlow.js.map +1 -1
  147. package/lib/module/ui/context/useOxyAccountGraph.js +3 -4
  148. package/lib/module/ui/context/useOxyAccountGraph.js.map +1 -1
  149. package/lib/module/ui/hooks/queries/userCache.js +17 -17
  150. package/lib/module/ui/hooks/queries/userCache.js.map +1 -1
  151. package/lib/module/ui/hooks/useAssets.js.map +1 -1
  152. package/lib/module/ui/hooks/useAuth.js +4 -2
  153. package/lib/module/ui/hooks/useAuth.js.map +1 -1
  154. package/lib/module/ui/hooks/useOnlineStatus.js +3 -2
  155. package/lib/module/ui/hooks/useOnlineStatus.js.map +1 -1
  156. package/lib/module/ui/hooks/useSessionManagement.js +0 -2
  157. package/lib/module/ui/hooks/useSessionManagement.js.map +1 -1
  158. package/lib/module/ui/screens/AccountMembersScreen.js +1 -1
  159. package/lib/module/ui/screens/AccountMembersScreen.js.map +1 -1
  160. package/lib/module/ui/screens/ConnectedAppsScreen.js +1 -1
  161. package/lib/module/ui/screens/ConnectedAppsScreen.js.map +1 -1
  162. package/lib/module/ui/screens/CreateAccountScreen.js +1 -1
  163. package/lib/module/ui/screens/CreateAccountScreen.js.map +1 -1
  164. package/lib/module/ui/screens/EditProfileFieldScreen.js +1 -1
  165. package/lib/module/ui/screens/EditProfileFieldScreen.js.map +1 -1
  166. package/lib/module/ui/screens/FAQScreen.js +1 -1
  167. package/lib/module/ui/screens/FAQScreen.js.map +1 -1
  168. package/lib/module/ui/screens/FeedbackScreen.js +91 -90
  169. package/lib/module/ui/screens/FeedbackScreen.js.map +1 -1
  170. package/lib/module/ui/screens/FileManagementScreen.js +2 -1
  171. package/lib/module/ui/screens/FileManagementScreen.js.map +1 -1
  172. package/lib/module/ui/screens/HistoryViewScreen.js +4 -29
  173. package/lib/module/ui/screens/HistoryViewScreen.js.map +1 -1
  174. package/lib/module/ui/screens/LanguageSelectorScreen.js +1 -1
  175. package/lib/module/ui/screens/LanguageSelectorScreen.js.map +1 -1
  176. package/lib/module/ui/screens/ManageAccountScreen.js +1 -1
  177. package/lib/module/ui/screens/ManageAccountScreen.js.map +1 -1
  178. package/lib/module/ui/screens/PaymentGatewayScreen.js +1 -1
  179. package/lib/module/ui/screens/PaymentGatewayScreen.js.map +1 -1
  180. package/lib/module/ui/screens/PremiumSubscriptionScreen.js +2 -2
  181. package/lib/module/ui/screens/PremiumSubscriptionScreen.js.map +1 -1
  182. package/lib/module/ui/screens/PrivacySettingsScreen.js +1 -0
  183. package/lib/module/ui/screens/PrivacySettingsScreen.js.map +1 -1
  184. package/lib/module/ui/screens/ProfileScreen.js +4 -5
  185. package/lib/module/ui/screens/ProfileScreen.js.map +1 -1
  186. package/lib/module/ui/screens/UserListScreen.js +3 -3
  187. package/lib/module/ui/screens/UserListScreen.js.map +1 -1
  188. package/lib/module/ui/screens/WelcomeNewUserScreen.js +5 -6
  189. package/lib/module/ui/screens/WelcomeNewUserScreen.js.map +1 -1
  190. package/lib/module/ui/screens/fileManagement/FileLibraryError.js +1 -1
  191. package/lib/module/ui/screens/fileManagement/FileLibraryError.js.map +1 -1
  192. package/lib/module/ui/screens/fileManagement/FileListSection.js +1 -1
  193. package/lib/module/ui/screens/fileManagement/FileListSection.js.map +1 -1
  194. package/lib/module/ui/screens/fileManagement/PhotoPickerSection.js +3 -5
  195. package/lib/module/ui/screens/fileManagement/PhotoPickerSection.js.map +1 -1
  196. package/lib/module/ui/screens/fileManagement/UploadBar.js +1 -1
  197. package/lib/module/ui/screens/fileManagement/UploadBar.js.map +1 -1
  198. package/lib/module/ui/screens/trust/TrustCenterScreen.js +1 -1
  199. package/lib/module/ui/screens/trust/TrustCenterScreen.js.map +1 -1
  200. package/lib/module/ui/screens/trust/TrustLeaderboardScreen.js +3 -3
  201. package/lib/module/ui/screens/trust/TrustLeaderboardScreen.js.map +1 -1
  202. package/lib/module/ui/screens/trust/TrustRewardsScreen.js +1 -1
  203. package/lib/module/ui/screens/trust/TrustRewardsScreen.js.map +1 -1
  204. package/lib/module/ui/utils/fileManagement.js +25 -25
  205. package/lib/module/ui/utils/fileManagement.js.map +1 -1
  206. package/lib/module/ui/utils/netConnectivity.js +23 -0
  207. package/lib/module/ui/utils/netConnectivity.js.map +1 -0
  208. package/lib/module/ui/utils/oauthReturn.js +15 -27
  209. package/lib/module/ui/utils/oauthReturn.js.map +1 -1
  210. package/lib/typescript/commonjs/ui/boot/runProviderColdBoot.d.ts +11 -30
  211. package/lib/typescript/commonjs/ui/boot/runProviderColdBoot.d.ts.map +1 -1
  212. package/lib/typescript/commonjs/ui/components/OxyProvider.d.ts.map +1 -1
  213. package/lib/typescript/commonjs/ui/components/SettingsIcon.d.ts +1 -1
  214. package/lib/typescript/commonjs/ui/components/SettingsIcon.d.ts.map +1 -1
  215. package/lib/typescript/commonjs/ui/components/authChooser/requestSurfaces.d.ts +1 -1
  216. package/lib/typescript/commonjs/ui/components/authChooser/requestSurfaces.d.ts.map +1 -1
  217. package/lib/typescript/commonjs/ui/components/payment/types.d.ts +6 -6
  218. package/lib/typescript/commonjs/ui/components/payment/types.d.ts.map +1 -1
  219. package/lib/typescript/commonjs/ui/context/OxyContext.d.ts.map +1 -1
  220. package/lib/typescript/commonjs/ui/context/commitSessionFlow.d.ts +0 -40
  221. package/lib/typescript/commonjs/ui/context/commitSessionFlow.d.ts.map +1 -1
  222. package/lib/typescript/commonjs/ui/context/oxyContextTypes.d.ts +4 -7
  223. package/lib/typescript/commonjs/ui/context/oxyContextTypes.d.ts.map +1 -1
  224. package/lib/typescript/commonjs/ui/context/useOxyAccountGraph.d.ts +0 -1
  225. package/lib/typescript/commonjs/ui/context/useOxyAccountGraph.d.ts.map +1 -1
  226. package/lib/typescript/commonjs/ui/hooks/queries/userCache.d.ts +2 -2
  227. package/lib/typescript/commonjs/ui/hooks/queries/userCache.d.ts.map +1 -1
  228. package/lib/typescript/commonjs/ui/hooks/useAssets.d.ts +1 -1
  229. package/lib/typescript/commonjs/ui/hooks/useAssets.d.ts.map +1 -1
  230. package/lib/typescript/commonjs/ui/hooks/useAsyncAction.d.ts +2 -2
  231. package/lib/typescript/commonjs/ui/hooks/useAsyncAction.d.ts.map +1 -1
  232. package/lib/typescript/commonjs/ui/hooks/useAuth.d.ts +4 -2
  233. package/lib/typescript/commonjs/ui/hooks/useAuth.d.ts.map +1 -1
  234. package/lib/typescript/commonjs/ui/hooks/useOnlineStatus.d.ts +3 -2
  235. package/lib/typescript/commonjs/ui/hooks/useOnlineStatus.d.ts.map +1 -1
  236. package/lib/typescript/commonjs/ui/hooks/useSessionManagement.d.ts.map +1 -1
  237. package/lib/typescript/commonjs/ui/screens/FeedbackScreen.d.ts +2 -2
  238. package/lib/typescript/commonjs/ui/screens/FeedbackScreen.d.ts.map +1 -1
  239. package/lib/typescript/commonjs/ui/screens/FileManagementScreen.d.ts.map +1 -1
  240. package/lib/typescript/commonjs/ui/screens/HistoryViewScreen.d.ts.map +1 -1
  241. package/lib/typescript/commonjs/ui/screens/PrivacySettingsScreen.d.ts.map +1 -1
  242. package/lib/typescript/commonjs/ui/screens/ProfileScreen.d.ts.map +1 -1
  243. package/lib/typescript/commonjs/ui/screens/WelcomeNewUserScreen.d.ts.map +1 -1
  244. package/lib/typescript/commonjs/ui/screens/fileManagement/PhotoPickerSection.d.ts.map +1 -1
  245. package/lib/typescript/commonjs/ui/screens/trust/TrustLeaderboardScreen.d.ts.map +1 -1
  246. package/lib/typescript/commonjs/ui/types/navigation.d.ts +20 -19
  247. package/lib/typescript/commonjs/ui/types/navigation.d.ts.map +1 -1
  248. package/lib/typescript/commonjs/ui/utils/fileManagement.d.ts +5 -5
  249. package/lib/typescript/commonjs/ui/utils/fileManagement.d.ts.map +1 -1
  250. package/lib/typescript/commonjs/ui/utils/netConnectivity.d.ts +17 -0
  251. package/lib/typescript/commonjs/ui/utils/netConnectivity.d.ts.map +1 -0
  252. package/lib/typescript/commonjs/ui/utils/oauthReturn.d.ts +15 -12
  253. package/lib/typescript/commonjs/ui/utils/oauthReturn.d.ts.map +1 -1
  254. package/lib/typescript/module/ui/boot/runProviderColdBoot.d.ts +11 -30
  255. package/lib/typescript/module/ui/boot/runProviderColdBoot.d.ts.map +1 -1
  256. package/lib/typescript/module/ui/components/OxyProvider.d.ts.map +1 -1
  257. package/lib/typescript/module/ui/components/SettingsIcon.d.ts +1 -1
  258. package/lib/typescript/module/ui/components/SettingsIcon.d.ts.map +1 -1
  259. package/lib/typescript/module/ui/components/authChooser/requestSurfaces.d.ts +1 -1
  260. package/lib/typescript/module/ui/components/authChooser/requestSurfaces.d.ts.map +1 -1
  261. package/lib/typescript/module/ui/components/payment/types.d.ts +6 -6
  262. package/lib/typescript/module/ui/components/payment/types.d.ts.map +1 -1
  263. package/lib/typescript/module/ui/context/OxyContext.d.ts.map +1 -1
  264. package/lib/typescript/module/ui/context/commitSessionFlow.d.ts +0 -40
  265. package/lib/typescript/module/ui/context/commitSessionFlow.d.ts.map +1 -1
  266. package/lib/typescript/module/ui/context/oxyContextTypes.d.ts +4 -7
  267. package/lib/typescript/module/ui/context/oxyContextTypes.d.ts.map +1 -1
  268. package/lib/typescript/module/ui/context/useOxyAccountGraph.d.ts +0 -1
  269. package/lib/typescript/module/ui/context/useOxyAccountGraph.d.ts.map +1 -1
  270. package/lib/typescript/module/ui/hooks/queries/userCache.d.ts +2 -2
  271. package/lib/typescript/module/ui/hooks/queries/userCache.d.ts.map +1 -1
  272. package/lib/typescript/module/ui/hooks/useAssets.d.ts +1 -1
  273. package/lib/typescript/module/ui/hooks/useAssets.d.ts.map +1 -1
  274. package/lib/typescript/module/ui/hooks/useAsyncAction.d.ts +2 -2
  275. package/lib/typescript/module/ui/hooks/useAsyncAction.d.ts.map +1 -1
  276. package/lib/typescript/module/ui/hooks/useAuth.d.ts +4 -2
  277. package/lib/typescript/module/ui/hooks/useAuth.d.ts.map +1 -1
  278. package/lib/typescript/module/ui/hooks/useOnlineStatus.d.ts +3 -2
  279. package/lib/typescript/module/ui/hooks/useOnlineStatus.d.ts.map +1 -1
  280. package/lib/typescript/module/ui/hooks/useSessionManagement.d.ts.map +1 -1
  281. package/lib/typescript/module/ui/screens/FeedbackScreen.d.ts +2 -2
  282. package/lib/typescript/module/ui/screens/FeedbackScreen.d.ts.map +1 -1
  283. package/lib/typescript/module/ui/screens/FileManagementScreen.d.ts.map +1 -1
  284. package/lib/typescript/module/ui/screens/HistoryViewScreen.d.ts.map +1 -1
  285. package/lib/typescript/module/ui/screens/PrivacySettingsScreen.d.ts.map +1 -1
  286. package/lib/typescript/module/ui/screens/ProfileScreen.d.ts.map +1 -1
  287. package/lib/typescript/module/ui/screens/WelcomeNewUserScreen.d.ts.map +1 -1
  288. package/lib/typescript/module/ui/screens/fileManagement/PhotoPickerSection.d.ts.map +1 -1
  289. package/lib/typescript/module/ui/screens/trust/TrustLeaderboardScreen.d.ts.map +1 -1
  290. package/lib/typescript/module/ui/types/navigation.d.ts +20 -19
  291. package/lib/typescript/module/ui/types/navigation.d.ts.map +1 -1
  292. package/lib/typescript/module/ui/utils/fileManagement.d.ts +5 -5
  293. package/lib/typescript/module/ui/utils/fileManagement.d.ts.map +1 -1
  294. package/lib/typescript/module/ui/utils/netConnectivity.d.ts +17 -0
  295. package/lib/typescript/module/ui/utils/netConnectivity.d.ts.map +1 -0
  296. package/lib/typescript/module/ui/utils/oauthReturn.d.ts +15 -12
  297. package/lib/typescript/module/ui/utils/oauthReturn.d.ts.map +1 -1
  298. package/package.json +5 -5
  299. package/src/ui/boot/__tests__/coldBootNoIdpRedirect.test.ts +215 -0
  300. package/src/ui/boot/runProviderColdBoot.ts +24 -101
  301. package/src/ui/components/AvatarCameraBadge.tsx +1 -1
  302. package/src/ui/components/OxyProvider.tsx +5 -6
  303. package/src/ui/components/ProfileButton.tsx +1 -1
  304. package/src/ui/components/SettingsIcon.tsx +1 -1
  305. package/src/ui/components/authChooser/AccountsMenuView.tsx +1 -1
  306. package/src/ui/components/authChooser/primitives.tsx +1 -1
  307. package/src/ui/components/authChooser/requestSurfaces.tsx +1 -1
  308. package/src/ui/components/fileManagement/AnimatedButton.tsx +1 -1
  309. package/src/ui/components/fileManagement/FileDetailsModal.tsx +1 -1
  310. package/src/ui/components/fileManagement/FileViewer.tsx +1 -1
  311. package/src/ui/components/fileManagement/UploadPreview.tsx +1 -1
  312. package/src/ui/components/modals/DeleteAccountModal.tsx +1 -1
  313. package/src/ui/components/payment/PaymentDetailsStep.tsx +1 -1
  314. package/src/ui/components/payment/PaymentMethodStep.tsx +1 -1
  315. package/src/ui/components/payment/PaymentReviewStep.tsx +1 -1
  316. package/src/ui/components/payment/PaymentSuccessStep.tsx +1 -1
  317. package/src/ui/components/payment/PaymentSummaryStep.tsx +1 -1
  318. package/src/ui/components/payment/types.ts +24 -24
  319. package/src/ui/components/styles/shadow.tsx +2 -2
  320. package/src/ui/context/OxyContext.tsx +15 -46
  321. package/src/ui/context/__tests__/commitSessionFlow.test.ts +0 -89
  322. package/src/ui/context/commitSessionFlow.ts +0 -61
  323. package/src/ui/context/oxyContextTypes.ts +4 -7
  324. package/src/ui/context/useOxyAccountGraph.ts +4 -4
  325. package/src/ui/hooks/queries/userCache.ts +169 -148
  326. package/src/ui/hooks/useAssets.ts +1 -1
  327. package/src/ui/hooks/useAsyncAction.ts +2 -2
  328. package/src/ui/hooks/useAuth.ts +4 -2
  329. package/src/ui/hooks/useOnlineStatus.ts +3 -2
  330. package/src/ui/hooks/useSessionManagement.ts +0 -2
  331. package/src/ui/screens/AccountMembersScreen.tsx +1 -1
  332. package/src/ui/screens/ConnectedAppsScreen.tsx +1 -1
  333. package/src/ui/screens/CreateAccountScreen.tsx +1 -1
  334. package/src/ui/screens/EditProfileFieldScreen.tsx +1 -1
  335. package/src/ui/screens/FAQScreen.tsx +1 -1
  336. package/src/ui/screens/FeedbackScreen.tsx +740 -574
  337. package/src/ui/screens/FileManagementScreen.tsx +2 -1
  338. package/src/ui/screens/HistoryViewScreen.tsx +4 -19
  339. package/src/ui/screens/LanguageSelectorScreen.tsx +1 -1
  340. package/src/ui/screens/ManageAccountScreen.tsx +1 -1
  341. package/src/ui/screens/PaymentGatewayScreen.tsx +1 -1
  342. package/src/ui/screens/PremiumSubscriptionScreen.tsx +2 -2
  343. package/src/ui/screens/PrivacySettingsScreen.tsx +1 -0
  344. package/src/ui/screens/ProfileScreen.tsx +6 -4
  345. package/src/ui/screens/UserListScreen.tsx +3 -3
  346. package/src/ui/screens/WelcomeNewUserScreen.tsx +6 -6
  347. package/src/ui/screens/fileManagement/FileLibraryError.tsx +1 -1
  348. package/src/ui/screens/fileManagement/FileListSection.tsx +1 -1
  349. package/src/ui/screens/fileManagement/PhotoPickerSection.tsx +3 -2
  350. package/src/ui/screens/fileManagement/UploadBar.tsx +1 -1
  351. package/src/ui/screens/trust/TrustCenterScreen.tsx +1 -1
  352. package/src/ui/screens/trust/TrustLeaderboardScreen.tsx +4 -3
  353. package/src/ui/screens/trust/TrustRewardsScreen.tsx +1 -1
  354. package/src/ui/types/navigation.ts +20 -19
  355. package/src/ui/utils/fileManagement.ts +108 -92
  356. package/src/ui/utils/netConnectivity.ts +27 -0
  357. package/src/ui/utils/oauthReturn.ts +15 -30
  358. package/lib/commonjs/ui/oauth/legacyRedirectLanes.js +0 -48
  359. package/lib/commonjs/ui/oauth/legacyRedirectLanes.js.map +0 -1
  360. package/lib/commonjs/ui/utils/crossOriginRestore.js +0 -140
  361. package/lib/commonjs/ui/utils/crossOriginRestore.js.map +0 -1
  362. package/lib/module/ui/oauth/legacyRedirectLanes.js +0 -44
  363. package/lib/module/ui/oauth/legacyRedirectLanes.js.map +0 -1
  364. package/lib/module/ui/utils/crossOriginRestore.js +0 -131
  365. package/lib/module/ui/utils/crossOriginRestore.js.map +0 -1
  366. package/lib/typescript/commonjs/ui/oauth/legacyRedirectLanes.d.ts +0 -40
  367. package/lib/typescript/commonjs/ui/oauth/legacyRedirectLanes.d.ts.map +0 -1
  368. package/lib/typescript/commonjs/ui/utils/crossOriginRestore.d.ts +0 -43
  369. package/lib/typescript/commonjs/ui/utils/crossOriginRestore.d.ts.map +0 -1
  370. package/lib/typescript/module/ui/oauth/legacyRedirectLanes.d.ts +0 -40
  371. package/lib/typescript/module/ui/oauth/legacyRedirectLanes.d.ts.map +0 -1
  372. package/lib/typescript/module/ui/utils/crossOriginRestore.d.ts +0 -43
  373. package/lib/typescript/module/ui/utils/crossOriginRestore.d.ts.map +0 -1
  374. package/src/ui/boot/__tests__/coldBootWebAuthMode.test.ts +0 -281
  375. package/src/ui/oauth/legacyRedirectLanes.ts +0 -43
  376. package/src/ui/utils/__tests__/crossOriginRestore.test.ts +0 -160
  377. package/src/ui/utils/crossOriginRestore.ts +0 -168
@@ -17,7 +17,8 @@ import type { FileManagementScreenProps } from '../types/fileManagement';
17
17
  import { toast } from '@oxyhq/bloom';
18
18
  import { surfaces } from '@oxyhq/bloom/surfaces';
19
19
  import * as Skeleton from '@oxyhq/bloom/skeleton';
20
- import { Ionicons, MaterialCommunityIcons } from '@expo/vector-icons';
20
+ import Ionicons from '@expo/vector-icons/Ionicons';
21
+ import MaterialCommunityIcons from '@expo/vector-icons/MaterialCommunityIcons';
21
22
  import { Pressable } from 'react-native';
22
23
  import type { FileMetadata } from '@oxyhq/core';
23
24
  import { queryKeys } from '../hooks/queries/queryKeys';
@@ -11,6 +11,7 @@ import { useSurfaceHeader } from '../hooks/useSurfaceHeader';
11
11
  import { useTheme } from '@oxyhq/bloom/theme';
12
12
  import { useOxy } from '../context/OxyContext';
13
13
  import { surfaces } from '@oxyhq/bloom/surfaces';
14
+ import { createPlatformStorage } from '../utils/storageHelpers';
14
15
 
15
16
  interface HistoryItem { id: string; query: string; type: 'search' | 'browse'; timestamp: Date; }
16
17
 
@@ -26,27 +27,11 @@ const HistoryViewScreen: React.FC<BaseScreenProps> = ({ onClose, goBack }) => {
26
27
  const [isLoading, setIsLoading] = useState(true);
27
28
  const [isDeleting, setIsDeleting] = useState(false);
28
29
 
29
- const getStorage = async () => {
30
- const isRN = typeof navigator !== 'undefined' && navigator.product === 'ReactNative';
31
- if (isRN) {
32
- try {
33
- const mod = await import('@react-native-async-storage/async-storage');
34
- const s = mod.default as unknown as { getItem: (k: string) => Promise<string | null>; setItem: (k: string, v: string) => Promise<void>; removeItem: (k: string) => Promise<void> };
35
- return { getItem: s.getItem.bind(s), setItem: s.setItem.bind(s), removeItem: s.removeItem.bind(s) };
36
- } catch (e) { if (__DEV__) console.error('AsyncStorage not available:', e); throw new Error('AsyncStorage required'); }
37
- }
38
- return {
39
- getItem: async (k: string) => typeof window !== 'undefined' && window.localStorage ? window.localStorage.getItem(k) : null,
40
- setItem: async (k: string, v: string) => { if (typeof window !== 'undefined' && window.localStorage) window.localStorage.setItem(k, v); },
41
- removeItem: async (k: string) => { if (typeof window !== 'undefined' && window.localStorage) window.localStorage.removeItem(k); },
42
- };
43
- };
44
-
45
30
  React.useEffect(() => {
46
31
  const load = async () => {
47
32
  try {
48
33
  setIsLoading(true);
49
- const storage = await getStorage();
34
+ const storage = await createPlatformStorage();
50
35
  const stored = await storage.getItem(`history_${user?.id || 'guest'}`);
51
36
  if (stored) { const parsed = JSON.parse(stored); setHistory(parsed.map((i: HistoryItem) => ({ ...i, timestamp: new Date(i.timestamp) }))); }
52
37
  else setHistory([]);
@@ -69,7 +54,7 @@ const HistoryViewScreen: React.FC<BaseScreenProps> = ({ onClose, goBack }) => {
69
54
  const cutoff = new Date(Date.now() - 15 * 60 * 1000);
70
55
  const filtered = history.filter(item => item.timestamp < cutoff);
71
56
  setHistory(filtered);
72
- const storage = await getStorage();
57
+ const storage = await createPlatformStorage();
73
58
  await storage.setItem(`history_${user?.id || 'guest'}`, JSON.stringify(filtered));
74
59
  toast.success(t('history.deleteLast15Minutes.success') || 'Last 15 minutes deleted');
75
60
  } catch (e) { if (__DEV__) console.error('Failed to delete history:', e); toast.error(t('history.deleteLast15Minutes.error') || 'Failed to delete history'); }
@@ -87,7 +72,7 @@ const HistoryViewScreen: React.FC<BaseScreenProps> = ({ onClose, goBack }) => {
87
72
  if (!confirmed) return;
88
73
  try {
89
74
  setIsDeleting(true); setHistory([]);
90
- const storage = await getStorage();
75
+ const storage = await createPlatformStorage();
91
76
  await storage.removeItem(`history_${user?.id || 'guest'}`);
92
77
  toast.success(t('history.clearAll.success') || 'History cleared');
93
78
  } catch (e) { if (__DEV__) console.error('Failed to clear history:', e); toast.error(t('history.clearAll.error') || 'Failed to clear history'); }
@@ -2,7 +2,7 @@ import React, { useCallback, useMemo, useState } from 'react';
2
2
  import { View, StyleSheet, TouchableOpacity } from 'react-native';
3
3
  import type { BaseScreenProps } from '../types/navigation';
4
4
  import { useTheme } from '@oxyhq/bloom/theme';
5
- import { Ionicons } from '@expo/vector-icons';
5
+ import Ionicons from '@expo/vector-icons/Ionicons';
6
6
  import { toast } from '@oxyhq/bloom';
7
7
  import { Text } from '@oxyhq/bloom/typography';
8
8
  import { Search } from '@oxyhq/bloom/search';
@@ -6,7 +6,7 @@ import {
6
6
  ActivityIndicator,
7
7
  Platform,
8
8
  } from 'react-native';
9
- import { Ionicons } from '@expo/vector-icons';
9
+ import Ionicons from '@expo/vector-icons/Ionicons';
10
10
  import { toast } from '@oxyhq/bloom';
11
11
  import { surfaces } from '@oxyhq/bloom/surfaces';
12
12
  import { useTheme } from '@oxyhq/bloom/theme';
@@ -10,7 +10,7 @@ import type { BaseScreenProps } from '../types/navigation';
10
10
  import { Button } from '@oxyhq/bloom/button';
11
11
  import { useTheme } from '@oxyhq/bloom/theme';
12
12
  import { H4 } from '@oxyhq/bloom/typography';
13
- import { Ionicons } from '@expo/vector-icons';
13
+ import Ionicons from '@expo/vector-icons/Ionicons';
14
14
  import { useI18n } from '../hooks/useI18n';
15
15
  import { useSurfaceHeader } from '../hooks/useSurfaceHeader';
16
16
  import QRCode from 'react-native-qrcode-svg';
@@ -16,7 +16,7 @@ import {
16
16
  SegmentedControlItem,
17
17
  SegmentedControlItemText,
18
18
  } from '@oxyhq/bloom/segmented-control';
19
- import { Ionicons } from '@expo/vector-icons';
19
+ import Ionicons from '@expo/vector-icons/Ionicons';
20
20
  import { useI18n } from '../hooks/useI18n';
21
21
  import { useSurfaceHeader } from '../hooks/useSurfaceHeader';
22
22
  import { useOxy } from '../context/OxyContext';
@@ -343,7 +343,7 @@ const PremiumSubscriptionScreen: React.FC<BaseScreenProps> = ({
343
343
  if (currentAppPackage) {
344
344
  loadSubscriptionData();
345
345
  }
346
- }, [currentAppPackage, user?.isPremium]);
346
+ }, [currentAppPackage]);
347
347
 
348
348
  const detectCurrentApp = () => {
349
349
  const detectedApp = 'mention';
@@ -114,6 +114,7 @@ const PrivacySettingsScreen: React.FC<BaseScreenProps> = ({
114
114
  }, [user?.id, oxyServices, t, setValues]);
115
115
 
116
116
  // Load blocked and restricted users
117
+ // biome-ignore lint/correctness/useExhaustiveDependencies: reload when active account switches
117
118
  useEffect(() => {
118
119
  const loadUsers = async () => {
119
120
  if (!oxyServices) return;
@@ -10,11 +10,11 @@ import { SettingsListGroup, SettingsListItem } from '@oxyhq/bloom/settings-list'
10
10
  import { Avatar } from '@oxyhq/bloom/avatar';
11
11
  import FollowButton from '../components/FollowButton';
12
12
  import { useFollow } from '../hooks/useFollow';
13
- import { Ionicons } from '@expo/vector-icons';
13
+ import Ionicons from '@expo/vector-icons/Ionicons';
14
14
  import { useI18n } from '../hooks/useI18n';
15
15
  import { useSurfaceHeader } from '../hooks/useSurfaceHeader';
16
16
  import { useOxy } from '../context/OxyContext';
17
- import { getAccountDisplayName, logger, normalizeProfileLinks } from '@oxyhq/core';
17
+ import { getNormalizedUserHandle, logger, normalizeProfileLinks } from '@oxyhq/core';
18
18
  import { extractErrorMessage } from '../utils/errorHandlers';
19
19
 
20
20
  interface ProfileScreenProps extends BaseScreenProps {
@@ -42,7 +42,7 @@ const ProfileScreen: React.FC<ProfileScreenProps> = ({ userId, username, theme,
42
42
  } = useFollow(userId);
43
43
 
44
44
  const bloomTheme = useTheme();
45
- const { t, locale } = useI18n();
45
+ const { t } = useI18n();
46
46
 
47
47
  // Check if current user is viewing their own profile
48
48
  // Normalize IDs by trimming whitespace to handle format mismatches
@@ -133,7 +133,9 @@ const ProfileScreen: React.FC<ProfileScreenProps> = ({ userId, username, theme,
133
133
  // title (a stable "Profile" fallback before it resolves), so the banner +
134
134
  // overlapping avatar scroll as content UNDER the shared gradient nav bar.
135
135
  // `onImage` tone keeps the title + close legible over the colored banner.
136
- const displayName = profile ? getAccountDisplayName(profile, locale) : username || '';
136
+ const displayName = profile
137
+ ? (profile.name?.displayName ?? getNormalizedUserHandle(profile))
138
+ : username || '';
137
139
  useSurfaceHeader({
138
140
  title: displayName || t('profile.title'),
139
141
  largeTitle: false,
@@ -14,11 +14,11 @@ import { H6, Text } from '@oxyhq/bloom/typography';
14
14
  import { Button } from '@oxyhq/bloom/button';
15
15
  import { Avatar } from '@oxyhq/bloom/avatar';
16
16
  import FollowButton from '../components/FollowButton';
17
- import { Ionicons } from '@expo/vector-icons';
17
+ import Ionicons from '@expo/vector-icons/Ionicons';
18
18
  import { useI18n } from '../hooks/useI18n';
19
19
  import { useSurfaceHeader } from '../hooks/useSurfaceHeader';
20
20
  import { useOxy } from '../context/OxyContext';
21
- import { logger, getAccountDisplayName, getAccountFallbackHandle } from '@oxyhq/core';
21
+ import { logger, getNormalizedUserHandle, getAccountFallbackHandle } from '@oxyhq/core';
22
22
  import type { User } from '@oxyhq/core';
23
23
 
24
24
  type ListMode = 'followers' | 'following';
@@ -147,7 +147,7 @@ const UserListScreen: React.FC<UserListScreenProps> = ({
147
147
  const itemUserId = resolveUserId(item);
148
148
  const isCurrentUser = itemUserId === currentUserId;
149
149
  const description = typeof item.description === 'string' ? item.description : '';
150
- const displayName = getAccountDisplayName(item, locale);
150
+ const displayName = item.name?.displayName ?? getNormalizedUserHandle(item) ?? '';
151
151
  const handle = getAccountFallbackHandle(item);
152
152
 
153
153
  return (
@@ -3,7 +3,7 @@ import { useCallback, useMemo, useRef, useState } from 'react';
3
3
  import { View, StyleSheet, Platform, Animated } from 'react-native';
4
4
  import type { BaseScreenProps } from '../types/navigation';
5
5
  import { Avatar } from '@oxyhq/bloom/avatar';
6
- import { Ionicons } from '@expo/vector-icons';
6
+ import Ionicons from '@expo/vector-icons/Ionicons';
7
7
  import { toast } from '@oxyhq/bloom';
8
8
  import { useTheme } from '@oxyhq/bloom/theme';
9
9
  import { Button } from '@oxyhq/bloom/button';
@@ -13,7 +13,7 @@ import { useI18n } from '../hooks/useI18n';
13
13
  import { useSurfaceHeader } from '../hooks/useSurfaceHeader';
14
14
  import { useOxy } from '../context/OxyContext';
15
15
  import { useUpdateProfile } from '../hooks/mutations/useAccountMutations';
16
- import { getAccountDisplayName, type User } from '@oxyhq/core';
16
+ import { getNormalizedUserHandle, type User } from '@oxyhq/core';
17
17
 
18
18
  const GAP = 12;
19
19
  const INNER_GAP = 8;
@@ -63,10 +63,10 @@ const WelcomeNewUserScreen: React.FC<BaseScreenProps & { newUser?: User }> = ({
63
63
  ? oxyServices.getFileDownloadUrl(currentUser.avatar, 'thumb')
64
64
  : undefined;
65
65
 
66
- // Steps content. Use the canonical helper so partially-onboarded accounts
67
- // (publicKey only) still get a friendly greeting instead of a blank one.
68
- const welcomeName = getAccountDisplayName(currentUser ?? null, locale);
69
- const welcomeTitle = currentUser
66
+ // API DTO contract: explicit displayName, else the normalized handle.
67
+ const welcomeName =
68
+ currentUser?.name?.displayName ?? getNormalizedUserHandle(currentUser) ?? '';
69
+ const welcomeTitle = currentUser && welcomeName
70
70
  ? (t('welcomeNew.welcome.titleWithName', { username: welcomeName }) || `Welcome, ${welcomeName} 👋`)
71
71
  : (t('welcomeNew.welcome.title') || 'Welcome 👋');
72
72
  // Only ask the user for their name during onboarding when they don't have a
@@ -1,6 +1,6 @@
1
1
  import type React from 'react';
2
2
  import { View, Text, TouchableOpacity } from 'react-native';
3
- import { Ionicons } from '@expo/vector-icons';
3
+ import Ionicons from '@expo/vector-icons/Ionicons';
4
4
 
5
5
  export interface FileLibraryErrorProps {
6
6
  title: string;
@@ -7,7 +7,7 @@ import {
7
7
  RefreshControl,
8
8
  ActivityIndicator,
9
9
  } from 'react-native';
10
- import { Ionicons } from '@expo/vector-icons';
10
+ import Ionicons from '@expo/vector-icons/Ionicons';
11
11
  import type { FileMetadata } from '@oxyhq/core';
12
12
  import { SettingsListGroup, SettingsListItem } from '@oxyhq/bloom/settings-list';
13
13
  import type { useTheme } from '@oxyhq/bloom/theme';
@@ -12,7 +12,8 @@ import {
12
12
  type LayoutChangeEvent,
13
13
  } from 'react-native';
14
14
  import { Image as ExpoImage } from 'expo-image';
15
- import { Ionicons, MaterialCommunityIcons } from '@expo/vector-icons';
15
+ import Ionicons from '@expo/vector-icons/Ionicons';
16
+ import MaterialCommunityIcons from '@expo/vector-icons/MaterialCommunityIcons';
16
17
  import * as Skeleton from '@oxyhq/bloom/skeleton';
17
18
  import type { FileMetadata } from '@oxyhq/core';
18
19
  import { computePhotoGridLayout } from './photoGridLayout';
@@ -550,8 +551,8 @@ const PhotoPickerView: React.FC<PhotoPickerViewProps> = ({
550
551
  importantForAccessibility="no-hide-descendants"
551
552
  >
552
553
  {Array.from({ length: skeletonTileCount }, (_, index) => (
553
- // biome-ignore lint/suspicious/noArrayIndexKey: fixed-size skeleton grid, order never changes
554
554
  <Skeleton.Box
555
+ // biome-ignore lint/suspicious/noArrayIndexKey: fixed-size skeleton grid, order never changes
555
556
  key={`skeleton-${index}`}
556
557
  width={cellSize}
557
558
  height={cellSize}
@@ -1,6 +1,6 @@
1
1
  import type React from 'react';
2
2
  import { View, Text, ActivityIndicator, StyleSheet, Platform, type ViewStyle } from 'react-native';
3
- import { Ionicons } from '@expo/vector-icons';
3
+ import Ionicons from '@expo/vector-icons/Ionicons';
4
4
 
5
5
  export interface UploadBarProps {
6
6
  /** Aggregate upload progress, or null when indeterminate. */
@@ -2,7 +2,7 @@ import type React from 'react';
2
2
  import { useEffect, useMemo, useState } from 'react';
3
3
  import { View, StyleSheet } from 'react-native';
4
4
  import type { ReputationTransaction, TrustTier } from '@oxyhq/core';
5
- import { Ionicons } from '@expo/vector-icons';
5
+ import Ionicons from '@expo/vector-icons/Ionicons';
6
6
  import { Chip } from '@oxyhq/bloom/chip';
7
7
  import { useTheme } from '@oxyhq/bloom/theme';
8
8
  import { H1, Text } from '@oxyhq/bloom/typography';
@@ -8,12 +8,12 @@ import {
8
8
  TouchableOpacity,
9
9
  } from 'react-native';
10
10
  import type { ReputationLeaderboardEntry } from '@oxyhq/core';
11
- import { getAccountDisplayName, logger } from '@oxyhq/core';
11
+ import { getNormalizedUserHandle, logger } from '@oxyhq/core';
12
12
  import { useTheme } from '@oxyhq/bloom/theme';
13
13
  import { H6, Text } from '@oxyhq/bloom/typography';
14
14
  import { Chip } from '@oxyhq/bloom/chip';
15
15
  import { Button } from '@oxyhq/bloom/button';
16
- import { Ionicons } from '@expo/vector-icons';
16
+ import Ionicons from '@expo/vector-icons/Ionicons';
17
17
  import type { BaseScreenProps } from '../../types/navigation';
18
18
  import { Avatar } from '@oxyhq/bloom/avatar';
19
19
  import { useI18n } from '../../hooks/useI18n';
@@ -72,7 +72,8 @@ const TrustLeaderboardScreen: React.FC<BaseScreenProps> = ({ navigate }) => {
72
72
 
73
73
  const renderEntry = useCallback(
74
74
  ({ item }: { item: ReputationLeaderboardEntry }) => {
75
- const displayName = getAccountDisplayName(item.user, locale);
75
+ const displayName =
76
+ item.user.name?.displayName ?? getNormalizedUserHandle(item.user) ?? '';
76
77
  const isViewer = currentUserId !== '' && item.user.id === currentUserId;
77
78
  const isPodium = item.rank <= PODIUM_RANK;
78
79
  // Viewer's own row and podium ranks get a subtle highlighted surface.
@@ -3,7 +3,7 @@ import { useMemo, useState, useEffect } from 'react';
3
3
  import { View, StyleSheet } from 'react-native';
4
4
  import type { BaseScreenProps } from '../../types/navigation';
5
5
  import { useSurfaceHeader } from '../../hooks/useSurfaceHeader';
6
- import { Ionicons } from '@expo/vector-icons';
6
+ import Ionicons from '@expo/vector-icons/Ionicons';
7
7
  import { useTheme } from '@oxyhq/bloom/theme';
8
8
  import { H1, H4, H5, Text } from '@oxyhq/bloom/typography';
9
9
  import { useI18n } from '../../hooks/useI18n';
@@ -74,11 +74,11 @@ export interface OxyProviderProps {
74
74
  authWebUrl?: string;
75
75
  authRedirectUri?: string;
76
76
  /**
77
- * Authorize endpoint override for silent cross-origin session restore
78
- * (web cross-app SSO on cold boot). Defaults to the production Oxy IdP
79
- * (`https://auth.oxy.so/authorize`) when unset. Set this from an env var
80
- * (e.g. Vite `VITE_OXY_AUTHORIZE_URL`, Expo `EXPO_PUBLIC_OXY_AUTHORIZE_URL`)
81
- * so a local/staging deployment targets its own IdP instead of production.
77
+ * Authorize endpoint override for web "Sign in with Oxy". Defaults to the
78
+ * production Oxy IdP (`https://auth.oxy.so/authorize`) when unset. Set this
79
+ * from an env var (e.g. Vite `VITE_OXY_AUTHORIZE_URL`, Expo
80
+ * `EXPO_PUBLIC_OXY_AUTHORIZE_URL`) so a local/staging deployment targets its
81
+ * own IdP instead of production.
82
82
  */
83
83
  authorizeBaseUrl?: string;
84
84
  /**
@@ -98,9 +98,9 @@ export interface OxyProviderProps {
98
98
  * rather than hidden in the UI: `accounts` stays empty and is never fetched,
99
99
  * `switchToAccount` / `switchSession` reject with `IdentityBoundSessionError`,
100
100
  * `accountDialogController` is `null` and `openAccountDialog()` does nothing,
101
- * and the two web OAuth cold-boot lanes (authorization-code return + silent
102
- * cross-origin restore) are skipped all of them commit whichever account
103
- * the IdP resolves, which is not necessarily the local key's owner.
101
+ * and the web OAuth cold-boot lane (the authorization-code return leg) is
102
+ * skipped it commits whichever account the IdP resolves, which is not
103
+ * necessarily the local key's owner.
104
104
  *
105
105
  * Read once at mount, like `baseURL` / `oxyServices`: changing it on a
106
106
  * mounted provider does not re-bind the session.
@@ -110,22 +110,23 @@ export interface OxyProviderProps {
110
110
  /**
111
111
  * How a WEB third-party "Sign in with Oxy" hands the user to the IdP.
112
112
  *
113
- * - `'redirect'` (default) — a full-page navigation to `auth.oxy.so`, which
114
- * returns to the registered `redirect_uri` with `?code=`. The tab unmounts
115
- * and remounts, so route and unsaved state are lost.
116
- * - `'popup'` a small `auth.oxy.so` window opened from the user's click.
117
- * The app stays MOUNTED and becomes authenticated without a reload; the
118
- * IdP delivers only the authorization code + `state` back to the opener
119
- * via `postMessage` (never a token, device secret, or PKCE verifier). A
120
- * blocked popup falls back to the redirect automatically.
113
+ * - `'popup'` (default) — a small `auth.oxy.so` window opened from the
114
+ * user's click. The app stays MOUNTED and becomes authenticated without a
115
+ * reload; the IdP delivers only the authorization code + `state` back to
116
+ * the opener via `postMessage` (never a token, device secret, or PKCE
117
+ * verifier). A blocked popup falls back to the redirect automatically.
118
+ * - `'redirect'` a full-page navigation to `auth.oxy.so`, which returns to
119
+ * the registered `redirect_uri` with `?code=`. The tab unmounts and
120
+ * remounts, so route and unsaved state are lost.
121
+ *
122
+ * Either way the navigation only ever happens from a real user gesture: the
123
+ * SDK never bounces the top-level window on its own (#691 phase 7b).
121
124
  *
122
125
  * Native is unaffected — it always uses an in-app auth session.
123
- * @default 'redirect'
126
+ * @default 'popup'
124
127
  */
125
128
  webAuthMode?: WebAuthMode;
126
129
  queryClient?: QueryClient;
127
- /** Sync device credentials to auth.oxy.so after interactive sign-in. @default true */
128
- hubSync?: boolean;
129
130
  /**
130
131
  * Convenience: wrap the whole app subtree in `<RequireOxyAuth prompt=...>`.
131
132
  * `off` (default) renders children unconditionally; `soft` adds a dismissible