@oxyhq/services 6.9.46 → 6.10.2

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 (812) hide show
  1. package/lib/commonjs/index.js +36 -13
  2. package/lib/commonjs/index.js.map +1 -1
  3. package/lib/commonjs/ui/client.js +0 -20
  4. package/lib/commonjs/ui/client.js.map +1 -1
  5. package/lib/commonjs/ui/components/ActingAsBanner.js +0 -4
  6. package/lib/commonjs/ui/components/ActingAsBanner.js.map +1 -1
  7. package/lib/commonjs/ui/components/ActivityIndicator.js +1 -1
  8. package/lib/commonjs/ui/components/ActivityIndicator.js.map +1 -1
  9. package/lib/commonjs/ui/components/Avatar.js +0 -2
  10. package/lib/commonjs/ui/components/Avatar.js.map +1 -1
  11. package/lib/commonjs/ui/components/BottomSheet.js +33 -398
  12. package/lib/commonjs/ui/components/BottomSheet.js.map +1 -1
  13. package/lib/commonjs/ui/components/BottomSheetRouter.js +8 -0
  14. package/lib/commonjs/ui/components/BottomSheetRouter.js.map +1 -1
  15. package/lib/commonjs/ui/components/FollowButton.js +3 -5
  16. package/lib/commonjs/ui/components/FollowButton.js.map +1 -1
  17. package/lib/commonjs/ui/components/Header.js +0 -5
  18. package/lib/commonjs/ui/components/Header.js.map +1 -1
  19. package/lib/commonjs/ui/components/Icon.js +6 -7
  20. package/lib/commonjs/ui/components/Icon.js.map +1 -1
  21. package/lib/commonjs/ui/components/IconButton/IconButton.js +1 -5
  22. package/lib/commonjs/ui/components/IconButton/IconButton.js.map +1 -1
  23. package/lib/commonjs/ui/components/OxyPayButton.js +0 -2
  24. package/lib/commonjs/ui/components/OxyPayButton.js.map +1 -1
  25. package/lib/commonjs/ui/components/OxyProvider.js +100 -37
  26. package/lib/commonjs/ui/components/OxyProvider.js.map +1 -1
  27. package/lib/commonjs/ui/components/OxySignInButton.js +23 -9
  28. package/lib/commonjs/ui/components/OxySignInButton.js.map +1 -1
  29. package/lib/commonjs/ui/components/ProfileCard.js +11 -8
  30. package/lib/commonjs/ui/components/ProfileCard.js.map +1 -1
  31. package/lib/commonjs/ui/components/QuickActions.js +2 -2
  32. package/lib/commonjs/ui/components/QuickActions.js.map +1 -1
  33. package/lib/commonjs/ui/components/SignInModal.js +139 -284
  34. package/lib/commonjs/ui/components/SignInModal.js.map +1 -1
  35. package/lib/commonjs/ui/components/StepBasedScreen.js +0 -2
  36. package/lib/commonjs/ui/components/StepBasedScreen.js.map +1 -1
  37. package/lib/commonjs/ui/components/TextField.js +0 -1
  38. package/lib/commonjs/ui/components/TextField.js.map +1 -1
  39. package/lib/commonjs/ui/components/TouchableRipple/TouchableRipple.native.js +1 -1
  40. package/lib/commonjs/ui/components/TouchableRipple/TouchableRipple.native.js.map +1 -1
  41. package/lib/commonjs/ui/components/feedback/feedbackStyles.js +0 -2
  42. package/lib/commonjs/ui/components/feedback/feedbackStyles.js.map +1 -1
  43. package/lib/commonjs/ui/components/fileManagement/AnimatedButton.js +0 -2
  44. package/lib/commonjs/ui/components/fileManagement/AnimatedButton.js.map +1 -1
  45. package/lib/commonjs/ui/components/fileManagement/FileDetailsModal.js +80 -76
  46. package/lib/commonjs/ui/components/fileManagement/FileDetailsModal.js.map +1 -1
  47. package/lib/commonjs/ui/components/fileManagement/FileViewer.js +6 -8
  48. package/lib/commonjs/ui/components/fileManagement/FileViewer.js.map +1 -1
  49. package/lib/commonjs/ui/components/fileManagement/UploadPreview.js +18 -23
  50. package/lib/commonjs/ui/components/fileManagement/UploadPreview.js.map +1 -1
  51. package/lib/commonjs/ui/components/fileManagement/styles.js +213 -25
  52. package/lib/commonjs/ui/components/fileManagement/styles.js.map +1 -1
  53. package/lib/commonjs/ui/components/logo/LogoIcon.js +63 -0
  54. package/lib/commonjs/ui/components/logo/LogoIcon.js.map +1 -0
  55. package/lib/commonjs/ui/components/logo/LogoText.js +50 -0
  56. package/lib/commonjs/ui/components/logo/LogoText.js.map +1 -0
  57. package/lib/commonjs/ui/components/modals/DeleteAccountModal.js +54 -88
  58. package/lib/commonjs/ui/components/modals/DeleteAccountModal.js.map +1 -1
  59. package/lib/commonjs/ui/components/payment/PaymentDetailsStep.js +2 -2
  60. package/lib/commonjs/ui/components/payment/PaymentDetailsStep.js.map +1 -1
  61. package/lib/commonjs/ui/components/payment/PaymentReviewStep.js +1 -1
  62. package/lib/commonjs/ui/components/payment/PaymentReviewStep.js.map +1 -1
  63. package/lib/commonjs/ui/components/payment/PaymentSuccessStep.js +1 -1
  64. package/lib/commonjs/ui/components/payment/PaymentSuccessStep.js.map +1 -1
  65. package/lib/commonjs/ui/components/payment/paymentStyles.js +2 -10
  66. package/lib/commonjs/ui/components/payment/paymentStyles.js.map +1 -1
  67. package/lib/commonjs/ui/components/styles/overlay.js +7 -9
  68. package/lib/commonjs/ui/components/styles/overlay.js.map +1 -1
  69. package/lib/commonjs/ui/components/theming.js +0 -1
  70. package/lib/commonjs/ui/components/theming.js.map +1 -1
  71. package/lib/commonjs/ui/context/OxyContext.js +34 -21
  72. package/lib/commonjs/ui/context/OxyContext.js.map +1 -1
  73. package/lib/commonjs/ui/context/hooks/useAuthOperations.js +1 -3
  74. package/lib/commonjs/ui/context/hooks/useAuthOperations.js.map +1 -1
  75. package/lib/commonjs/ui/hooks/index.js +32 -12
  76. package/lib/commonjs/ui/hooks/index.js.map +1 -1
  77. package/lib/commonjs/ui/hooks/mutations/mutationFactory.js +10 -5
  78. package/lib/commonjs/ui/hooks/mutations/mutationFactory.js.map +1 -1
  79. package/lib/commonjs/ui/hooks/mutations/mutationKeys.js +34 -0
  80. package/lib/commonjs/ui/hooks/mutations/mutationKeys.js.map +1 -0
  81. package/lib/commonjs/ui/hooks/mutations/useAccountMutations.js +235 -57
  82. package/lib/commonjs/ui/hooks/mutations/useAccountMutations.js.map +1 -1
  83. package/lib/commonjs/ui/hooks/mutations/useServicesMutations.js +17 -13
  84. package/lib/commonjs/ui/hooks/mutations/useServicesMutations.js.map +1 -1
  85. package/lib/commonjs/ui/hooks/queries/index.js +6 -0
  86. package/lib/commonjs/ui/hooks/queries/index.js.map +1 -1
  87. package/lib/commonjs/ui/hooks/queries/queryKeys.js +2 -1
  88. package/lib/commonjs/ui/hooks/queries/queryKeys.js.map +1 -1
  89. package/lib/commonjs/ui/hooks/queries/useAccountQueries.js +80 -3
  90. package/lib/commonjs/ui/hooks/queries/useAccountQueries.js.map +1 -1
  91. package/lib/commonjs/ui/hooks/queries/useSecurityQueries.js +36 -1
  92. package/lib/commonjs/ui/hooks/queries/useSecurityQueries.js.map +1 -1
  93. package/lib/commonjs/ui/hooks/queryClient.js +168 -70
  94. package/lib/commonjs/ui/hooks/queryClient.js.map +1 -1
  95. package/lib/commonjs/ui/hooks/useAsyncAction.js +7 -7
  96. package/lib/commonjs/ui/hooks/useAsyncAction.js.map +1 -1
  97. package/lib/commonjs/ui/hooks/useAuth.js +0 -8
  98. package/lib/commonjs/ui/hooks/useAuth.js.map +1 -1
  99. package/lib/commonjs/ui/hooks/useAvatarPicker.js +71 -20
  100. package/lib/commonjs/ui/hooks/useAvatarPicker.js.map +1 -1
  101. package/lib/commonjs/ui/hooks/useFileDownloadUrl.js +12 -41
  102. package/lib/commonjs/ui/hooks/useFileDownloadUrl.js.map +1 -1
  103. package/lib/commonjs/ui/hooks/useMutationStatus.js +86 -0
  104. package/lib/commonjs/ui/hooks/useMutationStatus.js.map +1 -0
  105. package/lib/commonjs/ui/hooks/useOnlineStatus.js +33 -0
  106. package/lib/commonjs/ui/hooks/useOnlineStatus.js.map +1 -0
  107. package/lib/commonjs/ui/hooks/useSessionSocket.js +101 -130
  108. package/lib/commonjs/ui/hooks/useSessionSocket.js.map +1 -1
  109. package/lib/commonjs/ui/hooks/useSettingToggle.js +4 -4
  110. package/lib/commonjs/ui/hooks/useSettingToggle.js.map +1 -1
  111. package/lib/commonjs/ui/index.js +1 -11
  112. package/lib/commonjs/ui/index.js.map +1 -1
  113. package/lib/commonjs/ui/navigation/routes.js +55 -3
  114. package/lib/commonjs/ui/navigation/routes.js.map +1 -1
  115. package/lib/commonjs/ui/screens/AccountCenterScreen.js +16 -16
  116. package/lib/commonjs/ui/screens/AccountCenterScreen.js.map +1 -1
  117. package/lib/commonjs/ui/screens/AccountOverviewScreen.js +108 -123
  118. package/lib/commonjs/ui/screens/AccountOverviewScreen.js.map +1 -1
  119. package/lib/commonjs/ui/screens/AccountSettingsScreen.js +20 -19
  120. package/lib/commonjs/ui/screens/AccountSettingsScreen.js.map +1 -1
  121. package/lib/commonjs/ui/screens/AccountSwitcherScreen.js +204 -161
  122. package/lib/commonjs/ui/screens/AccountSwitcherScreen.js.map +1 -1
  123. package/lib/commonjs/ui/screens/AccountVerificationScreen.js +18 -18
  124. package/lib/commonjs/ui/screens/AccountVerificationScreen.js.map +1 -1
  125. package/lib/commonjs/ui/screens/AppInfoScreen.js +22 -23
  126. package/lib/commonjs/ui/screens/AppInfoScreen.js.map +1 -1
  127. package/lib/commonjs/ui/screens/AvatarCropScreen.js +939 -0
  128. package/lib/commonjs/ui/screens/AvatarCropScreen.js.map +1 -0
  129. package/lib/commonjs/ui/screens/CreateManagedAccountScreen.js +13 -20
  130. package/lib/commonjs/ui/screens/CreateManagedAccountScreen.js.map +1 -1
  131. package/lib/commonjs/ui/screens/EditProfileFieldScreen.js +10 -13
  132. package/lib/commonjs/ui/screens/EditProfileFieldScreen.js.map +1 -1
  133. package/lib/commonjs/ui/screens/FAQScreen.js +4 -4
  134. package/lib/commonjs/ui/screens/FAQScreen.js.map +1 -1
  135. package/lib/commonjs/ui/screens/FeedbackScreen.js +17 -15
  136. package/lib/commonjs/ui/screens/FeedbackScreen.js.map +1 -1
  137. package/lib/commonjs/ui/screens/FileManagementScreen.js +797 -159
  138. package/lib/commonjs/ui/screens/FileManagementScreen.js.map +1 -1
  139. package/lib/commonjs/ui/screens/HelpSupportScreen.js +8 -9
  140. package/lib/commonjs/ui/screens/HelpSupportScreen.js.map +1 -1
  141. package/lib/commonjs/ui/screens/HistoryViewScreen.js +29 -21
  142. package/lib/commonjs/ui/screens/HistoryViewScreen.js.map +1 -1
  143. package/lib/commonjs/ui/screens/LanguageSelectorScreen.js +3 -5
  144. package/lib/commonjs/ui/screens/LanguageSelectorScreen.js.map +1 -1
  145. package/lib/commonjs/ui/screens/LegalDocumentsScreen.js +5 -5
  146. package/lib/commonjs/ui/screens/LegalDocumentsScreen.js.map +1 -1
  147. package/lib/commonjs/ui/screens/PaymentGatewayScreen.js +2 -2
  148. package/lib/commonjs/ui/screens/PremiumSubscriptionScreen.js +75 -73
  149. package/lib/commonjs/ui/screens/PremiumSubscriptionScreen.js.map +1 -1
  150. package/lib/commonjs/ui/screens/PrivacySettingsScreen.js +32 -21
  151. package/lib/commonjs/ui/screens/PrivacySettingsScreen.js.map +1 -1
  152. package/lib/commonjs/ui/screens/ProfileScreen.js +4 -3
  153. package/lib/commonjs/ui/screens/ProfileScreen.js.map +1 -1
  154. package/lib/commonjs/ui/screens/SavesCollectionsScreen.js +3 -3
  155. package/lib/commonjs/ui/screens/SavesCollectionsScreen.js.map +1 -1
  156. package/lib/commonjs/ui/screens/SessionManagementScreen.js +57 -56
  157. package/lib/commonjs/ui/screens/SessionManagementScreen.js.map +1 -1
  158. package/lib/commonjs/ui/screens/UserLinksScreen.js +2 -3
  159. package/lib/commonjs/ui/screens/UserLinksScreen.js.map +1 -1
  160. package/lib/commonjs/ui/screens/UserListScreen.js +39 -22
  161. package/lib/commonjs/ui/screens/UserListScreen.js.map +1 -1
  162. package/lib/commonjs/ui/screens/WelcomeNewUserScreen.js +18 -21
  163. package/lib/commonjs/ui/screens/WelcomeNewUserScreen.js.map +1 -1
  164. package/lib/commonjs/ui/screens/karma/KarmaAboutScreen.js +0 -3
  165. package/lib/commonjs/ui/screens/karma/KarmaAboutScreen.js.map +1 -1
  166. package/lib/commonjs/ui/screens/karma/KarmaCenterScreen.js +6 -10
  167. package/lib/commonjs/ui/screens/karma/KarmaCenterScreen.js.map +1 -1
  168. package/lib/commonjs/ui/screens/karma/KarmaFAQScreen.js +1 -1
  169. package/lib/commonjs/ui/screens/karma/KarmaFAQScreen.js.map +1 -1
  170. package/lib/commonjs/ui/screens/karma/KarmaLeaderboardScreen.js +6 -6
  171. package/lib/commonjs/ui/screens/karma/KarmaLeaderboardScreen.js.map +1 -1
  172. package/lib/commonjs/ui/screens/karma/KarmaRewardsScreen.js +13 -19
  173. package/lib/commonjs/ui/screens/karma/KarmaRewardsScreen.js.map +1 -1
  174. package/lib/commonjs/ui/screens/karma/KarmaRulesScreen.js +5 -5
  175. package/lib/commonjs/ui/screens/karma/KarmaRulesScreen.js.map +1 -1
  176. package/lib/commonjs/ui/server.js +0 -5
  177. package/lib/commonjs/ui/server.js.map +1 -1
  178. package/lib/commonjs/ui/styles/authStyles.js +0 -5
  179. package/lib/commonjs/ui/styles/authStyles.js.map +1 -1
  180. package/lib/commonjs/ui/styles/index.js +0 -11
  181. package/lib/commonjs/ui/styles/index.js.map +1 -1
  182. package/lib/commonjs/ui/styles/spacing.js +1 -42
  183. package/lib/commonjs/ui/styles/spacing.js.map +1 -1
  184. package/lib/commonjs/ui/styles/theme.js +0 -4
  185. package/lib/commonjs/ui/styles/theme.js.map +1 -1
  186. package/lib/commonjs/ui/utils/fileManagement.js +58 -39
  187. package/lib/commonjs/ui/utils/fileManagement.js.map +1 -1
  188. package/lib/commonjs/ui/utils/sessionHelpers.js +3 -1
  189. package/lib/commonjs/ui/utils/sessionHelpers.js.map +1 -1
  190. package/lib/commonjs/ui/utils/userUtils.js +33 -16
  191. package/lib/commonjs/ui/utils/userUtils.js.map +1 -1
  192. package/lib/module/index.js +9 -5
  193. package/lib/module/index.js.map +1 -1
  194. package/lib/module/ui/client.js +0 -6
  195. package/lib/module/ui/client.js.map +1 -1
  196. package/lib/module/ui/components/ActingAsBanner.js +0 -4
  197. package/lib/module/ui/components/ActingAsBanner.js.map +1 -1
  198. package/lib/module/ui/components/ActivityIndicator.js +1 -1
  199. package/lib/module/ui/components/ActivityIndicator.js.map +1 -1
  200. package/lib/module/ui/components/Avatar.js +0 -2
  201. package/lib/module/ui/components/Avatar.js.map +1 -1
  202. package/lib/module/ui/components/BottomSheet.js +35 -400
  203. package/lib/module/ui/components/BottomSheet.js.map +1 -1
  204. package/lib/module/ui/components/BottomSheetRouter.js +9 -1
  205. package/lib/module/ui/components/BottomSheetRouter.js.map +1 -1
  206. package/lib/module/ui/components/FollowButton.js +2 -4
  207. package/lib/module/ui/components/FollowButton.js.map +1 -1
  208. package/lib/module/ui/components/Header.js +0 -5
  209. package/lib/module/ui/components/Header.js.map +1 -1
  210. package/lib/module/ui/components/Icon.js +6 -7
  211. package/lib/module/ui/components/Icon.js.map +1 -1
  212. package/lib/module/ui/components/IconButton/IconButton.js +1 -5
  213. package/lib/module/ui/components/IconButton/IconButton.js.map +1 -1
  214. package/lib/module/ui/components/OxyPayButton.js +0 -2
  215. package/lib/module/ui/components/OxyPayButton.js.map +1 -1
  216. package/lib/module/ui/components/OxyProvider.js +103 -40
  217. package/lib/module/ui/components/OxyProvider.js.map +1 -1
  218. package/lib/module/ui/components/OxySignInButton.js +23 -9
  219. package/lib/module/ui/components/OxySignInButton.js.map +1 -1
  220. package/lib/module/ui/components/ProfileCard.js +11 -8
  221. package/lib/module/ui/components/ProfileCard.js.map +1 -1
  222. package/lib/module/ui/components/QuickActions.js +2 -2
  223. package/lib/module/ui/components/QuickActions.js.map +1 -1
  224. package/lib/module/ui/components/SignInModal.js +137 -284
  225. package/lib/module/ui/components/SignInModal.js.map +1 -1
  226. package/lib/module/ui/components/StepBasedScreen.js +0 -2
  227. package/lib/module/ui/components/StepBasedScreen.js.map +1 -1
  228. package/lib/module/ui/components/TextField.js +0 -1
  229. package/lib/module/ui/components/TextField.js.map +1 -1
  230. package/lib/module/ui/components/TouchableRipple/TouchableRipple.native.js +1 -1
  231. package/lib/module/ui/components/TouchableRipple/TouchableRipple.native.js.map +1 -1
  232. package/lib/module/ui/components/feedback/feedbackStyles.js +0 -2
  233. package/lib/module/ui/components/feedback/feedbackStyles.js.map +1 -1
  234. package/lib/module/ui/components/fileManagement/AnimatedButton.js +0 -1
  235. package/lib/module/ui/components/fileManagement/AnimatedButton.js.map +1 -1
  236. package/lib/module/ui/components/fileManagement/FileDetailsModal.js +80 -75
  237. package/lib/module/ui/components/fileManagement/FileDetailsModal.js.map +1 -1
  238. package/lib/module/ui/components/fileManagement/FileViewer.js +6 -7
  239. package/lib/module/ui/components/fileManagement/FileViewer.js.map +1 -1
  240. package/lib/module/ui/components/fileManagement/UploadPreview.js +18 -22
  241. package/lib/module/ui/components/fileManagement/UploadPreview.js.map +1 -1
  242. package/lib/module/ui/components/fileManagement/styles.js +212 -24
  243. package/lib/module/ui/components/fileManagement/styles.js.map +1 -1
  244. package/lib/module/ui/components/logo/LogoIcon.js +56 -0
  245. package/lib/module/ui/components/logo/LogoIcon.js.map +1 -0
  246. package/lib/module/ui/components/logo/LogoText.js +43 -0
  247. package/lib/module/ui/components/logo/LogoText.js.map +1 -0
  248. package/lib/module/ui/components/modals/DeleteAccountModal.js +55 -88
  249. package/lib/module/ui/components/modals/DeleteAccountModal.js.map +1 -1
  250. package/lib/module/ui/components/payment/PaymentDetailsStep.js +1 -1
  251. package/lib/module/ui/components/payment/PaymentDetailsStep.js.map +1 -1
  252. package/lib/module/ui/components/payment/PaymentReviewStep.js +1 -1
  253. package/lib/module/ui/components/payment/PaymentReviewStep.js.map +1 -1
  254. package/lib/module/ui/components/payment/PaymentSuccessStep.js +1 -1
  255. package/lib/module/ui/components/payment/PaymentSuccessStep.js.map +1 -1
  256. package/lib/module/ui/components/payment/paymentStyles.js +2 -10
  257. package/lib/module/ui/components/payment/paymentStyles.js.map +1 -1
  258. package/lib/module/ui/components/styles/overlay.js +8 -8
  259. package/lib/module/ui/components/styles/overlay.js.map +1 -1
  260. package/lib/module/ui/components/theming.js +0 -1
  261. package/lib/module/ui/components/theming.js.map +1 -1
  262. package/lib/module/ui/context/OxyContext.js +32 -19
  263. package/lib/module/ui/context/OxyContext.js.map +1 -1
  264. package/lib/module/ui/context/hooks/useAuthOperations.js +1 -3
  265. package/lib/module/ui/context/hooks/useAuthOperations.js.map +1 -1
  266. package/lib/module/ui/hooks/index.js +5 -3
  267. package/lib/module/ui/hooks/index.js.map +1 -1
  268. package/lib/module/ui/hooks/mutations/mutationFactory.js +6 -1
  269. package/lib/module/ui/hooks/mutations/mutationFactory.js.map +1 -1
  270. package/lib/module/ui/hooks/mutations/mutationKeys.js +30 -0
  271. package/lib/module/ui/hooks/mutations/mutationKeys.js.map +1 -0
  272. package/lib/module/ui/hooks/mutations/useAccountMutations.js +231 -52
  273. package/lib/module/ui/hooks/mutations/useAccountMutations.js.map +1 -1
  274. package/lib/module/ui/hooks/mutations/useServicesMutations.js +9 -5
  275. package/lib/module/ui/hooks/mutations/useServicesMutations.js.map +1 -1
  276. package/lib/module/ui/hooks/queries/index.js +1 -1
  277. package/lib/module/ui/hooks/queries/index.js.map +1 -1
  278. package/lib/module/ui/hooks/queries/queryKeys.js +2 -1
  279. package/lib/module/ui/hooks/queries/queryKeys.js.map +1 -1
  280. package/lib/module/ui/hooks/queries/useAccountQueries.js +80 -3
  281. package/lib/module/ui/hooks/queries/useAccountQueries.js.map +1 -1
  282. package/lib/module/ui/hooks/queries/useSecurityQueries.js +35 -1
  283. package/lib/module/ui/hooks/queries/useSecurityQueries.js.map +1 -1
  284. package/lib/module/ui/hooks/queryClient.js +166 -68
  285. package/lib/module/ui/hooks/queryClient.js.map +1 -1
  286. package/lib/module/ui/hooks/useAsyncAction.js +3 -3
  287. package/lib/module/ui/hooks/useAsyncAction.js.map +1 -1
  288. package/lib/module/ui/hooks/useAuth.js +0 -3
  289. package/lib/module/ui/hooks/useAuth.js.map +1 -1
  290. package/lib/module/ui/hooks/useAvatarPicker.js +73 -22
  291. package/lib/module/ui/hooks/useAvatarPicker.js.map +1 -1
  292. package/lib/module/ui/hooks/useFileDownloadUrl.js +11 -39
  293. package/lib/module/ui/hooks/useFileDownloadUrl.js.map +1 -1
  294. package/lib/module/ui/hooks/useMutationStatus.js +82 -0
  295. package/lib/module/ui/hooks/useMutationStatus.js.map +1 -0
  296. package/lib/module/ui/hooks/useOnlineStatus.js +29 -0
  297. package/lib/module/ui/hooks/useOnlineStatus.js.map +1 -0
  298. package/lib/module/ui/hooks/useSessionSocket.js +101 -130
  299. package/lib/module/ui/hooks/useSessionSocket.js.map +1 -1
  300. package/lib/module/ui/hooks/useSettingToggle.js +1 -1
  301. package/lib/module/ui/hooks/useSettingToggle.js.map +1 -1
  302. package/lib/module/ui/index.js +1 -10
  303. package/lib/module/ui/index.js.map +1 -1
  304. package/lib/module/ui/navigation/routes.js +54 -2
  305. package/lib/module/ui/navigation/routes.js.map +1 -1
  306. package/lib/module/ui/screens/AccountCenterScreen.js +15 -14
  307. package/lib/module/ui/screens/AccountCenterScreen.js.map +1 -1
  308. package/lib/module/ui/screens/AccountOverviewScreen.js +96 -111
  309. package/lib/module/ui/screens/AccountOverviewScreen.js.map +1 -1
  310. package/lib/module/ui/screens/AccountSettingsScreen.js +19 -18
  311. package/lib/module/ui/screens/AccountSettingsScreen.js.map +1 -1
  312. package/lib/module/ui/screens/AccountSwitcherScreen.js +189 -145
  313. package/lib/module/ui/screens/AccountSwitcherScreen.js.map +1 -1
  314. package/lib/module/ui/screens/AccountVerificationScreen.js +15 -15
  315. package/lib/module/ui/screens/AccountVerificationScreen.js.map +1 -1
  316. package/lib/module/ui/screens/AppInfoScreen.js +14 -15
  317. package/lib/module/ui/screens/AppInfoScreen.js.map +1 -1
  318. package/lib/module/ui/screens/AvatarCropScreen.js +936 -0
  319. package/lib/module/ui/screens/AvatarCropScreen.js.map +1 -0
  320. package/lib/module/ui/screens/CreateManagedAccountScreen.js +11 -18
  321. package/lib/module/ui/screens/CreateManagedAccountScreen.js.map +1 -1
  322. package/lib/module/ui/screens/EditProfileFieldScreen.js +8 -11
  323. package/lib/module/ui/screens/EditProfileFieldScreen.js.map +1 -1
  324. package/lib/module/ui/screens/FAQScreen.js +3 -3
  325. package/lib/module/ui/screens/FAQScreen.js.map +1 -1
  326. package/lib/module/ui/screens/FeedbackScreen.js +14 -12
  327. package/lib/module/ui/screens/FeedbackScreen.js.map +1 -1
  328. package/lib/module/ui/screens/FileManagementScreen.js +764 -125
  329. package/lib/module/ui/screens/FileManagementScreen.js.map +1 -1
  330. package/lib/module/ui/screens/HelpSupportScreen.js +2 -3
  331. package/lib/module/ui/screens/HelpSupportScreen.js.map +1 -1
  332. package/lib/module/ui/screens/HistoryViewScreen.js +26 -17
  333. package/lib/module/ui/screens/HistoryViewScreen.js.map +1 -1
  334. package/lib/module/ui/screens/LanguageSelectorScreen.js +1 -3
  335. package/lib/module/ui/screens/LanguageSelectorScreen.js.map +1 -1
  336. package/lib/module/ui/screens/LegalDocumentsScreen.js +3 -3
  337. package/lib/module/ui/screens/LegalDocumentsScreen.js.map +1 -1
  338. package/lib/module/ui/screens/PaymentGatewayScreen.js +2 -2
  339. package/lib/module/ui/screens/PremiumSubscriptionScreen.js +60 -57
  340. package/lib/module/ui/screens/PremiumSubscriptionScreen.js.map +1 -1
  341. package/lib/module/ui/screens/PrivacySettingsScreen.js +27 -16
  342. package/lib/module/ui/screens/PrivacySettingsScreen.js.map +1 -1
  343. package/lib/module/ui/screens/ProfileScreen.js +4 -3
  344. package/lib/module/ui/screens/ProfileScreen.js.map +1 -1
  345. package/lib/module/ui/screens/SavesCollectionsScreen.js +2 -2
  346. package/lib/module/ui/screens/SavesCollectionsScreen.js.map +1 -1
  347. package/lib/module/ui/screens/SessionManagementScreen.js +48 -47
  348. package/lib/module/ui/screens/SessionManagementScreen.js.map +1 -1
  349. package/lib/module/ui/screens/UserLinksScreen.js +2 -3
  350. package/lib/module/ui/screens/UserLinksScreen.js.map +1 -1
  351. package/lib/module/ui/screens/UserListScreen.js +40 -23
  352. package/lib/module/ui/screens/UserListScreen.js.map +1 -1
  353. package/lib/module/ui/screens/WelcomeNewUserScreen.js +16 -19
  354. package/lib/module/ui/screens/WelcomeNewUserScreen.js.map +1 -1
  355. package/lib/module/ui/screens/karma/KarmaAboutScreen.js +0 -3
  356. package/lib/module/ui/screens/karma/KarmaAboutScreen.js.map +1 -1
  357. package/lib/module/ui/screens/karma/KarmaCenterScreen.js +6 -10
  358. package/lib/module/ui/screens/karma/KarmaCenterScreen.js.map +1 -1
  359. package/lib/module/ui/screens/karma/KarmaFAQScreen.js +1 -1
  360. package/lib/module/ui/screens/karma/KarmaFAQScreen.js.map +1 -1
  361. package/lib/module/ui/screens/karma/KarmaLeaderboardScreen.js +6 -6
  362. package/lib/module/ui/screens/karma/KarmaLeaderboardScreen.js.map +1 -1
  363. package/lib/module/ui/screens/karma/KarmaRewardsScreen.js +13 -19
  364. package/lib/module/ui/screens/karma/KarmaRewardsScreen.js.map +1 -1
  365. package/lib/module/ui/screens/karma/KarmaRulesScreen.js +5 -5
  366. package/lib/module/ui/screens/karma/KarmaRulesScreen.js.map +1 -1
  367. package/lib/module/ui/server.js +0 -4
  368. package/lib/module/ui/server.js.map +1 -1
  369. package/lib/module/ui/styles/authStyles.js +0 -5
  370. package/lib/module/ui/styles/authStyles.js.map +1 -1
  371. package/lib/module/ui/styles/index.js +0 -1
  372. package/lib/module/ui/styles/index.js.map +1 -1
  373. package/lib/module/ui/styles/spacing.js +0 -42
  374. package/lib/module/ui/styles/spacing.js.map +1 -1
  375. package/lib/module/ui/styles/theme.js +0 -4
  376. package/lib/module/ui/styles/theme.js.map +1 -1
  377. package/lib/module/ui/utils/fileManagement.js +54 -36
  378. package/lib/module/ui/utils/fileManagement.js.map +1 -1
  379. package/lib/module/ui/utils/sessionHelpers.js +3 -1
  380. package/lib/module/ui/utils/sessionHelpers.js.map +1 -1
  381. package/lib/module/ui/utils/userUtils.js +34 -16
  382. package/lib/module/ui/utils/userUtils.js.map +1 -1
  383. package/lib/typescript/commonjs/index.d.ts +7 -3
  384. package/lib/typescript/commonjs/index.d.ts.map +1 -1
  385. package/lib/typescript/commonjs/ui/client.d.ts +0 -2
  386. package/lib/typescript/commonjs/ui/client.d.ts.map +1 -1
  387. package/lib/typescript/commonjs/ui/components/ActingAsBanner.d.ts.map +1 -1
  388. package/lib/typescript/commonjs/ui/components/Avatar.d.ts.map +1 -1
  389. package/lib/typescript/commonjs/ui/components/BottomSheet.d.ts +27 -27
  390. package/lib/typescript/commonjs/ui/components/BottomSheet.d.ts.map +1 -1
  391. package/lib/typescript/commonjs/ui/components/BottomSheetRouter.d.ts.map +1 -1
  392. package/lib/typescript/commonjs/ui/components/FollowButton.d.ts.map +1 -1
  393. package/lib/typescript/commonjs/ui/components/Header.d.ts.map +1 -1
  394. package/lib/typescript/commonjs/ui/components/Icon.d.ts +3 -2
  395. package/lib/typescript/commonjs/ui/components/Icon.d.ts.map +1 -1
  396. package/lib/typescript/commonjs/ui/components/IconButton/IconButton.d.ts.map +1 -1
  397. package/lib/typescript/commonjs/ui/components/OxyPayButton.d.ts.map +1 -1
  398. package/lib/typescript/commonjs/ui/components/OxyProvider.d.ts.map +1 -1
  399. package/lib/typescript/commonjs/ui/components/OxySignInButton.d.ts.map +1 -1
  400. package/lib/typescript/commonjs/ui/components/ProfileCard.d.ts +4 -1
  401. package/lib/typescript/commonjs/ui/components/ProfileCard.d.ts.map +1 -1
  402. package/lib/typescript/commonjs/ui/components/SignInModal.d.ts.map +1 -1
  403. package/lib/typescript/commonjs/ui/components/StepBasedScreen.d.ts.map +1 -1
  404. package/lib/typescript/commonjs/ui/components/TextField/Addons/Outline.d.ts +2 -2
  405. package/lib/typescript/commonjs/ui/components/TextField/helpers.d.ts +2 -2
  406. package/lib/typescript/commonjs/ui/components/TextField/types.d.ts +0 -1
  407. package/lib/typescript/commonjs/ui/components/TextField/types.d.ts.map +1 -1
  408. package/lib/typescript/commonjs/ui/components/TextField.d.ts +1 -1
  409. package/lib/typescript/commonjs/ui/components/TextField.d.ts.map +1 -1
  410. package/lib/typescript/commonjs/ui/components/feedback/feedbackStyles.d.ts +0 -1
  411. package/lib/typescript/commonjs/ui/components/feedback/feedbackStyles.d.ts.map +1 -1
  412. package/lib/typescript/commonjs/ui/components/fileManagement/AnimatedButton.d.ts.map +1 -1
  413. package/lib/typescript/commonjs/ui/components/fileManagement/FileDetailsModal.d.ts +1 -1
  414. package/lib/typescript/commonjs/ui/components/fileManagement/FileDetailsModal.d.ts.map +1 -1
  415. package/lib/typescript/commonjs/ui/components/fileManagement/FileViewer.d.ts +0 -2
  416. package/lib/typescript/commonjs/ui/components/fileManagement/FileViewer.d.ts.map +1 -1
  417. package/lib/typescript/commonjs/ui/components/fileManagement/UploadPreview.d.ts +3 -2
  418. package/lib/typescript/commonjs/ui/components/fileManagement/UploadPreview.d.ts.map +1 -1
  419. package/lib/typescript/commonjs/ui/components/fileManagement/styles.d.ts +200 -17
  420. package/lib/typescript/commonjs/ui/components/fileManagement/styles.d.ts.map +1 -1
  421. package/lib/typescript/commonjs/ui/components/logo/LogoIcon.d.ts +22 -0
  422. package/lib/typescript/commonjs/ui/components/logo/LogoIcon.d.ts.map +1 -0
  423. package/lib/typescript/commonjs/ui/components/logo/LogoText.d.ts +22 -0
  424. package/lib/typescript/commonjs/ui/components/logo/LogoText.d.ts.map +1 -0
  425. package/lib/typescript/commonjs/ui/components/modals/DeleteAccountModal.d.ts +2 -2
  426. package/lib/typescript/commonjs/ui/components/modals/DeleteAccountModal.d.ts.map +1 -1
  427. package/lib/typescript/commonjs/ui/components/payment/paymentStyles.d.ts +0 -7
  428. package/lib/typescript/commonjs/ui/components/payment/paymentStyles.d.ts.map +1 -1
  429. package/lib/typescript/commonjs/ui/components/styles/overlay.d.ts +3 -1
  430. package/lib/typescript/commonjs/ui/components/styles/overlay.d.ts.map +1 -1
  431. package/lib/typescript/commonjs/ui/components/theming.d.ts.map +1 -1
  432. package/lib/typescript/commonjs/ui/components/types.d.ts.map +1 -1
  433. package/lib/typescript/commonjs/ui/context/OxyContext.d.ts.map +1 -1
  434. package/lib/typescript/commonjs/ui/context/hooks/useAuthOperations.d.ts.map +1 -1
  435. package/lib/typescript/commonjs/ui/hooks/index.d.ts +5 -3
  436. package/lib/typescript/commonjs/ui/hooks/index.d.ts.map +1 -1
  437. package/lib/typescript/commonjs/ui/hooks/mutations/mutationFactory.d.ts +11 -0
  438. package/lib/typescript/commonjs/ui/hooks/mutations/mutationFactory.d.ts.map +1 -1
  439. package/lib/typescript/commonjs/ui/hooks/mutations/mutationKeys.d.ts +25 -0
  440. package/lib/typescript/commonjs/ui/hooks/mutations/mutationKeys.d.ts.map +1 -0
  441. package/lib/typescript/commonjs/ui/hooks/mutations/useAccountMutations.d.ts +161 -9
  442. package/lib/typescript/commonjs/ui/hooks/mutations/useAccountMutations.d.ts.map +1 -1
  443. package/lib/typescript/commonjs/ui/hooks/mutations/useServicesMutations.d.ts.map +1 -1
  444. package/lib/typescript/commonjs/ui/hooks/queries/index.d.ts +1 -1
  445. package/lib/typescript/commonjs/ui/hooks/queries/index.d.ts.map +1 -1
  446. package/lib/typescript/commonjs/ui/hooks/queries/queryKeys.d.ts +1 -0
  447. package/lib/typescript/commonjs/ui/hooks/queries/queryKeys.d.ts.map +1 -1
  448. package/lib/typescript/commonjs/ui/hooks/queries/useAccountQueries.d.ts +22 -8
  449. package/lib/typescript/commonjs/ui/hooks/queries/useAccountQueries.d.ts.map +1 -1
  450. package/lib/typescript/commonjs/ui/hooks/queries/useSecurityQueries.d.ts +13 -3
  451. package/lib/typescript/commonjs/ui/hooks/queries/useSecurityQueries.d.ts.map +1 -1
  452. package/lib/typescript/commonjs/ui/hooks/queries/useServicesQueries.d.ts +7 -5
  453. package/lib/typescript/commonjs/ui/hooks/queries/useServicesQueries.d.ts.map +1 -1
  454. package/lib/typescript/commonjs/ui/hooks/queryClient.d.ts +57 -9
  455. package/lib/typescript/commonjs/ui/hooks/queryClient.d.ts.map +1 -1
  456. package/lib/typescript/commonjs/ui/hooks/useAssets.d.ts +1 -1
  457. package/lib/typescript/commonjs/ui/hooks/useAuth.d.ts +0 -1
  458. package/lib/typescript/commonjs/ui/hooks/useAuth.d.ts.map +1 -1
  459. package/lib/typescript/commonjs/ui/hooks/useAvatarPicker.d.ts +10 -2
  460. package/lib/typescript/commonjs/ui/hooks/useAvatarPicker.d.ts.map +1 -1
  461. package/lib/typescript/commonjs/ui/hooks/useFileDownloadUrl.d.ts +2 -6
  462. package/lib/typescript/commonjs/ui/hooks/useFileDownloadUrl.d.ts.map +1 -1
  463. package/lib/typescript/commonjs/ui/hooks/useMutationStatus.d.ts +23 -0
  464. package/lib/typescript/commonjs/ui/hooks/useMutationStatus.d.ts.map +1 -0
  465. package/lib/typescript/commonjs/ui/hooks/useOnlineStatus.d.ts +13 -0
  466. package/lib/typescript/commonjs/ui/hooks/useOnlineStatus.d.ts.map +1 -0
  467. package/lib/typescript/commonjs/ui/hooks/useSessionSocket.d.ts +1 -2
  468. package/lib/typescript/commonjs/ui/hooks/useSessionSocket.d.ts.map +1 -1
  469. package/lib/typescript/commonjs/ui/index.d.ts +1 -4
  470. package/lib/typescript/commonjs/ui/index.d.ts.map +1 -1
  471. package/lib/typescript/commonjs/ui/navigation/routes.d.ts +48 -2
  472. package/lib/typescript/commonjs/ui/navigation/routes.d.ts.map +1 -1
  473. package/lib/typescript/commonjs/ui/screens/AccountCenterScreen.d.ts.map +1 -1
  474. package/lib/typescript/commonjs/ui/screens/AccountOverviewScreen.d.ts.map +1 -1
  475. package/lib/typescript/commonjs/ui/screens/AccountSettingsScreen.d.ts.map +1 -1
  476. package/lib/typescript/commonjs/ui/screens/AccountSwitcherScreen.d.ts.map +1 -1
  477. package/lib/typescript/commonjs/ui/screens/AppInfoScreen.d.ts.map +1 -1
  478. package/lib/typescript/commonjs/ui/screens/AvatarCropScreen.d.ts +49 -0
  479. package/lib/typescript/commonjs/ui/screens/AvatarCropScreen.d.ts.map +1 -0
  480. package/lib/typescript/commonjs/ui/screens/CreateManagedAccountScreen.d.ts.map +1 -1
  481. package/lib/typescript/commonjs/ui/screens/EditProfileFieldScreen.d.ts.map +1 -1
  482. package/lib/typescript/commonjs/ui/screens/FeedbackScreen.d.ts.map +1 -1
  483. package/lib/typescript/commonjs/ui/screens/FileManagementScreen.d.ts.map +1 -1
  484. package/lib/typescript/commonjs/ui/screens/HelpSupportScreen.d.ts.map +1 -1
  485. package/lib/typescript/commonjs/ui/screens/HistoryViewScreen.d.ts.map +1 -1
  486. package/lib/typescript/commonjs/ui/screens/LanguageSelectorScreen.d.ts.map +1 -1
  487. package/lib/typescript/commonjs/ui/screens/PremiumSubscriptionScreen.d.ts.map +1 -1
  488. package/lib/typescript/commonjs/ui/screens/PrivacySettingsScreen.d.ts.map +1 -1
  489. package/lib/typescript/commonjs/ui/screens/ProfileScreen.d.ts.map +1 -1
  490. package/lib/typescript/commonjs/ui/screens/SessionManagementScreen.d.ts.map +1 -1
  491. package/lib/typescript/commonjs/ui/screens/UserLinksScreen.d.ts.map +1 -1
  492. package/lib/typescript/commonjs/ui/screens/UserListScreen.d.ts.map +1 -1
  493. package/lib/typescript/commonjs/ui/screens/WelcomeNewUserScreen.d.ts.map +1 -1
  494. package/lib/typescript/commonjs/ui/screens/karma/KarmaAboutScreen.d.ts.map +1 -1
  495. package/lib/typescript/commonjs/ui/screens/karma/KarmaCenterScreen.d.ts.map +1 -1
  496. package/lib/typescript/commonjs/ui/screens/karma/KarmaLeaderboardScreen.d.ts.map +1 -1
  497. package/lib/typescript/commonjs/ui/screens/karma/KarmaRewardsScreen.d.ts.map +1 -1
  498. package/lib/typescript/commonjs/ui/screens/karma/KarmaRulesScreen.d.ts.map +1 -1
  499. package/lib/typescript/commonjs/ui/server.d.ts +0 -2
  500. package/lib/typescript/commonjs/ui/server.d.ts.map +1 -1
  501. package/lib/typescript/commonjs/ui/styles/authStyles.d.ts +0 -4
  502. package/lib/typescript/commonjs/ui/styles/authStyles.d.ts.map +1 -1
  503. package/lib/typescript/commonjs/ui/styles/index.d.ts +0 -1
  504. package/lib/typescript/commonjs/ui/styles/index.d.ts.map +1 -1
  505. package/lib/typescript/commonjs/ui/styles/spacing.d.ts +0 -36
  506. package/lib/typescript/commonjs/ui/styles/spacing.d.ts.map +1 -1
  507. package/lib/typescript/commonjs/ui/styles/theme.d.ts +0 -1
  508. package/lib/typescript/commonjs/ui/styles/theme.d.ts.map +1 -1
  509. package/lib/typescript/commonjs/ui/utils/fileManagement.d.ts +39 -12
  510. package/lib/typescript/commonjs/ui/utils/fileManagement.d.ts.map +1 -1
  511. package/lib/typescript/commonjs/ui/utils/sessionHelpers.d.ts +3 -1
  512. package/lib/typescript/commonjs/ui/utils/sessionHelpers.d.ts.map +1 -1
  513. package/lib/typescript/commonjs/ui/utils/userUtils.d.ts +19 -18
  514. package/lib/typescript/commonjs/ui/utils/userUtils.d.ts.map +1 -1
  515. package/lib/typescript/module/index.d.ts +7 -3
  516. package/lib/typescript/module/index.d.ts.map +1 -1
  517. package/lib/typescript/module/ui/client.d.ts +0 -2
  518. package/lib/typescript/module/ui/client.d.ts.map +1 -1
  519. package/lib/typescript/module/ui/components/ActingAsBanner.d.ts.map +1 -1
  520. package/lib/typescript/module/ui/components/Avatar.d.ts.map +1 -1
  521. package/lib/typescript/module/ui/components/BottomSheet.d.ts +27 -27
  522. package/lib/typescript/module/ui/components/BottomSheet.d.ts.map +1 -1
  523. package/lib/typescript/module/ui/components/BottomSheetRouter.d.ts.map +1 -1
  524. package/lib/typescript/module/ui/components/FollowButton.d.ts.map +1 -1
  525. package/lib/typescript/module/ui/components/Header.d.ts.map +1 -1
  526. package/lib/typescript/module/ui/components/Icon.d.ts +3 -2
  527. package/lib/typescript/module/ui/components/Icon.d.ts.map +1 -1
  528. package/lib/typescript/module/ui/components/IconButton/IconButton.d.ts.map +1 -1
  529. package/lib/typescript/module/ui/components/OxyPayButton.d.ts.map +1 -1
  530. package/lib/typescript/module/ui/components/OxyProvider.d.ts.map +1 -1
  531. package/lib/typescript/module/ui/components/OxySignInButton.d.ts.map +1 -1
  532. package/lib/typescript/module/ui/components/ProfileCard.d.ts +4 -1
  533. package/lib/typescript/module/ui/components/ProfileCard.d.ts.map +1 -1
  534. package/lib/typescript/module/ui/components/SignInModal.d.ts.map +1 -1
  535. package/lib/typescript/module/ui/components/StepBasedScreen.d.ts.map +1 -1
  536. package/lib/typescript/module/ui/components/TextField/Addons/Outline.d.ts +2 -2
  537. package/lib/typescript/module/ui/components/TextField/helpers.d.ts +2 -2
  538. package/lib/typescript/module/ui/components/TextField/types.d.ts +0 -1
  539. package/lib/typescript/module/ui/components/TextField/types.d.ts.map +1 -1
  540. package/lib/typescript/module/ui/components/TextField.d.ts +1 -1
  541. package/lib/typescript/module/ui/components/TextField.d.ts.map +1 -1
  542. package/lib/typescript/module/ui/components/feedback/feedbackStyles.d.ts +0 -1
  543. package/lib/typescript/module/ui/components/feedback/feedbackStyles.d.ts.map +1 -1
  544. package/lib/typescript/module/ui/components/fileManagement/AnimatedButton.d.ts.map +1 -1
  545. package/lib/typescript/module/ui/components/fileManagement/FileDetailsModal.d.ts +1 -1
  546. package/lib/typescript/module/ui/components/fileManagement/FileDetailsModal.d.ts.map +1 -1
  547. package/lib/typescript/module/ui/components/fileManagement/FileViewer.d.ts +0 -2
  548. package/lib/typescript/module/ui/components/fileManagement/FileViewer.d.ts.map +1 -1
  549. package/lib/typescript/module/ui/components/fileManagement/UploadPreview.d.ts +3 -2
  550. package/lib/typescript/module/ui/components/fileManagement/UploadPreview.d.ts.map +1 -1
  551. package/lib/typescript/module/ui/components/fileManagement/styles.d.ts +200 -17
  552. package/lib/typescript/module/ui/components/fileManagement/styles.d.ts.map +1 -1
  553. package/lib/typescript/module/ui/components/logo/LogoIcon.d.ts +22 -0
  554. package/lib/typescript/module/ui/components/logo/LogoIcon.d.ts.map +1 -0
  555. package/lib/typescript/module/ui/components/logo/LogoText.d.ts +22 -0
  556. package/lib/typescript/module/ui/components/logo/LogoText.d.ts.map +1 -0
  557. package/lib/typescript/module/ui/components/modals/DeleteAccountModal.d.ts +2 -2
  558. package/lib/typescript/module/ui/components/modals/DeleteAccountModal.d.ts.map +1 -1
  559. package/lib/typescript/module/ui/components/payment/paymentStyles.d.ts +0 -7
  560. package/lib/typescript/module/ui/components/payment/paymentStyles.d.ts.map +1 -1
  561. package/lib/typescript/module/ui/components/styles/overlay.d.ts +3 -1
  562. package/lib/typescript/module/ui/components/styles/overlay.d.ts.map +1 -1
  563. package/lib/typescript/module/ui/components/theming.d.ts.map +1 -1
  564. package/lib/typescript/module/ui/components/types.d.ts.map +1 -1
  565. package/lib/typescript/module/ui/context/OxyContext.d.ts.map +1 -1
  566. package/lib/typescript/module/ui/context/hooks/useAuthOperations.d.ts.map +1 -1
  567. package/lib/typescript/module/ui/hooks/index.d.ts +5 -3
  568. package/lib/typescript/module/ui/hooks/index.d.ts.map +1 -1
  569. package/lib/typescript/module/ui/hooks/mutations/mutationFactory.d.ts +11 -0
  570. package/lib/typescript/module/ui/hooks/mutations/mutationFactory.d.ts.map +1 -1
  571. package/lib/typescript/module/ui/hooks/mutations/mutationKeys.d.ts +25 -0
  572. package/lib/typescript/module/ui/hooks/mutations/mutationKeys.d.ts.map +1 -0
  573. package/lib/typescript/module/ui/hooks/mutations/useAccountMutations.d.ts +161 -9
  574. package/lib/typescript/module/ui/hooks/mutations/useAccountMutations.d.ts.map +1 -1
  575. package/lib/typescript/module/ui/hooks/mutations/useServicesMutations.d.ts.map +1 -1
  576. package/lib/typescript/module/ui/hooks/queries/index.d.ts +1 -1
  577. package/lib/typescript/module/ui/hooks/queries/index.d.ts.map +1 -1
  578. package/lib/typescript/module/ui/hooks/queries/queryKeys.d.ts +1 -0
  579. package/lib/typescript/module/ui/hooks/queries/queryKeys.d.ts.map +1 -1
  580. package/lib/typescript/module/ui/hooks/queries/useAccountQueries.d.ts +22 -8
  581. package/lib/typescript/module/ui/hooks/queries/useAccountQueries.d.ts.map +1 -1
  582. package/lib/typescript/module/ui/hooks/queries/useSecurityQueries.d.ts +13 -3
  583. package/lib/typescript/module/ui/hooks/queries/useSecurityQueries.d.ts.map +1 -1
  584. package/lib/typescript/module/ui/hooks/queries/useServicesQueries.d.ts +7 -5
  585. package/lib/typescript/module/ui/hooks/queries/useServicesQueries.d.ts.map +1 -1
  586. package/lib/typescript/module/ui/hooks/queryClient.d.ts +57 -9
  587. package/lib/typescript/module/ui/hooks/queryClient.d.ts.map +1 -1
  588. package/lib/typescript/module/ui/hooks/useAssets.d.ts +1 -1
  589. package/lib/typescript/module/ui/hooks/useAuth.d.ts +0 -1
  590. package/lib/typescript/module/ui/hooks/useAuth.d.ts.map +1 -1
  591. package/lib/typescript/module/ui/hooks/useAvatarPicker.d.ts +10 -2
  592. package/lib/typescript/module/ui/hooks/useAvatarPicker.d.ts.map +1 -1
  593. package/lib/typescript/module/ui/hooks/useFileDownloadUrl.d.ts +2 -6
  594. package/lib/typescript/module/ui/hooks/useFileDownloadUrl.d.ts.map +1 -1
  595. package/lib/typescript/module/ui/hooks/useMutationStatus.d.ts +23 -0
  596. package/lib/typescript/module/ui/hooks/useMutationStatus.d.ts.map +1 -0
  597. package/lib/typescript/module/ui/hooks/useOnlineStatus.d.ts +13 -0
  598. package/lib/typescript/module/ui/hooks/useOnlineStatus.d.ts.map +1 -0
  599. package/lib/typescript/module/ui/hooks/useSessionSocket.d.ts +1 -2
  600. package/lib/typescript/module/ui/hooks/useSessionSocket.d.ts.map +1 -1
  601. package/lib/typescript/module/ui/index.d.ts +1 -4
  602. package/lib/typescript/module/ui/index.d.ts.map +1 -1
  603. package/lib/typescript/module/ui/navigation/routes.d.ts +48 -2
  604. package/lib/typescript/module/ui/navigation/routes.d.ts.map +1 -1
  605. package/lib/typescript/module/ui/screens/AccountCenterScreen.d.ts.map +1 -1
  606. package/lib/typescript/module/ui/screens/AccountOverviewScreen.d.ts.map +1 -1
  607. package/lib/typescript/module/ui/screens/AccountSettingsScreen.d.ts.map +1 -1
  608. package/lib/typescript/module/ui/screens/AccountSwitcherScreen.d.ts.map +1 -1
  609. package/lib/typescript/module/ui/screens/AppInfoScreen.d.ts.map +1 -1
  610. package/lib/typescript/module/ui/screens/AvatarCropScreen.d.ts +49 -0
  611. package/lib/typescript/module/ui/screens/AvatarCropScreen.d.ts.map +1 -0
  612. package/lib/typescript/module/ui/screens/CreateManagedAccountScreen.d.ts.map +1 -1
  613. package/lib/typescript/module/ui/screens/EditProfileFieldScreen.d.ts.map +1 -1
  614. package/lib/typescript/module/ui/screens/FeedbackScreen.d.ts.map +1 -1
  615. package/lib/typescript/module/ui/screens/FileManagementScreen.d.ts.map +1 -1
  616. package/lib/typescript/module/ui/screens/HelpSupportScreen.d.ts.map +1 -1
  617. package/lib/typescript/module/ui/screens/HistoryViewScreen.d.ts.map +1 -1
  618. package/lib/typescript/module/ui/screens/LanguageSelectorScreen.d.ts.map +1 -1
  619. package/lib/typescript/module/ui/screens/PremiumSubscriptionScreen.d.ts.map +1 -1
  620. package/lib/typescript/module/ui/screens/PrivacySettingsScreen.d.ts.map +1 -1
  621. package/lib/typescript/module/ui/screens/ProfileScreen.d.ts.map +1 -1
  622. package/lib/typescript/module/ui/screens/SessionManagementScreen.d.ts.map +1 -1
  623. package/lib/typescript/module/ui/screens/UserLinksScreen.d.ts.map +1 -1
  624. package/lib/typescript/module/ui/screens/UserListScreen.d.ts.map +1 -1
  625. package/lib/typescript/module/ui/screens/WelcomeNewUserScreen.d.ts.map +1 -1
  626. package/lib/typescript/module/ui/screens/karma/KarmaAboutScreen.d.ts.map +1 -1
  627. package/lib/typescript/module/ui/screens/karma/KarmaCenterScreen.d.ts.map +1 -1
  628. package/lib/typescript/module/ui/screens/karma/KarmaLeaderboardScreen.d.ts.map +1 -1
  629. package/lib/typescript/module/ui/screens/karma/KarmaRewardsScreen.d.ts.map +1 -1
  630. package/lib/typescript/module/ui/screens/karma/KarmaRulesScreen.d.ts.map +1 -1
  631. package/lib/typescript/module/ui/server.d.ts +0 -2
  632. package/lib/typescript/module/ui/server.d.ts.map +1 -1
  633. package/lib/typescript/module/ui/styles/authStyles.d.ts +0 -4
  634. package/lib/typescript/module/ui/styles/authStyles.d.ts.map +1 -1
  635. package/lib/typescript/module/ui/styles/index.d.ts +0 -1
  636. package/lib/typescript/module/ui/styles/index.d.ts.map +1 -1
  637. package/lib/typescript/module/ui/styles/spacing.d.ts +0 -36
  638. package/lib/typescript/module/ui/styles/spacing.d.ts.map +1 -1
  639. package/lib/typescript/module/ui/styles/theme.d.ts +0 -1
  640. package/lib/typescript/module/ui/styles/theme.d.ts.map +1 -1
  641. package/lib/typescript/module/ui/utils/fileManagement.d.ts +39 -12
  642. package/lib/typescript/module/ui/utils/fileManagement.d.ts.map +1 -1
  643. package/lib/typescript/module/ui/utils/sessionHelpers.d.ts +3 -1
  644. package/lib/typescript/module/ui/utils/sessionHelpers.d.ts.map +1 -1
  645. package/lib/typescript/module/ui/utils/userUtils.d.ts +19 -18
  646. package/lib/typescript/module/ui/utils/userUtils.d.ts.map +1 -1
  647. package/lib/typescript/types/expo-vector-icons.d.ts +7 -4
  648. package/package.json +64 -31
  649. package/src/index.ts +11 -4
  650. package/src/types/expo-vector-icons.d.ts +7 -4
  651. package/src/ui/client.ts +0 -6
  652. package/src/ui/components/ActingAsBanner.tsx +0 -4
  653. package/src/ui/components/ActivityIndicator.tsx +1 -1
  654. package/src/ui/components/Avatar.tsx +0 -2
  655. package/src/ui/components/BottomSheet.tsx +41 -440
  656. package/src/ui/components/BottomSheetRouter.tsx +12 -1
  657. package/src/ui/components/FollowButton.tsx +2 -4
  658. package/src/ui/components/Header.tsx +0 -5
  659. package/src/ui/components/Icon.tsx +12 -6
  660. package/src/ui/components/IconButton/IconButton.tsx +0 -3
  661. package/src/ui/components/OxyPayButton.tsx +0 -2
  662. package/src/ui/components/OxyProvider.tsx +127 -48
  663. package/src/ui/components/OxySignInButton.tsx +21 -9
  664. package/src/ui/components/ProfileCard.tsx +13 -10
  665. package/src/ui/components/QuickActions.tsx +2 -2
  666. package/src/ui/components/SignInModal.tsx +80 -199
  667. package/src/ui/components/StepBasedScreen.tsx +0 -2
  668. package/src/ui/components/TextField/Addons/Outline.tsx +2 -2
  669. package/src/ui/components/TextField/helpers.tsx +2 -2
  670. package/src/ui/components/TextField/types.tsx +0 -1
  671. package/src/ui/components/TextField.tsx +1 -2
  672. package/src/ui/components/TouchableRipple/TouchableRipple.native.tsx +1 -1
  673. package/src/ui/components/feedback/feedbackStyles.ts +0 -2
  674. package/src/ui/components/fileManagement/AnimatedButton.tsx +0 -1
  675. package/src/ui/components/fileManagement/FileDetailsModal.tsx +71 -65
  676. package/src/ui/components/fileManagement/FileViewer.tsx +6 -9
  677. package/src/ui/components/fileManagement/UploadPreview.tsx +21 -25
  678. package/src/ui/components/fileManagement/styles.ts +206 -18
  679. package/src/ui/components/logo/LogoIcon.tsx +70 -0
  680. package/src/ui/components/logo/LogoText.tsx +70 -0
  681. package/src/ui/components/modals/DeleteAccountModal.tsx +56 -91
  682. package/src/ui/components/payment/PaymentDetailsStep.tsx +1 -1
  683. package/src/ui/components/payment/PaymentReviewStep.tsx +1 -1
  684. package/src/ui/components/payment/PaymentSuccessStep.tsx +1 -1
  685. package/src/ui/components/payment/paymentStyles.ts +0 -8
  686. package/src/ui/components/styles/overlay.tsx +17 -8
  687. package/src/ui/components/theming.tsx +0 -1
  688. package/src/ui/components/types.tsx +3 -2
  689. package/src/ui/context/OxyContext.tsx +34 -19
  690. package/src/ui/context/hooks/useAuthOperations.ts +1 -3
  691. package/src/ui/hooks/index.ts +11 -4
  692. package/src/ui/hooks/mutations/mutationFactory.ts +16 -1
  693. package/src/ui/hooks/mutations/mutationKeys.ts +28 -0
  694. package/src/ui/hooks/mutations/useAccountMutations.ts +251 -59
  695. package/src/ui/hooks/mutations/useServicesMutations.ts +10 -4
  696. package/src/ui/hooks/queries/index.ts +1 -0
  697. package/src/ui/hooks/queries/queryKeys.ts +2 -0
  698. package/src/ui/hooks/queries/useAccountQueries.ts +83 -3
  699. package/src/ui/hooks/queries/useSecurityQueries.ts +42 -2
  700. package/src/ui/hooks/queryClient.ts +194 -69
  701. package/src/ui/hooks/useAsyncAction.ts +3 -3
  702. package/src/ui/hooks/useAuth.ts +0 -2
  703. package/src/ui/hooks/useAvatarPicker.ts +108 -27
  704. package/src/ui/hooks/useFileDownloadUrl.ts +15 -39
  705. package/src/ui/hooks/useMutationStatus.ts +111 -0
  706. package/src/ui/hooks/useOnlineStatus.ts +29 -0
  707. package/src/ui/hooks/useSessionSocket.ts +136 -126
  708. package/src/ui/hooks/useSettingToggle.ts +1 -1
  709. package/src/ui/index.ts +0 -12
  710. package/src/ui/navigation/routes.ts +93 -2
  711. package/src/ui/screens/AccountCenterScreen.tsx +15 -13
  712. package/src/ui/screens/AccountOverviewScreen.tsx +94 -104
  713. package/src/ui/screens/AccountSettingsScreen.tsx +18 -17
  714. package/src/ui/screens/AccountSwitcherScreen.tsx +331 -298
  715. package/src/ui/screens/AccountVerificationScreen.tsx +15 -15
  716. package/src/ui/screens/AppInfoScreen.tsx +8 -13
  717. package/src/ui/screens/AvatarCropScreen.tsx +1073 -0
  718. package/src/ui/screens/CreateManagedAccountScreen.tsx +5 -16
  719. package/src/ui/screens/EditProfileFieldScreen.tsx +5 -10
  720. package/src/ui/screens/FAQScreen.tsx +3 -3
  721. package/src/ui/screens/FeedbackScreen.tsx +14 -12
  722. package/src/ui/screens/FileManagementScreen.tsx +885 -124
  723. package/src/ui/screens/HelpSupportScreen.tsx +2 -3
  724. package/src/ui/screens/HistoryViewScreen.tsx +24 -9
  725. package/src/ui/screens/LanguageSelectorScreen.tsx +1 -3
  726. package/src/ui/screens/LegalDocumentsScreen.tsx +3 -3
  727. package/src/ui/screens/PaymentGatewayScreen.tsx +2 -2
  728. package/src/ui/screens/PremiumSubscriptionScreen.tsx +51 -56
  729. package/src/ui/screens/PrivacySettingsScreen.tsx +22 -20
  730. package/src/ui/screens/ProfileScreen.tsx +1 -2
  731. package/src/ui/screens/SavesCollectionsScreen.tsx +2 -2
  732. package/src/ui/screens/SessionManagementScreen.tsx +35 -47
  733. package/src/ui/screens/UserLinksScreen.tsx +1 -2
  734. package/src/ui/screens/UserListScreen.tsx +30 -19
  735. package/src/ui/screens/WelcomeNewUserScreen.tsx +14 -18
  736. package/src/ui/screens/karma/KarmaAboutScreen.tsx +0 -3
  737. package/src/ui/screens/karma/KarmaCenterScreen.tsx +4 -8
  738. package/src/ui/screens/karma/KarmaFAQScreen.tsx +1 -1
  739. package/src/ui/screens/karma/KarmaLeaderboardScreen.tsx +3 -4
  740. package/src/ui/screens/karma/KarmaRewardsScreen.tsx +13 -18
  741. package/src/ui/screens/karma/KarmaRulesScreen.tsx +3 -4
  742. package/src/ui/server.ts +0 -4
  743. package/src/ui/styles/authStyles.ts +0 -5
  744. package/src/ui/styles/index.ts +0 -1
  745. package/src/ui/styles/spacing.ts +0 -43
  746. package/src/ui/styles/theme.ts +0 -4
  747. package/src/ui/utils/fileManagement.ts +66 -38
  748. package/src/ui/utils/sessionHelpers.ts +3 -1
  749. package/src/ui/utils/userUtils.ts +45 -29
  750. package/lib/commonjs/lib/sonner-safe.js +0 -32
  751. package/lib/commonjs/lib/sonner-safe.js.map +0 -1
  752. package/lib/commonjs/lib/sonner.js +0 -19
  753. package/lib/commonjs/lib/sonner.js.map +0 -1
  754. package/lib/commonjs/lib/sonner.native.js +0 -24
  755. package/lib/commonjs/lib/sonner.native.js.map +0 -1
  756. package/lib/commonjs/lib/sonner.web.js +0 -24
  757. package/lib/commonjs/lib/sonner.web.js.map +0 -1
  758. package/lib/commonjs/ui/hooks/useThemeColors.js +0 -33
  759. package/lib/commonjs/ui/hooks/useThemeColors.js.map +0 -1
  760. package/lib/commonjs/ui/hooks/useThemeStyles.js +0 -38
  761. package/lib/commonjs/ui/hooks/useThemeStyles.js.map +0 -1
  762. package/lib/commonjs/ui/styles/fonts.js +0 -84
  763. package/lib/commonjs/ui/styles/fonts.js.map +0 -1
  764. package/lib/module/lib/sonner-safe.js +0 -29
  765. package/lib/module/lib/sonner-safe.js.map +0 -1
  766. package/lib/module/lib/sonner.js +0 -14
  767. package/lib/module/lib/sonner.js.map +0 -1
  768. package/lib/module/lib/sonner.native.js +0 -19
  769. package/lib/module/lib/sonner.native.js.map +0 -1
  770. package/lib/module/lib/sonner.web.js +0 -19
  771. package/lib/module/lib/sonner.web.js.map +0 -1
  772. package/lib/module/ui/hooks/useThemeColors.js +0 -29
  773. package/lib/module/ui/hooks/useThemeColors.js.map +0 -1
  774. package/lib/module/ui/hooks/useThemeStyles.js +0 -33
  775. package/lib/module/ui/hooks/useThemeStyles.js.map +0 -1
  776. package/lib/module/ui/styles/fonts.js +0 -81
  777. package/lib/module/ui/styles/fonts.js.map +0 -1
  778. package/lib/typescript/commonjs/lib/sonner-safe.d.ts +0 -9
  779. package/lib/typescript/commonjs/lib/sonner-safe.d.ts.map +0 -1
  780. package/lib/typescript/commonjs/lib/sonner.d.ts +0 -12
  781. package/lib/typescript/commonjs/lib/sonner.d.ts.map +0 -1
  782. package/lib/typescript/commonjs/lib/sonner.native.d.ts +0 -15
  783. package/lib/typescript/commonjs/lib/sonner.native.d.ts.map +0 -1
  784. package/lib/typescript/commonjs/lib/sonner.web.d.ts +0 -15
  785. package/lib/typescript/commonjs/lib/sonner.web.d.ts.map +0 -1
  786. package/lib/typescript/commonjs/ui/hooks/useThemeColors.d.ts +0 -87
  787. package/lib/typescript/commonjs/ui/hooks/useThemeColors.d.ts.map +0 -1
  788. package/lib/typescript/commonjs/ui/hooks/useThemeStyles.d.ts +0 -22
  789. package/lib/typescript/commonjs/ui/hooks/useThemeStyles.d.ts.map +0 -1
  790. package/lib/typescript/commonjs/ui/styles/fonts.d.ts +0 -21
  791. package/lib/typescript/commonjs/ui/styles/fonts.d.ts.map +0 -1
  792. package/lib/typescript/module/lib/sonner-safe.d.ts +0 -9
  793. package/lib/typescript/module/lib/sonner-safe.d.ts.map +0 -1
  794. package/lib/typescript/module/lib/sonner.d.ts +0 -12
  795. package/lib/typescript/module/lib/sonner.d.ts.map +0 -1
  796. package/lib/typescript/module/lib/sonner.native.d.ts +0 -15
  797. package/lib/typescript/module/lib/sonner.native.d.ts.map +0 -1
  798. package/lib/typescript/module/lib/sonner.web.d.ts +0 -15
  799. package/lib/typescript/module/lib/sonner.web.d.ts.map +0 -1
  800. package/lib/typescript/module/ui/hooks/useThemeColors.d.ts +0 -87
  801. package/lib/typescript/module/ui/hooks/useThemeColors.d.ts.map +0 -1
  802. package/lib/typescript/module/ui/hooks/useThemeStyles.d.ts +0 -22
  803. package/lib/typescript/module/ui/hooks/useThemeStyles.d.ts.map +0 -1
  804. package/lib/typescript/module/ui/styles/fonts.d.ts +0 -21
  805. package/lib/typescript/module/ui/styles/fonts.d.ts.map +0 -1
  806. package/src/lib/sonner-safe.ts +0 -31
  807. package/src/lib/sonner.native.ts +0 -28
  808. package/src/lib/sonner.ts +0 -11
  809. package/src/lib/sonner.web.ts +0 -28
  810. package/src/ui/hooks/useThemeColors.ts +0 -27
  811. package/src/ui/hooks/useThemeStyles.ts +0 -50
  812. package/src/ui/styles/fonts.ts +0 -77
@@ -1,6 +1,13 @@
1
1
  export { useFollow, useFollowerCounts } from './useFollow';
2
- export { useFileDownloadUrl, setOxyFileUrlInstance } from './useFileDownloadUrl';
3
- export { useThemeStyles } from './useThemeStyles';
4
- export { useThemeColors } from './useThemeColors';
2
+ export { useFileDownloadUrl } from './useFileDownloadUrl';
5
3
  export { useAsyncAction, executeWithToast } from './useAsyncAction';
6
- export { useSettingToggle, useSettingToggles } from './useSettingToggle';
4
+ export { useSettingToggle, useSettingToggles } from './useSettingToggle';
5
+ export { useMutationStatus, type MutationStatus } from './useMutationStatus';
6
+ export { useOnlineStatus } from './useOnlineStatus';
7
+ export { mutationKeys } from './mutations/mutationKeys';
8
+ export {
9
+ attachQueryPersistence,
10
+ clearQueryCache,
11
+ createQueryClient,
12
+ type AttachPersistenceResult,
13
+ } from './queryClient';
@@ -12,7 +12,7 @@
12
12
  import type { QueryClient, UseMutationOptions } from '@tanstack/react-query';
13
13
  import type { User } from '@oxyhq/core';
14
14
  import { queryKeys, invalidateAccountQueries, invalidateUserQueries } from '../queries/queryKeys';
15
- import { toast } from '../../../lib/sonner';
15
+ import { toast } from '@oxyhq/bloom';
16
16
  import { useAuthStore } from '../../stores/authStore';
17
17
 
18
18
  /**
@@ -21,6 +21,11 @@ import { useAuthStore } from '../../stores/authStore';
21
21
  export interface ProfileMutationConfig<TData, TVariables> {
22
22
  /** The mutation function that makes the API call */
23
23
  mutationFn: (variables: TVariables) => Promise<TData>;
24
+ /**
25
+ * Stable mutation key for the offline queue. Required so TanStack Query
26
+ * can correlate paused mutations across refetches/resume cycles.
27
+ */
28
+ mutationKey: readonly unknown[];
24
29
  /** Query keys to cancel before mutation */
25
30
  cancelQueryKeys?: unknown[][];
26
31
  /** Function to apply optimistic update to the user data */
@@ -45,6 +50,7 @@ export interface ProfileMutationConfig<TData, TVariables> {
45
50
  * @example
46
51
  * ```ts
47
52
  * const updateProfile = createProfileMutation({
53
+ * mutationKey: mutationKeys.account.updateProfile,
48
54
  * mutationFn: (updates) => oxyServices.updateProfile(updates),
49
55
  * optimisticUpdate: (user, updates) => updates,
50
56
  * errorMessage: 'Failed to update profile',
@@ -58,6 +64,7 @@ export function createProfileMutation<TVariables>(
58
64
  ): UseMutationOptions<User, Error, TVariables, { previousUser?: User }> {
59
65
  const {
60
66
  mutationFn,
67
+ mutationKey,
61
68
  cancelQueryKeys = [],
62
69
  optimisticUpdate,
63
70
  errorMessage = 'Operation failed',
@@ -69,6 +76,7 @@ export function createProfileMutation<TVariables>(
69
76
  } = config;
70
77
 
71
78
  return {
79
+ mutationKey: [...mutationKey],
72
80
  mutationFn,
73
81
 
74
82
  onMutate: async (variables) => {
@@ -151,6 +159,11 @@ export function createProfileMutation<TVariables>(
151
159
  export interface GenericMutationConfig<TData, TVariables, TContext> {
152
160
  /** The mutation function */
153
161
  mutationFn: (variables: TVariables) => Promise<TData>;
162
+ /**
163
+ * Stable mutation key for the offline queue. Required so TanStack Query
164
+ * can correlate paused mutations across refetches/resume cycles.
165
+ */
166
+ mutationKey: readonly unknown[];
154
167
  /** Query key for optimistic data */
155
168
  queryKey: unknown[];
156
169
  /** Function to create optimistic data */
@@ -172,6 +185,7 @@ export function createGenericMutation<TData, TVariables>(
172
185
  ): UseMutationOptions<TData, Error, TVariables, { previous?: TData }> {
173
186
  const {
174
187
  mutationFn,
188
+ mutationKey,
175
189
  queryKey,
176
190
  optimisticData,
177
191
  errorMessage = 'Operation failed',
@@ -180,6 +194,7 @@ export function createGenericMutation<TData, TVariables>(
180
194
  } = config;
181
195
 
182
196
  return {
197
+ mutationKey: [...mutationKey],
183
198
  mutationFn,
184
199
 
185
200
  onMutate: async (variables) => {
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Stable mutation key factories.
3
+ *
4
+ * Mutations that may be queued while offline MUST declare a stable
5
+ * `mutationKey`. When the network comes back, TanStack Query resumes
6
+ * paused mutations grouped by key — so the keys here should be stable
7
+ * across renders and across reloads when persistence is enabled.
8
+ */
9
+
10
+ export const mutationKeys = {
11
+ // Account-related writes
12
+ account: {
13
+ updateProfile: ['mutation', 'account', 'updateProfile'] as const,
14
+ uploadAvatar: ['mutation', 'account', 'uploadAvatar'] as const,
15
+ updateSettings: ['mutation', 'account', 'updateSettings'] as const,
16
+ updatePrivacySettings: ['mutation', 'account', 'updatePrivacySettings'] as const,
17
+ uploadFile: ['mutation', 'account', 'uploadFile'] as const,
18
+ },
19
+
20
+ // Session / device writes
21
+ session: {
22
+ switch: ['mutation', 'session', 'switch'] as const,
23
+ logout: ['mutation', 'session', 'logout'] as const,
24
+ logoutAll: ['mutation', 'session', 'logoutAll'] as const,
25
+ updateDeviceName: ['mutation', 'session', 'updateDeviceName'] as const,
26
+ removeDevice: ['mutation', 'session', 'removeDevice'] as const,
27
+ },
28
+ } as const;
@@ -1,9 +1,10 @@
1
1
  import { useMutation, useQueryClient } from '@tanstack/react-query';
2
2
  import { authenticatedApiCall } from '@oxyhq/core';
3
- import type { User } from '@oxyhq/core';
4
- import { queryKeys, invalidateAccountQueries, invalidateUserQueries } from '../queries/queryKeys';
3
+ import type { AssetUploadInput, PrivacySettings, User } from '@oxyhq/core';
4
+ import { queryKeys, invalidateAccountQueries, invalidateUserQueries, invalidateSessionQueries } from '../queries/queryKeys';
5
+ import { mutationKeys } from './mutationKeys';
5
6
  import { useOxy } from '../../context/OxyContext';
6
- import { toast } from '../../../lib/sonner';
7
+ import { toast } from '@oxyhq/bloom';
7
8
  import { refreshAvatarInStore } from '../../utils/avatarUtils';
8
9
  import { useAuthStore } from '../../stores/authStore';
9
10
 
@@ -15,6 +16,7 @@ export const useUpdateProfile = () => {
15
16
  const queryClient = useQueryClient();
16
17
 
17
18
  return useMutation({
19
+ mutationKey: [...mutationKeys.account.updateProfile],
18
20
  mutationFn: async (updates: Partial<User>) => {
19
21
  return authenticatedApiCall<User>(
20
22
  oxyServices,
@@ -48,12 +50,31 @@ export const useUpdateProfile = () => {
48
50
 
49
51
  return { previousUser };
50
52
  },
51
- // On error, rollback
53
+ // On error, rollback ONLY the keys this mutation tried to change
52
54
  onError: (error, updates, context) => {
53
- if (context?.previousUser) {
54
- queryClient.setQueryData(queryKeys.accounts.current(), context.previousUser);
55
+ if (context?.previousUser && updates) {
56
+ const previousUser = context.previousUser;
57
+ const changedKeys = Object.keys(updates) as Array<keyof User>;
58
+ const partialRollback = changedKeys.reduce<Partial<User>>((acc, key) => {
59
+ (acc as Record<string, unknown>)[key as string] = previousUser[key];
60
+ return acc;
61
+ }, {});
62
+
63
+ const current = queryClient.getQueryData<User>(queryKeys.accounts.current());
64
+ if (current) {
65
+ queryClient.setQueryData<User>(queryKeys.accounts.current(), {
66
+ ...current,
67
+ ...partialRollback,
68
+ });
69
+ }
55
70
  if (activeSessionId) {
56
- queryClient.setQueryData(queryKeys.users.profile(activeSessionId), context.previousUser);
71
+ const currentProfile = queryClient.getQueryData<User>(queryKeys.users.profile(activeSessionId));
72
+ if (currentProfile) {
73
+ queryClient.setQueryData<User>(queryKeys.users.profile(activeSessionId), {
74
+ ...currentProfile,
75
+ ...partialRollback,
76
+ });
77
+ }
57
78
  }
58
79
  }
59
80
  toast.error(error instanceof Error ? error.message : 'Failed to update profile');
@@ -65,18 +86,22 @@ export const useUpdateProfile = () => {
65
86
  if (activeSessionId) {
66
87
  queryClient.setQueryData(queryKeys.users.profile(activeSessionId), data);
67
88
  }
68
-
89
+
69
90
  // Update authStore so frontend components see the changes immediately
70
91
  useAuthStore.getState().setUser(data);
71
-
92
+
72
93
  // If avatar was updated, refresh accountStore with cache-busted URL
73
94
  if (updates.avatar && activeSessionId && oxyServices) {
74
95
  refreshAvatarInStore(activeSessionId, updates.avatar, oxyServices);
75
96
  }
76
-
77
- // Invalidate all related queries to refresh everywhere
97
+
98
+ // Invalidate all related queries so every consumer (AccountSwitcher,
99
+ // session lists, managed accounts, etc.) refetches the fresh profile.
100
+ // This is critical right after `username` is set the first time, when
101
+ // every cached "session profile" still reports the user as unnamed.
78
102
  invalidateUserQueries(queryClient);
79
103
  invalidateAccountQueries(queryClient);
104
+ invalidateSessionQueries(queryClient);
80
105
  },
81
106
  });
82
107
  };
@@ -89,6 +114,7 @@ export const useUploadAvatar = () => {
89
114
  const queryClient = useQueryClient();
90
115
 
91
116
  return useMutation({
117
+ mutationKey: [...mutationKeys.account.uploadAvatar],
92
118
  mutationFn: async (file: { uri: string; type?: string; name?: string; size?: number }) => {
93
119
  return authenticatedApiCall<User>(oxyServices, activeSessionId, async () => {
94
120
  const uploadResult = await oxyServices.assetUpload(file, 'public');
@@ -120,11 +146,25 @@ export const useUploadAvatar = () => {
120
146
 
121
147
  return { previousUser };
122
148
  },
123
- onError: (error, file, context) => {
149
+ onError: (error, _file, context) => {
150
+ // Avatar upload only mutates the `avatar` field — restore only that key
124
151
  if (context?.previousUser) {
125
- queryClient.setQueryData(queryKeys.accounts.current(), context.previousUser);
152
+ const previousAvatar = context.previousUser.avatar;
153
+ const current = queryClient.getQueryData<User>(queryKeys.accounts.current());
154
+ if (current) {
155
+ queryClient.setQueryData<User>(queryKeys.accounts.current(), {
156
+ ...current,
157
+ avatar: previousAvatar,
158
+ });
159
+ }
126
160
  if (activeSessionId) {
127
- queryClient.setQueryData(queryKeys.users.profile(activeSessionId), context.previousUser);
161
+ const currentProfile = queryClient.getQueryData<User>(queryKeys.users.profile(activeSessionId));
162
+ if (currentProfile) {
163
+ queryClient.setQueryData<User>(queryKeys.users.profile(activeSessionId), {
164
+ ...currentProfile,
165
+ avatar: previousAvatar,
166
+ });
167
+ }
128
168
  }
129
169
  }
130
170
  toast.error(error instanceof Error ? error.message : 'Failed to upload avatar');
@@ -142,27 +182,79 @@ export const useUploadAvatar = () => {
142
182
  if (data?.avatar && activeSessionId && oxyServices) {
143
183
  refreshAvatarInStore(activeSessionId, data.avatar, oxyServices);
144
184
  }
145
-
146
- // Invalidate all related queries to refresh everywhere
185
+
186
+ // Invalidate all related queries to refresh everywhere, including the
187
+ // sessions cache so other-account avatars update too.
147
188
  invalidateUserQueries(queryClient);
148
189
  invalidateAccountQueries(queryClient);
190
+ invalidateSessionQueries(queryClient);
149
191
  toast.success('Avatar updated successfully');
150
192
  },
151
193
  });
152
194
  };
153
195
 
154
196
  /**
155
- * Update account settings
197
+ * Variables accepted by the `useUpdateAccountSettings` mutation.
198
+ *
199
+ * `currentUser` is captured at dispatch time so the rebuilt user object the
200
+ * mutation returns is computed against a stable snapshot — NOT the cache
201
+ * value at the moment the API call settles. Reading from the cache inside
202
+ * `mutationFn` would race with sibling optimistic updates: a concurrent
203
+ * write could already have overwritten the cache by the time the privacy
204
+ * update returns, causing the rebuilt user to clobber the sibling's
205
+ * optimistic value.
206
+ */
207
+ interface UpdateAccountSettingsVariables {
208
+ /** Subset of privacy fields to write. */
209
+ updates: Partial<PrivacySettings>;
210
+ /**
211
+ * The User snapshot captured at mutation dispatch time. The mutation
212
+ * rebuilds this user with the updated `privacySettings` and returns it
213
+ * to `onSuccess`. Required to avoid the race described above.
214
+ */
215
+ currentUser: User;
216
+ }
217
+
218
+ /**
219
+ * Update account settings (privacy preferences).
220
+ *
221
+ * Privacy settings are not part of the `PUT /users/me` allow-list; the API
222
+ * would silently drop them. Route through `updatePrivacySettings` so the
223
+ * dedicated `PATCH /privacy/:id/privacy` endpoint performs a dot-path merge
224
+ * and returns the updated `privacySettings` object.
225
+ *
226
+ * The returned object exposes the standard mutation surface PLUS a
227
+ * convenience `mutate(updates)` / `mutateAsync(updates)` that snapshots
228
+ * the current user from `useOxy()` at dispatch time. Callers that need to
229
+ * supply their own user snapshot (testing, server-side) can call the
230
+ * underlying `.mutate({ updates, currentUser })` form via `.mutation`.
156
231
  */
157
232
  export const useUpdateAccountSettings = () => {
158
- const { oxyServices, activeSessionId } = useOxy();
233
+ const { oxyServices, activeSessionId, user } = useOxy();
159
234
  const queryClient = useQueryClient();
160
235
 
161
- return useMutation({
162
- mutationFn: async (settings: Record<string, any>) => {
163
- return await oxyServices.updateProfile({ privacySettings: settings });
236
+ const mutation = useMutation({
237
+ mutationKey: [...mutationKeys.account.updateSettings],
238
+ mutationFn: async ({ updates, currentUser }: UpdateAccountSettingsVariables) => {
239
+ const userId = currentUser.id;
240
+ if (!userId) {
241
+ throw new Error('User ID is required to update account settings');
242
+ }
243
+ const updatedPrivacy = await authenticatedApiCall<PrivacySettings>(
244
+ oxyServices,
245
+ activeSessionId,
246
+ () => oxyServices.updatePrivacySettings(updates, userId)
247
+ );
248
+ // Rebuild against the dispatch-time snapshot, NOT the live cache.
249
+ // The cache may have been mutated by a sibling write between
250
+ // dispatch and settle; using `currentUser` keeps this mutation
251
+ // hermetic.
252
+ return {
253
+ ...currentUser,
254
+ privacySettings: updatedPrivacy,
255
+ };
164
256
  },
165
- onMutate: async (settings) => {
257
+ onMutate: async ({ updates }) => {
166
258
  await queryClient.cancelQueries({ queryKey: queryKeys.accounts.settings() });
167
259
  const previousUser = queryClient.getQueryData<User>(queryKeys.accounts.current());
168
260
 
@@ -171,25 +263,42 @@ export const useUpdateAccountSettings = () => {
171
263
  ...previousUser,
172
264
  privacySettings: {
173
265
  ...previousUser.privacySettings,
174
- ...settings,
266
+ ...updates,
175
267
  },
176
268
  });
177
269
  }
178
270
 
179
271
  return { previousUser };
180
272
  },
181
- onError: (error, settings, context) => {
182
- if (context?.previousUser) {
183
- queryClient.setQueryData(queryKeys.accounts.current(), context.previousUser);
273
+ onError: (error, { updates }, context) => {
274
+ // Restore only the privacySettings keys this mutation tried to change
275
+ if (context?.previousUser && updates) {
276
+ const previousPrivacy = context.previousUser.privacySettings ?? {};
277
+ const changedKeys = Object.keys(updates) as Array<keyof PrivacySettings>;
278
+ const partialPrivacyRollback = changedKeys.reduce<Partial<PrivacySettings>>((acc, key) => {
279
+ (acc as Record<string, unknown>)[key as string] = (previousPrivacy as Record<string, unknown>)[key as string];
280
+ return acc;
281
+ }, {});
282
+
283
+ const current = queryClient.getQueryData<User>(queryKeys.accounts.current());
284
+ if (current) {
285
+ queryClient.setQueryData<User>(queryKeys.accounts.current(), {
286
+ ...current,
287
+ privacySettings: {
288
+ ...(current.privacySettings ?? {}),
289
+ ...partialPrivacyRollback,
290
+ },
291
+ });
292
+ }
184
293
  }
185
294
  toast.error(error instanceof Error ? error.message : 'Failed to update settings');
186
295
  },
187
296
  onSuccess: (data) => {
188
297
  queryClient.setQueryData(queryKeys.accounts.current(), data);
189
-
298
+
190
299
  // Update authStore so frontend components see the changes immediately
191
300
  useAuthStore.getState().setUser(data);
192
-
301
+
193
302
  invalidateAccountQueries(queryClient);
194
303
  toast.success('Settings updated successfully');
195
304
  },
@@ -197,6 +306,29 @@ export const useUpdateAccountSettings = () => {
197
306
  queryClient.invalidateQueries({ queryKey: queryKeys.accounts.settings() });
198
307
  },
199
308
  });
309
+
310
+ // Snapshot the current user at dispatch time. Reading `user` here (from
311
+ // the `useOxy()` closure of the call to `useUpdateAccountSettings`) is
312
+ // the dispatch-time value, captured the moment `mutate()` runs — exactly
313
+ // what the race fix needs.
314
+ return {
315
+ ...mutation,
316
+ mutate: (updates: Partial<PrivacySettings>): void => {
317
+ const currentUser = user ?? queryClient.getQueryData<User>(queryKeys.accounts.current());
318
+ if (!currentUser) {
319
+ toast.error('Cannot update account settings: no current user');
320
+ return;
321
+ }
322
+ mutation.mutate({ updates, currentUser });
323
+ },
324
+ mutateAsync: async (updates: Partial<PrivacySettings>): Promise<User> => {
325
+ const currentUser = user ?? queryClient.getQueryData<User>(queryKeys.accounts.current());
326
+ if (!currentUser) {
327
+ throw new Error('Cannot update account settings: no current user');
328
+ }
329
+ return mutation.mutateAsync({ updates, currentUser });
330
+ },
331
+ };
200
332
  };
201
333
 
202
334
  /**
@@ -207,13 +339,14 @@ export const useUpdatePrivacySettings = () => {
207
339
  const queryClient = useQueryClient();
208
340
 
209
341
  return useMutation({
210
- mutationFn: async ({ settings, userId }: { settings: Record<string, any>; userId?: string }) => {
342
+ mutationKey: [...mutationKeys.account.updatePrivacySettings],
343
+ mutationFn: async ({ settings, userId }: { settings: Partial<PrivacySettings>; userId?: string }) => {
211
344
  const targetUserId = userId || user?.id;
212
345
  if (!targetUserId) {
213
346
  throw new Error('User ID is required');
214
347
  }
215
348
 
216
- return authenticatedApiCall<Record<string, unknown>>(
349
+ return authenticatedApiCall<PrivacySettings>(
217
350
  oxyServices,
218
351
  activeSessionId,
219
352
  () => oxyServices.updatePrivacySettings(settings, targetUserId)
@@ -234,8 +367,8 @@ export const useUpdatePrivacySettings = () => {
234
367
 
235
368
  // Optimistically update privacy settings
236
369
  if (previousPrivacySettings) {
237
- queryClient.setQueryData(queryKeys.privacy.settings(targetUserId), {
238
- ...previousPrivacySettings,
370
+ queryClient.setQueryData<PrivacySettings>(queryKeys.privacy.settings(targetUserId), {
371
+ ...(previousPrivacySettings as PrivacySettings),
239
372
  ...settings,
240
373
  });
241
374
  }
@@ -253,44 +386,102 @@ export const useUpdatePrivacySettings = () => {
253
386
 
254
387
  return { previousPrivacySettings, previousUser };
255
388
  },
256
- // On error, rollback
257
- onError: (error, { userId }, context) => {
389
+ // On error, rollback ONLY the privacy keys this mutation tried to change.
390
+ // Restoring the entire previous object would wipe out other concurrent
391
+ // optimistic updates (e.g. user toggles two privacy switches in quick
392
+ // succession; failure on one must not revert the other).
393
+ onError: (error, { settings, userId }, context) => {
258
394
  const targetUserId = userId || user?.id;
259
- if (context?.previousPrivacySettings && targetUserId) {
260
- queryClient.setQueryData(queryKeys.privacy.settings(targetUserId), context.previousPrivacySettings);
395
+ const changedKeys = settings ? (Object.keys(settings) as Array<keyof PrivacySettings>) : [];
396
+
397
+ // Rollback the privacy.settings query (partial)
398
+ if (context?.previousPrivacySettings && targetUserId && changedKeys.length > 0) {
399
+ const previousPrivacy = context.previousPrivacySettings as Record<string, unknown>;
400
+ const partialPrivacyRollback = changedKeys.reduce<Partial<PrivacySettings>>((acc, key) => {
401
+ (acc as Record<string, unknown>)[key as string] = previousPrivacy[key as string];
402
+ return acc;
403
+ }, {});
404
+ const currentPrivacy = queryClient.getQueryData<PrivacySettings>(queryKeys.privacy.settings(targetUserId));
405
+ if (currentPrivacy) {
406
+ queryClient.setQueryData<PrivacySettings>(queryKeys.privacy.settings(targetUserId), {
407
+ ...currentPrivacy,
408
+ ...partialPrivacyRollback,
409
+ });
410
+ }
261
411
  }
262
- if (context?.previousUser) {
263
- queryClient.setQueryData(queryKeys.accounts.current(), context.previousUser);
412
+
413
+ // Rollback the accounts.current() user.privacySettings (partial)
414
+ if (context?.previousUser && changedKeys.length > 0) {
415
+ const previousPrivacy = (context.previousUser.privacySettings ?? {}) as Record<string, unknown>;
416
+ const partialPrivacyRollback = changedKeys.reduce<Partial<PrivacySettings>>((acc, key) => {
417
+ (acc as Record<string, unknown>)[key as string] = previousPrivacy[key as string];
418
+ return acc;
419
+ }, {});
420
+ const current = queryClient.getQueryData<User>(queryKeys.accounts.current());
421
+ if (current) {
422
+ queryClient.setQueryData<User>(queryKeys.accounts.current(), {
423
+ ...current,
424
+ privacySettings: {
425
+ ...(current.privacySettings ?? {}),
426
+ ...partialPrivacyRollback,
427
+ },
428
+ });
429
+ }
430
+ }
431
+
432
+ // After partial rollback, force a fresh fetch from the server so any
433
+ // concurrent-mutation state we may have failed to restore correctly
434
+ // gets reconciled with the source of truth. Targeted at privacy.settings
435
+ // only — NOT onSettled, which would defeat the merge fix on success.
436
+ if (targetUserId) {
437
+ queryClient.invalidateQueries({ queryKey: queryKeys.privacy.settings(targetUserId) });
264
438
  }
439
+
265
440
  toast.error(error instanceof Error ? error.message : 'Failed to update privacy settings');
266
441
  },
267
- // On success, invalidate and refetch
268
- onSuccess: (data, { userId }) => {
442
+ // On success, MERGE the server response into the cached state. Older
443
+ // API builds returned only the changed field (or wiped the privacySettings
444
+ // subdocument when handed a partial update), which would clobber every
445
+ // other toggle if we blindly replaced. Defensive merge means the UI stays
446
+ // consistent regardless of server behaviour.
447
+ //
448
+ // BOTH the privacy.settings query AND the accounts.current() user are
449
+ // gated on `targetUserId`. If it's missing (no userId param, no logged-in
450
+ // user) the optimistic update in onMutate would have early-returned too,
451
+ // so neither cache was ever touched — there's nothing to reconcile here.
452
+ onSuccess: (data, { userId, settings }) => {
269
453
  const targetUserId = userId || user?.id;
270
- if (targetUserId) {
271
- queryClient.setQueryData(queryKeys.privacy.settings(targetUserId), data);
272
- }
273
- // Also update account query if it contains privacy settings
454
+ if (!targetUserId) return;
455
+
456
+ const incoming = (data ?? {}) as PrivacySettings;
457
+ const requested = (settings ?? {}) as Partial<PrivacySettings>;
458
+
459
+ queryClient.setQueryData<PrivacySettings>(
460
+ queryKeys.privacy.settings(targetUserId),
461
+ (previous) => ({
462
+ ...(previous ?? {}),
463
+ ...requested,
464
+ ...incoming, // server wins for fields it explicitly returned
465
+ }),
466
+ );
467
+
274
468
  const currentUser = queryClient.getQueryData<User>(queryKeys.accounts.current());
275
469
  if (currentUser) {
276
470
  const updatedUser: User = {
277
471
  ...currentUser,
278
- privacySettings: data as { [key: string]: unknown },
472
+ privacySettings: {
473
+ ...(currentUser.privacySettings ?? {}),
474
+ ...requested,
475
+ ...incoming,
476
+ },
279
477
  };
280
478
  queryClient.setQueryData<User>(queryKeys.accounts.current(), updatedUser);
281
-
282
- // Update authStore so frontend components see the changes immediately
283
479
  useAuthStore.getState().setUser(updatedUser);
284
480
  }
285
- invalidateAccountQueries(queryClient);
286
- },
287
- // Always refetch after error or success
288
- onSettled: (data, error, { userId }) => {
289
- const targetUserId = userId || user?.id;
290
- if (targetUserId) {
291
- queryClient.invalidateQueries({ queryKey: queryKeys.privacy.settings(targetUserId) });
292
- }
293
- queryClient.invalidateQueries({ queryKey: queryKeys.accounts.current() });
481
+ // Deliberately NOT invalidating any queries here. invalidateAccountQueries
482
+ // invalidates accounts.all which is the prefix for accounts.current(),
483
+ // triggering a background refetch of useCurrentUser that would overwrite
484
+ // the merged state above. The onSuccess merge is the source of truth.
294
485
  },
295
486
  });
296
487
  };
@@ -321,15 +512,16 @@ export const useUploadFile = () => {
321
512
  const { oxyServices, activeSessionId } = useOxy();
322
513
 
323
514
  return useMutation({
515
+ mutationKey: [...mutationKeys.account.uploadFile],
324
516
  mutationFn: async ({
325
517
  file,
326
518
  visibility,
327
519
  metadata,
328
- onProgress
520
+ onProgress,
329
521
  }: {
330
- file: File;
522
+ file: AssetUploadInput;
331
523
  visibility?: 'private' | 'public' | 'unlisted';
332
- metadata?: Record<string, any>;
524
+ metadata?: Record<string, unknown>;
333
525
  onProgress?: (progress: number) => void;
334
526
  }) => {
335
527
  return authenticatedApiCall<UploadResult>(
@@ -1,17 +1,19 @@
1
1
  import { useMutation, useQueryClient } from '@tanstack/react-query';
2
- import type { User, ClientSession } from '@oxyhq/core';
2
+ import type { ClientSession } from '@oxyhq/core';
3
3
  import { queryKeys, invalidateSessionQueries } from '../queries/queryKeys';
4
+ import { mutationKeys } from './mutationKeys';
4
5
  import { useOxy } from '../../context/OxyContext';
5
- import { toast } from '../../../lib/sonner';
6
+ import { toast } from '@oxyhq/bloom';
6
7
 
7
8
  /**
8
9
  * Switch active session
9
10
  */
10
11
  export const useSwitchSession = () => {
11
- const { switchSession, activeSessionId } = useOxy();
12
+ const { switchSession } = useOxy();
12
13
  const queryClient = useQueryClient();
13
14
 
14
15
  return useMutation({
16
+ mutationKey: [...mutationKeys.session.switch],
15
17
  mutationFn: async (sessionId: string) => {
16
18
  return await switchSession(sessionId);
17
19
  },
@@ -35,10 +37,11 @@ export const useSwitchSession = () => {
35
37
  * Logout from a session
36
38
  */
37
39
  export const useLogoutSession = () => {
38
- const { oxyServices, activeSessionId, sessions } = useOxy();
40
+ const { oxyServices, activeSessionId } = useOxy();
39
41
  const queryClient = useQueryClient();
40
42
 
41
43
  return useMutation({
44
+ mutationKey: [...mutationKeys.session.logout],
42
45
  mutationFn: async (targetSessionId?: string) => {
43
46
  if (!activeSessionId) {
44
47
  throw new Error('No active session');
@@ -92,6 +95,7 @@ export const useLogoutAll = () => {
92
95
  const queryClient = useQueryClient();
93
96
 
94
97
  return useMutation({
98
+ mutationKey: [...mutationKeys.session.logoutAll],
95
99
  mutationFn: async () => {
96
100
  if (!activeSessionId) {
97
101
  throw new Error('No active session');
@@ -119,6 +123,7 @@ export const useUpdateDeviceName = () => {
119
123
  const queryClient = useQueryClient();
120
124
 
121
125
  return useMutation({
126
+ mutationKey: [...mutationKeys.session.updateDeviceName],
122
127
  mutationFn: async (deviceName: string) => {
123
128
  if (!activeSessionId) {
124
129
  throw new Error('No active session');
@@ -146,6 +151,7 @@ export const useRemoveDevice = () => {
146
151
  const queryClient = useQueryClient();
147
152
 
148
153
  return useMutation({
154
+ mutationKey: [...mutationKeys.session.removeDevice],
149
155
  mutationFn: async (deviceId: string) => {
150
156
  await oxyServices.removeDevice(deviceId);
151
157
  return deviceId;
@@ -29,6 +29,7 @@ export {
29
29
  export {
30
30
  useSecurityActivity,
31
31
  useRecentSecurityActivity,
32
+ useInfiniteSecurityActivity,
32
33
  } from './useSecurityQueries';
33
34
 
34
35
  // Query keys and invalidation helpers (for advanced usage)
@@ -62,6 +62,8 @@ export const queryKeys = {
62
62
  [...queryKeys.security.all, 'activity', limit, offset, eventType] as const,
63
63
  recent: (limit: number) =>
64
64
  [...queryKeys.security.all, 'recent', limit] as const,
65
+ infinite: (limit: number, eventType?: string) =>
66
+ [...queryKeys.security.all, 'infinite', limit, eventType] as const,
65
67
  },
66
68
  } as const;
67
69