@oxyhq/services 25.0.1 → 26.0.1

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 (570) hide show
  1. package/README.md +2 -2
  2. package/android/src/main/java/so/oxy/identity/OxyIdentityStore.kt +127 -21
  3. package/expo-module.config.json +1 -4
  4. package/lib/commonjs/index.js +49 -18
  5. package/lib/commonjs/index.js.map +1 -1
  6. package/lib/commonjs/notifications/deviceNotifications.js +0 -63
  7. package/lib/commonjs/notifications/deviceNotifications.js.map +1 -1
  8. package/lib/commonjs/ui/boot/runProviderColdBoot.js +64 -20
  9. package/lib/commonjs/ui/boot/runProviderColdBoot.js.map +1 -1
  10. package/lib/commonjs/ui/components/FollowButton.js +4 -4
  11. package/lib/commonjs/ui/components/FollowButton.js.map +1 -1
  12. package/lib/commonjs/ui/components/OxyAccountDialogScreen.js +1 -13
  13. package/lib/commonjs/ui/components/OxyAccountDialogScreen.js.map +1 -1
  14. package/lib/commonjs/ui/components/OxyAuthChooser.js +8 -9
  15. package/lib/commonjs/ui/components/OxyAuthChooser.js.map +1 -1
  16. package/lib/commonjs/ui/components/OxyProvider.js +7 -8
  17. package/lib/commonjs/ui/components/OxyProvider.js.map +1 -1
  18. package/lib/commonjs/ui/components/ProfileButton.js +1 -1
  19. package/lib/commonjs/ui/components/ProfileButton.js.map +1 -1
  20. package/lib/commonjs/ui/components/authChooser/AccountsMenuView.js +30 -25
  21. package/lib/commonjs/ui/components/authChooser/AccountsMenuView.js.map +1 -1
  22. package/lib/commonjs/ui/components/authChooser/primitives.js +9 -9
  23. package/lib/commonjs/ui/components/authChooser/primitives.js.map +1 -1
  24. package/lib/commonjs/ui/components/authChooser/useUsernameAvailability.js +2 -2
  25. package/lib/commonjs/ui/components/authChooser/useUsernameAvailability.js.map +1 -1
  26. package/lib/commonjs/ui/components/fileManagement/UploadPreview.js +2 -2
  27. package/lib/commonjs/ui/components/fileManagement/UploadPreview.js.map +1 -1
  28. package/lib/commonjs/ui/components/internal/PinInput.js +1 -3
  29. package/lib/commonjs/ui/components/internal/PinInput.js.map +1 -1
  30. package/lib/commonjs/ui/components/logo/LogoText.js +4 -4
  31. package/lib/commonjs/ui/components/logo/LogoText.js.map +1 -1
  32. package/lib/commonjs/ui/components/payment/PaymentDetailsStep.js +2 -2
  33. package/lib/commonjs/ui/components/payment/PaymentDetailsStep.js.map +1 -1
  34. package/lib/commonjs/ui/components/payment/PaymentSummaryStep.js +2 -2
  35. package/lib/commonjs/ui/components/payment/PaymentSummaryStep.js.map +1 -1
  36. package/lib/commonjs/ui/components/styles/shadow.js.map +1 -1
  37. package/lib/commonjs/ui/context/OxyContext.js +46 -32
  38. package/lib/commonjs/ui/context/OxyContext.js.map +1 -1
  39. package/lib/commonjs/ui/context/commitSessionFlow.js +43 -3
  40. package/lib/commonjs/ui/context/commitSessionFlow.js.map +1 -1
  41. package/lib/commonjs/ui/context/hooks/useAuthOperations.js +2 -15
  42. package/lib/commonjs/ui/context/hooks/useAuthOperations.js.map +1 -1
  43. package/lib/commonjs/ui/context/useOxyAccountGraph.js +4 -3
  44. package/lib/commonjs/ui/context/useOxyAccountGraph.js.map +1 -1
  45. package/lib/commonjs/ui/hooks/mutations/mutationFactory.js +5 -5
  46. package/lib/commonjs/ui/hooks/mutations/mutationFactory.js.map +1 -1
  47. package/lib/commonjs/ui/hooks/mutations/useAccountMutations.js +11 -11
  48. package/lib/commonjs/ui/hooks/mutations/useAccountMutations.js.map +1 -1
  49. package/lib/commonjs/ui/hooks/mutations/useServicesMutations.js +9 -9
  50. package/lib/commonjs/ui/hooks/mutations/useServicesMutations.js.map +1 -1
  51. package/lib/commonjs/ui/hooks/queries/usePaymentQueries.js +2 -3
  52. package/lib/commonjs/ui/hooks/queries/usePaymentQueries.js.map +1 -1
  53. package/lib/commonjs/ui/hooks/queries/userCache.js +17 -17
  54. package/lib/commonjs/ui/hooks/queries/userCache.js.map +1 -1
  55. package/lib/commonjs/ui/hooks/useAssets.js.map +1 -1
  56. package/lib/commonjs/ui/hooks/useAsyncAction.js +7 -7
  57. package/lib/commonjs/ui/hooks/useAsyncAction.js.map +1 -1
  58. package/lib/commonjs/ui/hooks/useAuth.js +2 -4
  59. package/lib/commonjs/ui/hooks/useAuth.js.map +1 -1
  60. package/lib/commonjs/ui/hooks/useAvatarPicker.js +5 -5
  61. package/lib/commonjs/ui/hooks/useAvatarPicker.js.map +1 -1
  62. package/lib/commonjs/ui/hooks/useOnlineStatus.js +2 -3
  63. package/lib/commonjs/ui/hooks/useOnlineStatus.js.map +1 -1
  64. package/lib/commonjs/ui/hooks/useSessionManagement.js +2 -0
  65. package/lib/commonjs/ui/hooks/useSessionManagement.js.map +1 -1
  66. package/lib/commonjs/ui/hooks/useSettingToggle.js +4 -4
  67. package/lib/commonjs/ui/hooks/useSettingToggle.js.map +1 -1
  68. package/lib/commonjs/ui/hooks/useSurfaceHeader.js +11 -68
  69. package/lib/commonjs/ui/hooks/useSurfaceHeader.js.map +1 -1
  70. package/lib/commonjs/ui/oauth/browserAuthTransport.js +64 -66
  71. package/lib/commonjs/ui/oauth/browserAuthTransport.js.map +1 -1
  72. package/lib/commonjs/ui/oauth/legacyRedirectLanes.js +48 -0
  73. package/lib/commonjs/ui/oauth/legacyRedirectLanes.js.map +1 -0
  74. package/lib/commonjs/ui/oauth/oauthPopup.js +0 -47
  75. package/lib/commonjs/ui/oauth/oauthPopup.js.map +1 -1
  76. package/lib/commonjs/ui/screens/AccountMembersScreen.js +10 -10
  77. package/lib/commonjs/ui/screens/AccountMembersScreen.js.map +1 -1
  78. package/lib/commonjs/ui/screens/AccountSettingsScreen.js +8 -7
  79. package/lib/commonjs/ui/screens/AccountSettingsScreen.js.map +1 -1
  80. package/lib/commonjs/ui/screens/AccountVerificationScreen.js +4 -4
  81. package/lib/commonjs/ui/screens/AccountVerificationScreen.js.map +1 -1
  82. package/lib/commonjs/ui/screens/AppInfoScreen.js +9 -9
  83. package/lib/commonjs/ui/screens/AppInfoScreen.js.map +1 -1
  84. package/lib/commonjs/ui/screens/AvatarCropScreen.js +3 -3
  85. package/lib/commonjs/ui/screens/AvatarCropScreen.js.map +1 -1
  86. package/lib/commonjs/ui/screens/ChangeAvatarScreen.js +7 -6
  87. package/lib/commonjs/ui/screens/ChangeAvatarScreen.js.map +1 -1
  88. package/lib/commonjs/ui/screens/ConnectedAppsScreen.js +4 -4
  89. package/lib/commonjs/ui/screens/ConnectedAppsScreen.js.map +1 -1
  90. package/lib/commonjs/ui/screens/CreateAccountScreen.js +3 -3
  91. package/lib/commonjs/ui/screens/CreateAccountScreen.js.map +1 -1
  92. package/lib/commonjs/ui/screens/EditProfileFieldScreen.js +3 -3
  93. package/lib/commonjs/ui/screens/EditProfileFieldScreen.js.map +1 -1
  94. package/lib/commonjs/ui/screens/EditProfileScreen.js +3 -2
  95. package/lib/commonjs/ui/screens/EditProfileScreen.js.map +1 -1
  96. package/lib/commonjs/ui/screens/FAQScreen.js +2 -2
  97. package/lib/commonjs/ui/screens/FAQScreen.js.map +1 -1
  98. package/lib/commonjs/ui/screens/FeedbackScreen.js +89 -90
  99. package/lib/commonjs/ui/screens/FeedbackScreen.js.map +1 -1
  100. package/lib/commonjs/ui/screens/FileManagementScreen.js +20 -20
  101. package/lib/commonjs/ui/screens/FileManagementScreen.js.map +1 -1
  102. package/lib/commonjs/ui/screens/FollowersListScreen.js.map +1 -1
  103. package/lib/commonjs/ui/screens/FollowingListScreen.js.map +1 -1
  104. package/lib/commonjs/ui/screens/HelpSupportScreen.js +7 -7
  105. package/lib/commonjs/ui/screens/HelpSupportScreen.js.map +1 -1
  106. package/lib/commonjs/ui/screens/HistoryViewScreen.js +34 -9
  107. package/lib/commonjs/ui/screens/HistoryViewScreen.js.map +1 -1
  108. package/lib/commonjs/ui/screens/LanguageSelectorScreen.js +3 -3
  109. package/lib/commonjs/ui/screens/LanguageSelectorScreen.js.map +1 -1
  110. package/lib/commonjs/ui/screens/LegalDocumentsScreen.js +3 -3
  111. package/lib/commonjs/ui/screens/LegalDocumentsScreen.js.map +1 -1
  112. package/lib/commonjs/ui/screens/ManageAccountScreen.js +15 -15
  113. package/lib/commonjs/ui/screens/ManageAccountScreen.js.map +1 -1
  114. package/lib/commonjs/ui/screens/PremiumSubscriptionScreen.js +19 -19
  115. package/lib/commonjs/ui/screens/PremiumSubscriptionScreen.js.map +1 -1
  116. package/lib/commonjs/ui/screens/PrivacySettingsScreen.js +15 -15
  117. package/lib/commonjs/ui/screens/PrivacySettingsScreen.js.map +1 -1
  118. package/lib/commonjs/ui/screens/ProfileScreen.js +7 -17
  119. package/lib/commonjs/ui/screens/ProfileScreen.js.map +1 -1
  120. package/lib/commonjs/ui/screens/SavesCollectionsScreen.js +2 -2
  121. package/lib/commonjs/ui/screens/SavesCollectionsScreen.js.map +1 -1
  122. package/lib/commonjs/ui/screens/UserListScreen.js +7 -13
  123. package/lib/commonjs/ui/screens/UserListScreen.js.map +1 -1
  124. package/lib/commonjs/ui/screens/WelcomeNewUserScreen.js +6 -5
  125. package/lib/commonjs/ui/screens/WelcomeNewUserScreen.js.map +1 -1
  126. package/lib/commonjs/ui/screens/fileManagement/PhotoPickerSection.js +4 -1
  127. package/lib/commonjs/ui/screens/fileManagement/PhotoPickerSection.js.map +1 -1
  128. package/lib/commonjs/ui/screens/fileManagement/hooks/useFileUploadState.js +24 -34
  129. package/lib/commonjs/ui/screens/fileManagement/hooks/useFileUploadState.js.map +1 -1
  130. package/lib/commonjs/ui/screens/trust/TrustCenterScreen.js +1 -1
  131. package/lib/commonjs/ui/screens/trust/TrustCenterScreen.js.map +1 -1
  132. package/lib/commonjs/ui/screens/trust/TrustLeaderboardScreen.js +4 -3
  133. package/lib/commonjs/ui/screens/trust/TrustLeaderboardScreen.js.map +1 -1
  134. package/lib/commonjs/ui/screens/trust/TrustRewardsScreen.js +1 -1
  135. package/lib/commonjs/ui/screens/trust/TrustRewardsScreen.js.map +1 -1
  136. package/lib/commonjs/ui/session/index.js +0 -7
  137. package/lib/commonjs/ui/session/index.js.map +1 -1
  138. package/lib/commonjs/ui/utils/crossOriginRestore.js +140 -0
  139. package/lib/commonjs/ui/utils/crossOriginRestore.js.map +1 -0
  140. package/lib/commonjs/ui/utils/fileManagement.js +24 -24
  141. package/lib/commonjs/ui/utils/fileManagement.js.map +1 -1
  142. package/lib/commonjs/ui/utils/oauthReturn.js +30 -19
  143. package/lib/commonjs/ui/utils/oauthReturn.js.map +1 -1
  144. package/lib/commonjs/ui/utils/userUtils.js +28 -27
  145. package/lib/commonjs/ui/utils/userUtils.js.map +1 -1
  146. package/lib/module/index.js +8 -20
  147. package/lib/module/index.js.map +1 -1
  148. package/lib/module/notifications/deviceNotifications.js +0 -62
  149. package/lib/module/notifications/deviceNotifications.js.map +1 -1
  150. package/lib/module/ui/boot/runProviderColdBoot.js +65 -21
  151. package/lib/module/ui/boot/runProviderColdBoot.js.map +1 -1
  152. package/lib/module/ui/components/FollowButton.js +1 -1
  153. package/lib/module/ui/components/FollowButton.js.map +1 -1
  154. package/lib/module/ui/components/OxyAccountDialogScreen.js +1 -13
  155. package/lib/module/ui/components/OxyAccountDialogScreen.js.map +1 -1
  156. package/lib/module/ui/components/OxyAuthChooser.js +4 -5
  157. package/lib/module/ui/components/OxyAuthChooser.js.map +1 -1
  158. package/lib/module/ui/components/OxyProvider.js +6 -7
  159. package/lib/module/ui/components/OxyProvider.js.map +1 -1
  160. package/lib/module/ui/components/ProfileButton.js +2 -2
  161. package/lib/module/ui/components/ProfileButton.js.map +1 -1
  162. package/lib/module/ui/components/authChooser/AccountsMenuView.js +8 -3
  163. package/lib/module/ui/components/authChooser/AccountsMenuView.js.map +1 -1
  164. package/lib/module/ui/components/authChooser/primitives.js +1 -1
  165. package/lib/module/ui/components/authChooser/primitives.js.map +1 -1
  166. package/lib/module/ui/components/authChooser/useUsernameAvailability.js +1 -1
  167. package/lib/module/ui/components/authChooser/useUsernameAvailability.js.map +1 -1
  168. package/lib/module/ui/components/fileManagement/UploadPreview.js +1 -1
  169. package/lib/module/ui/components/fileManagement/UploadPreview.js.map +1 -1
  170. package/lib/module/ui/components/internal/PinInput.js +1 -3
  171. package/lib/module/ui/components/internal/PinInput.js.map +1 -1
  172. package/lib/module/ui/components/logo/LogoText.js +4 -4
  173. package/lib/module/ui/components/logo/LogoText.js.map +1 -1
  174. package/lib/module/ui/components/payment/PaymentDetailsStep.js +1 -1
  175. package/lib/module/ui/components/payment/PaymentDetailsStep.js.map +1 -1
  176. package/lib/module/ui/components/payment/PaymentSummaryStep.js +2 -2
  177. package/lib/module/ui/components/payment/PaymentSummaryStep.js.map +1 -1
  178. package/lib/module/ui/components/styles/shadow.js.map +1 -1
  179. package/lib/module/ui/context/OxyContext.js +49 -35
  180. package/lib/module/ui/context/OxyContext.js.map +1 -1
  181. package/lib/module/ui/context/commitSessionFlow.js +42 -3
  182. package/lib/module/ui/context/commitSessionFlow.js.map +1 -1
  183. package/lib/module/ui/context/hooks/useAuthOperations.js +2 -15
  184. package/lib/module/ui/context/hooks/useAuthOperations.js.map +1 -1
  185. package/lib/module/ui/context/useOxyAccountGraph.js +4 -3
  186. package/lib/module/ui/context/useOxyAccountGraph.js.map +1 -1
  187. package/lib/module/ui/hooks/mutations/mutationFactory.js +1 -1
  188. package/lib/module/ui/hooks/mutations/mutationFactory.js.map +1 -1
  189. package/lib/module/ui/hooks/mutations/useAccountMutations.js +1 -1
  190. package/lib/module/ui/hooks/mutations/useAccountMutations.js.map +1 -1
  191. package/lib/module/ui/hooks/mutations/useServicesMutations.js +1 -1
  192. package/lib/module/ui/hooks/mutations/useServicesMutations.js.map +1 -1
  193. package/lib/module/ui/hooks/queries/usePaymentQueries.js +2 -3
  194. package/lib/module/ui/hooks/queries/usePaymentQueries.js.map +1 -1
  195. package/lib/module/ui/hooks/queries/userCache.js +17 -17
  196. package/lib/module/ui/hooks/queries/userCache.js.map +1 -1
  197. package/lib/module/ui/hooks/useAssets.js.map +1 -1
  198. package/lib/module/ui/hooks/useAsyncAction.js +1 -1
  199. package/lib/module/ui/hooks/useAsyncAction.js.map +1 -1
  200. package/lib/module/ui/hooks/useAuth.js +2 -4
  201. package/lib/module/ui/hooks/useAuth.js.map +1 -1
  202. package/lib/module/ui/hooks/useAvatarPicker.js +1 -1
  203. package/lib/module/ui/hooks/useAvatarPicker.js.map +1 -1
  204. package/lib/module/ui/hooks/useOnlineStatus.js +2 -3
  205. package/lib/module/ui/hooks/useOnlineStatus.js.map +1 -1
  206. package/lib/module/ui/hooks/useSessionManagement.js +2 -0
  207. package/lib/module/ui/hooks/useSessionManagement.js.map +1 -1
  208. package/lib/module/ui/hooks/useSettingToggle.js +1 -1
  209. package/lib/module/ui/hooks/useSettingToggle.js.map +1 -1
  210. package/lib/module/ui/hooks/useSurfaceHeader.js +11 -68
  211. package/lib/module/ui/hooks/useSurfaceHeader.js.map +1 -1
  212. package/lib/module/ui/oauth/browserAuthTransport.js +64 -66
  213. package/lib/module/ui/oauth/browserAuthTransport.js.map +1 -1
  214. package/lib/module/ui/oauth/legacyRedirectLanes.js +44 -0
  215. package/lib/module/ui/oauth/legacyRedirectLanes.js.map +1 -0
  216. package/lib/module/ui/oauth/oauthPopup.js +1 -48
  217. package/lib/module/ui/oauth/oauthPopup.js.map +1 -1
  218. package/lib/module/ui/screens/AccountMembersScreen.js +1 -1
  219. package/lib/module/ui/screens/AccountMembersScreen.js.map +1 -1
  220. package/lib/module/ui/screens/AccountSettingsScreen.js +4 -3
  221. package/lib/module/ui/screens/AccountSettingsScreen.js.map +1 -1
  222. package/lib/module/ui/screens/AccountVerificationScreen.js +1 -1
  223. package/lib/module/ui/screens/AccountVerificationScreen.js.map +1 -1
  224. package/lib/module/ui/screens/AppInfoScreen.js +1 -1
  225. package/lib/module/ui/screens/AppInfoScreen.js.map +1 -1
  226. package/lib/module/ui/screens/AvatarCropScreen.js +1 -1
  227. package/lib/module/ui/screens/AvatarCropScreen.js.map +1 -1
  228. package/lib/module/ui/screens/ChangeAvatarScreen.js +5 -4
  229. package/lib/module/ui/screens/ChangeAvatarScreen.js.map +1 -1
  230. package/lib/module/ui/screens/ConnectedAppsScreen.js +2 -2
  231. package/lib/module/ui/screens/ConnectedAppsScreen.js.map +1 -1
  232. package/lib/module/ui/screens/CreateAccountScreen.js +1 -1
  233. package/lib/module/ui/screens/CreateAccountScreen.js.map +1 -1
  234. package/lib/module/ui/screens/EditProfileFieldScreen.js +1 -1
  235. package/lib/module/ui/screens/EditProfileFieldScreen.js.map +1 -1
  236. package/lib/module/ui/screens/EditProfileScreen.js +4 -3
  237. package/lib/module/ui/screens/EditProfileScreen.js.map +1 -1
  238. package/lib/module/ui/screens/FAQScreen.js +1 -1
  239. package/lib/module/ui/screens/FAQScreen.js.map +1 -1
  240. package/lib/module/ui/screens/FeedbackScreen.js +91 -94
  241. package/lib/module/ui/screens/FeedbackScreen.js.map +1 -1
  242. package/lib/module/ui/screens/FileManagementScreen.js +1 -1
  243. package/lib/module/ui/screens/FileManagementScreen.js.map +1 -1
  244. package/lib/module/ui/screens/FollowersListScreen.js.map +1 -1
  245. package/lib/module/ui/screens/FollowingListScreen.js.map +1 -1
  246. package/lib/module/ui/screens/HelpSupportScreen.js +1 -1
  247. package/lib/module/ui/screens/HelpSupportScreen.js.map +1 -1
  248. package/lib/module/ui/screens/HistoryViewScreen.js +30 -5
  249. package/lib/module/ui/screens/HistoryViewScreen.js.map +1 -1
  250. package/lib/module/ui/screens/LanguageSelectorScreen.js +1 -1
  251. package/lib/module/ui/screens/LanguageSelectorScreen.js.map +1 -1
  252. package/lib/module/ui/screens/LegalDocumentsScreen.js +1 -1
  253. package/lib/module/ui/screens/LegalDocumentsScreen.js.map +1 -1
  254. package/lib/module/ui/screens/ManageAccountScreen.js +3 -3
  255. package/lib/module/ui/screens/ManageAccountScreen.js.map +1 -1
  256. package/lib/module/ui/screens/PremiumSubscriptionScreen.js +4 -4
  257. package/lib/module/ui/screens/PremiumSubscriptionScreen.js.map +1 -1
  258. package/lib/module/ui/screens/PrivacySettingsScreen.js +11 -11
  259. package/lib/module/ui/screens/PrivacySettingsScreen.js.map +1 -1
  260. package/lib/module/ui/screens/ProfileScreen.js +8 -18
  261. package/lib/module/ui/screens/ProfileScreen.js.map +1 -1
  262. package/lib/module/ui/screens/SavesCollectionsScreen.js +1 -1
  263. package/lib/module/ui/screens/SavesCollectionsScreen.js.map +1 -1
  264. package/lib/module/ui/screens/UserListScreen.js +8 -14
  265. package/lib/module/ui/screens/UserListScreen.js.map +1 -1
  266. package/lib/module/ui/screens/WelcomeNewUserScreen.js +6 -5
  267. package/lib/module/ui/screens/WelcomeNewUserScreen.js.map +1 -1
  268. package/lib/module/ui/screens/fileManagement/PhotoPickerSection.js +4 -1
  269. package/lib/module/ui/screens/fileManagement/PhotoPickerSection.js.map +1 -1
  270. package/lib/module/ui/screens/fileManagement/hooks/useFileUploadState.js +5 -15
  271. package/lib/module/ui/screens/fileManagement/hooks/useFileUploadState.js.map +1 -1
  272. package/lib/module/ui/screens/trust/TrustCenterScreen.js +1 -1
  273. package/lib/module/ui/screens/trust/TrustCenterScreen.js.map +1 -1
  274. package/lib/module/ui/screens/trust/TrustLeaderboardScreen.js +5 -4
  275. package/lib/module/ui/screens/trust/TrustLeaderboardScreen.js.map +1 -1
  276. package/lib/module/ui/screens/trust/TrustRewardsScreen.js +1 -1
  277. package/lib/module/ui/screens/trust/TrustRewardsScreen.js.map +1 -1
  278. package/lib/module/ui/session/index.js +0 -1
  279. package/lib/module/ui/session/index.js.map +1 -1
  280. package/lib/module/ui/utils/crossOriginRestore.js +131 -0
  281. package/lib/module/ui/utils/crossOriginRestore.js.map +1 -0
  282. package/lib/module/ui/utils/fileManagement.js +25 -25
  283. package/lib/module/ui/utils/fileManagement.js.map +1 -1
  284. package/lib/module/ui/utils/oauthReturn.js +30 -20
  285. package/lib/module/ui/utils/oauthReturn.js.map +1 -1
  286. package/lib/module/ui/utils/userUtils.js +28 -27
  287. package/lib/module/ui/utils/userUtils.js.map +1 -1
  288. package/lib/typescript/commonjs/index.d.ts +2 -0
  289. package/lib/typescript/commonjs/index.d.ts.map +1 -1
  290. package/lib/typescript/commonjs/notifications/deviceNotifications.d.ts +0 -51
  291. package/lib/typescript/commonjs/notifications/deviceNotifications.d.ts.map +1 -1
  292. package/lib/typescript/commonjs/ui/boot/runProviderColdBoot.d.ts +30 -11
  293. package/lib/typescript/commonjs/ui/boot/runProviderColdBoot.d.ts.map +1 -1
  294. package/lib/typescript/commonjs/ui/components/OxyAccountDialogScreen.d.ts.map +1 -1
  295. package/lib/typescript/commonjs/ui/components/OxyAuthChooser.d.ts +0 -7
  296. package/lib/typescript/commonjs/ui/components/OxyAuthChooser.d.ts.map +1 -1
  297. package/lib/typescript/commonjs/ui/components/OxyProvider.d.ts.map +1 -1
  298. package/lib/typescript/commonjs/ui/components/ProfileButton.d.ts.map +1 -1
  299. package/lib/typescript/commonjs/ui/components/authChooser/AccountsMenuView.d.ts.map +1 -1
  300. package/lib/typescript/commonjs/ui/components/authChooser/primitives.d.ts +1 -1
  301. package/lib/typescript/commonjs/ui/components/authChooser/primitives.d.ts.map +1 -1
  302. package/lib/typescript/commonjs/ui/components/fileManagement/UploadPreview.d.ts +1 -1
  303. package/lib/typescript/commonjs/ui/components/fileManagement/UploadPreview.d.ts.map +1 -1
  304. package/lib/typescript/commonjs/ui/components/internal/PinInput.d.ts.map +1 -1
  305. package/lib/typescript/commonjs/ui/components/payment/types.d.ts +6 -6
  306. package/lib/typescript/commonjs/ui/components/payment/types.d.ts.map +1 -1
  307. package/lib/typescript/commonjs/ui/context/OxyContext.d.ts.map +1 -1
  308. package/lib/typescript/commonjs/ui/context/commitSessionFlow.d.ts +40 -0
  309. package/lib/typescript/commonjs/ui/context/commitSessionFlow.d.ts.map +1 -1
  310. package/lib/typescript/commonjs/ui/context/hooks/useAuthOperations.d.ts +2 -11
  311. package/lib/typescript/commonjs/ui/context/hooks/useAuthOperations.d.ts.map +1 -1
  312. package/lib/typescript/commonjs/ui/context/oxyContextTypes.d.ts +7 -26
  313. package/lib/typescript/commonjs/ui/context/oxyContextTypes.d.ts.map +1 -1
  314. package/lib/typescript/commonjs/ui/context/useOxyAccountGraph.d.ts +1 -0
  315. package/lib/typescript/commonjs/ui/context/useOxyAccountGraph.d.ts.map +1 -1
  316. package/lib/typescript/commonjs/ui/hooks/mutations/useAccountMutations.d.ts.map +1 -1
  317. package/lib/typescript/commonjs/ui/hooks/queries/paymentTypes.d.ts +2 -3
  318. package/lib/typescript/commonjs/ui/hooks/queries/paymentTypes.d.ts.map +1 -1
  319. package/lib/typescript/commonjs/ui/hooks/queries/usePaymentQueries.d.ts +2 -3
  320. package/lib/typescript/commonjs/ui/hooks/queries/usePaymentQueries.d.ts.map +1 -1
  321. package/lib/typescript/commonjs/ui/hooks/queries/userCache.d.ts +2 -2
  322. package/lib/typescript/commonjs/ui/hooks/queries/userCache.d.ts.map +1 -1
  323. package/lib/typescript/commonjs/ui/hooks/useAssets.d.ts +1 -1
  324. package/lib/typescript/commonjs/ui/hooks/useAssets.d.ts.map +1 -1
  325. package/lib/typescript/commonjs/ui/hooks/useAsyncAction.d.ts +2 -2
  326. package/lib/typescript/commonjs/ui/hooks/useAsyncAction.d.ts.map +1 -1
  327. package/lib/typescript/commonjs/ui/hooks/useAuth.d.ts +2 -4
  328. package/lib/typescript/commonjs/ui/hooks/useAuth.d.ts.map +1 -1
  329. package/lib/typescript/commonjs/ui/hooks/useOnlineStatus.d.ts +2 -3
  330. package/lib/typescript/commonjs/ui/hooks/useOnlineStatus.d.ts.map +1 -1
  331. package/lib/typescript/commonjs/ui/hooks/useSessionManagement.d.ts.map +1 -1
  332. package/lib/typescript/commonjs/ui/hooks/useSurfaceHeader.d.ts +2 -7
  333. package/lib/typescript/commonjs/ui/hooks/useSurfaceHeader.d.ts.map +1 -1
  334. package/lib/typescript/commonjs/ui/oauth/browserAuthTransport.d.ts.map +1 -1
  335. package/lib/typescript/commonjs/ui/oauth/legacyRedirectLanes.d.ts +40 -0
  336. package/lib/typescript/commonjs/ui/oauth/legacyRedirectLanes.d.ts.map +1 -0
  337. package/lib/typescript/commonjs/ui/oauth/oauthPopup.d.ts +0 -6
  338. package/lib/typescript/commonjs/ui/oauth/oauthPopup.d.ts.map +1 -1
  339. package/lib/typescript/commonjs/ui/screens/ChangeAvatarScreen.d.ts.map +1 -1
  340. package/lib/typescript/commonjs/ui/screens/EditProfileScreen.d.ts.map +1 -1
  341. package/lib/typescript/commonjs/ui/screens/FeedbackScreen.d.ts +2 -2
  342. package/lib/typescript/commonjs/ui/screens/FeedbackScreen.d.ts.map +1 -1
  343. package/lib/typescript/commonjs/ui/screens/FollowersListScreen.d.ts +0 -3
  344. package/lib/typescript/commonjs/ui/screens/FollowersListScreen.d.ts.map +1 -1
  345. package/lib/typescript/commonjs/ui/screens/FollowingListScreen.d.ts +0 -3
  346. package/lib/typescript/commonjs/ui/screens/FollowingListScreen.d.ts.map +1 -1
  347. package/lib/typescript/commonjs/ui/screens/HistoryViewScreen.d.ts.map +1 -1
  348. package/lib/typescript/commonjs/ui/screens/ManageAccountScreen.d.ts.map +1 -1
  349. package/lib/typescript/commonjs/ui/screens/PrivacySettingsScreen.d.ts.map +1 -1
  350. package/lib/typescript/commonjs/ui/screens/ProfileScreen.d.ts.map +1 -1
  351. package/lib/typescript/commonjs/ui/screens/UserListScreen.d.ts +0 -7
  352. package/lib/typescript/commonjs/ui/screens/UserListScreen.d.ts.map +1 -1
  353. package/lib/typescript/commonjs/ui/screens/WelcomeNewUserScreen.d.ts.map +1 -1
  354. package/lib/typescript/commonjs/ui/screens/fileManagement/hooks/useFileUploadState.d.ts.map +1 -1
  355. package/lib/typescript/commonjs/ui/screens/trust/TrustLeaderboardScreen.d.ts.map +1 -1
  356. package/lib/typescript/commonjs/ui/screens/trust/trustTier.d.ts +1 -1
  357. package/lib/typescript/commonjs/ui/screens/trust/trustTier.d.ts.map +1 -1
  358. package/lib/typescript/commonjs/ui/session/index.d.ts +0 -1
  359. package/lib/typescript/commonjs/ui/session/index.d.ts.map +1 -1
  360. package/lib/typescript/commonjs/ui/types/navigation.d.ts +19 -27
  361. package/lib/typescript/commonjs/ui/types/navigation.d.ts.map +1 -1
  362. package/lib/typescript/commonjs/ui/utils/crossOriginRestore.d.ts +43 -0
  363. package/lib/typescript/commonjs/ui/utils/crossOriginRestore.d.ts.map +1 -0
  364. package/lib/typescript/commonjs/ui/utils/fileManagement.d.ts +5 -5
  365. package/lib/typescript/commonjs/ui/utils/fileManagement.d.ts.map +1 -1
  366. package/lib/typescript/commonjs/ui/utils/oauthReturn.d.ts +12 -15
  367. package/lib/typescript/commonjs/ui/utils/oauthReturn.d.ts.map +1 -1
  368. package/lib/typescript/commonjs/ui/utils/userUtils.d.ts +14 -7
  369. package/lib/typescript/commonjs/ui/utils/userUtils.d.ts.map +1 -1
  370. package/lib/typescript/module/index.d.ts +2 -0
  371. package/lib/typescript/module/index.d.ts.map +1 -1
  372. package/lib/typescript/module/notifications/deviceNotifications.d.ts +0 -51
  373. package/lib/typescript/module/notifications/deviceNotifications.d.ts.map +1 -1
  374. package/lib/typescript/module/ui/boot/runProviderColdBoot.d.ts +30 -11
  375. package/lib/typescript/module/ui/boot/runProviderColdBoot.d.ts.map +1 -1
  376. package/lib/typescript/module/ui/components/OxyAccountDialogScreen.d.ts.map +1 -1
  377. package/lib/typescript/module/ui/components/OxyAuthChooser.d.ts +0 -7
  378. package/lib/typescript/module/ui/components/OxyAuthChooser.d.ts.map +1 -1
  379. package/lib/typescript/module/ui/components/OxyProvider.d.ts.map +1 -1
  380. package/lib/typescript/module/ui/components/ProfileButton.d.ts.map +1 -1
  381. package/lib/typescript/module/ui/components/authChooser/AccountsMenuView.d.ts.map +1 -1
  382. package/lib/typescript/module/ui/components/authChooser/primitives.d.ts +1 -1
  383. package/lib/typescript/module/ui/components/authChooser/primitives.d.ts.map +1 -1
  384. package/lib/typescript/module/ui/components/fileManagement/UploadPreview.d.ts +1 -1
  385. package/lib/typescript/module/ui/components/fileManagement/UploadPreview.d.ts.map +1 -1
  386. package/lib/typescript/module/ui/components/internal/PinInput.d.ts.map +1 -1
  387. package/lib/typescript/module/ui/components/payment/types.d.ts +6 -6
  388. package/lib/typescript/module/ui/components/payment/types.d.ts.map +1 -1
  389. package/lib/typescript/module/ui/context/OxyContext.d.ts.map +1 -1
  390. package/lib/typescript/module/ui/context/commitSessionFlow.d.ts +40 -0
  391. package/lib/typescript/module/ui/context/commitSessionFlow.d.ts.map +1 -1
  392. package/lib/typescript/module/ui/context/hooks/useAuthOperations.d.ts +2 -11
  393. package/lib/typescript/module/ui/context/hooks/useAuthOperations.d.ts.map +1 -1
  394. package/lib/typescript/module/ui/context/oxyContextTypes.d.ts +7 -26
  395. package/lib/typescript/module/ui/context/oxyContextTypes.d.ts.map +1 -1
  396. package/lib/typescript/module/ui/context/useOxyAccountGraph.d.ts +1 -0
  397. package/lib/typescript/module/ui/context/useOxyAccountGraph.d.ts.map +1 -1
  398. package/lib/typescript/module/ui/hooks/mutations/useAccountMutations.d.ts.map +1 -1
  399. package/lib/typescript/module/ui/hooks/queries/paymentTypes.d.ts +2 -3
  400. package/lib/typescript/module/ui/hooks/queries/paymentTypes.d.ts.map +1 -1
  401. package/lib/typescript/module/ui/hooks/queries/usePaymentQueries.d.ts +2 -3
  402. package/lib/typescript/module/ui/hooks/queries/usePaymentQueries.d.ts.map +1 -1
  403. package/lib/typescript/module/ui/hooks/queries/userCache.d.ts +2 -2
  404. package/lib/typescript/module/ui/hooks/queries/userCache.d.ts.map +1 -1
  405. package/lib/typescript/module/ui/hooks/useAssets.d.ts +1 -1
  406. package/lib/typescript/module/ui/hooks/useAssets.d.ts.map +1 -1
  407. package/lib/typescript/module/ui/hooks/useAsyncAction.d.ts +2 -2
  408. package/lib/typescript/module/ui/hooks/useAsyncAction.d.ts.map +1 -1
  409. package/lib/typescript/module/ui/hooks/useAuth.d.ts +2 -4
  410. package/lib/typescript/module/ui/hooks/useAuth.d.ts.map +1 -1
  411. package/lib/typescript/module/ui/hooks/useOnlineStatus.d.ts +2 -3
  412. package/lib/typescript/module/ui/hooks/useOnlineStatus.d.ts.map +1 -1
  413. package/lib/typescript/module/ui/hooks/useSessionManagement.d.ts.map +1 -1
  414. package/lib/typescript/module/ui/hooks/useSurfaceHeader.d.ts +2 -7
  415. package/lib/typescript/module/ui/hooks/useSurfaceHeader.d.ts.map +1 -1
  416. package/lib/typescript/module/ui/oauth/browserAuthTransport.d.ts.map +1 -1
  417. package/lib/typescript/module/ui/oauth/legacyRedirectLanes.d.ts +40 -0
  418. package/lib/typescript/module/ui/oauth/legacyRedirectLanes.d.ts.map +1 -0
  419. package/lib/typescript/module/ui/oauth/oauthPopup.d.ts +0 -6
  420. package/lib/typescript/module/ui/oauth/oauthPopup.d.ts.map +1 -1
  421. package/lib/typescript/module/ui/screens/ChangeAvatarScreen.d.ts.map +1 -1
  422. package/lib/typescript/module/ui/screens/EditProfileScreen.d.ts.map +1 -1
  423. package/lib/typescript/module/ui/screens/FeedbackScreen.d.ts +2 -2
  424. package/lib/typescript/module/ui/screens/FeedbackScreen.d.ts.map +1 -1
  425. package/lib/typescript/module/ui/screens/FollowersListScreen.d.ts +0 -3
  426. package/lib/typescript/module/ui/screens/FollowersListScreen.d.ts.map +1 -1
  427. package/lib/typescript/module/ui/screens/FollowingListScreen.d.ts +0 -3
  428. package/lib/typescript/module/ui/screens/FollowingListScreen.d.ts.map +1 -1
  429. package/lib/typescript/module/ui/screens/HistoryViewScreen.d.ts.map +1 -1
  430. package/lib/typescript/module/ui/screens/ManageAccountScreen.d.ts.map +1 -1
  431. package/lib/typescript/module/ui/screens/PrivacySettingsScreen.d.ts.map +1 -1
  432. package/lib/typescript/module/ui/screens/ProfileScreen.d.ts.map +1 -1
  433. package/lib/typescript/module/ui/screens/UserListScreen.d.ts +0 -7
  434. package/lib/typescript/module/ui/screens/UserListScreen.d.ts.map +1 -1
  435. package/lib/typescript/module/ui/screens/WelcomeNewUserScreen.d.ts.map +1 -1
  436. package/lib/typescript/module/ui/screens/fileManagement/hooks/useFileUploadState.d.ts.map +1 -1
  437. package/lib/typescript/module/ui/screens/trust/TrustLeaderboardScreen.d.ts.map +1 -1
  438. package/lib/typescript/module/ui/screens/trust/trustTier.d.ts +1 -1
  439. package/lib/typescript/module/ui/screens/trust/trustTier.d.ts.map +1 -1
  440. package/lib/typescript/module/ui/session/index.d.ts +0 -1
  441. package/lib/typescript/module/ui/session/index.d.ts.map +1 -1
  442. package/lib/typescript/module/ui/types/navigation.d.ts +19 -27
  443. package/lib/typescript/module/ui/types/navigation.d.ts.map +1 -1
  444. package/lib/typescript/module/ui/utils/crossOriginRestore.d.ts +43 -0
  445. package/lib/typescript/module/ui/utils/crossOriginRestore.d.ts.map +1 -0
  446. package/lib/typescript/module/ui/utils/fileManagement.d.ts +5 -5
  447. package/lib/typescript/module/ui/utils/fileManagement.d.ts.map +1 -1
  448. package/lib/typescript/module/ui/utils/oauthReturn.d.ts +12 -15
  449. package/lib/typescript/module/ui/utils/oauthReturn.d.ts.map +1 -1
  450. package/lib/typescript/module/ui/utils/userUtils.d.ts +14 -7
  451. package/lib/typescript/module/ui/utils/userUtils.d.ts.map +1 -1
  452. package/package.json +10 -22
  453. package/src/index.ts +16 -18
  454. package/src/notifications/deviceNotifications.ts +0 -82
  455. package/src/ui/boot/__tests__/coldBootWebAuthMode.test.ts +281 -0
  456. package/src/ui/boot/runProviderColdBoot.ts +101 -24
  457. package/src/ui/components/FollowButton.tsx +1 -1
  458. package/src/ui/components/OxyAccountDialogScreen.tsx +1 -13
  459. package/src/ui/components/OxyAuthChooser.tsx +4 -14
  460. package/src/ui/components/OxyProvider.tsx +7 -8
  461. package/src/ui/components/ProfileButton.tsx +2 -5
  462. package/src/ui/components/authChooser/AccountsMenuView.tsx +10 -5
  463. package/src/ui/components/authChooser/primitives.tsx +1 -1
  464. package/src/ui/components/authChooser/useUsernameAvailability.ts +1 -1
  465. package/src/ui/components/fileManagement/UploadPreview.tsx +1 -1
  466. package/src/ui/components/internal/PinInput.tsx +0 -1
  467. package/src/ui/components/logo/LogoText.tsx +4 -4
  468. package/src/ui/components/payment/PaymentDetailsStep.tsx +1 -1
  469. package/src/ui/components/payment/PaymentSummaryStep.tsx +2 -2
  470. package/src/ui/components/payment/types.ts +24 -24
  471. package/src/ui/components/styles/shadow.tsx +2 -2
  472. package/src/ui/context/OxyContext.tsx +46 -35
  473. package/src/ui/context/__tests__/commitSessionFlow.test.ts +89 -13
  474. package/src/ui/context/commitSessionFlow.ts +61 -3
  475. package/src/ui/context/hooks/useAuthOperations.ts +1 -26
  476. package/src/ui/context/oxyContextTypes.ts +7 -26
  477. package/src/ui/context/useOxyAccountGraph.ts +4 -4
  478. package/src/ui/hooks/mutations/mutationFactory.ts +1 -1
  479. package/src/ui/hooks/mutations/useAccountMutations.ts +1 -1
  480. package/src/ui/hooks/mutations/useServicesMutations.ts +1 -1
  481. package/src/ui/hooks/queries/paymentTypes.ts +2 -3
  482. package/src/ui/hooks/queries/usePaymentQueries.ts +2 -3
  483. package/src/ui/hooks/queries/userCache.ts +148 -169
  484. package/src/ui/hooks/useAssets.ts +1 -1
  485. package/src/ui/hooks/useAsyncAction.ts +3 -3
  486. package/src/ui/hooks/useAuth.ts +2 -4
  487. package/src/ui/hooks/useAvatarPicker.ts +1 -1
  488. package/src/ui/hooks/useOnlineStatus.ts +2 -3
  489. package/src/ui/hooks/useSessionManagement.ts +2 -0
  490. package/src/ui/hooks/useSettingToggle.ts +1 -1
  491. package/src/ui/hooks/useSurfaceHeader.ts +15 -90
  492. package/src/ui/oauth/__tests__/oauthPopup.test.ts +0 -26
  493. package/src/ui/oauth/browserAuthTransport.ts +49 -55
  494. package/src/ui/oauth/legacyRedirectLanes.ts +43 -0
  495. package/src/ui/oauth/oauthPopup.ts +3 -61
  496. package/src/ui/screens/AccountMembersScreen.tsx +1 -1
  497. package/src/ui/screens/AccountSettingsScreen.tsx +5 -5
  498. package/src/ui/screens/AccountVerificationScreen.tsx +1 -1
  499. package/src/ui/screens/AppInfoScreen.tsx +1 -1
  500. package/src/ui/screens/AvatarCropScreen.tsx +1 -1
  501. package/src/ui/screens/ChangeAvatarScreen.tsx +4 -7
  502. package/src/ui/screens/ConnectedAppsScreen.tsx +2 -2
  503. package/src/ui/screens/CreateAccountScreen.tsx +1 -1
  504. package/src/ui/screens/EditProfileFieldScreen.tsx +1 -1
  505. package/src/ui/screens/EditProfileScreen.tsx +3 -6
  506. package/src/ui/screens/FAQScreen.tsx +1 -1
  507. package/src/ui/screens/FeedbackScreen.tsx +575 -741
  508. package/src/ui/screens/FileManagementScreen.tsx +1 -1
  509. package/src/ui/screens/FollowersListScreen.tsx +0 -3
  510. package/src/ui/screens/FollowingListScreen.tsx +0 -3
  511. package/src/ui/screens/HelpSupportScreen.tsx +1 -1
  512. package/src/ui/screens/HistoryViewScreen.tsx +20 -5
  513. package/src/ui/screens/LanguageSelectorScreen.tsx +1 -1
  514. package/src/ui/screens/LegalDocumentsScreen.tsx +1 -1
  515. package/src/ui/screens/ManageAccountScreen.tsx +2 -9
  516. package/src/ui/screens/PremiumSubscriptionScreen.tsx +4 -4
  517. package/src/ui/screens/PrivacySettingsScreen.tsx +12 -15
  518. package/src/ui/screens/ProfileScreen.tsx +6 -24
  519. package/src/ui/screens/SavesCollectionsScreen.tsx +1 -1
  520. package/src/ui/screens/UserListScreen.tsx +8 -18
  521. package/src/ui/screens/WelcomeNewUserScreen.tsx +6 -6
  522. package/src/ui/screens/fileManagement/PhotoPickerSection.tsx +1 -1
  523. package/src/ui/screens/fileManagement/hooks/useFileUploadState.ts +5 -14
  524. package/src/ui/screens/trust/TrustCenterScreen.tsx +2 -2
  525. package/src/ui/screens/trust/TrustLeaderboardScreen.tsx +5 -6
  526. package/src/ui/screens/trust/TrustRewardsScreen.tsx +1 -1
  527. package/src/ui/screens/trust/TrustRulesScreen.tsx +1 -1
  528. package/src/ui/screens/trust/trustTier.ts +1 -1
  529. package/src/ui/session/index.ts +0 -1
  530. package/src/ui/types/navigation.ts +19 -27
  531. package/src/ui/utils/__tests__/crossOriginRestore.test.ts +143 -0
  532. package/src/ui/utils/crossOriginRestore.ts +169 -0
  533. package/src/ui/utils/fileManagement.ts +92 -108
  534. package/src/ui/utils/oauthReturn.ts +33 -23
  535. package/src/ui/utils/userUtils.ts +32 -27
  536. package/android/src/main/java/so/oxy/session/OxyBackgroundSession.kt +0 -184
  537. package/android/src/main/java/so/oxy/session/OxyBackgroundSessionApi.kt +0 -162
  538. package/android/src/main/java/so/oxy/session/OxyBackgroundSessionModule.kt +0 -116
  539. package/android/src/main/java/so/oxy/session/OxyBackgroundSessionStore.kt +0 -179
  540. package/android/src/main/java/so/oxy/session/OxyBackgroundToken.kt +0 -61
  541. package/android/src/main/java/so/oxy/storage/OxyEncryptedPrefs.kt +0 -241
  542. package/lib/commonjs/ui/session/backgroundSession.js +0 -258
  543. package/lib/commonjs/ui/session/backgroundSession.js.map +0 -1
  544. package/lib/commonjs/ui/session/useBackgroundSessionSync.js +0 -81
  545. package/lib/commonjs/ui/session/useBackgroundSessionSync.js.map +0 -1
  546. package/lib/commonjs/ui/utils/netConnectivity.js +0 -28
  547. package/lib/commonjs/ui/utils/netConnectivity.js.map +0 -1
  548. package/lib/module/ui/session/backgroundSession.js +0 -252
  549. package/lib/module/ui/session/backgroundSession.js.map +0 -1
  550. package/lib/module/ui/session/useBackgroundSessionSync.js +0 -76
  551. package/lib/module/ui/session/useBackgroundSessionSync.js.map +0 -1
  552. package/lib/module/ui/utils/netConnectivity.js +0 -23
  553. package/lib/module/ui/utils/netConnectivity.js.map +0 -1
  554. package/lib/typescript/commonjs/ui/session/backgroundSession.d.ts +0 -42
  555. package/lib/typescript/commonjs/ui/session/backgroundSession.d.ts.map +0 -1
  556. package/lib/typescript/commonjs/ui/session/useBackgroundSessionSync.d.ts +0 -23
  557. package/lib/typescript/commonjs/ui/session/useBackgroundSessionSync.d.ts.map +0 -1
  558. package/lib/typescript/commonjs/ui/utils/netConnectivity.d.ts +0 -17
  559. package/lib/typescript/commonjs/ui/utils/netConnectivity.d.ts.map +0 -1
  560. package/lib/typescript/module/ui/session/backgroundSession.d.ts +0 -42
  561. package/lib/typescript/module/ui/session/backgroundSession.d.ts.map +0 -1
  562. package/lib/typescript/module/ui/session/useBackgroundSessionSync.d.ts +0 -23
  563. package/lib/typescript/module/ui/session/useBackgroundSessionSync.d.ts.map +0 -1
  564. package/lib/typescript/module/ui/utils/netConnectivity.d.ts +0 -17
  565. package/lib/typescript/module/ui/utils/netConnectivity.d.ts.map +0 -1
  566. package/src/ui/boot/__tests__/coldBootNoIdpRedirect.test.ts +0 -215
  567. package/src/ui/session/__tests__/backgroundSession.test.ts +0 -392
  568. package/src/ui/session/backgroundSession.ts +0 -313
  569. package/src/ui/session/useBackgroundSessionSync.ts +0 -92
  570. package/src/ui/utils/netConnectivity.ts +0 -27
@@ -14,7 +14,7 @@ import {
14
14
  import { useQueryClient } from '@tanstack/react-query';
15
15
  import { Image as ExpoImage } from 'expo-image';
16
16
  import type { FileManagementScreenProps } from '../types/fileManagement';
17
- import { toast } from '@oxyhq/bloom/toast';
17
+ import { toast } from '@oxyhq/bloom';
18
18
  import { surfaces } from '@oxyhq/bloom/surfaces';
19
19
  import * as Skeleton from '@oxyhq/bloom/skeleton';
20
20
  import Ionicons from '@expo/vector-icons/Ionicons';
@@ -1,13 +1,10 @@
1
1
  import type React from 'react';
2
- import type { FollowGraphSort } from '@oxyhq/core';
3
2
  import type { BaseScreenProps } from '../types/navigation';
4
3
  import UserListScreen from './UserListScreen';
5
4
 
6
5
  interface FollowersListScreenProps extends BaseScreenProps {
7
6
  userId: string;
8
7
  initialCount?: number;
9
- /** List ordering — see `UserListScreen`. Omitted ⇒ the server default. */
10
- sort?: FollowGraphSort;
11
8
  }
12
9
 
13
10
  const FollowersListScreen: React.FC<FollowersListScreenProps> = (props) => {
@@ -1,13 +1,10 @@
1
1
  import type React from 'react';
2
- import type { FollowGraphSort } from '@oxyhq/core';
3
2
  import type { BaseScreenProps } from '../types/navigation';
4
3
  import UserListScreen from './UserListScreen';
5
4
 
6
5
  interface FollowingListScreenProps extends BaseScreenProps {
7
6
  userId: string;
8
7
  initialCount?: number;
9
- /** List ordering — see `UserListScreen`. Omitted ⇒ the server default. */
10
- sort?: FollowGraphSort;
11
8
  }
12
9
 
13
10
  const FollowingListScreen: React.FC<FollowingListScreenProps> = (props) => {
@@ -1,7 +1,7 @@
1
1
  import React, { useMemo } from 'react';
2
2
  import { View, Linking } from 'react-native';
3
3
  import type { BaseScreenProps } from '../types/navigation';
4
- import { toast } from '@oxyhq/bloom/toast';
4
+ import { toast } from '@oxyhq/bloom';
5
5
  import { SettingsListGroup, SettingsListItem } from '@oxyhq/bloom/settings-list';
6
6
  import { useTheme } from '@oxyhq/bloom/theme';
7
7
  import { SettingsIcon } from '../components/SettingsIcon';
@@ -1,7 +1,7 @@
1
1
  import React, { useState, useCallback } from 'react';
2
2
  import { View } from 'react-native';
3
3
  import type { BaseScreenProps } from '../types/navigation';
4
- import { toast } from '@oxyhq/bloom/toast';
4
+ import { toast } from '@oxyhq/bloom';
5
5
  import { Loading } from '@oxyhq/bloom/loading';
6
6
  import { Text } from '@oxyhq/bloom/typography';
7
7
  import { SettingsListGroup, SettingsListItem } from '@oxyhq/bloom/settings-list';
@@ -11,7 +11,6 @@ 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';
15
14
 
16
15
  interface HistoryItem { id: string; query: string; type: 'search' | 'browse'; timestamp: Date; }
17
16
 
@@ -27,11 +26,27 @@ const HistoryViewScreen: React.FC<BaseScreenProps> = ({ onClose, goBack }) => {
27
26
  const [isLoading, setIsLoading] = useState(true);
28
27
  const [isDeleting, setIsDeleting] = useState(false);
29
28
 
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
+
30
45
  React.useEffect(() => {
31
46
  const load = async () => {
32
47
  try {
33
48
  setIsLoading(true);
34
- const storage = await createPlatformStorage();
49
+ const storage = await getStorage();
35
50
  const stored = await storage.getItem(`history_${user?.id || 'guest'}`);
36
51
  if (stored) { const parsed = JSON.parse(stored); setHistory(parsed.map((i: HistoryItem) => ({ ...i, timestamp: new Date(i.timestamp) }))); }
37
52
  else setHistory([]);
@@ -54,7 +69,7 @@ const HistoryViewScreen: React.FC<BaseScreenProps> = ({ onClose, goBack }) => {
54
69
  const cutoff = new Date(Date.now() - 15 * 60 * 1000);
55
70
  const filtered = history.filter(item => item.timestamp < cutoff);
56
71
  setHistory(filtered);
57
- const storage = await createPlatformStorage();
72
+ const storage = await getStorage();
58
73
  await storage.setItem(`history_${user?.id || 'guest'}`, JSON.stringify(filtered));
59
74
  toast.success(t('history.deleteLast15Minutes.success') || 'Last 15 minutes deleted');
60
75
  } catch (e) { if (__DEV__) console.error('Failed to delete history:', e); toast.error(t('history.deleteLast15Minutes.error') || 'Failed to delete history'); }
@@ -72,7 +87,7 @@ const HistoryViewScreen: React.FC<BaseScreenProps> = ({ onClose, goBack }) => {
72
87
  if (!confirmed) return;
73
88
  try {
74
89
  setIsDeleting(true); setHistory([]);
75
- const storage = await createPlatformStorage();
90
+ const storage = await getStorage();
76
91
  await storage.removeItem(`history_${user?.id || 'guest'}`);
77
92
  toast.success(t('history.clearAll.success') || 'History cleared');
78
93
  } catch (e) { if (__DEV__) console.error('Failed to clear history:', e); toast.error(t('history.clearAll.error') || 'Failed to clear history'); }
@@ -3,7 +3,7 @@ import { View, StyleSheet, TouchableOpacity } from 'react-native';
3
3
  import type { BaseScreenProps } from '../types/navigation';
4
4
  import { useTheme } from '@oxyhq/bloom/theme';
5
5
  import Ionicons from '@expo/vector-icons/Ionicons';
6
- import { toast } from '@oxyhq/bloom/toast';
6
+ import { toast } from '@oxyhq/bloom';
7
7
  import { Text } from '@oxyhq/bloom/typography';
8
8
  import { Search } from '@oxyhq/bloom/search';
9
9
  import { SettingsListGroup, SettingsListItem } from '@oxyhq/bloom/settings-list';
@@ -1,6 +1,6 @@
1
1
  import React, { useState, useCallback } from 'react';
2
2
  import { View, Linking } from 'react-native';
3
- import { toast } from '@oxyhq/bloom/toast';
3
+ import { toast } from '@oxyhq/bloom';
4
4
  import { useTheme } from '@oxyhq/bloom/theme';
5
5
  import { SettingsListGroup, SettingsListItem } from '@oxyhq/bloom/settings-list';
6
6
  import { logger } from '@oxyhq/core';
@@ -7,7 +7,7 @@ import {
7
7
  Platform,
8
8
  } from 'react-native';
9
9
  import Ionicons from '@expo/vector-icons/Ionicons';
10
- import { toast } from '@oxyhq/bloom/toast';
10
+ import { toast } from '@oxyhq/bloom';
11
11
  import { surfaces } from '@oxyhq/bloom/surfaces';
12
12
  import { useTheme } from '@oxyhq/bloom/theme';
13
13
  import { Text } from '@oxyhq/bloom/typography';
@@ -15,7 +15,6 @@ import { SettingsListGroup, SettingsListItem } from '@oxyhq/bloom/settings-list'
15
15
  import {
16
16
  getAccountDisplayName,
17
17
  getAccountFallbackHandle,
18
- getNormalizedUserHandle,
19
18
  logger as loggerUtil,
20
19
  packageInfo,
21
20
  } from '@oxyhq/core';
@@ -121,13 +120,7 @@ const ManageAccountScreen: React.FC<BaseScreenProps> = ({
121
120
  const [signingOutAllDevices, setSigningOutAllDevices] = useState(false);
122
121
  const [signingOut, setSigningOut] = useState(false);
123
122
 
124
- const displayName = useMemo(
125
- () =>
126
- user?.name?.displayName ??
127
- getNormalizedUserHandle(user) ??
128
- getAccountDisplayName(null, locale),
129
- [user, locale],
130
- );
123
+ const displayName = useMemo(() => getAccountDisplayName(user, locale), [user, locale]);
131
124
  const handle = useMemo(() => getAccountFallbackHandle(user), [user]);
132
125
  const avatarUri = useMemo(() => {
133
126
  return user?.avatar
@@ -2,7 +2,7 @@ import type React from 'react';
2
2
  import { useState, useEffect, useCallback } from 'react';
3
3
  import { View, ScrollView, ActivityIndicator } from 'react-native';
4
4
  import type { BaseScreenProps } from '../types/navigation';
5
- import { toast } from '@oxyhq/bloom/toast';
5
+ import { toast } from '@oxyhq/bloom';
6
6
  import { surfaces } from '@oxyhq/bloom/surfaces';
7
7
  import { useTheme } from '@oxyhq/bloom/theme';
8
8
  import { Button } from '@oxyhq/bloom/button';
@@ -343,7 +343,7 @@ const PremiumSubscriptionScreen: React.FC<BaseScreenProps> = ({
343
343
  if (currentAppPackage) {
344
344
  loadSubscriptionData();
345
345
  }
346
- }, [currentAppPackage]);
346
+ }, [currentAppPackage, user?.isPremium]);
347
347
 
348
348
  const detectCurrentApp = () => {
349
349
  const detectedApp = 'mention';
@@ -741,9 +741,9 @@ const PremiumSubscriptionScreen: React.FC<BaseScreenProps> = ({
741
741
  </View>
742
742
 
743
743
  <BenefitList className="mb-space-24">
744
- {plan.features.map((feature) => (
744
+ {plan.features.map((feature, index) => (
745
745
  <BenefitRow
746
- key={feature}
746
+ key={index}
747
747
  icon={<Ionicons name="checkmark" size={18} color={colors.success} />}
748
748
  label={feature}
749
749
  />
@@ -1,7 +1,7 @@
1
1
  import React, { useState, useCallback, useEffect } from 'react';
2
2
  import { View } from 'react-native';
3
3
  import type { BaseScreenProps } from '../types/navigation';
4
- import { toast } from '@oxyhq/bloom/toast';
4
+ import { toast } from '@oxyhq/bloom';
5
5
  import { SettingsListGroup, SettingsListItem } from '@oxyhq/bloom/settings-list';
6
6
  import { Switch } from '@oxyhq/bloom/switch';
7
7
  import { Button } from '@oxyhq/bloom/button';
@@ -14,7 +14,7 @@ import { useI18n } from '../hooks/useI18n';
14
14
  import { useSurfaceHeader } from '../hooks/useSurfaceHeader';
15
15
  import { useSettingToggles } from '../hooks/useSettingToggle';
16
16
  import type { BlockedUser, RestrictedUser } from '@oxyhq/core';
17
- import { getNormalizedUserHandle } from '@oxyhq/core';
17
+ import { getAccountDisplayName } from '@oxyhq/core';
18
18
  import { useOxy } from '../context/OxyContext';
19
19
 
20
20
  interface PrivacySettings {
@@ -68,7 +68,7 @@ const PrivacySettingsScreen: React.FC<BaseScreenProps> = ({
68
68
  // Privacy settings belong to the ACTIVE account (the org/project/bot when
69
69
  // switched, else the personal user).
70
70
  const { oxyServices, user } = useOxy();
71
- const { t } = useI18n();
71
+ const { t, locale } = useI18n();
72
72
 
73
73
  useSurfaceHeader({ title: t('privacySettings.title') || 'Privacy Settings' });
74
74
  const bloomTheme = useTheme();
@@ -114,7 +114,6 @@ 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
118
117
  useEffect(() => {
119
118
  const loadUsers = async () => {
120
119
  if (!oxyServices) return;
@@ -176,37 +175,35 @@ const PrivacySettingsScreen: React.FC<BaseScreenProps> = ({
176
175
  }, [oxyServices, t]);
177
176
 
178
177
  // Helper to extract user info from blocked/restricted objects.
178
+ // Display names go through the canonical helper so the fallback chain is
179
+ // identical across every UI surface (name → username → publicKey → "Unnamed").
179
180
  const extractUserInfo = useCallback((
180
181
  item: BlockedUser | RestrictedUser,
181
182
  idField: 'blockedId' | 'restrictedId'
182
183
  ) => {
183
- let userIdField: string | { _id: string; username?: string; avatar?: string; name?: { displayName?: string } };
184
- let userShape: { username?: string; name?: { displayName?: string } };
184
+ let userIdField: string | { _id: string; username?: string; avatar?: string };
185
+ let userShape: { username?: string };
185
186
  let avatar: string | undefined;
186
187
 
187
188
  if (idField === 'blockedId' && 'blockedId' in item) {
188
189
  userIdField = item.blockedId;
189
190
  userShape = typeof item.blockedId === 'string'
190
191
  ? { username: item.username }
191
- : { username: item.blockedId.username, name: item.blockedId.name };
192
+ : { username: item.blockedId.username };
192
193
  avatar = typeof item.blockedId === 'string' ? item.avatar : item.blockedId.avatar;
193
194
  } else if (idField === 'restrictedId' && 'restrictedId' in item) {
194
195
  userIdField = item.restrictedId;
195
196
  userShape = typeof item.restrictedId === 'string'
196
197
  ? { username: item.username }
197
- : { username: item.restrictedId.username, name: item.restrictedId.name };
198
+ : { username: item.restrictedId.username };
198
199
  avatar = typeof item.restrictedId === 'string' ? item.avatar : item.restrictedId.avatar;
199
200
  } else {
200
- return { userId: '', displayName: getNormalizedUserHandle(null) ?? '', avatar: undefined };
201
+ return { userId: '', displayName: getAccountDisplayName(null, locale), avatar: undefined };
201
202
  }
202
203
 
203
204
  const userId = typeof userIdField === 'string' ? userIdField : userIdField._id;
204
- return {
205
- userId,
206
- displayName: userShape.name?.displayName ?? getNormalizedUserHandle(userShape) ?? '',
207
- avatar,
208
- };
209
- }, []);
205
+ return { userId, displayName: getAccountDisplayName(userShape, locale), avatar };
206
+ }, [locale]);
210
207
 
211
208
  if (isLoading) {
212
209
  return (
@@ -14,7 +14,7 @@ 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 { getNormalizedUserHandle, logger, normalizeProfileLinks } from '@oxyhq/core';
17
+ import { getAccountDisplayName, 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 } = useI18n();
45
+ const { t, locale } = 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
@@ -78,9 +78,7 @@ const ProfileScreen: React.FC<ProfileScreenProps> = ({ userId, username, theme,
78
78
  );
79
79
  throw err;
80
80
  }),
81
- (isOwnProfile
82
- ? oxyServices.getMyReputationBalance()
83
- : oxyServices.getReputationBalance(userId))
81
+ oxyServices.getReputationBalance(userId)
84
82
  .then((balance): { total: number | undefined } => ({ total: balance.total }))
85
83
  .catch((): { total: number | undefined } => ({ total: undefined })),
86
84
  oxyServices.getUserStats
@@ -135,14 +133,7 @@ const ProfileScreen: React.FC<ProfileScreenProps> = ({ userId, username, theme,
135
133
  // title (a stable "Profile" fallback before it resolves), so the banner +
136
134
  // overlapping avatar scroll as content UNDER the shared gradient nav bar.
137
135
  // `onImage` tone keeps the title + close legible over the colored banner.
138
- // Ends in a string, deliberately: `getNormalizedUserHandle` answers `null` for a
139
- // user it cannot normalise, and letting that null travel makes this `string | null`
140
- // — which does not satisfy `Avatar.name` and does not typecheck. Empty is the honest
141
- // bottom of the chain and every reader below already treats it as falsy
142
- // (`displayName || t('profile.title')`), so nothing renders a literal "null".
143
- const displayName = profile
144
- ? (profile.name?.displayName ?? getNormalizedUserHandle(profile) ?? '')
145
- : username || '';
136
+ const displayName = profile ? getAccountDisplayName(profile, locale) : username || '';
146
137
  useSurfaceHeader({
147
138
  title: displayName || t('profile.title'),
148
139
  largeTitle: false,
@@ -196,17 +187,8 @@ const ProfileScreen: React.FC<ProfileScreenProps> = ({ userId, username, theme,
196
187
  <View style={styles.avatarRow} className="px-screen-margin">
197
188
  <View style={styles.avatarWrapper} className="border-bg bg-bg rounded-radius-max">
198
189
  <Avatar
199
- // `getFileDownloadUrl` answers `null` for a reference it cannot
200
- // resolve, and `Avatar.source` takes `undefined` for "no picture" —
201
- // the two spellings of absent do not meet, so the coalesce is the
202
- // whole fix. Without it this file does not typecheck, which blocks
203
- // `bun run build` and therefore every publish of this package.
204
- source={
205
- profile?.avatar
206
- ? (oxyServices.getFileDownloadUrl(profile.avatar, 'thumb') ?? undefined)
207
- : undefined
208
- }
209
- name={displayName}
190
+ source={profile?.avatar ? oxyServices.getFileDownloadUrl(profile.avatar, 'thumb') : undefined}
191
+ name={displayName || username}
210
192
  size={AVATAR_SIZE}
211
193
  />
212
194
  </View>
@@ -1,7 +1,7 @@
1
1
  import React, { useState, useEffect } from 'react';
2
2
  import { View } from 'react-native';
3
3
  import type { BaseScreenProps } from '../types/navigation';
4
- import { toast } from '@oxyhq/bloom/toast';
4
+ import { toast } from '@oxyhq/bloom';
5
5
  import {
6
6
  SegmentedControl,
7
7
  SegmentedControlItem,
@@ -18,8 +18,8 @@ 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, getNormalizedUserHandle, getAccountFallbackHandle } from '@oxyhq/core';
22
- import type { User, FollowGraphSort } from '@oxyhq/core';
21
+ import { logger, getAccountDisplayName, getAccountFallbackHandle } from '@oxyhq/core';
22
+ import type { User } from '@oxyhq/core';
23
23
 
24
24
  type ListMode = 'followers' | 'following';
25
25
 
@@ -27,12 +27,6 @@ interface UserListScreenProps extends BaseScreenProps {
27
27
  userId: string;
28
28
  mode: ListMode;
29
29
  initialCount?: number;
30
- /**
31
- * Ordering of the list — `recent` (newest follow first) or `oldest`.
32
- * Omitted ⇒ the server default (`recent`). Changing it re-fetches from
33
- * offset 0, since a page boundary is meaningless across two orderings.
34
- */
35
- sort?: FollowGraphSort;
36
30
  }
37
31
 
38
32
  const PAGE_SIZE = 20;
@@ -52,7 +46,6 @@ const UserListScreen: React.FC<UserListScreenProps> = ({
52
46
  userId,
53
47
  mode,
54
48
  initialCount,
55
- sort,
56
49
  navigate,
57
50
  }) => {
58
51
  const { oxyServices, user: currentUser } = useOxy();
@@ -65,7 +58,7 @@ const UserListScreen: React.FC<UserListScreenProps> = ({
65
58
  const [hasMore, setHasMore] = useState(true);
66
59
 
67
60
  const bloomTheme = useTheme();
68
- const { t } = useI18n();
61
+ const { t, locale } = useI18n();
69
62
 
70
63
  const currentUserId = currentUser ? resolveUserId(currentUser) : '';
71
64
 
@@ -92,12 +85,12 @@ const UserListScreen: React.FC<UserListScreenProps> = ({
92
85
  let hasMore: boolean;
93
86
 
94
87
  if (mode === 'followers') {
95
- const result = await oxyServices.getUserFollowers(userId, { limit: PAGE_SIZE, offset, sort });
88
+ const result = await oxyServices.getUserFollowers(userId, { limit: PAGE_SIZE, offset });
96
89
  newUsers = result.followers;
97
90
  total = result.total;
98
91
  hasMore = result.hasMore;
99
92
  } else {
100
- const result = await oxyServices.getUserFollowing(userId, { limit: PAGE_SIZE, offset, sort });
93
+ const result = await oxyServices.getUserFollowing(userId, { limit: PAGE_SIZE, offset });
101
94
  newUsers = result.following;
102
95
  total = result.total;
103
96
  hasMore = result.hasMore;
@@ -122,10 +115,7 @@ const UserListScreen: React.FC<UserListScreenProps> = ({
122
115
  setIsRefreshing(false);
123
116
  }
124
117
  },
125
- // `sort` belongs here: without it the callback would close over the first
126
- // ordering forever, and the mount effect below (keyed on `fetchUsers`)
127
- // would never re-run — flipping the control would change nothing.
128
- [userId, mode, sort, oxyServices]
118
+ [userId, mode, oxyServices]
129
119
  );
130
120
 
131
121
  useEffect(() => {
@@ -157,7 +147,7 @@ const UserListScreen: React.FC<UserListScreenProps> = ({
157
147
  const itemUserId = resolveUserId(item);
158
148
  const isCurrentUser = itemUserId === currentUserId;
159
149
  const description = typeof item.description === 'string' ? item.description : '';
160
- const displayName = item.name?.displayName ?? getNormalizedUserHandle(item) ?? '';
150
+ const displayName = getAccountDisplayName(item, locale);
161
151
  const handle = getAccountFallbackHandle(item);
162
152
 
163
153
  return (
@@ -199,7 +189,7 @@ const UserListScreen: React.FC<UserListScreenProps> = ({
199
189
  </TouchableOpacity>
200
190
  );
201
191
  },
202
- [handleUserPress, currentUserId, oxyServices]
192
+ [handleUserPress, currentUserId, oxyServices, locale]
203
193
  );
204
194
 
205
195
  const renderEmpty = useCallback(() => {
@@ -4,7 +4,7 @@ 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
6
  import Ionicons from '@expo/vector-icons/Ionicons';
7
- import { toast } from '@oxyhq/bloom/toast';
7
+ import { toast } from '@oxyhq/bloom';
8
8
  import { useTheme } from '@oxyhq/bloom/theme';
9
9
  import { Button } from '@oxyhq/bloom/button';
10
10
  import { H1, Text } from '@oxyhq/bloom/typography';
@@ -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 { getNormalizedUserHandle, type User } from '@oxyhq/core';
16
+ import { getAccountDisplayName, 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
- // API DTO contract: explicit displayName, else the normalized handle.
67
- const welcomeName =
68
- currentUser?.name?.displayName ?? getNormalizedUserHandle(currentUser) ?? '';
69
- const welcomeTitle = currentUser && welcomeName
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
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
@@ -551,8 +551,8 @@ const PhotoPickerView: React.FC<PhotoPickerViewProps> = ({
551
551
  importantForAccessibility="no-hide-descendants"
552
552
  >
553
553
  {Array.from({ length: skeletonTileCount }, (_, index) => (
554
+ // biome-ignore lint/suspicious/noArrayIndexKey: fixed-size skeleton grid, order never changes
554
555
  <Skeleton.Box
555
- // biome-ignore lint/suspicious/noArrayIndexKey: fixed-size skeleton grid, order never changes
556
556
  key={`skeleton-${index}`}
557
557
  width={cellSize}
558
558
  height={cellSize}
@@ -1,7 +1,7 @@
1
1
  import type React from 'react';
2
2
  import { useCallback, useEffect, useRef, useState } from 'react';
3
3
  import { useQueryClient } from '@tanstack/react-query';
4
- import { toast } from '@oxyhq/bloom/toast';
4
+ import { toast } from '@oxyhq/bloom';
5
5
  import type { AssetUploadInput, FileMetadata } from '@oxyhq/core';
6
6
  import type { useUploadFile } from '../../../hooks/mutations/useAccountMutations';
7
7
  import { queryKeys } from '../../../hooks/queries/queryKeys';
@@ -411,11 +411,7 @@ export const useFileUploadState = ({
411
411
  }
412
412
  };
413
413
 
414
- // Memoized because the orchestrator builds the upload-preview header's back
415
- // NODE from it (`fmHeaderBack`): a node can only be compared by identity, so
416
- // a fresh closure here re-creates the node every render and thrashes the
417
- // surface-header bridge into an unbounded update loop (React error #185).
418
- const handleCancelUpload = useCallback(() => {
414
+ const handleCancelUpload = () => {
419
415
  clearPostSelectTimer();
420
416
 
421
417
  // Cleanup preview URLs
@@ -424,7 +420,7 @@ export const useFileUploadState = ({
424
420
  }
425
421
  setPendingFiles([]);
426
422
  setShowUploadPreview(false);
427
- }, [clearPostSelectTimer, pendingFiles]);
423
+ };
428
424
 
429
425
  const removePendingFile = (id: string) => {
430
426
  const file = pendingFiles.find((pf) => pf.id === id);
@@ -442,13 +438,8 @@ export const useFileUploadState = ({
442
438
  /**
443
439
  * Handle file upload - opens document picker and processes selected files
444
440
  * Expo 54 compatible - works on web, iOS, and Android
445
- *
446
- * Memoized because the orchestrator feeds it to the picker header's
447
- * `primaryAction` (the Upload CTA) through a `useMemo`: a fresh closure each
448
- * render invalidates that memo every render, which is the input the
449
- * surface-header bridge is guarding against.
450
441
  */
451
- const handleFileUpload = useCallback(async () => {
442
+ const handleFileUpload = async () => {
452
443
  // Prevent concurrent document picker calls
453
444
  if (isPickingDocument) {
454
445
  toast.error(t('fileManagement.toasts.waitForSelection'));
@@ -547,7 +538,7 @@ export const useFileUploadState = ({
547
538
  // Always reset the picking state, even if there was an error
548
539
  setIsPickingDocument(false);
549
540
  }
550
- }, [isPickingDocument, imagesOnly, handleFileSelection, t]);
541
+ };
551
542
 
552
543
  return {
553
544
  isPickingDocument,
@@ -1,7 +1,7 @@
1
1
  import type React from 'react';
2
2
  import { useEffect, useMemo, useState } from 'react';
3
3
  import { View, StyleSheet } from 'react-native';
4
- import type { ReputationTransaction, TrustTier } from '@oxyhq/contracts';
4
+ import type { ReputationTransaction, TrustTier } from '@oxyhq/core';
5
5
  import Ionicons from '@expo/vector-icons/Ionicons';
6
6
  import { Chip } from '@oxyhq/bloom/chip';
7
7
  import { useTheme } from '@oxyhq/bloom/theme';
@@ -36,7 +36,7 @@ const TrustCenterScreen: React.FC<BaseScreenProps> = ({
36
36
  setIsLoading(true);
37
37
  setError(null);
38
38
  Promise.all([
39
- oxyServices.getMyReputationBalance(),
39
+ oxyServices.getReputationBalance(user.id),
40
40
  oxyServices.getReputationTransactions(user.id, 20, 0),
41
41
  ])
42
42
  .then(([balance, txns]) => {
@@ -7,8 +7,8 @@ import {
7
7
  FlatList,
8
8
  TouchableOpacity,
9
9
  } from 'react-native';
10
- import type { ReputationLeaderboardEntry } from '@oxyhq/contracts';
11
- import { getNormalizedUserHandle, logger } from '@oxyhq/core';
10
+ import type { ReputationLeaderboardEntry } from '@oxyhq/core';
11
+ import { getAccountDisplayName, 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';
@@ -29,7 +29,7 @@ const PODIUM_RANK = 3;
29
29
 
30
30
  const TrustLeaderboardScreen: React.FC<BaseScreenProps> = ({ navigate }) => {
31
31
  const { oxyServices, user: currentUser } = useOxy();
32
- const { t } = useI18n();
32
+ const { t, locale } = useI18n();
33
33
  const bloomTheme = useTheme();
34
34
 
35
35
  const [leaderboard, setLeaderboard] = useState<ReputationLeaderboardEntry[]>([]);
@@ -72,8 +72,7 @@ const TrustLeaderboardScreen: React.FC<BaseScreenProps> = ({ navigate }) => {
72
72
 
73
73
  const renderEntry = useCallback(
74
74
  ({ item }: { item: ReputationLeaderboardEntry }) => {
75
- const displayName =
76
- item.user.name?.displayName ?? getNormalizedUserHandle(item.user) ?? '';
75
+ const displayName = getAccountDisplayName(item.user, locale);
77
76
  const isViewer = currentUserId !== '' && item.user.id === currentUserId;
78
77
  const isPodium = item.rank <= PODIUM_RANK;
79
78
  // Viewer's own row and podium ranks get a subtle highlighted surface.
@@ -116,7 +115,7 @@ const TrustLeaderboardScreen: React.FC<BaseScreenProps> = ({ navigate }) => {
116
115
  </TouchableOpacity>
117
116
  );
118
117
  },
119
- [oxyServices, currentUserId, handleEntryPress, t],
118
+ [oxyServices, locale, currentUserId, handleEntryPress, t],
120
119
  );
121
120
 
122
121
  const keyExtractor = useCallback(
@@ -97,7 +97,7 @@ const TrustRewardsScreen: React.FC<BaseScreenProps> = () => {
97
97
  return;
98
98
  }
99
99
  setIsLoading(true);
100
- oxyServices.getMyReputationBalance()
100
+ oxyServices.getReputationBalance(user.id)
101
101
  .then((balance) => {
102
102
  setReputationTotal(balance.total || 0);
103
103
  })
@@ -4,7 +4,7 @@ import { View, Text } from 'react-native';
4
4
  import { SettingsListGroup, SettingsListItem } from '@oxyhq/bloom/settings-list';
5
5
  import { Chip } from '@oxyhq/bloom/chip';
6
6
  import { useTheme } from '@oxyhq/bloom/theme';
7
- import type { ReputationRule, ReputationCategory } from '@oxyhq/contracts';
7
+ import type { ReputationRule, ReputationCategory } from '@oxyhq/core';
8
8
  import type { BaseScreenProps } from '../../types/navigation';
9
9
  import { useSurfaceHeader } from '../../hooks/useSurfaceHeader';
10
10
  import { Loading } from '@oxyhq/bloom/loading';
@@ -1,4 +1,4 @@
1
- import type { TrustTier } from '@oxyhq/contracts';
1
+ import type { TrustTier } from '@oxyhq/core';
2
2
 
3
3
  type Translate = (key: string, vars?: Record<string, string | number>) => string;
4
4
 
@@ -13,7 +13,6 @@
13
13
  export { createSessionClient } from './createSessionClient';
14
14
  export { createTokenTransport } from './tokenTransport';
15
15
  export { createPlatformAuthStateStore } from './authStore';
16
- export { useBackgroundSessionSync } from './useBackgroundSessionSync';
17
16
  export { createIdentitySessionBinding, IdentityBoundSessionError } from './identityBinding';
18
17
  export type { IdentitySessionBinding } from './identityBinding';
19
18
  export {