@oxyhq/services 11.0.0 → 11.1.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 (434) hide show
  1. package/lib/commonjs/index.js +7 -0
  2. package/lib/commonjs/index.js.map +1 -1
  3. package/lib/commonjs/ui/components/AccountMenu.js +9 -5
  4. package/lib/commonjs/ui/components/AccountMenu.js.map +1 -1
  5. package/lib/commonjs/ui/components/AnotherDeviceQR.js +51 -56
  6. package/lib/commonjs/ui/components/AnotherDeviceQR.js.map +1 -1
  7. package/lib/commonjs/ui/components/BottomSheetRouter.js +1 -0
  8. package/lib/commonjs/ui/components/BottomSheetRouter.js.map +1 -1
  9. package/lib/commonjs/ui/components/FollowButton.js +18 -5
  10. package/lib/commonjs/ui/components/FollowButton.js.map +1 -1
  11. package/lib/commonjs/ui/components/OxyLogo.js +1 -1
  12. package/lib/commonjs/ui/components/OxyLogo.js.map +1 -1
  13. package/lib/commonjs/ui/components/OxyProvider.js +23 -7
  14. package/lib/commonjs/ui/components/OxyProvider.js.map +1 -1
  15. package/lib/commonjs/ui/components/SignInModal.js +20 -1
  16. package/lib/commonjs/ui/components/SignInModal.js.map +1 -1
  17. package/lib/commonjs/ui/components/fileManagement/FileViewer.js +19 -9
  18. package/lib/commonjs/ui/components/fileManagement/FileViewer.js.map +1 -1
  19. package/lib/commonjs/ui/components/fileManagement/UploadPreview.js +4 -2
  20. package/lib/commonjs/ui/components/fileManagement/UploadPreview.js.map +1 -1
  21. package/lib/commonjs/ui/context/OxyContext.js +153 -19
  22. package/lib/commonjs/ui/context/OxyContext.js.map +1 -1
  23. package/lib/commonjs/ui/context/hooks/useAuthOperations.js +6 -17
  24. package/lib/commonjs/ui/context/hooks/useAuthOperations.js.map +1 -1
  25. package/lib/commonjs/ui/hooks/mutations/mutationFactory.js +5 -5
  26. package/lib/commonjs/ui/hooks/mutations/mutationFactory.js.map +1 -1
  27. package/lib/commonjs/ui/hooks/mutations/useAccountMutations.js +38 -38
  28. package/lib/commonjs/ui/hooks/mutations/useAccountMutations.js.map +1 -1
  29. package/lib/commonjs/ui/hooks/mutations/useServicesMutations.js +2 -2
  30. package/lib/commonjs/ui/hooks/mutations/useServicesMutations.js.map +1 -1
  31. package/lib/commonjs/ui/hooks/queries/queryKeys.js +3 -3
  32. package/lib/commonjs/ui/hooks/queries/queryKeys.js.map +1 -1
  33. package/lib/commonjs/ui/hooks/queries/useAccountQueries.js +1 -1
  34. package/lib/commonjs/ui/hooks/queries/useAccountQueries.js.map +1 -1
  35. package/lib/commonjs/ui/hooks/queries/usePaymentQueries.js +16 -12
  36. package/lib/commonjs/ui/hooks/queries/usePaymentQueries.js.map +1 -1
  37. package/lib/commonjs/ui/hooks/queries/useServicesQueries.js +10 -6
  38. package/lib/commonjs/ui/hooks/queries/useServicesQueries.js.map +1 -1
  39. package/lib/commonjs/ui/hooks/queryClient.js +6 -5
  40. package/lib/commonjs/ui/hooks/queryClient.js.map +1 -1
  41. package/lib/commonjs/ui/hooks/useOxyAuthSession.js +40 -2
  42. package/lib/commonjs/ui/hooks/useOxyAuthSession.js.map +1 -1
  43. package/lib/commonjs/ui/hooks/useProfileEditing.js +21 -0
  44. package/lib/commonjs/ui/hooks/useProfileEditing.js.map +1 -1
  45. package/lib/commonjs/ui/hooks/useSessionManagement.js +3 -3
  46. package/lib/commonjs/ui/hooks/useSessionManagement.js.map +1 -1
  47. package/lib/commonjs/ui/screens/AccountVerificationScreen.js +100 -108
  48. package/lib/commonjs/ui/screens/AccountVerificationScreen.js.map +1 -1
  49. package/lib/commonjs/ui/screens/AppInfoScreen.js +227 -273
  50. package/lib/commonjs/ui/screens/AppInfoScreen.js.map +1 -1
  51. package/lib/commonjs/ui/screens/AvatarCropScreen.js +10 -4
  52. package/lib/commonjs/ui/screens/AvatarCropScreen.js.map +1 -1
  53. package/lib/commonjs/ui/screens/ConnectedAppsScreen.js +20 -37
  54. package/lib/commonjs/ui/screens/ConnectedAppsScreen.js.map +1 -1
  55. package/lib/commonjs/ui/screens/CreateManagedAccountScreen.js +89 -201
  56. package/lib/commonjs/ui/screens/CreateManagedAccountScreen.js.map +1 -1
  57. package/lib/commonjs/ui/screens/EditProfileFieldScreen.js +80 -208
  58. package/lib/commonjs/ui/screens/EditProfileFieldScreen.js.map +1 -1
  59. package/lib/commonjs/ui/screens/FAQScreen.js +56 -208
  60. package/lib/commonjs/ui/screens/FAQScreen.js.map +1 -1
  61. package/lib/commonjs/ui/screens/FeedbackScreen.js +303 -352
  62. package/lib/commonjs/ui/screens/FeedbackScreen.js.map +1 -1
  63. package/lib/commonjs/ui/screens/FileManagementScreen.js +20 -20
  64. package/lib/commonjs/ui/screens/FileManagementScreen.js.map +1 -1
  65. package/lib/commonjs/ui/screens/HelpSupportScreen.js +77 -89
  66. package/lib/commonjs/ui/screens/HelpSupportScreen.js.map +1 -1
  67. package/lib/commonjs/ui/screens/HistoryViewScreen.js +43 -58
  68. package/lib/commonjs/ui/screens/HistoryViewScreen.js.map +1 -1
  69. package/lib/commonjs/ui/screens/LanguageSelectorScreen.js +67 -90
  70. package/lib/commonjs/ui/screens/LanguageSelectorScreen.js.map +1 -1
  71. package/lib/commonjs/ui/screens/LearnMoreUsernamesScreen.js +77 -177
  72. package/lib/commonjs/ui/screens/LearnMoreUsernamesScreen.js.map +1 -1
  73. package/lib/commonjs/ui/screens/LegalDocumentsScreen.js +113 -107
  74. package/lib/commonjs/ui/screens/LegalDocumentsScreen.js.map +1 -1
  75. package/lib/commonjs/ui/screens/ManageAccountScreen.js +55 -114
  76. package/lib/commonjs/ui/screens/ManageAccountScreen.js.map +1 -1
  77. package/lib/commonjs/ui/screens/NotificationsScreen.js +67 -85
  78. package/lib/commonjs/ui/screens/NotificationsScreen.js.map +1 -1
  79. package/lib/commonjs/ui/screens/OxyAuthScreen.js +71 -135
  80. package/lib/commonjs/ui/screens/OxyAuthScreen.js.map +1 -1
  81. package/lib/commonjs/ui/screens/PaymentGatewayScreen.js +15 -9
  82. package/lib/commonjs/ui/screens/PaymentGatewayScreen.js.map +1 -1
  83. package/lib/commonjs/ui/screens/PreferencesScreen.js +65 -83
  84. package/lib/commonjs/ui/screens/PreferencesScreen.js.map +1 -1
  85. package/lib/commonjs/ui/screens/PremiumSubscriptionScreen.js +378 -1023
  86. package/lib/commonjs/ui/screens/PremiumSubscriptionScreen.js.map +1 -1
  87. package/lib/commonjs/ui/screens/PrivacySettingsScreen.js +294 -242
  88. package/lib/commonjs/ui/screens/PrivacySettingsScreen.js.map +1 -1
  89. package/lib/commonjs/ui/screens/ProfileScreen.js +194 -333
  90. package/lib/commonjs/ui/screens/ProfileScreen.js.map +1 -1
  91. package/lib/commonjs/ui/screens/SavesCollectionsScreen.js +57 -97
  92. package/lib/commonjs/ui/screens/SavesCollectionsScreen.js.map +1 -1
  93. package/lib/commonjs/ui/screens/SearchSettingsScreen.js +41 -41
  94. package/lib/commonjs/ui/screens/SearchSettingsScreen.js.map +1 -1
  95. package/lib/commonjs/ui/screens/UserLinksScreen.js +17 -24
  96. package/lib/commonjs/ui/screens/UserLinksScreen.js.map +1 -1
  97. package/lib/commonjs/ui/screens/UserListScreen.js +83 -214
  98. package/lib/commonjs/ui/screens/UserListScreen.js.map +1 -1
  99. package/lib/commonjs/ui/screens/WelcomeNewUserScreen.js +115 -77
  100. package/lib/commonjs/ui/screens/WelcomeNewUserScreen.js.map +1 -1
  101. package/lib/commonjs/ui/screens/trust/TrustAboutScreen.js +70 -57
  102. package/lib/commonjs/ui/screens/trust/TrustAboutScreen.js.map +1 -1
  103. package/lib/commonjs/ui/screens/trust/TrustCenterScreen.js +136 -332
  104. package/lib/commonjs/ui/screens/trust/TrustCenterScreen.js.map +1 -1
  105. package/lib/commonjs/ui/screens/trust/TrustFAQScreen.js +47 -137
  106. package/lib/commonjs/ui/screens/trust/TrustFAQScreen.js.map +1 -1
  107. package/lib/commonjs/ui/screens/trust/TrustLeaderboardScreen.js +182 -115
  108. package/lib/commonjs/ui/screens/trust/TrustLeaderboardScreen.js.map +1 -1
  109. package/lib/commonjs/ui/screens/trust/TrustRewardsScreen.js +138 -214
  110. package/lib/commonjs/ui/screens/trust/TrustRewardsScreen.js.map +1 -1
  111. package/lib/commonjs/ui/screens/trust/TrustRulesScreen.js +54 -92
  112. package/lib/commonjs/ui/screens/trust/TrustRulesScreen.js.map +1 -1
  113. package/lib/commonjs/ui/utils/activeAuthuser.js +15 -9
  114. package/lib/commonjs/ui/utils/activeAuthuser.js.map +1 -1
  115. package/lib/commonjs/ui/utils/avatarUtils.js +1 -1
  116. package/lib/commonjs/ui/utils/avatarUtils.js.map +1 -1
  117. package/lib/module/index.js +2 -0
  118. package/lib/module/index.js.map +1 -1
  119. package/lib/module/ui/components/AccountMenu.js +10 -6
  120. package/lib/module/ui/components/AccountMenu.js.map +1 -1
  121. package/lib/module/ui/components/AnotherDeviceQR.js +50 -56
  122. package/lib/module/ui/components/AnotherDeviceQR.js.map +1 -1
  123. package/lib/module/ui/components/BottomSheetRouter.js +2 -1
  124. package/lib/module/ui/components/BottomSheetRouter.js.map +1 -1
  125. package/lib/module/ui/components/FollowButton.js +18 -5
  126. package/lib/module/ui/components/FollowButton.js.map +1 -1
  127. package/lib/module/ui/components/OxyLogo.js +1 -1
  128. package/lib/module/ui/components/OxyLogo.js.map +1 -1
  129. package/lib/module/ui/components/OxyProvider.js +23 -7
  130. package/lib/module/ui/components/OxyProvider.js.map +1 -1
  131. package/lib/module/ui/components/SignInModal.js +20 -1
  132. package/lib/module/ui/components/SignInModal.js.map +1 -1
  133. package/lib/module/ui/components/fileManagement/FileViewer.js +19 -9
  134. package/lib/module/ui/components/fileManagement/FileViewer.js.map +1 -1
  135. package/lib/module/ui/components/fileManagement/UploadPreview.js +4 -2
  136. package/lib/module/ui/components/fileManagement/UploadPreview.js.map +1 -1
  137. package/lib/module/ui/context/OxyContext.js +154 -20
  138. package/lib/module/ui/context/OxyContext.js.map +1 -1
  139. package/lib/module/ui/context/hooks/useAuthOperations.js +6 -17
  140. package/lib/module/ui/context/hooks/useAuthOperations.js.map +1 -1
  141. package/lib/module/ui/hooks/mutations/mutationFactory.js +5 -5
  142. package/lib/module/ui/hooks/mutations/mutationFactory.js.map +1 -1
  143. package/lib/module/ui/hooks/mutations/useAccountMutations.js +38 -38
  144. package/lib/module/ui/hooks/mutations/useAccountMutations.js.map +1 -1
  145. package/lib/module/ui/hooks/mutations/useServicesMutations.js +2 -2
  146. package/lib/module/ui/hooks/mutations/useServicesMutations.js.map +1 -1
  147. package/lib/module/ui/hooks/queries/queryKeys.js +3 -3
  148. package/lib/module/ui/hooks/queries/queryKeys.js.map +1 -1
  149. package/lib/module/ui/hooks/queries/useAccountQueries.js +1 -1
  150. package/lib/module/ui/hooks/queries/useAccountQueries.js.map +1 -1
  151. package/lib/module/ui/hooks/queries/usePaymentQueries.js +16 -12
  152. package/lib/module/ui/hooks/queries/usePaymentQueries.js.map +1 -1
  153. package/lib/module/ui/hooks/queries/useServicesQueries.js +9 -6
  154. package/lib/module/ui/hooks/queries/useServicesQueries.js.map +1 -1
  155. package/lib/module/ui/hooks/queryClient.js +6 -5
  156. package/lib/module/ui/hooks/queryClient.js.map +1 -1
  157. package/lib/module/ui/hooks/useOxyAuthSession.js +40 -2
  158. package/lib/module/ui/hooks/useOxyAuthSession.js.map +1 -1
  159. package/lib/module/ui/hooks/useProfileEditing.js +21 -0
  160. package/lib/module/ui/hooks/useProfileEditing.js.map +1 -1
  161. package/lib/module/ui/hooks/useSessionManagement.js +4 -3
  162. package/lib/module/ui/hooks/useSessionManagement.js.map +1 -1
  163. package/lib/module/ui/screens/AccountVerificationScreen.js +101 -109
  164. package/lib/module/ui/screens/AccountVerificationScreen.js.map +1 -1
  165. package/lib/module/ui/screens/AppInfoScreen.js +228 -275
  166. package/lib/module/ui/screens/AppInfoScreen.js.map +1 -1
  167. package/lib/module/ui/screens/AvatarCropScreen.js +10 -4
  168. package/lib/module/ui/screens/AvatarCropScreen.js.map +1 -1
  169. package/lib/module/ui/screens/ConnectedAppsScreen.js +19 -39
  170. package/lib/module/ui/screens/ConnectedAppsScreen.js.map +1 -1
  171. package/lib/module/ui/screens/CreateManagedAccountScreen.js +90 -202
  172. package/lib/module/ui/screens/CreateManagedAccountScreen.js.map +1 -1
  173. package/lib/module/ui/screens/EditProfileFieldScreen.js +77 -205
  174. package/lib/module/ui/screens/EditProfileFieldScreen.js.map +1 -1
  175. package/lib/module/ui/screens/FAQScreen.js +55 -207
  176. package/lib/module/ui/screens/FAQScreen.js.map +1 -1
  177. package/lib/module/ui/screens/FeedbackScreen.js +301 -350
  178. package/lib/module/ui/screens/FeedbackScreen.js.map +1 -1
  179. package/lib/module/ui/screens/FileManagementScreen.js +20 -20
  180. package/lib/module/ui/screens/FileManagementScreen.js.map +1 -1
  181. package/lib/module/ui/screens/HelpSupportScreen.js +78 -90
  182. package/lib/module/ui/screens/HelpSupportScreen.js.map +1 -1
  183. package/lib/module/ui/screens/HistoryViewScreen.js +44 -59
  184. package/lib/module/ui/screens/HistoryViewScreen.js.map +1 -1
  185. package/lib/module/ui/screens/LanguageSelectorScreen.js +68 -91
  186. package/lib/module/ui/screens/LanguageSelectorScreen.js.map +1 -1
  187. package/lib/module/ui/screens/LearnMoreUsernamesScreen.js +75 -177
  188. package/lib/module/ui/screens/LearnMoreUsernamesScreen.js.map +1 -1
  189. package/lib/module/ui/screens/LegalDocumentsScreen.js +116 -108
  190. package/lib/module/ui/screens/LegalDocumentsScreen.js.map +1 -1
  191. package/lib/module/ui/screens/ManageAccountScreen.js +52 -112
  192. package/lib/module/ui/screens/ManageAccountScreen.js.map +1 -1
  193. package/lib/module/ui/screens/NotificationsScreen.js +68 -86
  194. package/lib/module/ui/screens/NotificationsScreen.js.map +1 -1
  195. package/lib/module/ui/screens/OxyAuthScreen.js +69 -134
  196. package/lib/module/ui/screens/OxyAuthScreen.js.map +1 -1
  197. package/lib/module/ui/screens/PaymentGatewayScreen.js +16 -10
  198. package/lib/module/ui/screens/PaymentGatewayScreen.js.map +1 -1
  199. package/lib/module/ui/screens/PreferencesScreen.js +66 -84
  200. package/lib/module/ui/screens/PreferencesScreen.js.map +1 -1
  201. package/lib/module/ui/screens/PremiumSubscriptionScreen.js +366 -1012
  202. package/lib/module/ui/screens/PremiumSubscriptionScreen.js.map +1 -1
  203. package/lib/module/ui/screens/PrivacySettingsScreen.js +295 -243
  204. package/lib/module/ui/screens/PrivacySettingsScreen.js.map +1 -1
  205. package/lib/module/ui/screens/ProfileScreen.js +192 -331
  206. package/lib/module/ui/screens/ProfileScreen.js.map +1 -1
  207. package/lib/module/ui/screens/SavesCollectionsScreen.js +58 -98
  208. package/lib/module/ui/screens/SavesCollectionsScreen.js.map +1 -1
  209. package/lib/module/ui/screens/SearchSettingsScreen.js +42 -42
  210. package/lib/module/ui/screens/SearchSettingsScreen.js.map +1 -1
  211. package/lib/module/ui/screens/UserLinksScreen.js +18 -25
  212. package/lib/module/ui/screens/UserLinksScreen.js.map +1 -1
  213. package/lib/module/ui/screens/UserListScreen.js +81 -212
  214. package/lib/module/ui/screens/UserListScreen.js.map +1 -1
  215. package/lib/module/ui/screens/WelcomeNewUserScreen.js +114 -76
  216. package/lib/module/ui/screens/WelcomeNewUserScreen.js.map +1 -1
  217. package/lib/module/ui/screens/trust/TrustAboutScreen.js +69 -57
  218. package/lib/module/ui/screens/trust/TrustAboutScreen.js.map +1 -1
  219. package/lib/module/ui/screens/trust/TrustCenterScreen.js +135 -332
  220. package/lib/module/ui/screens/trust/TrustCenterScreen.js.map +1 -1
  221. package/lib/module/ui/screens/trust/TrustFAQScreen.js +48 -138
  222. package/lib/module/ui/screens/trust/TrustFAQScreen.js.map +1 -1
  223. package/lib/module/ui/screens/trust/TrustLeaderboardScreen.js +184 -117
  224. package/lib/module/ui/screens/trust/TrustLeaderboardScreen.js.map +1 -1
  225. package/lib/module/ui/screens/trust/TrustRewardsScreen.js +132 -208
  226. package/lib/module/ui/screens/trust/TrustRewardsScreen.js.map +1 -1
  227. package/lib/module/ui/screens/trust/TrustRulesScreen.js +58 -94
  228. package/lib/module/ui/screens/trust/TrustRulesScreen.js.map +1 -1
  229. package/lib/module/ui/utils/activeAuthuser.js +15 -9
  230. package/lib/module/ui/utils/activeAuthuser.js.map +1 -1
  231. package/lib/module/ui/utils/avatarUtils.js +1 -1
  232. package/lib/module/ui/utils/avatarUtils.js.map +1 -1
  233. package/lib/typescript/commonjs/index.d.ts +2 -0
  234. package/lib/typescript/commonjs/index.d.ts.map +1 -1
  235. package/lib/typescript/commonjs/ui/components/AccountMenu.d.ts +2 -0
  236. package/lib/typescript/commonjs/ui/components/AccountMenu.d.ts.map +1 -1
  237. package/lib/typescript/commonjs/ui/components/AnotherDeviceQR.d.ts +12 -2
  238. package/lib/typescript/commonjs/ui/components/AnotherDeviceQR.d.ts.map +1 -1
  239. package/lib/typescript/commonjs/ui/components/BottomSheetRouter.d.ts.map +1 -1
  240. package/lib/typescript/commonjs/ui/components/FollowButton.d.ts.map +1 -1
  241. package/lib/typescript/commonjs/ui/components/OxyProvider.d.ts +3 -2
  242. package/lib/typescript/commonjs/ui/components/OxyProvider.d.ts.map +1 -1
  243. package/lib/typescript/commonjs/ui/components/SignInModal.d.ts.map +1 -1
  244. package/lib/typescript/commonjs/ui/components/TouchableRipple/TouchableRipple.native.d.ts +1 -1
  245. package/lib/typescript/commonjs/ui/components/TouchableRipple/TouchableRipple.native.d.ts.map +1 -1
  246. package/lib/typescript/commonjs/ui/context/OxyContext.d.ts +34 -0
  247. package/lib/typescript/commonjs/ui/context/OxyContext.d.ts.map +1 -1
  248. package/lib/typescript/commonjs/ui/context/hooks/useAuthOperations.d.ts.map +1 -1
  249. package/lib/typescript/commonjs/ui/hooks/mutations/useAccountMutations.d.ts +6 -0
  250. package/lib/typescript/commonjs/ui/hooks/mutations/useAccountMutations.d.ts.map +1 -1
  251. package/lib/typescript/commonjs/ui/hooks/queries/queryKeys.d.ts +3 -3
  252. package/lib/typescript/commonjs/ui/hooks/queries/queryKeys.d.ts.map +1 -1
  253. package/lib/typescript/commonjs/ui/hooks/queries/useServicesQueries.d.ts.map +1 -1
  254. package/lib/typescript/commonjs/ui/hooks/queryClient.d.ts.map +1 -1
  255. package/lib/typescript/commonjs/ui/hooks/useOxyAuthSession.d.ts +22 -0
  256. package/lib/typescript/commonjs/ui/hooks/useOxyAuthSession.d.ts.map +1 -1
  257. package/lib/typescript/commonjs/ui/hooks/useProfileEditing.d.ts +3 -0
  258. package/lib/typescript/commonjs/ui/hooks/useProfileEditing.d.ts.map +1 -1
  259. package/lib/typescript/commonjs/ui/hooks/useSessionManagement.d.ts +2 -1
  260. package/lib/typescript/commonjs/ui/hooks/useSessionManagement.d.ts.map +1 -1
  261. package/lib/typescript/commonjs/ui/screens/AccountVerificationScreen.d.ts.map +1 -1
  262. package/lib/typescript/commonjs/ui/screens/AppInfoScreen.d.ts.map +1 -1
  263. package/lib/typescript/commonjs/ui/screens/AvatarCropScreen.d.ts.map +1 -1
  264. package/lib/typescript/commonjs/ui/screens/ConnectedAppsScreen.d.ts.map +1 -1
  265. package/lib/typescript/commonjs/ui/screens/CreateManagedAccountScreen.d.ts.map +1 -1
  266. package/lib/typescript/commonjs/ui/screens/EditProfileFieldScreen.d.ts.map +1 -1
  267. package/lib/typescript/commonjs/ui/screens/FAQScreen.d.ts.map +1 -1
  268. package/lib/typescript/commonjs/ui/screens/FeedbackScreen.d.ts.map +1 -1
  269. package/lib/typescript/commonjs/ui/screens/HelpSupportScreen.d.ts.map +1 -1
  270. package/lib/typescript/commonjs/ui/screens/HistoryViewScreen.d.ts.map +1 -1
  271. package/lib/typescript/commonjs/ui/screens/LanguageSelectorScreen.d.ts.map +1 -1
  272. package/lib/typescript/commonjs/ui/screens/LearnMoreUsernamesScreen.d.ts.map +1 -1
  273. package/lib/typescript/commonjs/ui/screens/LegalDocumentsScreen.d.ts.map +1 -1
  274. package/lib/typescript/commonjs/ui/screens/ManageAccountScreen.d.ts.map +1 -1
  275. package/lib/typescript/commonjs/ui/screens/NotificationsScreen.d.ts.map +1 -1
  276. package/lib/typescript/commonjs/ui/screens/OxyAuthScreen.d.ts.map +1 -1
  277. package/lib/typescript/commonjs/ui/screens/PaymentGatewayScreen.d.ts.map +1 -1
  278. package/lib/typescript/commonjs/ui/screens/PreferencesScreen.d.ts.map +1 -1
  279. package/lib/typescript/commonjs/ui/screens/PremiumSubscriptionScreen.d.ts.map +1 -1
  280. package/lib/typescript/commonjs/ui/screens/PrivacySettingsScreen.d.ts.map +1 -1
  281. package/lib/typescript/commonjs/ui/screens/ProfileScreen.d.ts.map +1 -1
  282. package/lib/typescript/commonjs/ui/screens/SavesCollectionsScreen.d.ts.map +1 -1
  283. package/lib/typescript/commonjs/ui/screens/SearchSettingsScreen.d.ts.map +1 -1
  284. package/lib/typescript/commonjs/ui/screens/UserLinksScreen.d.ts.map +1 -1
  285. package/lib/typescript/commonjs/ui/screens/UserListScreen.d.ts.map +1 -1
  286. package/lib/typescript/commonjs/ui/screens/WelcomeNewUserScreen.d.ts.map +1 -1
  287. package/lib/typescript/commonjs/ui/screens/trust/TrustAboutScreen.d.ts.map +1 -1
  288. package/lib/typescript/commonjs/ui/screens/trust/TrustCenterScreen.d.ts.map +1 -1
  289. package/lib/typescript/commonjs/ui/screens/trust/TrustFAQScreen.d.ts.map +1 -1
  290. package/lib/typescript/commonjs/ui/screens/trust/TrustLeaderboardScreen.d.ts.map +1 -1
  291. package/lib/typescript/commonjs/ui/screens/trust/TrustRewardsScreen.d.ts.map +1 -1
  292. package/lib/typescript/commonjs/ui/screens/trust/TrustRulesScreen.d.ts.map +1 -1
  293. package/lib/typescript/commonjs/ui/utils/activeAuthuser.d.ts.map +1 -1
  294. package/lib/typescript/module/index.d.ts +2 -0
  295. package/lib/typescript/module/index.d.ts.map +1 -1
  296. package/lib/typescript/module/ui/components/AccountMenu.d.ts +2 -0
  297. package/lib/typescript/module/ui/components/AccountMenu.d.ts.map +1 -1
  298. package/lib/typescript/module/ui/components/AnotherDeviceQR.d.ts +12 -2
  299. package/lib/typescript/module/ui/components/AnotherDeviceQR.d.ts.map +1 -1
  300. package/lib/typescript/module/ui/components/BottomSheetRouter.d.ts.map +1 -1
  301. package/lib/typescript/module/ui/components/FollowButton.d.ts.map +1 -1
  302. package/lib/typescript/module/ui/components/OxyProvider.d.ts +3 -2
  303. package/lib/typescript/module/ui/components/OxyProvider.d.ts.map +1 -1
  304. package/lib/typescript/module/ui/components/SignInModal.d.ts.map +1 -1
  305. package/lib/typescript/module/ui/components/TouchableRipple/TouchableRipple.native.d.ts +1 -1
  306. package/lib/typescript/module/ui/components/TouchableRipple/TouchableRipple.native.d.ts.map +1 -1
  307. package/lib/typescript/module/ui/context/OxyContext.d.ts +34 -0
  308. package/lib/typescript/module/ui/context/OxyContext.d.ts.map +1 -1
  309. package/lib/typescript/module/ui/context/hooks/useAuthOperations.d.ts.map +1 -1
  310. package/lib/typescript/module/ui/hooks/mutations/useAccountMutations.d.ts +6 -0
  311. package/lib/typescript/module/ui/hooks/mutations/useAccountMutations.d.ts.map +1 -1
  312. package/lib/typescript/module/ui/hooks/queries/queryKeys.d.ts +3 -3
  313. package/lib/typescript/module/ui/hooks/queries/queryKeys.d.ts.map +1 -1
  314. package/lib/typescript/module/ui/hooks/queries/useServicesQueries.d.ts.map +1 -1
  315. package/lib/typescript/module/ui/hooks/queryClient.d.ts.map +1 -1
  316. package/lib/typescript/module/ui/hooks/useOxyAuthSession.d.ts +22 -0
  317. package/lib/typescript/module/ui/hooks/useOxyAuthSession.d.ts.map +1 -1
  318. package/lib/typescript/module/ui/hooks/useProfileEditing.d.ts +3 -0
  319. package/lib/typescript/module/ui/hooks/useProfileEditing.d.ts.map +1 -1
  320. package/lib/typescript/module/ui/hooks/useSessionManagement.d.ts +2 -1
  321. package/lib/typescript/module/ui/hooks/useSessionManagement.d.ts.map +1 -1
  322. package/lib/typescript/module/ui/screens/AccountVerificationScreen.d.ts.map +1 -1
  323. package/lib/typescript/module/ui/screens/AppInfoScreen.d.ts.map +1 -1
  324. package/lib/typescript/module/ui/screens/AvatarCropScreen.d.ts.map +1 -1
  325. package/lib/typescript/module/ui/screens/ConnectedAppsScreen.d.ts.map +1 -1
  326. package/lib/typescript/module/ui/screens/CreateManagedAccountScreen.d.ts.map +1 -1
  327. package/lib/typescript/module/ui/screens/EditProfileFieldScreen.d.ts.map +1 -1
  328. package/lib/typescript/module/ui/screens/FAQScreen.d.ts.map +1 -1
  329. package/lib/typescript/module/ui/screens/FeedbackScreen.d.ts.map +1 -1
  330. package/lib/typescript/module/ui/screens/HelpSupportScreen.d.ts.map +1 -1
  331. package/lib/typescript/module/ui/screens/HistoryViewScreen.d.ts.map +1 -1
  332. package/lib/typescript/module/ui/screens/LanguageSelectorScreen.d.ts.map +1 -1
  333. package/lib/typescript/module/ui/screens/LearnMoreUsernamesScreen.d.ts.map +1 -1
  334. package/lib/typescript/module/ui/screens/LegalDocumentsScreen.d.ts.map +1 -1
  335. package/lib/typescript/module/ui/screens/ManageAccountScreen.d.ts.map +1 -1
  336. package/lib/typescript/module/ui/screens/NotificationsScreen.d.ts.map +1 -1
  337. package/lib/typescript/module/ui/screens/OxyAuthScreen.d.ts.map +1 -1
  338. package/lib/typescript/module/ui/screens/PaymentGatewayScreen.d.ts.map +1 -1
  339. package/lib/typescript/module/ui/screens/PreferencesScreen.d.ts.map +1 -1
  340. package/lib/typescript/module/ui/screens/PremiumSubscriptionScreen.d.ts.map +1 -1
  341. package/lib/typescript/module/ui/screens/PrivacySettingsScreen.d.ts.map +1 -1
  342. package/lib/typescript/module/ui/screens/ProfileScreen.d.ts.map +1 -1
  343. package/lib/typescript/module/ui/screens/SavesCollectionsScreen.d.ts.map +1 -1
  344. package/lib/typescript/module/ui/screens/SearchSettingsScreen.d.ts.map +1 -1
  345. package/lib/typescript/module/ui/screens/UserLinksScreen.d.ts.map +1 -1
  346. package/lib/typescript/module/ui/screens/UserListScreen.d.ts.map +1 -1
  347. package/lib/typescript/module/ui/screens/WelcomeNewUserScreen.d.ts.map +1 -1
  348. package/lib/typescript/module/ui/screens/trust/TrustAboutScreen.d.ts.map +1 -1
  349. package/lib/typescript/module/ui/screens/trust/TrustCenterScreen.d.ts.map +1 -1
  350. package/lib/typescript/module/ui/screens/trust/TrustFAQScreen.d.ts.map +1 -1
  351. package/lib/typescript/module/ui/screens/trust/TrustLeaderboardScreen.d.ts.map +1 -1
  352. package/lib/typescript/module/ui/screens/trust/TrustRewardsScreen.d.ts.map +1 -1
  353. package/lib/typescript/module/ui/screens/trust/TrustRulesScreen.d.ts.map +1 -1
  354. package/lib/typescript/module/ui/utils/activeAuthuser.d.ts.map +1 -1
  355. package/lib/typescript/types/expo-haptics.d.ts +42 -0
  356. package/package.json +8 -3
  357. package/src/index.ts +2 -0
  358. package/src/types/expo-haptics.d.ts +42 -0
  359. package/src/ui/components/AccountMenu.tsx +11 -5
  360. package/src/ui/components/AnotherDeviceQR.tsx +53 -45
  361. package/src/ui/components/BottomSheetRouter.tsx +2 -1
  362. package/src/ui/components/FollowButton.tsx +24 -5
  363. package/src/ui/components/OxyLogo.tsx +1 -1
  364. package/src/ui/components/OxyProvider.tsx +22 -8
  365. package/src/ui/components/SignInModal.tsx +21 -2
  366. package/src/ui/components/TouchableRipple/TouchableRipple.native.tsx +1 -1
  367. package/src/ui/components/fileManagement/FileViewer.tsx +9 -9
  368. package/src/ui/components/fileManagement/UploadPreview.tsx +2 -2
  369. package/src/ui/context/OxyContext.tsx +178 -21
  370. package/src/ui/context/hooks/useAuthOperations.ts +6 -17
  371. package/src/ui/hooks/mutations/mutationFactory.ts +5 -5
  372. package/src/ui/hooks/mutations/useAccountMutations.ts +38 -38
  373. package/src/ui/hooks/mutations/useServicesMutations.ts +2 -2
  374. package/src/ui/hooks/queries/queryKeys.ts +6 -3
  375. package/src/ui/hooks/queries/useAccountQueries.ts +1 -1
  376. package/src/ui/hooks/queries/usePaymentQueries.ts +12 -12
  377. package/src/ui/hooks/queries/useServicesQueries.ts +9 -6
  378. package/src/ui/hooks/queryClient.ts +5 -5
  379. package/src/ui/hooks/useOxyAuthSession.ts +76 -2
  380. package/src/ui/hooks/useProfileEditing.ts +24 -0
  381. package/src/ui/hooks/useSessionManagement.ts +9 -6
  382. package/src/ui/screens/AccountVerificationScreen.tsx +101 -113
  383. package/src/ui/screens/AppInfoScreen.tsx +200 -238
  384. package/src/ui/screens/AvatarCropScreen.tsx +17 -4
  385. package/src/ui/screens/ConnectedAppsScreen.tsx +16 -34
  386. package/src/ui/screens/CreateManagedAccountScreen.tsx +94 -170
  387. package/src/ui/screens/EditProfileFieldScreen.tsx +77 -190
  388. package/src/ui/screens/FAQScreen.tsx +77 -208
  389. package/src/ui/screens/FeedbackScreen.tsx +330 -239
  390. package/src/ui/screens/FileManagementScreen.tsx +20 -20
  391. package/src/ui/screens/HelpSupportScreen.tsx +67 -82
  392. package/src/ui/screens/HistoryViewScreen.tsx +32 -38
  393. package/src/ui/screens/LanguageSelectorScreen.tsx +79 -93
  394. package/src/ui/screens/LearnMoreUsernamesScreen.tsx +81 -164
  395. package/src/ui/screens/LegalDocumentsScreen.tsx +184 -123
  396. package/src/ui/screens/ManageAccountScreen.tsx +48 -114
  397. package/src/ui/screens/NotificationsScreen.tsx +107 -106
  398. package/src/ui/screens/OxyAuthScreen.tsx +76 -109
  399. package/src/ui/screens/PaymentGatewayScreen.tsx +16 -7
  400. package/src/ui/screens/PreferencesScreen.tsx +96 -116
  401. package/src/ui/screens/PremiumSubscriptionScreen.tsx +419 -872
  402. package/src/ui/screens/PrivacySettingsScreen.tsx +203 -185
  403. package/src/ui/screens/ProfileScreen.tsx +162 -246
  404. package/src/ui/screens/SavesCollectionsScreen.tsx +78 -125
  405. package/src/ui/screens/SearchSettingsScreen.tsx +52 -41
  406. package/src/ui/screens/UserLinksScreen.tsx +18 -25
  407. package/src/ui/screens/UserListScreen.tsx +95 -188
  408. package/src/ui/screens/WelcomeNewUserScreen.tsx +109 -36
  409. package/src/ui/screens/trust/TrustAboutScreen.tsx +52 -41
  410. package/src/ui/screens/trust/TrustCenterScreen.tsx +184 -222
  411. package/src/ui/screens/trust/TrustFAQScreen.tsx +64 -124
  412. package/src/ui/screens/trust/TrustLeaderboardScreen.tsx +190 -67
  413. package/src/ui/screens/trust/TrustRewardsScreen.tsx +147 -182
  414. package/src/ui/screens/trust/TrustRulesScreen.tsx +77 -50
  415. package/src/ui/utils/activeAuthuser.ts +15 -9
  416. package/src/ui/utils/avatarUtils.ts +1 -1
  417. package/lib/commonjs/ui/components/feedback/FormInput.js +0 -72
  418. package/lib/commonjs/ui/components/feedback/FormInput.js.map +0 -1
  419. package/lib/commonjs/ui/components/feedback/feedbackStyles.js +0 -261
  420. package/lib/commonjs/ui/components/feedback/feedbackStyles.js.map +0 -1
  421. package/lib/module/ui/components/feedback/FormInput.js +0 -67
  422. package/lib/module/ui/components/feedback/FormInput.js.map +0 -1
  423. package/lib/module/ui/components/feedback/feedbackStyles.js +0 -256
  424. package/lib/module/ui/components/feedback/feedbackStyles.js.map +0 -1
  425. package/lib/typescript/commonjs/ui/components/feedback/FormInput.d.ts +0 -20
  426. package/lib/typescript/commonjs/ui/components/feedback/FormInput.d.ts.map +0 -1
  427. package/lib/typescript/commonjs/ui/components/feedback/feedbackStyles.d.ts +0 -279
  428. package/lib/typescript/commonjs/ui/components/feedback/feedbackStyles.d.ts.map +0 -1
  429. package/lib/typescript/module/ui/components/feedback/FormInput.d.ts +0 -20
  430. package/lib/typescript/module/ui/components/feedback/FormInput.d.ts.map +0 -1
  431. package/lib/typescript/module/ui/components/feedback/feedbackStyles.d.ts +0 -279
  432. package/lib/typescript/module/ui/components/feedback/feedbackStyles.d.ts.map +0 -1
  433. package/src/ui/components/feedback/FormInput.tsx +0 -84
  434. package/src/ui/components/feedback/feedbackStyles.ts +0 -246
@@ -2,9 +2,6 @@ import type React from 'react';
2
2
  import { useState, useEffect } from 'react';
3
3
  import {
4
4
  View,
5
- Text,
6
- TouchableOpacity,
7
- StyleSheet,
8
5
  Platform,
9
6
  Dimensions,
10
7
  Clipboard,
@@ -14,18 +11,14 @@ import {
14
11
  import type { BaseScreenProps } from '../types/navigation';
15
12
  import { packageInfo } from '@oxyhq/core';
16
13
  import { toast } from '@oxyhq/bloom';
17
- import { Ionicons } from '@expo/vector-icons';
18
14
  import OxyServicesLogo from '../../assets/icons/OxyServices';
19
15
  import { SettingsIcon } from '../components/SettingsIcon';
16
+ import Header from '../components/Header';
20
17
  import { useTheme } from '@oxyhq/bloom/theme';
21
- import { useColorScheme } from '../hooks/useColorScheme';
22
- import { Colors } from '../constants/theme';
23
- import { normalizeColorScheme } from '@oxyhq/core';
24
18
  import { useOxy } from '../context/OxyContext';
25
19
  import { useI18n } from '../hooks/useI18n';
26
20
  import { SettingsListGroup, SettingsListItem } from '@oxyhq/bloom/settings-list';
27
21
 
28
-
29
22
  interface SystemInfo {
30
23
  platform: string;
31
24
  version: string;
@@ -38,7 +31,7 @@ interface SystemInfo {
38
31
 
39
32
  const AppInfoScreen: React.FC<BaseScreenProps> = ({
40
33
  onClose,
41
- theme,
34
+ goBack,
42
35
  navigate,
43
36
  }) => {
44
37
  // Use useOxy() hook for OxyContext values
@@ -49,11 +42,7 @@ const AppInfoScreen: React.FC<BaseScreenProps> = ({
49
42
  const [connectionStatus, setConnectionStatus] = useState<'checking' | 'connected' | 'disconnected' | 'unknown'>('unknown');
50
43
 
51
44
  const bloomTheme = useTheme();
52
- const colorScheme = useColorScheme();
53
- const normalizedColorScheme = normalizeColorScheme(colorScheme);
54
- const themeColors = Colors[normalizedColorScheme];
55
- const backgroundColor = bloomTheme.colors.background;
56
- const primaryColor = themeColors.iconSecurity;
45
+ const colors = bloomTheme.colors;
57
46
 
58
47
  useEffect(() => {
59
48
  const updateDimensions = () => {
@@ -159,241 +148,214 @@ const AppInfoScreen: React.FC<BaseScreenProps> = ({
159
148
  };
160
149
 
161
150
  return (
162
- <View style={[styles.container, { backgroundColor }]}>
163
- {/* Header */}
164
- <View style={[styles.header, { backgroundColor: bloomTheme.colors.card }]}>
165
- <TouchableOpacity style={styles.cancelButton} onPress={onClose}>
166
- <Ionicons name="close" size={24} color={bloomTheme.colors.textSecondary} />
167
- </TouchableOpacity>
168
- <Text style={[styles.headerTitle, { color: bloomTheme.colors.text }]}>{t('appInfo.title')}</Text>
169
- <View style={styles.placeholder} />
170
- </View>
151
+ <View className="flex-1 bg-bg">
152
+ <Header
153
+ title={t('appInfo.title')}
154
+ onBack={goBack || onClose}
155
+ variant="minimal"
156
+ elevation="subtle"
157
+ />
171
158
 
172
- <ScrollView style={styles.content} showsVerticalScrollIndicator={false}>
173
- {/* Package Information */}
174
- <SettingsListGroup title={t('appInfo.sections.package')}>
175
- <SettingsListItem
176
- icon={<OxyServicesLogo width={20} height={20} />}
177
- title={t('appInfo.items.name')}
178
- description={packageInfo.name}
179
- onPress={() => copyToClipboard(packageInfo.name, t('appInfo.items.name'))}
180
- />
181
- <SettingsListItem
182
- icon={<SettingsIcon name="tag" color={themeColors.iconData} />}
183
- title={t('appInfo.items.version')}
184
- description={packageInfo.version}
185
- onPress={() => copyToClipboard(packageInfo.version, t('appInfo.items.version'))}
186
- />
187
- <SettingsListItem
188
- icon={<SettingsIcon name="file-document" color={themeColors.iconPersonalInfo} />}
189
- title={t('appInfo.items.description')}
190
- description={packageInfo.description || t('appInfo.items.noDescription')}
191
- />
192
- <SettingsListItem
193
- icon={<SettingsIcon name="code-tags" color={themeColors.iconStorage} />}
194
- title={t('appInfo.items.mainEntry')}
195
- description={packageInfo.main || 'N/A'}
196
- onPress={() => copyToClipboard(packageInfo.main || 'N/A', t('appInfo.items.mainEntry'))}
197
- />
198
- <SettingsListItem
199
- icon={<SettingsIcon name="library" color={themeColors.iconSharing} />}
200
- title={t('appInfo.items.moduleEntry')}
201
- description={packageInfo.module || 'N/A'}
202
- onPress={() => copyToClipboard(packageInfo.module || 'N/A', t('appInfo.items.moduleEntry'))}
203
- />
204
- <SettingsListItem
205
- icon={<SettingsIcon name="wrench" color={themeColors.iconPersonalInfo} />}
206
- title={t('appInfo.items.typesEntry')}
207
- description={packageInfo.types || 'N/A'}
208
- onPress={() => copyToClipboard(packageInfo.types || 'N/A', t('appInfo.items.typesEntry'))}
209
- />
210
- </SettingsListGroup>
159
+ <ScrollView className="flex-1" showsVerticalScrollIndicator={false}>
160
+ <View className="px-screen-margin py-space-16 pb-space-24">
161
+ {/* Package Information */}
162
+ <SettingsListGroup title={t('appInfo.sections.package')}>
163
+ <SettingsListItem
164
+ icon={<OxyServicesLogo width={20} height={20} />}
165
+ title={t('appInfo.items.name')}
166
+ description={packageInfo.name}
167
+ onPress={() => copyToClipboard(packageInfo.name, t('appInfo.items.name'))}
168
+ />
169
+ <SettingsListItem
170
+ icon={<SettingsIcon name="tag" color={colors.info} />}
171
+ title={t('appInfo.items.version')}
172
+ description={packageInfo.version}
173
+ onPress={() => copyToClipboard(packageInfo.version, t('appInfo.items.version'))}
174
+ />
175
+ <SettingsListItem
176
+ icon={<SettingsIcon name="file-document" color={colors.success} />}
177
+ title={t('appInfo.items.description')}
178
+ description={packageInfo.description || t('appInfo.items.noDescription')}
179
+ />
180
+ <SettingsListItem
181
+ icon={<SettingsIcon name="code-tags" color={colors.secondary} />}
182
+ title={t('appInfo.items.mainEntry')}
183
+ description={packageInfo.main || 'N/A'}
184
+ onPress={() => copyToClipboard(packageInfo.main || 'N/A', t('appInfo.items.mainEntry'))}
185
+ />
186
+ <SettingsListItem
187
+ icon={<SettingsIcon name="library" color={colors.warning} />}
188
+ title={t('appInfo.items.moduleEntry')}
189
+ description={packageInfo.module || 'N/A'}
190
+ onPress={() => copyToClipboard(packageInfo.module || 'N/A', t('appInfo.items.moduleEntry'))}
191
+ />
192
+ <SettingsListItem
193
+ icon={<SettingsIcon name="wrench" color={colors.success} />}
194
+ title={t('appInfo.items.typesEntry')}
195
+ description={packageInfo.types || 'N/A'}
196
+ onPress={() => copyToClipboard(packageInfo.types || 'N/A', t('appInfo.items.typesEntry'))}
197
+ />
198
+ </SettingsListGroup>
211
199
 
212
- {/* System Information */}
213
- <SettingsListGroup title={t('appInfo.sections.system')}>
214
- <SettingsListItem
215
- icon={<SettingsIcon name="cellphone" color={themeColors.iconSecurity} />}
216
- title={t('appInfo.items.platform')}
217
- description={Platform.OS}
218
- />
219
- <SettingsListItem
220
- icon={<SettingsIcon name="chip" color={themeColors.iconData} />}
221
- title={t('appInfo.items.platformVersion')}
222
- description={systemInfo?.version || t('common.status.loading')}
223
- />
224
- <SettingsListItem
225
- icon={<SettingsIcon name="resize" color={themeColors.iconStorage} />}
226
- title={t('appInfo.items.screenWidth')}
227
- description={`${systemInfo?.screenDimensions.width || 0}px`}
228
- />
229
- <SettingsListItem
230
- icon={<SettingsIcon name="resize" color={themeColors.iconSharing} />}
231
- title={t('appInfo.items.screenHeight')}
232
- description={`${systemInfo?.screenDimensions.height || 0}px`}
233
- />
234
- <SettingsListItem
235
- icon={<SettingsIcon name="cog" color={themeColors.iconPersonalInfo} />}
236
- title={t('appInfo.items.environment')}
237
- description={__DEV__ ? t('appInfo.items.development') : t('appInfo.items.production')}
238
- />
239
- </SettingsListGroup>
200
+ {/* System Information */}
201
+ <SettingsListGroup title={t('appInfo.sections.system')}>
202
+ <SettingsListItem
203
+ icon={<SettingsIcon name="cellphone" color={colors.primary} />}
204
+ title={t('appInfo.items.platform')}
205
+ description={Platform.OS}
206
+ />
207
+ <SettingsListItem
208
+ icon={<SettingsIcon name="chip" color={colors.info} />}
209
+ title={t('appInfo.items.platformVersion')}
210
+ description={systemInfo?.version || t('common.status.loading')}
211
+ />
212
+ <SettingsListItem
213
+ icon={<SettingsIcon name="resize" color={colors.secondary} />}
214
+ title={t('appInfo.items.screenWidth')}
215
+ description={`${systemInfo?.screenDimensions.width || 0}px`}
216
+ />
217
+ <SettingsListItem
218
+ icon={<SettingsIcon name="resize" color={colors.warning} />}
219
+ title={t('appInfo.items.screenHeight')}
220
+ description={`${systemInfo?.screenDimensions.height || 0}px`}
221
+ />
222
+ <SettingsListItem
223
+ icon={<SettingsIcon name="cog" color={colors.success} />}
224
+ title={t('appInfo.items.environment')}
225
+ description={__DEV__ ? t('appInfo.items.development') : t('appInfo.items.production')}
226
+ />
227
+ </SettingsListGroup>
240
228
 
241
- {/* User Information */}
242
- <SettingsListGroup title={t('appInfo.sections.user')}>
243
- <SettingsListItem
244
- icon={<SettingsIcon name="shield-check" color={isAuthenticated ? themeColors.iconPersonalInfo : themeColors.iconSharing} />}
245
- title={t('appInfo.items.authStatus')}
246
- description={isAuthenticated ? t('appInfo.items.authenticated') : t('appInfo.items.notAuthenticated')}
247
- />
248
- {user && (
249
- <>
250
- <SettingsListItem
251
- icon={<SettingsIcon name="account" color={themeColors.iconSecurity} />}
252
- title={t('appInfo.items.userId')}
253
- description={user.id}
254
- onPress={() => copyToClipboard(user.id, t('appInfo.items.userId'))}
255
- />
256
- <SettingsListItem
257
- icon={<SettingsIcon name="at" color={themeColors.iconData} />}
258
- title={t('appInfo.items.username')}
259
- description={user.username || 'N/A'}
260
- onPress={() => {
261
- if (user?.username && navigate) {
262
- navigate('Profile', { userId: user.id });
263
- } else {
264
- toast.info(t('appInfo.toasts.noUsernameOrNav'));
265
- }
266
- }}
267
- />
268
- <SettingsListItem
269
- icon={<SettingsIcon name="email" color={themeColors.iconStorage} />}
270
- title={t('appInfo.items.email')}
271
- description={user.email || 'N/A'}
272
- />
273
- <SettingsListItem
274
- icon={<SettingsIcon name="star" color={user.isPremium ? bloomTheme.colors.warning : bloomTheme.colors.textTertiary} />}
275
- title={t('appInfo.items.premiumStatus')}
276
- description={user.isPremium ? t('appInfo.items.premium') : t('appInfo.items.standard')}
277
- />
278
- </>
279
- )}
280
- <SettingsListItem
281
- icon={<SettingsIcon name="account-group" color={themeColors.iconPersonalInfo} />}
282
- title={t('appInfo.items.totalActiveSessions')}
283
- description={sessions?.length?.toString() || '0'}
284
- />
285
- </SettingsListGroup>
229
+ {/* User Information */}
230
+ <SettingsListGroup title={t('appInfo.sections.user')}>
231
+ <SettingsListItem
232
+ icon={<SettingsIcon name="shield-check" color={isAuthenticated ? colors.success : colors.warning} />}
233
+ title={t('appInfo.items.authStatus')}
234
+ description={isAuthenticated ? t('appInfo.items.authenticated') : t('appInfo.items.notAuthenticated')}
235
+ />
236
+ {user && (
237
+ <>
238
+ <SettingsListItem
239
+ icon={<SettingsIcon name="account" color={colors.primary} />}
240
+ title={t('appInfo.items.userId')}
241
+ description={user.id}
242
+ onPress={() => copyToClipboard(user.id, t('appInfo.items.userId'))}
243
+ />
244
+ <SettingsListItem
245
+ icon={<SettingsIcon name="at" color={colors.info} />}
246
+ title={t('appInfo.items.username')}
247
+ description={user.username || 'N/A'}
248
+ onPress={() => {
249
+ if (user?.username && navigate) {
250
+ navigate('Profile', { userId: user.id });
251
+ } else {
252
+ toast.info(t('appInfo.toasts.noUsernameOrNav'));
253
+ }
254
+ }}
255
+ />
256
+ <SettingsListItem
257
+ icon={<SettingsIcon name="email" color={colors.secondary} />}
258
+ title={t('appInfo.items.email')}
259
+ description={user.email || 'N/A'}
260
+ />
261
+ <SettingsListItem
262
+ icon={<SettingsIcon name="star" color={user.isPremium ? colors.warning : colors.textTertiary} />}
263
+ title={t('appInfo.items.premiumStatus')}
264
+ description={user.isPremium ? t('appInfo.items.premium') : t('appInfo.items.standard')}
265
+ />
266
+ </>
267
+ )}
268
+ <SettingsListItem
269
+ icon={<SettingsIcon name="account-group" color={colors.success} />}
270
+ title={t('appInfo.items.totalActiveSessions')}
271
+ description={sessions?.length?.toString() || '0'}
272
+ />
273
+ </SettingsListGroup>
286
274
 
287
- {/* API Configuration */}
288
- <SettingsListGroup title={t('appInfo.sections.api')}>
289
- <SettingsListItem
290
- icon={<SettingsIcon name="server" color={themeColors.iconSecurity} />}
291
- title={t('appInfo.items.apiBaseUrl')}
292
- description={oxyServices?.getBaseURL() || t('appInfo.items.notConfigured')}
293
- onPress={() => copyToClipboard(oxyServices?.getBaseURL() || t('appInfo.items.notConfigured'), t('appInfo.items.apiBaseUrl'))}
294
- />
295
- <SettingsListItem
296
- icon={<SettingsIcon
297
- name={connectionStatus === 'checking' ? 'sync' : connectionStatus === 'connected' ? 'wifi' : 'wifi-off'}
298
- color={connectionStatus === 'checking' ? themeColors.iconStorage : connectionStatus === 'connected' ? themeColors.iconPersonalInfo : themeColors.iconSharing}
299
- />}
300
- title={t('appInfo.items.connectionStatus')}
301
- description={connectionStatus === 'checking' ? t('appInfo.items.checking') : connectionStatus === 'connected' ? t('appInfo.items.connected') : connectionStatus === 'disconnected' ? t('appInfo.items.disconnected') : t('appInfo.items.unknown')}
302
- onPress={async () => {
303
- setConnectionStatus('checking');
275
+ {/* API Configuration */}
276
+ <SettingsListGroup title={t('appInfo.sections.api')}>
277
+ <SettingsListItem
278
+ icon={<SettingsIcon name="server" color={colors.primary} />}
279
+ title={t('appInfo.items.apiBaseUrl')}
280
+ description={oxyServices?.getBaseURL() || t('appInfo.items.notConfigured')}
281
+ onPress={() => copyToClipboard(oxyServices?.getBaseURL() || t('appInfo.items.notConfigured'), t('appInfo.items.apiBaseUrl'))}
282
+ />
283
+ <SettingsListItem
284
+ icon={<SettingsIcon
285
+ name={connectionStatus === 'checking' ? 'sync' : connectionStatus === 'connected' ? 'wifi' : 'wifi-off'}
286
+ color={connectionStatus === 'checking' ? colors.secondary : connectionStatus === 'connected' ? colors.success : colors.warning}
287
+ />}
288
+ title={t('appInfo.items.connectionStatus')}
289
+ description={connectionStatus === 'checking' ? t('appInfo.items.checking') : connectionStatus === 'connected' ? t('appInfo.items.connected') : connectionStatus === 'disconnected' ? t('appInfo.items.disconnected') : t('appInfo.items.unknown')}
290
+ onPress={async () => {
291
+ setConnectionStatus('checking');
304
292
 
305
- if (!oxyServices) {
306
- setConnectionStatus('disconnected');
307
- toast.error(t('appInfo.toasts.oxyServicesNotInitialized'));
308
- return;
309
- }
293
+ if (!oxyServices) {
294
+ setConnectionStatus('disconnected');
295
+ toast.error(t('appInfo.toasts.oxyServicesNotInitialized'));
296
+ return;
297
+ }
310
298
 
311
- try {
312
- await oxyServices.healthCheck();
313
- setConnectionStatus('connected');
314
- toast.success(t('appInfo.toasts.apiConnectionSuccess'));
315
- } catch (error) {
316
- setConnectionStatus('disconnected');
317
- toast.error(t('appInfo.toasts.apiConnectionFailed'));
318
- }
319
- }}
320
- />
321
- </SettingsListGroup>
299
+ try {
300
+ await oxyServices.healthCheck();
301
+ setConnectionStatus('connected');
302
+ toast.success(t('appInfo.toasts.apiConnectionSuccess'));
303
+ } catch (error) {
304
+ setConnectionStatus('disconnected');
305
+ toast.error(t('appInfo.toasts.apiConnectionFailed'));
306
+ }
307
+ }}
308
+ />
309
+ </SettingsListGroup>
322
310
 
323
- {/* Build Information */}
324
- <SettingsListGroup title={t('appInfo.sections.build')}>
325
- <SettingsListItem
326
- icon={<SettingsIcon name="clock" color={themeColors.iconSecurity} />}
327
- title={t('appInfo.items.buildTimestamp')}
328
- description={systemInfo?.timestamp || t('common.status.loading')}
329
- onPress={() => copyToClipboard(systemInfo?.timestamp || t('common.status.loading'), t('appInfo.items.buildTimestamp'))}
330
- />
331
- <SettingsListItem
332
- icon={<SettingsIcon name="react" color="#61DAFB" />}
333
- title={t('appInfo.items.reactNative')}
334
- description={t('appInfo.items.reactNativeValue')}
335
- />
336
- <SettingsListItem
337
- icon={<SettingsIcon name="flash" color={themeColors.iconSharing} />}
338
- title={t('appInfo.items.jsEngine')}
339
- description={t('appInfo.items.jsEngineValue')}
340
- />
341
- </SettingsListGroup>
311
+ {/* Build Information */}
312
+ <SettingsListGroup title={t('appInfo.sections.build')}>
313
+ <SettingsListItem
314
+ icon={<SettingsIcon name="clock" color={colors.primary} />}
315
+ title={t('appInfo.items.buildTimestamp')}
316
+ description={systemInfo?.timestamp || t('common.status.loading')}
317
+ onPress={() => copyToClipboard(systemInfo?.timestamp || t('common.status.loading'), t('appInfo.items.buildTimestamp'))}
318
+ />
319
+ <SettingsListItem
320
+ icon={<SettingsIcon name="react" color={colors.info} />}
321
+ title={t('appInfo.items.reactNative')}
322
+ description={t('appInfo.items.reactNativeValue')}
323
+ />
324
+ <SettingsListItem
325
+ icon={<SettingsIcon name="flash" color={colors.warning} />}
326
+ title={t('appInfo.items.jsEngine')}
327
+ description={t('appInfo.items.jsEngineValue')}
328
+ />
329
+ </SettingsListGroup>
342
330
 
343
- {/* Quick Actions */}
344
- <SettingsListGroup title={t('appInfo.sections.quickActions')}>
345
- <SettingsListItem
346
- icon={<SettingsIcon name="content-copy" color={themeColors.iconSecurity} />}
347
- title={t('appInfo.items.copyFullReport')}
348
- description={t('appInfo.items.copyFullReportSubtitle')}
349
- onPress={handleCopyFullReport}
350
- />
351
- <SettingsListItem
352
- icon={<SettingsIcon
353
- name={isRunningSystemCheck ? 'sync' : 'check-circle'}
354
- color={isRunningSystemCheck ? bloomTheme.colors.warning : bloomTheme.colors.success}
355
- />}
356
- title={isRunningSystemCheck ? t('appInfo.items.runningSystemCheck') : t('appInfo.items.runSystemCheck')}
357
- description={isRunningSystemCheck
358
- ? t('appInfo.items.systemCheckRunning')
359
- : t('appInfo.items.systemCheckSubtitle')}
360
- onPress={runSystemCheck}
361
- disabled={isRunningSystemCheck}
362
- rightElement={isRunningSystemCheck ? (
363
- <ActivityIndicator color={bloomTheme.colors.warning} size="small" />
364
- ) : undefined}
365
- />
366
- </SettingsListGroup>
331
+ {/* Quick Actions */}
332
+ <SettingsListGroup title={t('appInfo.sections.quickActions')}>
333
+ <SettingsListItem
334
+ icon={<SettingsIcon name="content-copy" color={colors.primary} />}
335
+ title={t('appInfo.items.copyFullReport')}
336
+ description={t('appInfo.items.copyFullReportSubtitle')}
337
+ onPress={handleCopyFullReport}
338
+ />
339
+ <SettingsListItem
340
+ icon={<SettingsIcon
341
+ name={isRunningSystemCheck ? 'sync' : 'check-circle'}
342
+ color={isRunningSystemCheck ? colors.warning : colors.success}
343
+ />}
344
+ title={isRunningSystemCheck ? t('appInfo.items.runningSystemCheck') : t('appInfo.items.runSystemCheck')}
345
+ description={isRunningSystemCheck
346
+ ? t('appInfo.items.systemCheckRunning')
347
+ : t('appInfo.items.systemCheckSubtitle')}
348
+ onPress={runSystemCheck}
349
+ disabled={isRunningSystemCheck}
350
+ rightElement={isRunningSystemCheck ? (
351
+ <ActivityIndicator color={colors.warning} size="small" />
352
+ ) : undefined}
353
+ />
354
+ </SettingsListGroup>
355
+ </View>
367
356
  </ScrollView>
368
357
  </View>
369
358
  );
370
359
  };
371
360
 
372
- const styles = StyleSheet.create({
373
- container: {
374
- flex: 1,
375
- },
376
- header: {
377
- flexDirection: 'row',
378
- alignItems: 'center',
379
- justifyContent: 'space-between',
380
- paddingHorizontal: 16,
381
- paddingVertical: 12,
382
- },
383
- cancelButton: {
384
- padding: 5,
385
- },
386
- headerTitle: {
387
- fontSize: 24,
388
- fontWeight: 'bold',
389
- },
390
- placeholder: {
391
- width: 34, // Same width as cancel button to center title
392
- },
393
- content: {
394
- flex: 1,
395
- padding: 16,
396
- },
397
- });
398
-
399
361
  export default AppInfoScreen;
@@ -168,13 +168,22 @@ function isCanvasLoadFailure(err: unknown): boolean {
168
168
  );
169
169
  }
170
170
 
171
+ const SENSITIVE_URI_PATTERN =
172
+ /\b(?:file|content|ph|assets-library):\/\/\S+|\/(?:data|var|private|storage|sdcard|tmp)\/\S+/gi;
173
+
174
+ function sanitizeImageErrorMessage(message: string): string {
175
+ return message.replace(SENSITIVE_URI_PATTERN, '[redacted-uri]');
176
+ }
177
+
171
178
  function normalizeCropError(err: unknown): Error {
172
- if (err instanceof Error) return err;
173
179
  if (isCanvasLoadFailure(err)) {
174
180
  return new Error('Image could not be loaded for cropping');
175
181
  }
182
+ if (err instanceof Error) {
183
+ return new Error(sanitizeImageErrorMessage(err.message || 'Failed to crop image'));
184
+ }
176
185
  if (typeof err === 'string' && err.trim()) {
177
- return new Error(err.trim());
186
+ return new Error(sanitizeImageErrorMessage(err.trim()));
178
187
  }
179
188
  return new Error('Failed to crop image');
180
189
  }
@@ -382,8 +391,12 @@ const AvatarCropScreen: React.FC<AvatarCropScreenProps> = ({
382
391
  setMeasureError(null);
383
392
  setNaturalSize({ width: w, height: h });
384
393
  },
385
- (err) => {
386
- logger.error('Image.getSize failed', err, { component: LOG_COMPONENT });
394
+ () => {
395
+ logger.error(
396
+ 'Image.getSize failed',
397
+ new Error('Image measurement failed'),
398
+ { component: LOG_COMPONENT },
399
+ );
387
400
  const message = t('editProfile.toasts.cropMeasureFailed') ||
388
401
  'Could not measure the image';
389
402
  setMeasureError(message);