@oxyhq/services 11.0.0 → 11.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (427) hide show
  1. package/lib/commonjs/index.js.map +1 -1
  2. package/lib/commonjs/ui/components/AccountMenu.js +9 -5
  3. package/lib/commonjs/ui/components/AccountMenu.js.map +1 -1
  4. package/lib/commonjs/ui/components/AnotherDeviceQR.js +51 -56
  5. package/lib/commonjs/ui/components/AnotherDeviceQR.js.map +1 -1
  6. package/lib/commonjs/ui/components/BottomSheetRouter.js +1 -0
  7. package/lib/commonjs/ui/components/BottomSheetRouter.js.map +1 -1
  8. package/lib/commonjs/ui/components/FollowButton.js +18 -5
  9. package/lib/commonjs/ui/components/FollowButton.js.map +1 -1
  10. package/lib/commonjs/ui/components/OxyProvider.js +23 -7
  11. package/lib/commonjs/ui/components/OxyProvider.js.map +1 -1
  12. package/lib/commonjs/ui/components/SignInModal.js +20 -1
  13. package/lib/commonjs/ui/components/SignInModal.js.map +1 -1
  14. package/lib/commonjs/ui/components/fileManagement/FileViewer.js +19 -9
  15. package/lib/commonjs/ui/components/fileManagement/FileViewer.js.map +1 -1
  16. package/lib/commonjs/ui/components/fileManagement/UploadPreview.js +4 -2
  17. package/lib/commonjs/ui/components/fileManagement/UploadPreview.js.map +1 -1
  18. package/lib/commonjs/ui/context/OxyContext.js +153 -19
  19. package/lib/commonjs/ui/context/OxyContext.js.map +1 -1
  20. package/lib/commonjs/ui/context/hooks/useAuthOperations.js +6 -17
  21. package/lib/commonjs/ui/context/hooks/useAuthOperations.js.map +1 -1
  22. package/lib/commonjs/ui/hooks/mutations/mutationFactory.js +5 -5
  23. package/lib/commonjs/ui/hooks/mutations/mutationFactory.js.map +1 -1
  24. package/lib/commonjs/ui/hooks/mutations/useAccountMutations.js +38 -38
  25. package/lib/commonjs/ui/hooks/mutations/useAccountMutations.js.map +1 -1
  26. package/lib/commonjs/ui/hooks/mutations/useServicesMutations.js +2 -2
  27. package/lib/commonjs/ui/hooks/mutations/useServicesMutations.js.map +1 -1
  28. package/lib/commonjs/ui/hooks/queries/queryKeys.js +3 -3
  29. package/lib/commonjs/ui/hooks/queries/queryKeys.js.map +1 -1
  30. package/lib/commonjs/ui/hooks/queries/useAccountQueries.js +1 -1
  31. package/lib/commonjs/ui/hooks/queries/useAccountQueries.js.map +1 -1
  32. package/lib/commonjs/ui/hooks/queries/usePaymentQueries.js +16 -12
  33. package/lib/commonjs/ui/hooks/queries/usePaymentQueries.js.map +1 -1
  34. package/lib/commonjs/ui/hooks/queries/useServicesQueries.js +10 -6
  35. package/lib/commonjs/ui/hooks/queries/useServicesQueries.js.map +1 -1
  36. package/lib/commonjs/ui/hooks/queryClient.js +6 -5
  37. package/lib/commonjs/ui/hooks/queryClient.js.map +1 -1
  38. package/lib/commonjs/ui/hooks/useOxyAuthSession.js +40 -2
  39. package/lib/commonjs/ui/hooks/useOxyAuthSession.js.map +1 -1
  40. package/lib/commonjs/ui/hooks/useProfileEditing.js +21 -0
  41. package/lib/commonjs/ui/hooks/useProfileEditing.js.map +1 -1
  42. package/lib/commonjs/ui/hooks/useSessionManagement.js +3 -3
  43. package/lib/commonjs/ui/hooks/useSessionManagement.js.map +1 -1
  44. package/lib/commonjs/ui/screens/AccountVerificationScreen.js +100 -108
  45. package/lib/commonjs/ui/screens/AccountVerificationScreen.js.map +1 -1
  46. package/lib/commonjs/ui/screens/AppInfoScreen.js +227 -273
  47. package/lib/commonjs/ui/screens/AppInfoScreen.js.map +1 -1
  48. package/lib/commonjs/ui/screens/AvatarCropScreen.js +10 -4
  49. package/lib/commonjs/ui/screens/AvatarCropScreen.js.map +1 -1
  50. package/lib/commonjs/ui/screens/ConnectedAppsScreen.js +20 -37
  51. package/lib/commonjs/ui/screens/ConnectedAppsScreen.js.map +1 -1
  52. package/lib/commonjs/ui/screens/CreateManagedAccountScreen.js +89 -201
  53. package/lib/commonjs/ui/screens/CreateManagedAccountScreen.js.map +1 -1
  54. package/lib/commonjs/ui/screens/EditProfileFieldScreen.js +80 -208
  55. package/lib/commonjs/ui/screens/EditProfileFieldScreen.js.map +1 -1
  56. package/lib/commonjs/ui/screens/FAQScreen.js +56 -208
  57. package/lib/commonjs/ui/screens/FAQScreen.js.map +1 -1
  58. package/lib/commonjs/ui/screens/FeedbackScreen.js +303 -352
  59. package/lib/commonjs/ui/screens/FeedbackScreen.js.map +1 -1
  60. package/lib/commonjs/ui/screens/FileManagementScreen.js +20 -20
  61. package/lib/commonjs/ui/screens/FileManagementScreen.js.map +1 -1
  62. package/lib/commonjs/ui/screens/HelpSupportScreen.js +77 -89
  63. package/lib/commonjs/ui/screens/HelpSupportScreen.js.map +1 -1
  64. package/lib/commonjs/ui/screens/HistoryViewScreen.js +43 -58
  65. package/lib/commonjs/ui/screens/HistoryViewScreen.js.map +1 -1
  66. package/lib/commonjs/ui/screens/LanguageSelectorScreen.js +67 -90
  67. package/lib/commonjs/ui/screens/LanguageSelectorScreen.js.map +1 -1
  68. package/lib/commonjs/ui/screens/LearnMoreUsernamesScreen.js +77 -177
  69. package/lib/commonjs/ui/screens/LearnMoreUsernamesScreen.js.map +1 -1
  70. package/lib/commonjs/ui/screens/LegalDocumentsScreen.js +113 -107
  71. package/lib/commonjs/ui/screens/LegalDocumentsScreen.js.map +1 -1
  72. package/lib/commonjs/ui/screens/ManageAccountScreen.js +55 -114
  73. package/lib/commonjs/ui/screens/ManageAccountScreen.js.map +1 -1
  74. package/lib/commonjs/ui/screens/NotificationsScreen.js +67 -85
  75. package/lib/commonjs/ui/screens/NotificationsScreen.js.map +1 -1
  76. package/lib/commonjs/ui/screens/OxyAuthScreen.js +71 -135
  77. package/lib/commonjs/ui/screens/OxyAuthScreen.js.map +1 -1
  78. package/lib/commonjs/ui/screens/PaymentGatewayScreen.js +15 -9
  79. package/lib/commonjs/ui/screens/PaymentGatewayScreen.js.map +1 -1
  80. package/lib/commonjs/ui/screens/PreferencesScreen.js +65 -83
  81. package/lib/commonjs/ui/screens/PreferencesScreen.js.map +1 -1
  82. package/lib/commonjs/ui/screens/PremiumSubscriptionScreen.js +378 -1023
  83. package/lib/commonjs/ui/screens/PremiumSubscriptionScreen.js.map +1 -1
  84. package/lib/commonjs/ui/screens/PrivacySettingsScreen.js +294 -242
  85. package/lib/commonjs/ui/screens/PrivacySettingsScreen.js.map +1 -1
  86. package/lib/commonjs/ui/screens/ProfileScreen.js +192 -305
  87. package/lib/commonjs/ui/screens/ProfileScreen.js.map +1 -1
  88. package/lib/commonjs/ui/screens/SavesCollectionsScreen.js +57 -97
  89. package/lib/commonjs/ui/screens/SavesCollectionsScreen.js.map +1 -1
  90. package/lib/commonjs/ui/screens/SearchSettingsScreen.js +41 -41
  91. package/lib/commonjs/ui/screens/SearchSettingsScreen.js.map +1 -1
  92. package/lib/commonjs/ui/screens/UserLinksScreen.js +17 -24
  93. package/lib/commonjs/ui/screens/UserLinksScreen.js.map +1 -1
  94. package/lib/commonjs/ui/screens/UserListScreen.js +83 -214
  95. package/lib/commonjs/ui/screens/UserListScreen.js.map +1 -1
  96. package/lib/commonjs/ui/screens/WelcomeNewUserScreen.js +115 -77
  97. package/lib/commonjs/ui/screens/WelcomeNewUserScreen.js.map +1 -1
  98. package/lib/commonjs/ui/screens/trust/TrustAboutScreen.js +70 -57
  99. package/lib/commonjs/ui/screens/trust/TrustAboutScreen.js.map +1 -1
  100. package/lib/commonjs/ui/screens/trust/TrustCenterScreen.js +136 -332
  101. package/lib/commonjs/ui/screens/trust/TrustCenterScreen.js.map +1 -1
  102. package/lib/commonjs/ui/screens/trust/TrustFAQScreen.js +47 -137
  103. package/lib/commonjs/ui/screens/trust/TrustFAQScreen.js.map +1 -1
  104. package/lib/commonjs/ui/screens/trust/TrustLeaderboardScreen.js +182 -115
  105. package/lib/commonjs/ui/screens/trust/TrustLeaderboardScreen.js.map +1 -1
  106. package/lib/commonjs/ui/screens/trust/TrustRewardsScreen.js +138 -214
  107. package/lib/commonjs/ui/screens/trust/TrustRewardsScreen.js.map +1 -1
  108. package/lib/commonjs/ui/screens/trust/TrustRulesScreen.js +54 -92
  109. package/lib/commonjs/ui/screens/trust/TrustRulesScreen.js.map +1 -1
  110. package/lib/commonjs/ui/utils/activeAuthuser.js +15 -9
  111. package/lib/commonjs/ui/utils/activeAuthuser.js.map +1 -1
  112. package/lib/commonjs/ui/utils/avatarUtils.js +1 -1
  113. package/lib/commonjs/ui/utils/avatarUtils.js.map +1 -1
  114. package/lib/module/index.js.map +1 -1
  115. package/lib/module/ui/components/AccountMenu.js +10 -6
  116. package/lib/module/ui/components/AccountMenu.js.map +1 -1
  117. package/lib/module/ui/components/AnotherDeviceQR.js +50 -56
  118. package/lib/module/ui/components/AnotherDeviceQR.js.map +1 -1
  119. package/lib/module/ui/components/BottomSheetRouter.js +2 -1
  120. package/lib/module/ui/components/BottomSheetRouter.js.map +1 -1
  121. package/lib/module/ui/components/FollowButton.js +18 -5
  122. package/lib/module/ui/components/FollowButton.js.map +1 -1
  123. package/lib/module/ui/components/OxyProvider.js +23 -7
  124. package/lib/module/ui/components/OxyProvider.js.map +1 -1
  125. package/lib/module/ui/components/SignInModal.js +20 -1
  126. package/lib/module/ui/components/SignInModal.js.map +1 -1
  127. package/lib/module/ui/components/fileManagement/FileViewer.js +19 -9
  128. package/lib/module/ui/components/fileManagement/FileViewer.js.map +1 -1
  129. package/lib/module/ui/components/fileManagement/UploadPreview.js +4 -2
  130. package/lib/module/ui/components/fileManagement/UploadPreview.js.map +1 -1
  131. package/lib/module/ui/context/OxyContext.js +154 -20
  132. package/lib/module/ui/context/OxyContext.js.map +1 -1
  133. package/lib/module/ui/context/hooks/useAuthOperations.js +6 -17
  134. package/lib/module/ui/context/hooks/useAuthOperations.js.map +1 -1
  135. package/lib/module/ui/hooks/mutations/mutationFactory.js +5 -5
  136. package/lib/module/ui/hooks/mutations/mutationFactory.js.map +1 -1
  137. package/lib/module/ui/hooks/mutations/useAccountMutations.js +38 -38
  138. package/lib/module/ui/hooks/mutations/useAccountMutations.js.map +1 -1
  139. package/lib/module/ui/hooks/mutations/useServicesMutations.js +2 -2
  140. package/lib/module/ui/hooks/mutations/useServicesMutations.js.map +1 -1
  141. package/lib/module/ui/hooks/queries/queryKeys.js +3 -3
  142. package/lib/module/ui/hooks/queries/queryKeys.js.map +1 -1
  143. package/lib/module/ui/hooks/queries/useAccountQueries.js +1 -1
  144. package/lib/module/ui/hooks/queries/useAccountQueries.js.map +1 -1
  145. package/lib/module/ui/hooks/queries/usePaymentQueries.js +16 -12
  146. package/lib/module/ui/hooks/queries/usePaymentQueries.js.map +1 -1
  147. package/lib/module/ui/hooks/queries/useServicesQueries.js +9 -6
  148. package/lib/module/ui/hooks/queries/useServicesQueries.js.map +1 -1
  149. package/lib/module/ui/hooks/queryClient.js +6 -5
  150. package/lib/module/ui/hooks/queryClient.js.map +1 -1
  151. package/lib/module/ui/hooks/useOxyAuthSession.js +40 -2
  152. package/lib/module/ui/hooks/useOxyAuthSession.js.map +1 -1
  153. package/lib/module/ui/hooks/useProfileEditing.js +21 -0
  154. package/lib/module/ui/hooks/useProfileEditing.js.map +1 -1
  155. package/lib/module/ui/hooks/useSessionManagement.js +4 -3
  156. package/lib/module/ui/hooks/useSessionManagement.js.map +1 -1
  157. package/lib/module/ui/screens/AccountVerificationScreen.js +101 -109
  158. package/lib/module/ui/screens/AccountVerificationScreen.js.map +1 -1
  159. package/lib/module/ui/screens/AppInfoScreen.js +228 -275
  160. package/lib/module/ui/screens/AppInfoScreen.js.map +1 -1
  161. package/lib/module/ui/screens/AvatarCropScreen.js +10 -4
  162. package/lib/module/ui/screens/AvatarCropScreen.js.map +1 -1
  163. package/lib/module/ui/screens/ConnectedAppsScreen.js +19 -39
  164. package/lib/module/ui/screens/ConnectedAppsScreen.js.map +1 -1
  165. package/lib/module/ui/screens/CreateManagedAccountScreen.js +90 -202
  166. package/lib/module/ui/screens/CreateManagedAccountScreen.js.map +1 -1
  167. package/lib/module/ui/screens/EditProfileFieldScreen.js +77 -205
  168. package/lib/module/ui/screens/EditProfileFieldScreen.js.map +1 -1
  169. package/lib/module/ui/screens/FAQScreen.js +55 -207
  170. package/lib/module/ui/screens/FAQScreen.js.map +1 -1
  171. package/lib/module/ui/screens/FeedbackScreen.js +301 -350
  172. package/lib/module/ui/screens/FeedbackScreen.js.map +1 -1
  173. package/lib/module/ui/screens/FileManagementScreen.js +20 -20
  174. package/lib/module/ui/screens/FileManagementScreen.js.map +1 -1
  175. package/lib/module/ui/screens/HelpSupportScreen.js +78 -90
  176. package/lib/module/ui/screens/HelpSupportScreen.js.map +1 -1
  177. package/lib/module/ui/screens/HistoryViewScreen.js +44 -59
  178. package/lib/module/ui/screens/HistoryViewScreen.js.map +1 -1
  179. package/lib/module/ui/screens/LanguageSelectorScreen.js +68 -91
  180. package/lib/module/ui/screens/LanguageSelectorScreen.js.map +1 -1
  181. package/lib/module/ui/screens/LearnMoreUsernamesScreen.js +75 -177
  182. package/lib/module/ui/screens/LearnMoreUsernamesScreen.js.map +1 -1
  183. package/lib/module/ui/screens/LegalDocumentsScreen.js +116 -108
  184. package/lib/module/ui/screens/LegalDocumentsScreen.js.map +1 -1
  185. package/lib/module/ui/screens/ManageAccountScreen.js +52 -112
  186. package/lib/module/ui/screens/ManageAccountScreen.js.map +1 -1
  187. package/lib/module/ui/screens/NotificationsScreen.js +68 -86
  188. package/lib/module/ui/screens/NotificationsScreen.js.map +1 -1
  189. package/lib/module/ui/screens/OxyAuthScreen.js +69 -134
  190. package/lib/module/ui/screens/OxyAuthScreen.js.map +1 -1
  191. package/lib/module/ui/screens/PaymentGatewayScreen.js +16 -10
  192. package/lib/module/ui/screens/PaymentGatewayScreen.js.map +1 -1
  193. package/lib/module/ui/screens/PreferencesScreen.js +66 -84
  194. package/lib/module/ui/screens/PreferencesScreen.js.map +1 -1
  195. package/lib/module/ui/screens/PremiumSubscriptionScreen.js +366 -1012
  196. package/lib/module/ui/screens/PremiumSubscriptionScreen.js.map +1 -1
  197. package/lib/module/ui/screens/PrivacySettingsScreen.js +295 -243
  198. package/lib/module/ui/screens/PrivacySettingsScreen.js.map +1 -1
  199. package/lib/module/ui/screens/ProfileScreen.js +189 -302
  200. package/lib/module/ui/screens/ProfileScreen.js.map +1 -1
  201. package/lib/module/ui/screens/SavesCollectionsScreen.js +58 -98
  202. package/lib/module/ui/screens/SavesCollectionsScreen.js.map +1 -1
  203. package/lib/module/ui/screens/SearchSettingsScreen.js +42 -42
  204. package/lib/module/ui/screens/SearchSettingsScreen.js.map +1 -1
  205. package/lib/module/ui/screens/UserLinksScreen.js +18 -25
  206. package/lib/module/ui/screens/UserLinksScreen.js.map +1 -1
  207. package/lib/module/ui/screens/UserListScreen.js +81 -212
  208. package/lib/module/ui/screens/UserListScreen.js.map +1 -1
  209. package/lib/module/ui/screens/WelcomeNewUserScreen.js +114 -76
  210. package/lib/module/ui/screens/WelcomeNewUserScreen.js.map +1 -1
  211. package/lib/module/ui/screens/trust/TrustAboutScreen.js +69 -57
  212. package/lib/module/ui/screens/trust/TrustAboutScreen.js.map +1 -1
  213. package/lib/module/ui/screens/trust/TrustCenterScreen.js +135 -332
  214. package/lib/module/ui/screens/trust/TrustCenterScreen.js.map +1 -1
  215. package/lib/module/ui/screens/trust/TrustFAQScreen.js +48 -138
  216. package/lib/module/ui/screens/trust/TrustFAQScreen.js.map +1 -1
  217. package/lib/module/ui/screens/trust/TrustLeaderboardScreen.js +184 -117
  218. package/lib/module/ui/screens/trust/TrustLeaderboardScreen.js.map +1 -1
  219. package/lib/module/ui/screens/trust/TrustRewardsScreen.js +132 -208
  220. package/lib/module/ui/screens/trust/TrustRewardsScreen.js.map +1 -1
  221. package/lib/module/ui/screens/trust/TrustRulesScreen.js +58 -94
  222. package/lib/module/ui/screens/trust/TrustRulesScreen.js.map +1 -1
  223. package/lib/module/ui/utils/activeAuthuser.js +15 -9
  224. package/lib/module/ui/utils/activeAuthuser.js.map +1 -1
  225. package/lib/module/ui/utils/avatarUtils.js +1 -1
  226. package/lib/module/ui/utils/avatarUtils.js.map +1 -1
  227. package/lib/typescript/commonjs/index.d.ts +1 -0
  228. package/lib/typescript/commonjs/index.d.ts.map +1 -1
  229. package/lib/typescript/commonjs/ui/components/AccountMenu.d.ts +2 -0
  230. package/lib/typescript/commonjs/ui/components/AccountMenu.d.ts.map +1 -1
  231. package/lib/typescript/commonjs/ui/components/AnotherDeviceQR.d.ts +12 -2
  232. package/lib/typescript/commonjs/ui/components/AnotherDeviceQR.d.ts.map +1 -1
  233. package/lib/typescript/commonjs/ui/components/BottomSheetRouter.d.ts.map +1 -1
  234. package/lib/typescript/commonjs/ui/components/FollowButton.d.ts.map +1 -1
  235. package/lib/typescript/commonjs/ui/components/OxyProvider.d.ts +3 -2
  236. package/lib/typescript/commonjs/ui/components/OxyProvider.d.ts.map +1 -1
  237. package/lib/typescript/commonjs/ui/components/SignInModal.d.ts.map +1 -1
  238. package/lib/typescript/commonjs/ui/components/TouchableRipple/TouchableRipple.native.d.ts +1 -1
  239. package/lib/typescript/commonjs/ui/components/TouchableRipple/TouchableRipple.native.d.ts.map +1 -1
  240. package/lib/typescript/commonjs/ui/context/OxyContext.d.ts +34 -0
  241. package/lib/typescript/commonjs/ui/context/OxyContext.d.ts.map +1 -1
  242. package/lib/typescript/commonjs/ui/context/hooks/useAuthOperations.d.ts.map +1 -1
  243. package/lib/typescript/commonjs/ui/hooks/mutations/useAccountMutations.d.ts +3 -0
  244. package/lib/typescript/commonjs/ui/hooks/mutations/useAccountMutations.d.ts.map +1 -1
  245. package/lib/typescript/commonjs/ui/hooks/queries/queryKeys.d.ts +3 -3
  246. package/lib/typescript/commonjs/ui/hooks/queries/queryKeys.d.ts.map +1 -1
  247. package/lib/typescript/commonjs/ui/hooks/queries/useServicesQueries.d.ts.map +1 -1
  248. package/lib/typescript/commonjs/ui/hooks/queryClient.d.ts.map +1 -1
  249. package/lib/typescript/commonjs/ui/hooks/useOxyAuthSession.d.ts +22 -0
  250. package/lib/typescript/commonjs/ui/hooks/useOxyAuthSession.d.ts.map +1 -1
  251. package/lib/typescript/commonjs/ui/hooks/useProfileEditing.d.ts +3 -0
  252. package/lib/typescript/commonjs/ui/hooks/useProfileEditing.d.ts.map +1 -1
  253. package/lib/typescript/commonjs/ui/hooks/useSessionManagement.d.ts +2 -1
  254. package/lib/typescript/commonjs/ui/hooks/useSessionManagement.d.ts.map +1 -1
  255. package/lib/typescript/commonjs/ui/screens/AccountVerificationScreen.d.ts.map +1 -1
  256. package/lib/typescript/commonjs/ui/screens/AppInfoScreen.d.ts.map +1 -1
  257. package/lib/typescript/commonjs/ui/screens/AvatarCropScreen.d.ts.map +1 -1
  258. package/lib/typescript/commonjs/ui/screens/ConnectedAppsScreen.d.ts.map +1 -1
  259. package/lib/typescript/commonjs/ui/screens/CreateManagedAccountScreen.d.ts.map +1 -1
  260. package/lib/typescript/commonjs/ui/screens/EditProfileFieldScreen.d.ts.map +1 -1
  261. package/lib/typescript/commonjs/ui/screens/FAQScreen.d.ts.map +1 -1
  262. package/lib/typescript/commonjs/ui/screens/FeedbackScreen.d.ts.map +1 -1
  263. package/lib/typescript/commonjs/ui/screens/HelpSupportScreen.d.ts.map +1 -1
  264. package/lib/typescript/commonjs/ui/screens/HistoryViewScreen.d.ts.map +1 -1
  265. package/lib/typescript/commonjs/ui/screens/LanguageSelectorScreen.d.ts.map +1 -1
  266. package/lib/typescript/commonjs/ui/screens/LearnMoreUsernamesScreen.d.ts.map +1 -1
  267. package/lib/typescript/commonjs/ui/screens/LegalDocumentsScreen.d.ts.map +1 -1
  268. package/lib/typescript/commonjs/ui/screens/ManageAccountScreen.d.ts.map +1 -1
  269. package/lib/typescript/commonjs/ui/screens/NotificationsScreen.d.ts.map +1 -1
  270. package/lib/typescript/commonjs/ui/screens/OxyAuthScreen.d.ts.map +1 -1
  271. package/lib/typescript/commonjs/ui/screens/PaymentGatewayScreen.d.ts.map +1 -1
  272. package/lib/typescript/commonjs/ui/screens/PreferencesScreen.d.ts.map +1 -1
  273. package/lib/typescript/commonjs/ui/screens/PremiumSubscriptionScreen.d.ts.map +1 -1
  274. package/lib/typescript/commonjs/ui/screens/PrivacySettingsScreen.d.ts.map +1 -1
  275. package/lib/typescript/commonjs/ui/screens/ProfileScreen.d.ts.map +1 -1
  276. package/lib/typescript/commonjs/ui/screens/SavesCollectionsScreen.d.ts.map +1 -1
  277. package/lib/typescript/commonjs/ui/screens/SearchSettingsScreen.d.ts.map +1 -1
  278. package/lib/typescript/commonjs/ui/screens/UserLinksScreen.d.ts.map +1 -1
  279. package/lib/typescript/commonjs/ui/screens/UserListScreen.d.ts.map +1 -1
  280. package/lib/typescript/commonjs/ui/screens/WelcomeNewUserScreen.d.ts.map +1 -1
  281. package/lib/typescript/commonjs/ui/screens/trust/TrustAboutScreen.d.ts.map +1 -1
  282. package/lib/typescript/commonjs/ui/screens/trust/TrustCenterScreen.d.ts.map +1 -1
  283. package/lib/typescript/commonjs/ui/screens/trust/TrustFAQScreen.d.ts.map +1 -1
  284. package/lib/typescript/commonjs/ui/screens/trust/TrustLeaderboardScreen.d.ts.map +1 -1
  285. package/lib/typescript/commonjs/ui/screens/trust/TrustRewardsScreen.d.ts.map +1 -1
  286. package/lib/typescript/commonjs/ui/screens/trust/TrustRulesScreen.d.ts.map +1 -1
  287. package/lib/typescript/commonjs/ui/utils/activeAuthuser.d.ts.map +1 -1
  288. package/lib/typescript/module/index.d.ts +1 -0
  289. package/lib/typescript/module/index.d.ts.map +1 -1
  290. package/lib/typescript/module/ui/components/AccountMenu.d.ts +2 -0
  291. package/lib/typescript/module/ui/components/AccountMenu.d.ts.map +1 -1
  292. package/lib/typescript/module/ui/components/AnotherDeviceQR.d.ts +12 -2
  293. package/lib/typescript/module/ui/components/AnotherDeviceQR.d.ts.map +1 -1
  294. package/lib/typescript/module/ui/components/BottomSheetRouter.d.ts.map +1 -1
  295. package/lib/typescript/module/ui/components/FollowButton.d.ts.map +1 -1
  296. package/lib/typescript/module/ui/components/OxyProvider.d.ts +3 -2
  297. package/lib/typescript/module/ui/components/OxyProvider.d.ts.map +1 -1
  298. package/lib/typescript/module/ui/components/SignInModal.d.ts.map +1 -1
  299. package/lib/typescript/module/ui/components/TouchableRipple/TouchableRipple.native.d.ts +1 -1
  300. package/lib/typescript/module/ui/components/TouchableRipple/TouchableRipple.native.d.ts.map +1 -1
  301. package/lib/typescript/module/ui/context/OxyContext.d.ts +34 -0
  302. package/lib/typescript/module/ui/context/OxyContext.d.ts.map +1 -1
  303. package/lib/typescript/module/ui/context/hooks/useAuthOperations.d.ts.map +1 -1
  304. package/lib/typescript/module/ui/hooks/mutations/useAccountMutations.d.ts +3 -0
  305. package/lib/typescript/module/ui/hooks/mutations/useAccountMutations.d.ts.map +1 -1
  306. package/lib/typescript/module/ui/hooks/queries/queryKeys.d.ts +3 -3
  307. package/lib/typescript/module/ui/hooks/queries/queryKeys.d.ts.map +1 -1
  308. package/lib/typescript/module/ui/hooks/queries/useServicesQueries.d.ts.map +1 -1
  309. package/lib/typescript/module/ui/hooks/queryClient.d.ts.map +1 -1
  310. package/lib/typescript/module/ui/hooks/useOxyAuthSession.d.ts +22 -0
  311. package/lib/typescript/module/ui/hooks/useOxyAuthSession.d.ts.map +1 -1
  312. package/lib/typescript/module/ui/hooks/useProfileEditing.d.ts +3 -0
  313. package/lib/typescript/module/ui/hooks/useProfileEditing.d.ts.map +1 -1
  314. package/lib/typescript/module/ui/hooks/useSessionManagement.d.ts +2 -1
  315. package/lib/typescript/module/ui/hooks/useSessionManagement.d.ts.map +1 -1
  316. package/lib/typescript/module/ui/screens/AccountVerificationScreen.d.ts.map +1 -1
  317. package/lib/typescript/module/ui/screens/AppInfoScreen.d.ts.map +1 -1
  318. package/lib/typescript/module/ui/screens/AvatarCropScreen.d.ts.map +1 -1
  319. package/lib/typescript/module/ui/screens/ConnectedAppsScreen.d.ts.map +1 -1
  320. package/lib/typescript/module/ui/screens/CreateManagedAccountScreen.d.ts.map +1 -1
  321. package/lib/typescript/module/ui/screens/EditProfileFieldScreen.d.ts.map +1 -1
  322. package/lib/typescript/module/ui/screens/FAQScreen.d.ts.map +1 -1
  323. package/lib/typescript/module/ui/screens/FeedbackScreen.d.ts.map +1 -1
  324. package/lib/typescript/module/ui/screens/HelpSupportScreen.d.ts.map +1 -1
  325. package/lib/typescript/module/ui/screens/HistoryViewScreen.d.ts.map +1 -1
  326. package/lib/typescript/module/ui/screens/LanguageSelectorScreen.d.ts.map +1 -1
  327. package/lib/typescript/module/ui/screens/LearnMoreUsernamesScreen.d.ts.map +1 -1
  328. package/lib/typescript/module/ui/screens/LegalDocumentsScreen.d.ts.map +1 -1
  329. package/lib/typescript/module/ui/screens/ManageAccountScreen.d.ts.map +1 -1
  330. package/lib/typescript/module/ui/screens/NotificationsScreen.d.ts.map +1 -1
  331. package/lib/typescript/module/ui/screens/OxyAuthScreen.d.ts.map +1 -1
  332. package/lib/typescript/module/ui/screens/PaymentGatewayScreen.d.ts.map +1 -1
  333. package/lib/typescript/module/ui/screens/PreferencesScreen.d.ts.map +1 -1
  334. package/lib/typescript/module/ui/screens/PremiumSubscriptionScreen.d.ts.map +1 -1
  335. package/lib/typescript/module/ui/screens/PrivacySettingsScreen.d.ts.map +1 -1
  336. package/lib/typescript/module/ui/screens/ProfileScreen.d.ts.map +1 -1
  337. package/lib/typescript/module/ui/screens/SavesCollectionsScreen.d.ts.map +1 -1
  338. package/lib/typescript/module/ui/screens/SearchSettingsScreen.d.ts.map +1 -1
  339. package/lib/typescript/module/ui/screens/UserLinksScreen.d.ts.map +1 -1
  340. package/lib/typescript/module/ui/screens/UserListScreen.d.ts.map +1 -1
  341. package/lib/typescript/module/ui/screens/WelcomeNewUserScreen.d.ts.map +1 -1
  342. package/lib/typescript/module/ui/screens/trust/TrustAboutScreen.d.ts.map +1 -1
  343. package/lib/typescript/module/ui/screens/trust/TrustCenterScreen.d.ts.map +1 -1
  344. package/lib/typescript/module/ui/screens/trust/TrustFAQScreen.d.ts.map +1 -1
  345. package/lib/typescript/module/ui/screens/trust/TrustLeaderboardScreen.d.ts.map +1 -1
  346. package/lib/typescript/module/ui/screens/trust/TrustRewardsScreen.d.ts.map +1 -1
  347. package/lib/typescript/module/ui/screens/trust/TrustRulesScreen.d.ts.map +1 -1
  348. package/lib/typescript/module/ui/utils/activeAuthuser.d.ts.map +1 -1
  349. package/lib/typescript/types/expo-haptics.d.ts +42 -0
  350. package/package.json +8 -3
  351. package/src/index.ts +1 -0
  352. package/src/types/expo-haptics.d.ts +42 -0
  353. package/src/ui/components/AccountMenu.tsx +11 -5
  354. package/src/ui/components/AnotherDeviceQR.tsx +53 -45
  355. package/src/ui/components/BottomSheetRouter.tsx +2 -1
  356. package/src/ui/components/FollowButton.tsx +24 -5
  357. package/src/ui/components/OxyProvider.tsx +22 -8
  358. package/src/ui/components/SignInModal.tsx +21 -2
  359. package/src/ui/components/TouchableRipple/TouchableRipple.native.tsx +1 -1
  360. package/src/ui/components/fileManagement/FileViewer.tsx +9 -9
  361. package/src/ui/components/fileManagement/UploadPreview.tsx +2 -2
  362. package/src/ui/context/OxyContext.tsx +178 -21
  363. package/src/ui/context/hooks/useAuthOperations.ts +6 -17
  364. package/src/ui/hooks/mutations/mutationFactory.ts +5 -5
  365. package/src/ui/hooks/mutations/useAccountMutations.ts +38 -38
  366. package/src/ui/hooks/mutations/useServicesMutations.ts +2 -2
  367. package/src/ui/hooks/queries/queryKeys.ts +6 -3
  368. package/src/ui/hooks/queries/useAccountQueries.ts +1 -1
  369. package/src/ui/hooks/queries/usePaymentQueries.ts +12 -12
  370. package/src/ui/hooks/queries/useServicesQueries.ts +9 -6
  371. package/src/ui/hooks/queryClient.ts +5 -5
  372. package/src/ui/hooks/useOxyAuthSession.ts +76 -2
  373. package/src/ui/hooks/useProfileEditing.ts +24 -0
  374. package/src/ui/hooks/useSessionManagement.ts +9 -6
  375. package/src/ui/screens/AccountVerificationScreen.tsx +101 -113
  376. package/src/ui/screens/AppInfoScreen.tsx +200 -238
  377. package/src/ui/screens/AvatarCropScreen.tsx +17 -4
  378. package/src/ui/screens/ConnectedAppsScreen.tsx +16 -34
  379. package/src/ui/screens/CreateManagedAccountScreen.tsx +94 -170
  380. package/src/ui/screens/EditProfileFieldScreen.tsx +77 -190
  381. package/src/ui/screens/FAQScreen.tsx +77 -208
  382. package/src/ui/screens/FeedbackScreen.tsx +330 -239
  383. package/src/ui/screens/FileManagementScreen.tsx +20 -20
  384. package/src/ui/screens/HelpSupportScreen.tsx +67 -82
  385. package/src/ui/screens/HistoryViewScreen.tsx +32 -38
  386. package/src/ui/screens/LanguageSelectorScreen.tsx +79 -93
  387. package/src/ui/screens/LearnMoreUsernamesScreen.tsx +81 -164
  388. package/src/ui/screens/LegalDocumentsScreen.tsx +184 -123
  389. package/src/ui/screens/ManageAccountScreen.tsx +48 -114
  390. package/src/ui/screens/NotificationsScreen.tsx +107 -106
  391. package/src/ui/screens/OxyAuthScreen.tsx +76 -109
  392. package/src/ui/screens/PaymentGatewayScreen.tsx +16 -7
  393. package/src/ui/screens/PreferencesScreen.tsx +96 -116
  394. package/src/ui/screens/PremiumSubscriptionScreen.tsx +419 -872
  395. package/src/ui/screens/PrivacySettingsScreen.tsx +203 -185
  396. package/src/ui/screens/ProfileScreen.tsx +158 -200
  397. package/src/ui/screens/SavesCollectionsScreen.tsx +78 -125
  398. package/src/ui/screens/SearchSettingsScreen.tsx +52 -41
  399. package/src/ui/screens/UserLinksScreen.tsx +18 -25
  400. package/src/ui/screens/UserListScreen.tsx +95 -188
  401. package/src/ui/screens/WelcomeNewUserScreen.tsx +109 -36
  402. package/src/ui/screens/trust/TrustAboutScreen.tsx +52 -41
  403. package/src/ui/screens/trust/TrustCenterScreen.tsx +184 -222
  404. package/src/ui/screens/trust/TrustFAQScreen.tsx +64 -124
  405. package/src/ui/screens/trust/TrustLeaderboardScreen.tsx +190 -67
  406. package/src/ui/screens/trust/TrustRewardsScreen.tsx +147 -182
  407. package/src/ui/screens/trust/TrustRulesScreen.tsx +77 -50
  408. package/src/ui/utils/activeAuthuser.ts +15 -9
  409. package/src/ui/utils/avatarUtils.ts +1 -1
  410. package/lib/commonjs/ui/components/feedback/FormInput.js +0 -72
  411. package/lib/commonjs/ui/components/feedback/FormInput.js.map +0 -1
  412. package/lib/commonjs/ui/components/feedback/feedbackStyles.js +0 -261
  413. package/lib/commonjs/ui/components/feedback/feedbackStyles.js.map +0 -1
  414. package/lib/module/ui/components/feedback/FormInput.js +0 -67
  415. package/lib/module/ui/components/feedback/FormInput.js.map +0 -1
  416. package/lib/module/ui/components/feedback/feedbackStyles.js +0 -256
  417. package/lib/module/ui/components/feedback/feedbackStyles.js.map +0 -1
  418. package/lib/typescript/commonjs/ui/components/feedback/FormInput.d.ts +0 -20
  419. package/lib/typescript/commonjs/ui/components/feedback/FormInput.d.ts.map +0 -1
  420. package/lib/typescript/commonjs/ui/components/feedback/feedbackStyles.d.ts +0 -279
  421. package/lib/typescript/commonjs/ui/components/feedback/feedbackStyles.d.ts.map +0 -1
  422. package/lib/typescript/module/ui/components/feedback/FormInput.d.ts +0 -20
  423. package/lib/typescript/module/ui/components/feedback/FormInput.d.ts.map +0 -1
  424. package/lib/typescript/module/ui/components/feedback/feedbackStyles.d.ts +0 -279
  425. package/lib/typescript/module/ui/components/feedback/feedbackStyles.d.ts.map +0 -1
  426. package/src/ui/components/feedback/FormInput.tsx +0 -84
  427. package/src/ui/components/feedback/feedbackStyles.ts +0 -246
@@ -1,21 +1,17 @@
1
1
  import React, { useState, useCallback, useEffect } from 'react';
2
- import {
3
- View,
4
- Text,
5
- StyleSheet,
6
- ScrollView,
7
- TouchableOpacity,
8
- } from 'react-native';
2
+ import { View, ScrollView } from 'react-native';
9
3
  import type { BaseScreenProps } from '../types/navigation';
10
4
  import { toast } from '@oxyhq/bloom';
5
+ import { SettingsListGroup, SettingsListItem } from '@oxyhq/bloom/settings-list';
6
+ import { Switch } from '@oxyhq/bloom/switch';
7
+ import { Button } from '@oxyhq/bloom/button';
8
+ import { useTheme } from '@oxyhq/bloom/theme';
11
9
  import Header from '../components/Header';
12
10
  import Avatar from '../components/Avatar';
13
11
  import LoadingState from '../components/LoadingState';
14
12
  import EmptyState from '../components/EmptyState';
15
- import { SettingsListGroup, SettingsListItem } from '@oxyhq/bloom/settings-list';
16
- import { Switch } from '@oxyhq/bloom/switch';
13
+ import { SettingsIcon } from '../components/SettingsIcon';
17
14
  import { useI18n } from '../hooks/useI18n';
18
- import { useTheme } from '@oxyhq/bloom/theme';
19
15
  import { useSettingToggles } from '../hooks/useSettingToggle';
20
16
  import type { BlockedUser, RestrictedUser } from '@oxyhq/core';
21
17
  import { getAccountDisplayName } from '@oxyhq/core';
@@ -67,11 +63,11 @@ const DEFAULT_PRIVACY_SETTINGS: PrivacySettings = {
67
63
 
68
64
  const PrivacySettingsScreen: React.FC<BaseScreenProps> = ({
69
65
  onClose,
70
- theme,
71
66
  goBack,
72
67
  }) => {
73
68
  const { oxyServices, user } = useOxy();
74
69
  const { t, locale } = useI18n();
70
+ const bloomTheme = useTheme();
75
71
  const [isLoading, setIsLoading] = useState(true);
76
72
  const [blockedUsers, setBlockedUsers] = useState<BlockedUser[]>([]);
77
73
  const [restrictedUsers, setRestrictedUsers] = useState<RestrictedUser[]>([]);
@@ -202,11 +198,9 @@ const PrivacySettingsScreen: React.FC<BaseScreenProps> = ({
202
198
  return { userId, displayName: getAccountDisplayName(userShape, locale), avatar };
203
199
  }, [locale]);
204
200
 
205
- const bloomTheme = useTheme();
206
-
207
201
  if (isLoading) {
208
202
  return (
209
- <View style={[styles.container, { backgroundColor: bloomTheme.colors.background }]}>
203
+ <View className="flex-1 bg-bg">
210
204
  <Header
211
205
  title={t('privacySettings.title') || 'Privacy Settings'}
212
206
  onBack={goBack || onClose}
@@ -219,7 +213,7 @@ const PrivacySettingsScreen: React.FC<BaseScreenProps> = ({
219
213
  }
220
214
 
221
215
  return (
222
- <View style={[styles.container, { backgroundColor: bloomTheme.colors.background }]}>
216
+ <View className="flex-1 bg-bg">
223
217
  <Header
224
218
  title={t('privacySettings.title') || 'Privacy Settings'}
225
219
  onBack={goBack || onClose}
@@ -227,184 +221,208 @@ const PrivacySettingsScreen: React.FC<BaseScreenProps> = ({
227
221
  elevation="subtle"
228
222
  />
229
223
 
230
- <ScrollView style={styles.content}>
231
- {/* Account Privacy */}
232
- <SettingsListGroup title={t('privacySettings.sections.account') || 'ACCOUNT PRIVACY'}>
233
- <SettingsListItem
234
- title={t('privacySettings.isPrivateAccount') || 'Private Account'}
235
- description={t('privacySettings.isPrivateAccountDesc') || 'Only approved followers can see your posts'}
236
- rightElement={<Switch value={settings.isPrivateAccount} onValueChange={() => toggle('isPrivateAccount')} disabled={isSaving} />}
237
- />
238
- <SettingsListItem
239
- title={t('privacySettings.profileVisibility') || 'Profile Visibility'}
240
- description={t('privacySettings.profileVisibilityDesc') || 'Control who can view your profile'}
241
- rightElement={<Switch value={settings.profileVisibility} onValueChange={() => toggle('profileVisibility')} disabled={isSaving} />}
242
- />
243
- <SettingsListItem
244
- title={t('privacySettings.hideOnlineStatus') || 'Hide Online Status'}
245
- description={t('privacySettings.hideOnlineStatusDesc') || 'Don\'t show when you\'re online'}
246
- rightElement={<Switch value={settings.hideOnlineStatus} onValueChange={() => toggle('hideOnlineStatus')} disabled={isSaving} />}
247
- />
248
- <SettingsListItem
249
- title={t('privacySettings.hideLastSeen') || 'Hide Last Seen'}
250
- description={t('privacySettings.hideLastSeenDesc') || 'Don\'t show when you were last active'}
251
- rightElement={<Switch value={settings.hideLastSeen} onValueChange={() => toggle('hideLastSeen')} disabled={isSaving} />}
252
- />
253
- </SettingsListGroup>
254
-
255
- {/* Interactions */}
256
- <SettingsListGroup title={t('privacySettings.sections.interactions') || 'INTERACTIONS'}>
257
- <SettingsListItem
258
- title={t('privacySettings.allowTagging') || 'Allow Tagging'}
259
- description={t('privacySettings.allowTaggingDesc') || 'Let others tag you in posts'}
260
- rightElement={<Switch value={settings.allowTagging} onValueChange={() => toggle('allowTagging')} disabled={isSaving} />}
261
- />
262
- <SettingsListItem
263
- title={t('privacySettings.allowMentions') || 'Allow Mentions'}
264
- description={t('privacySettings.allowMentionsDesc') || 'Let others mention you'}
265
- rightElement={<Switch value={settings.allowMentions} onValueChange={() => toggle('allowMentions')} disabled={isSaving} />}
266
- />
267
- <SettingsListItem
268
- title={t('privacySettings.allowDirectMessages') || 'Allow Direct Messages'}
269
- description={t('privacySettings.allowDirectMessagesDesc') || 'Let others send you direct messages'}
270
- rightElement={<Switch value={settings.allowDirectMessages} onValueChange={() => toggle('allowDirectMessages')} disabled={isSaving} />}
271
- />
272
- <SettingsListItem
273
- title={t('privacySettings.hideReadReceipts') || 'Hide Read Receipts'}
274
- description={t('privacySettings.hideReadReceiptsDesc') || 'Don\'t show read receipts in messages'}
275
- rightElement={<Switch value={settings.hideReadReceipts} onValueChange={() => toggle('hideReadReceipts')} disabled={isSaving} />}
276
- />
277
- </SettingsListGroup>
278
-
279
- {/* Activity & Data */}
280
- <SettingsListGroup title={t('privacySettings.sections.activity') || 'ACTIVITY & DATA'}>
281
- <SettingsListItem
282
- title={t('privacySettings.showActivity') || 'Show Activity Status'}
283
- description={t('privacySettings.showActivityDesc') || 'Display your activity on your profile'}
284
- rightElement={<Switch value={settings.showActivity} onValueChange={() => toggle('showActivity')} disabled={isSaving} />}
285
- />
286
- <SettingsListItem
287
- title={t('privacySettings.dataSharing') || 'Data Sharing'}
288
- description={t('privacySettings.dataSharingDesc') || 'Allow sharing data for personalization'}
289
- rightElement={<Switch value={settings.dataSharing} onValueChange={() => toggle('dataSharing')} disabled={isSaving} />}
290
- />
291
- <SettingsListItem
292
- title={t('privacySettings.locationSharing') || 'Location Sharing'}
293
- description={t('privacySettings.locationSharingDesc') || 'Share your location'}
294
- rightElement={<Switch value={settings.locationSharing} onValueChange={() => toggle('locationSharing')} disabled={isSaving} />}
295
- />
296
- <SettingsListItem
297
- title={t('privacySettings.analyticsSharing') || 'Analytics Sharing'}
298
- description={t('privacySettings.analyticsSharingDesc') || 'Allow analytics data collection'}
299
- rightElement={<Switch value={settings.analyticsSharing} onValueChange={() => toggle('analyticsSharing')} disabled={isSaving} />}
300
- />
301
- </SettingsListGroup>
224
+ <ScrollView className="flex-1">
225
+ <View className="px-screen-margin pb-space-24">
226
+ {/* Account Privacy */}
227
+ <SettingsListGroup title={t('privacySettings.sections.account') || 'ACCOUNT PRIVACY'}>
228
+ <SettingsListItem
229
+ icon={<SettingsIcon name="lock-outline" color={bloomTheme.colors.primary} />}
230
+ title={t('privacySettings.isPrivateAccount') || 'Private Account'}
231
+ description={t('privacySettings.isPrivateAccountDesc') || 'Only approved followers can see your posts'}
232
+ rightElement={<Switch value={settings.isPrivateAccount} onValueChange={() => toggle('isPrivateAccount')} disabled={isSaving} />}
233
+ showChevron={false}
234
+ />
235
+ <SettingsListItem
236
+ icon={<SettingsIcon name="account-eye-outline" color={bloomTheme.colors.info} />}
237
+ title={t('privacySettings.profileVisibility') || 'Profile Visibility'}
238
+ description={t('privacySettings.profileVisibilityDesc') || 'Control who can view your profile'}
239
+ rightElement={<Switch value={settings.profileVisibility} onValueChange={() => toggle('profileVisibility')} disabled={isSaving} />}
240
+ showChevron={false}
241
+ />
242
+ <SettingsListItem
243
+ icon={<SettingsIcon name="circle-outline" color={bloomTheme.colors.success} />}
244
+ title={t('privacySettings.hideOnlineStatus') || 'Hide Online Status'}
245
+ description={t('privacySettings.hideOnlineStatusDesc') || 'Don\'t show when you\'re online'}
246
+ rightElement={<Switch value={settings.hideOnlineStatus} onValueChange={() => toggle('hideOnlineStatus')} disabled={isSaving} />}
247
+ showChevron={false}
248
+ />
249
+ <SettingsListItem
250
+ icon={<SettingsIcon name="clock-outline" color={bloomTheme.colors.secondary} />}
251
+ title={t('privacySettings.hideLastSeen') || 'Hide Last Seen'}
252
+ description={t('privacySettings.hideLastSeenDesc') || 'Don\'t show when you were last active'}
253
+ rightElement={<Switch value={settings.hideLastSeen} onValueChange={() => toggle('hideLastSeen')} disabled={isSaving} />}
254
+ showChevron={false}
255
+ />
256
+ </SettingsListGroup>
302
257
 
303
- {/* Content & Safety */}
304
- <SettingsListGroup title={t('privacySettings.sections.content') || 'CONTENT & SAFETY'}>
305
- <SettingsListItem
306
- title={t('privacySettings.sensitiveContent') || 'Show Sensitive Content'}
307
- description={t('privacySettings.sensitiveContentDesc') || 'Allow sensitive or explicit content'}
308
- rightElement={<Switch value={settings.sensitiveContent} onValueChange={() => toggle('sensitiveContent')} disabled={isSaving} />}
309
- />
310
- <SettingsListItem
311
- title={t('privacySettings.autoFilter') || 'Auto Filter'}
312
- description={t('privacySettings.autoFilterDesc') || 'Automatically filter inappropriate content'}
313
- rightElement={<Switch value={settings.autoFilter} onValueChange={() => toggle('autoFilter')} disabled={isSaving} />}
314
- />
315
- <SettingsListItem
316
- title={t('privacySettings.muteKeywords') || 'Mute Keywords'}
317
- description={t('privacySettings.muteKeywordsDesc') || 'Hide posts containing muted keywords'}
318
- rightElement={<Switch value={settings.muteKeywords} onValueChange={() => toggle('muteKeywords')} disabled={isSaving} />}
319
- />
320
- <SettingsListItem
321
- title={t('privacySettings.blockScreenshots') || 'Block Screenshots'}
322
- description={t('privacySettings.blockScreenshotsDesc') || 'Prevent screenshots of your content'}
323
- rightElement={<Switch value={settings.blockScreenshots} onValueChange={() => toggle('blockScreenshots')} disabled={isSaving} />}
324
- />
325
- </SettingsListGroup>
258
+ {/* Interactions */}
259
+ <SettingsListGroup title={t('privacySettings.sections.interactions') || 'INTERACTIONS'}>
260
+ <SettingsListItem
261
+ icon={<SettingsIcon name="tag-outline" color={bloomTheme.colors.primary} />}
262
+ title={t('privacySettings.allowTagging') || 'Allow Tagging'}
263
+ description={t('privacySettings.allowTaggingDesc') || 'Let others tag you in posts'}
264
+ rightElement={<Switch value={settings.allowTagging} onValueChange={() => toggle('allowTagging')} disabled={isSaving} />}
265
+ showChevron={false}
266
+ />
267
+ <SettingsListItem
268
+ icon={<SettingsIcon name="at" color={bloomTheme.colors.info} />}
269
+ title={t('privacySettings.allowMentions') || 'Allow Mentions'}
270
+ description={t('privacySettings.allowMentionsDesc') || 'Let others mention you'}
271
+ rightElement={<Switch value={settings.allowMentions} onValueChange={() => toggle('allowMentions')} disabled={isSaving} />}
272
+ showChevron={false}
273
+ />
274
+ <SettingsListItem
275
+ icon={<SettingsIcon name="message-outline" color={bloomTheme.colors.success} />}
276
+ title={t('privacySettings.allowDirectMessages') || 'Allow Direct Messages'}
277
+ description={t('privacySettings.allowDirectMessagesDesc') || 'Let others send you direct messages'}
278
+ rightElement={<Switch value={settings.allowDirectMessages} onValueChange={() => toggle('allowDirectMessages')} disabled={isSaving} />}
279
+ showChevron={false}
280
+ />
281
+ <SettingsListItem
282
+ icon={<SettingsIcon name="check-all" color={bloomTheme.colors.secondary} />}
283
+ title={t('privacySettings.hideReadReceipts') || 'Hide Read Receipts'}
284
+ description={t('privacySettings.hideReadReceiptsDesc') || 'Don\'t show read receipts in messages'}
285
+ rightElement={<Switch value={settings.hideReadReceipts} onValueChange={() => toggle('hideReadReceipts')} disabled={isSaving} />}
286
+ showChevron={false}
287
+ />
288
+ </SettingsListGroup>
326
289
 
327
- {/* Blocked Users */}
328
- <SettingsListGroup title={t('privacySettings.sections.blockedUsers') || 'BLOCKED USERS'}>
329
- {isLoadingUsers ? (
330
- <LoadingState color={bloomTheme.colors.text} size="small" />
331
- ) : blockedUsers.length === 0 ? (
332
- <EmptyState
333
- message={t('privacySettings.noBlockedUsers') || 'No blocked users'}
334
- textColor={bloomTheme.colors.textSecondary}
290
+ {/* Activity & Data */}
291
+ <SettingsListGroup title={t('privacySettings.sections.activity') || 'ACTIVITY & DATA'}>
292
+ <SettingsListItem
293
+ icon={<SettingsIcon name="pulse" color={bloomTheme.colors.primary} />}
294
+ title={t('privacySettings.showActivity') || 'Show Activity Status'}
295
+ description={t('privacySettings.showActivityDesc') || 'Display your activity on your profile'}
296
+ rightElement={<Switch value={settings.showActivity} onValueChange={() => toggle('showActivity')} disabled={isSaving} />}
297
+ showChevron={false}
298
+ />
299
+ <SettingsListItem
300
+ icon={<SettingsIcon name="database-outline" color={bloomTheme.colors.info} />}
301
+ title={t('privacySettings.dataSharing') || 'Data Sharing'}
302
+ description={t('privacySettings.dataSharingDesc') || 'Allow sharing data for personalization'}
303
+ rightElement={<Switch value={settings.dataSharing} onValueChange={() => toggle('dataSharing')} disabled={isSaving} />}
304
+ showChevron={false}
305
+ />
306
+ <SettingsListItem
307
+ icon={<SettingsIcon name="map-marker-outline" color={bloomTheme.colors.warning} />}
308
+ title={t('privacySettings.locationSharing') || 'Location Sharing'}
309
+ description={t('privacySettings.locationSharingDesc') || 'Share your location'}
310
+ rightElement={<Switch value={settings.locationSharing} onValueChange={() => toggle('locationSharing')} disabled={isSaving} />}
311
+ showChevron={false}
312
+ />
313
+ <SettingsListItem
314
+ icon={<SettingsIcon name="chart-line" color={bloomTheme.colors.secondary} />}
315
+ title={t('privacySettings.analyticsSharing') || 'Analytics Sharing'}
316
+ description={t('privacySettings.analyticsSharingDesc') || 'Allow analytics data collection'}
317
+ rightElement={<Switch value={settings.analyticsSharing} onValueChange={() => toggle('analyticsSharing')} disabled={isSaving} />}
318
+ showChevron={false}
335
319
  />
336
- ) : (
337
- blockedUsers.map((blocked) => {
338
- const { userId, displayName, avatar } = extractUserInfo(blocked, 'blockedId');
339
- const avatarUri = avatar && oxyServices ? oxyServices.getFileDownloadUrl(avatar, 'thumb') : undefined;
340
- return (
341
- <SettingsListItem
342
- key={userId}
343
- icon={<Avatar uri={avatarUri} name={displayName} size={20} />}
344
- title={displayName}
345
- rightElement={
346
- <TouchableOpacity onPress={() => handleUnblock(userId)} style={[styles.actionButton, { backgroundColor: bloomTheme.colors.backgroundSecondary }]}>
347
- <Text style={[styles.actionButtonText, { color: bloomTheme.colors.error }]}>{t('privacySettings.unblock') || 'Unblock'}</Text>
348
- </TouchableOpacity>
349
- }
350
- />
351
- );
352
- })
353
- )}
354
- </SettingsListGroup>
320
+ </SettingsListGroup>
355
321
 
356
- {/* Restricted Users */}
357
- <SettingsListGroup title={t('privacySettings.sections.restrictedUsers') || 'RESTRICTED USERS'}>
358
- {isLoadingUsers ? (
359
- <LoadingState color={bloomTheme.colors.text} size="small" />
360
- ) : restrictedUsers.length === 0 ? (
361
- <EmptyState
362
- message={t('privacySettings.noRestrictedUsers') || 'No restricted users'}
363
- textColor={bloomTheme.colors.textSecondary}
322
+ {/* Content & Safety */}
323
+ <SettingsListGroup title={t('privacySettings.sections.content') || 'CONTENT & SAFETY'}>
324
+ <SettingsListItem
325
+ icon={<SettingsIcon name="eye-off-outline" color={bloomTheme.colors.warning} />}
326
+ title={t('privacySettings.sensitiveContent') || 'Show Sensitive Content'}
327
+ description={t('privacySettings.sensitiveContentDesc') || 'Allow sensitive or explicit content'}
328
+ rightElement={<Switch value={settings.sensitiveContent} onValueChange={() => toggle('sensitiveContent')} disabled={isSaving} />}
329
+ showChevron={false}
364
330
  />
365
- ) : (
366
- restrictedUsers.map((restricted) => {
367
- const { userId, displayName, avatar } = extractUserInfo(restricted, 'restrictedId');
368
- const avatarUri = avatar && oxyServices ? oxyServices.getFileDownloadUrl(avatar, 'thumb') : undefined;
369
- return (
370
- <SettingsListItem
371
- key={userId}
372
- icon={<Avatar uri={avatarUri} name={displayName} size={20} />}
373
- title={displayName}
374
- description={t('privacySettings.restrictedDescription') || 'Limited interactions'}
375
- rightElement={
376
- <TouchableOpacity onPress={() => handleUnrestrict(userId)} style={[styles.actionButton, { backgroundColor: bloomTheme.colors.backgroundSecondary }]}>
377
- <Text style={[styles.actionButtonText, { color: bloomTheme.colors.primary }]}>{t('privacySettings.unrestrict') || 'Unrestrict'}</Text>
378
- </TouchableOpacity>
379
- }
380
- />
381
- );
382
- })
383
- )}
384
- </SettingsListGroup>
331
+ <SettingsListItem
332
+ icon={<SettingsIcon name="filter-outline" color={bloomTheme.colors.success} />}
333
+ title={t('privacySettings.autoFilter') || 'Auto Filter'}
334
+ description={t('privacySettings.autoFilterDesc') || 'Automatically filter inappropriate content'}
335
+ rightElement={<Switch value={settings.autoFilter} onValueChange={() => toggle('autoFilter')} disabled={isSaving} />}
336
+ showChevron={false}
337
+ />
338
+ <SettingsListItem
339
+ icon={<SettingsIcon name="volume-off" color={bloomTheme.colors.info} />}
340
+ title={t('privacySettings.muteKeywords') || 'Mute Keywords'}
341
+ description={t('privacySettings.muteKeywordsDesc') || 'Hide posts containing muted keywords'}
342
+ rightElement={<Switch value={settings.muteKeywords} onValueChange={() => toggle('muteKeywords')} disabled={isSaving} />}
343
+ showChevron={false}
344
+ />
345
+ <SettingsListItem
346
+ icon={<SettingsIcon name="cellphone-screenshot" color={bloomTheme.colors.secondary} />}
347
+ title={t('privacySettings.blockScreenshots') || 'Block Screenshots'}
348
+ description={t('privacySettings.blockScreenshotsDesc') || 'Prevent screenshots of your content'}
349
+ rightElement={<Switch value={settings.blockScreenshots} onValueChange={() => toggle('blockScreenshots')} disabled={isSaving} />}
350
+ showChevron={false}
351
+ />
352
+ </SettingsListGroup>
353
+
354
+ {/* Blocked Users */}
355
+ <SettingsListGroup title={t('privacySettings.sections.blockedUsers') || 'BLOCKED USERS'}>
356
+ {isLoadingUsers ? (
357
+ <LoadingState color={bloomTheme.colors.text} size="small" />
358
+ ) : blockedUsers.length === 0 ? (
359
+ <EmptyState
360
+ message={t('privacySettings.noBlockedUsers') || 'No blocked users'}
361
+ textColor={bloomTheme.colors.textSecondary}
362
+ />
363
+ ) : (
364
+ blockedUsers.map((blocked) => {
365
+ const { userId, displayName, avatar } = extractUserInfo(blocked, 'blockedId');
366
+ const avatarUri = avatar && oxyServices ? oxyServices.getFileDownloadUrl(avatar, 'thumb') : undefined;
367
+ return (
368
+ <SettingsListItem
369
+ key={userId}
370
+ icon={<Avatar uri={avatarUri} name={displayName} size={20} />}
371
+ title={displayName}
372
+ rightElement={
373
+ <Button
374
+ variant="destructive"
375
+ size="small"
376
+ onPress={() => handleUnblock(userId)}
377
+ >
378
+ {t('privacySettings.unblock') || 'Unblock'}
379
+ </Button>
380
+ }
381
+ showChevron={false}
382
+ />
383
+ );
384
+ })
385
+ )}
386
+ </SettingsListGroup>
387
+
388
+ {/* Restricted Users */}
389
+ <SettingsListGroup title={t('privacySettings.sections.restrictedUsers') || 'RESTRICTED USERS'}>
390
+ {isLoadingUsers ? (
391
+ <LoadingState color={bloomTheme.colors.text} size="small" />
392
+ ) : restrictedUsers.length === 0 ? (
393
+ <EmptyState
394
+ message={t('privacySettings.noRestrictedUsers') || 'No restricted users'}
395
+ textColor={bloomTheme.colors.textSecondary}
396
+ />
397
+ ) : (
398
+ restrictedUsers.map((restricted) => {
399
+ const { userId, displayName, avatar } = extractUserInfo(restricted, 'restrictedId');
400
+ const avatarUri = avatar && oxyServices ? oxyServices.getFileDownloadUrl(avatar, 'thumb') : undefined;
401
+ return (
402
+ <SettingsListItem
403
+ key={userId}
404
+ icon={<Avatar uri={avatarUri} name={displayName} size={20} />}
405
+ title={displayName}
406
+ description={t('privacySettings.restrictedDescription') || 'Limited interactions'}
407
+ rightElement={
408
+ <Button
409
+ variant="secondary"
410
+ size="small"
411
+ onPress={() => handleUnrestrict(userId)}
412
+ >
413
+ {t('privacySettings.unrestrict') || 'Unrestrict'}
414
+ </Button>
415
+ }
416
+ showChevron={false}
417
+ />
418
+ );
419
+ })
420
+ )}
421
+ </SettingsListGroup>
422
+ </View>
385
423
  </ScrollView>
386
424
  </View>
387
425
  );
388
426
  };
389
427
 
390
- const styles = StyleSheet.create({
391
- container: {
392
- flex: 1,
393
- },
394
- content: {
395
- flex: 1,
396
- padding: 16,
397
- },
398
- actionButton: {
399
- paddingHorizontal: 16,
400
- paddingVertical: 8,
401
- borderRadius: 8,
402
- },
403
- actionButtonText: {
404
- fontSize: 14,
405
- fontWeight: '600',
406
- },
407
- });
408
-
409
428
  export default React.memo(PrivacySettingsScreen);
410
-