@oxyhq/services 6.9.46 → 6.10.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/commonjs/index.js +36 -13
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/ui/client.js +0 -20
- package/lib/commonjs/ui/client.js.map +1 -1
- package/lib/commonjs/ui/components/ActingAsBanner.js +0 -4
- package/lib/commonjs/ui/components/ActingAsBanner.js.map +1 -1
- package/lib/commonjs/ui/components/ActivityIndicator.js +1 -1
- package/lib/commonjs/ui/components/ActivityIndicator.js.map +1 -1
- package/lib/commonjs/ui/components/Avatar.js +0 -2
- package/lib/commonjs/ui/components/Avatar.js.map +1 -1
- package/lib/commonjs/ui/components/BottomSheet.js +33 -398
- package/lib/commonjs/ui/components/BottomSheet.js.map +1 -1
- package/lib/commonjs/ui/components/BottomSheetRouter.js +8 -0
- package/lib/commonjs/ui/components/BottomSheetRouter.js.map +1 -1
- package/lib/commonjs/ui/components/FollowButton.js +3 -5
- package/lib/commonjs/ui/components/FollowButton.js.map +1 -1
- package/lib/commonjs/ui/components/Header.js +0 -5
- package/lib/commonjs/ui/components/Header.js.map +1 -1
- package/lib/commonjs/ui/components/Icon.js +6 -7
- package/lib/commonjs/ui/components/Icon.js.map +1 -1
- package/lib/commonjs/ui/components/IconButton/IconButton.js +1 -5
- package/lib/commonjs/ui/components/IconButton/IconButton.js.map +1 -1
- package/lib/commonjs/ui/components/OxyPayButton.js +0 -2
- package/lib/commonjs/ui/components/OxyPayButton.js.map +1 -1
- package/lib/commonjs/ui/components/OxyProvider.js +100 -37
- package/lib/commonjs/ui/components/OxyProvider.js.map +1 -1
- package/lib/commonjs/ui/components/OxySignInButton.js +23 -9
- package/lib/commonjs/ui/components/OxySignInButton.js.map +1 -1
- package/lib/commonjs/ui/components/ProfileCard.js +11 -8
- package/lib/commonjs/ui/components/ProfileCard.js.map +1 -1
- package/lib/commonjs/ui/components/QuickActions.js +2 -2
- package/lib/commonjs/ui/components/QuickActions.js.map +1 -1
- package/lib/commonjs/ui/components/SignInModal.js +139 -284
- package/lib/commonjs/ui/components/SignInModal.js.map +1 -1
- package/lib/commonjs/ui/components/StepBasedScreen.js +0 -2
- package/lib/commonjs/ui/components/StepBasedScreen.js.map +1 -1
- package/lib/commonjs/ui/components/TextField.js +0 -1
- package/lib/commonjs/ui/components/TextField.js.map +1 -1
- package/lib/commonjs/ui/components/TouchableRipple/TouchableRipple.native.js +1 -1
- package/lib/commonjs/ui/components/TouchableRipple/TouchableRipple.native.js.map +1 -1
- package/lib/commonjs/ui/components/feedback/feedbackStyles.js +0 -2
- package/lib/commonjs/ui/components/feedback/feedbackStyles.js.map +1 -1
- package/lib/commonjs/ui/components/fileManagement/AnimatedButton.js +0 -2
- package/lib/commonjs/ui/components/fileManagement/AnimatedButton.js.map +1 -1
- package/lib/commonjs/ui/components/fileManagement/FileDetailsModal.js +80 -76
- package/lib/commonjs/ui/components/fileManagement/FileDetailsModal.js.map +1 -1
- package/lib/commonjs/ui/components/fileManagement/FileViewer.js +6 -8
- package/lib/commonjs/ui/components/fileManagement/FileViewer.js.map +1 -1
- package/lib/commonjs/ui/components/fileManagement/UploadPreview.js +18 -23
- package/lib/commonjs/ui/components/fileManagement/UploadPreview.js.map +1 -1
- package/lib/commonjs/ui/components/fileManagement/styles.js +213 -25
- package/lib/commonjs/ui/components/fileManagement/styles.js.map +1 -1
- package/lib/commonjs/ui/components/logo/LogoIcon.js +63 -0
- package/lib/commonjs/ui/components/logo/LogoIcon.js.map +1 -0
- package/lib/commonjs/ui/components/logo/LogoText.js +50 -0
- package/lib/commonjs/ui/components/logo/LogoText.js.map +1 -0
- package/lib/commonjs/ui/components/modals/DeleteAccountModal.js +54 -88
- package/lib/commonjs/ui/components/modals/DeleteAccountModal.js.map +1 -1
- package/lib/commonjs/ui/components/payment/PaymentDetailsStep.js +2 -2
- package/lib/commonjs/ui/components/payment/PaymentDetailsStep.js.map +1 -1
- package/lib/commonjs/ui/components/payment/PaymentReviewStep.js +1 -1
- package/lib/commonjs/ui/components/payment/PaymentReviewStep.js.map +1 -1
- package/lib/commonjs/ui/components/payment/PaymentSuccessStep.js +1 -1
- package/lib/commonjs/ui/components/payment/PaymentSuccessStep.js.map +1 -1
- package/lib/commonjs/ui/components/payment/paymentStyles.js +2 -10
- package/lib/commonjs/ui/components/payment/paymentStyles.js.map +1 -1
- package/lib/commonjs/ui/components/styles/overlay.js +7 -9
- package/lib/commonjs/ui/components/styles/overlay.js.map +1 -1
- package/lib/commonjs/ui/components/theming.js +0 -1
- package/lib/commonjs/ui/components/theming.js.map +1 -1
- package/lib/commonjs/ui/context/OxyContext.js +34 -21
- package/lib/commonjs/ui/context/OxyContext.js.map +1 -1
- package/lib/commonjs/ui/context/hooks/useAuthOperations.js +1 -3
- package/lib/commonjs/ui/context/hooks/useAuthOperations.js.map +1 -1
- package/lib/commonjs/ui/hooks/index.js +32 -12
- package/lib/commonjs/ui/hooks/index.js.map +1 -1
- package/lib/commonjs/ui/hooks/mutations/mutationFactory.js +10 -5
- package/lib/commonjs/ui/hooks/mutations/mutationFactory.js.map +1 -1
- package/lib/commonjs/ui/hooks/mutations/mutationKeys.js +34 -0
- package/lib/commonjs/ui/hooks/mutations/mutationKeys.js.map +1 -0
- package/lib/commonjs/ui/hooks/mutations/useAccountMutations.js +235 -57
- package/lib/commonjs/ui/hooks/mutations/useAccountMutations.js.map +1 -1
- package/lib/commonjs/ui/hooks/mutations/useServicesMutations.js +17 -13
- package/lib/commonjs/ui/hooks/mutations/useServicesMutations.js.map +1 -1
- package/lib/commonjs/ui/hooks/queries/index.js +6 -0
- package/lib/commonjs/ui/hooks/queries/index.js.map +1 -1
- package/lib/commonjs/ui/hooks/queries/queryKeys.js +2 -1
- package/lib/commonjs/ui/hooks/queries/queryKeys.js.map +1 -1
- package/lib/commonjs/ui/hooks/queries/useAccountQueries.js +80 -3
- package/lib/commonjs/ui/hooks/queries/useAccountQueries.js.map +1 -1
- package/lib/commonjs/ui/hooks/queries/useSecurityQueries.js +36 -1
- package/lib/commonjs/ui/hooks/queries/useSecurityQueries.js.map +1 -1
- package/lib/commonjs/ui/hooks/queryClient.js +168 -70
- package/lib/commonjs/ui/hooks/queryClient.js.map +1 -1
- package/lib/commonjs/ui/hooks/useAsyncAction.js +7 -7
- package/lib/commonjs/ui/hooks/useAsyncAction.js.map +1 -1
- package/lib/commonjs/ui/hooks/useAuth.js +0 -8
- package/lib/commonjs/ui/hooks/useAuth.js.map +1 -1
- package/lib/commonjs/ui/hooks/useAvatarPicker.js +71 -20
- package/lib/commonjs/ui/hooks/useAvatarPicker.js.map +1 -1
- package/lib/commonjs/ui/hooks/useFileDownloadUrl.js +12 -41
- package/lib/commonjs/ui/hooks/useFileDownloadUrl.js.map +1 -1
- package/lib/commonjs/ui/hooks/useMutationStatus.js +86 -0
- package/lib/commonjs/ui/hooks/useMutationStatus.js.map +1 -0
- package/lib/commonjs/ui/hooks/useOnlineStatus.js +33 -0
- package/lib/commonjs/ui/hooks/useOnlineStatus.js.map +1 -0
- package/lib/commonjs/ui/hooks/useSessionSocket.js +101 -130
- package/lib/commonjs/ui/hooks/useSessionSocket.js.map +1 -1
- package/lib/commonjs/ui/hooks/useSettingToggle.js +4 -4
- package/lib/commonjs/ui/hooks/useSettingToggle.js.map +1 -1
- package/lib/commonjs/ui/index.js +1 -11
- package/lib/commonjs/ui/index.js.map +1 -1
- package/lib/commonjs/ui/navigation/routes.js +55 -3
- package/lib/commonjs/ui/navigation/routes.js.map +1 -1
- package/lib/commonjs/ui/screens/AccountCenterScreen.js +16 -16
- package/lib/commonjs/ui/screens/AccountCenterScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/AccountOverviewScreen.js +108 -123
- package/lib/commonjs/ui/screens/AccountOverviewScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/AccountSettingsScreen.js +20 -19
- package/lib/commonjs/ui/screens/AccountSettingsScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/AccountSwitcherScreen.js +204 -161
- package/lib/commonjs/ui/screens/AccountSwitcherScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/AccountVerificationScreen.js +18 -18
- package/lib/commonjs/ui/screens/AccountVerificationScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/AppInfoScreen.js +22 -23
- package/lib/commonjs/ui/screens/AppInfoScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/AvatarCropScreen.js +939 -0
- package/lib/commonjs/ui/screens/AvatarCropScreen.js.map +1 -0
- package/lib/commonjs/ui/screens/CreateManagedAccountScreen.js +13 -20
- package/lib/commonjs/ui/screens/CreateManagedAccountScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/EditProfileFieldScreen.js +10 -13
- package/lib/commonjs/ui/screens/EditProfileFieldScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/FAQScreen.js +4 -4
- package/lib/commonjs/ui/screens/FAQScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/FeedbackScreen.js +17 -15
- package/lib/commonjs/ui/screens/FeedbackScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/FileManagementScreen.js +797 -159
- package/lib/commonjs/ui/screens/FileManagementScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/HelpSupportScreen.js +8 -9
- package/lib/commonjs/ui/screens/HelpSupportScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/HistoryViewScreen.js +29 -21
- package/lib/commonjs/ui/screens/HistoryViewScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/LanguageSelectorScreen.js +3 -5
- package/lib/commonjs/ui/screens/LanguageSelectorScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/LegalDocumentsScreen.js +5 -5
- package/lib/commonjs/ui/screens/LegalDocumentsScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/PaymentGatewayScreen.js +2 -2
- package/lib/commonjs/ui/screens/PremiumSubscriptionScreen.js +75 -73
- package/lib/commonjs/ui/screens/PremiumSubscriptionScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/PrivacySettingsScreen.js +32 -21
- package/lib/commonjs/ui/screens/PrivacySettingsScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/ProfileScreen.js +4 -3
- package/lib/commonjs/ui/screens/ProfileScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/SavesCollectionsScreen.js +3 -3
- package/lib/commonjs/ui/screens/SavesCollectionsScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/SessionManagementScreen.js +57 -56
- package/lib/commonjs/ui/screens/SessionManagementScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/UserLinksScreen.js +2 -3
- package/lib/commonjs/ui/screens/UserLinksScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/UserListScreen.js +39 -22
- package/lib/commonjs/ui/screens/UserListScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/WelcomeNewUserScreen.js +18 -21
- package/lib/commonjs/ui/screens/WelcomeNewUserScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/karma/KarmaAboutScreen.js +0 -3
- package/lib/commonjs/ui/screens/karma/KarmaAboutScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/karma/KarmaCenterScreen.js +6 -10
- package/lib/commonjs/ui/screens/karma/KarmaCenterScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/karma/KarmaFAQScreen.js +1 -1
- package/lib/commonjs/ui/screens/karma/KarmaFAQScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/karma/KarmaLeaderboardScreen.js +6 -6
- package/lib/commonjs/ui/screens/karma/KarmaLeaderboardScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/karma/KarmaRewardsScreen.js +13 -19
- package/lib/commonjs/ui/screens/karma/KarmaRewardsScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/karma/KarmaRulesScreen.js +5 -5
- package/lib/commonjs/ui/screens/karma/KarmaRulesScreen.js.map +1 -1
- package/lib/commonjs/ui/server.js +0 -5
- package/lib/commonjs/ui/server.js.map +1 -1
- package/lib/commonjs/ui/styles/authStyles.js +0 -5
- package/lib/commonjs/ui/styles/authStyles.js.map +1 -1
- package/lib/commonjs/ui/styles/index.js +0 -11
- package/lib/commonjs/ui/styles/index.js.map +1 -1
- package/lib/commonjs/ui/styles/spacing.js +1 -42
- package/lib/commonjs/ui/styles/spacing.js.map +1 -1
- package/lib/commonjs/ui/styles/theme.js +0 -4
- package/lib/commonjs/ui/styles/theme.js.map +1 -1
- package/lib/commonjs/ui/utils/fileManagement.js +58 -39
- package/lib/commonjs/ui/utils/fileManagement.js.map +1 -1
- package/lib/commonjs/ui/utils/sessionHelpers.js +3 -1
- package/lib/commonjs/ui/utils/sessionHelpers.js.map +1 -1
- package/lib/commonjs/ui/utils/userUtils.js +33 -16
- package/lib/commonjs/ui/utils/userUtils.js.map +1 -1
- package/lib/module/index.js +9 -5
- package/lib/module/index.js.map +1 -1
- package/lib/module/ui/client.js +0 -6
- package/lib/module/ui/client.js.map +1 -1
- package/lib/module/ui/components/ActingAsBanner.js +0 -4
- package/lib/module/ui/components/ActingAsBanner.js.map +1 -1
- package/lib/module/ui/components/ActivityIndicator.js +1 -1
- package/lib/module/ui/components/ActivityIndicator.js.map +1 -1
- package/lib/module/ui/components/Avatar.js +0 -2
- package/lib/module/ui/components/Avatar.js.map +1 -1
- package/lib/module/ui/components/BottomSheet.js +35 -400
- package/lib/module/ui/components/BottomSheet.js.map +1 -1
- package/lib/module/ui/components/BottomSheetRouter.js +9 -1
- package/lib/module/ui/components/BottomSheetRouter.js.map +1 -1
- package/lib/module/ui/components/FollowButton.js +2 -4
- package/lib/module/ui/components/FollowButton.js.map +1 -1
- package/lib/module/ui/components/Header.js +0 -5
- package/lib/module/ui/components/Header.js.map +1 -1
- package/lib/module/ui/components/Icon.js +6 -7
- package/lib/module/ui/components/Icon.js.map +1 -1
- package/lib/module/ui/components/IconButton/IconButton.js +1 -5
- package/lib/module/ui/components/IconButton/IconButton.js.map +1 -1
- package/lib/module/ui/components/OxyPayButton.js +0 -2
- package/lib/module/ui/components/OxyPayButton.js.map +1 -1
- package/lib/module/ui/components/OxyProvider.js +103 -40
- package/lib/module/ui/components/OxyProvider.js.map +1 -1
- package/lib/module/ui/components/OxySignInButton.js +23 -9
- package/lib/module/ui/components/OxySignInButton.js.map +1 -1
- package/lib/module/ui/components/ProfileCard.js +11 -8
- package/lib/module/ui/components/ProfileCard.js.map +1 -1
- package/lib/module/ui/components/QuickActions.js +2 -2
- package/lib/module/ui/components/QuickActions.js.map +1 -1
- package/lib/module/ui/components/SignInModal.js +137 -284
- package/lib/module/ui/components/SignInModal.js.map +1 -1
- package/lib/module/ui/components/StepBasedScreen.js +0 -2
- package/lib/module/ui/components/StepBasedScreen.js.map +1 -1
- package/lib/module/ui/components/TextField.js +0 -1
- package/lib/module/ui/components/TextField.js.map +1 -1
- package/lib/module/ui/components/TouchableRipple/TouchableRipple.native.js +1 -1
- package/lib/module/ui/components/TouchableRipple/TouchableRipple.native.js.map +1 -1
- package/lib/module/ui/components/feedback/feedbackStyles.js +0 -2
- package/lib/module/ui/components/feedback/feedbackStyles.js.map +1 -1
- package/lib/module/ui/components/fileManagement/AnimatedButton.js +0 -1
- package/lib/module/ui/components/fileManagement/AnimatedButton.js.map +1 -1
- package/lib/module/ui/components/fileManagement/FileDetailsModal.js +80 -75
- package/lib/module/ui/components/fileManagement/FileDetailsModal.js.map +1 -1
- package/lib/module/ui/components/fileManagement/FileViewer.js +6 -7
- package/lib/module/ui/components/fileManagement/FileViewer.js.map +1 -1
- package/lib/module/ui/components/fileManagement/UploadPreview.js +18 -22
- package/lib/module/ui/components/fileManagement/UploadPreview.js.map +1 -1
- package/lib/module/ui/components/fileManagement/styles.js +212 -24
- package/lib/module/ui/components/fileManagement/styles.js.map +1 -1
- package/lib/module/ui/components/logo/LogoIcon.js +56 -0
- package/lib/module/ui/components/logo/LogoIcon.js.map +1 -0
- package/lib/module/ui/components/logo/LogoText.js +43 -0
- package/lib/module/ui/components/logo/LogoText.js.map +1 -0
- package/lib/module/ui/components/modals/DeleteAccountModal.js +55 -88
- package/lib/module/ui/components/modals/DeleteAccountModal.js.map +1 -1
- package/lib/module/ui/components/payment/PaymentDetailsStep.js +1 -1
- package/lib/module/ui/components/payment/PaymentDetailsStep.js.map +1 -1
- package/lib/module/ui/components/payment/PaymentReviewStep.js +1 -1
- package/lib/module/ui/components/payment/PaymentReviewStep.js.map +1 -1
- package/lib/module/ui/components/payment/PaymentSuccessStep.js +1 -1
- package/lib/module/ui/components/payment/PaymentSuccessStep.js.map +1 -1
- package/lib/module/ui/components/payment/paymentStyles.js +2 -10
- package/lib/module/ui/components/payment/paymentStyles.js.map +1 -1
- package/lib/module/ui/components/styles/overlay.js +8 -8
- package/lib/module/ui/components/styles/overlay.js.map +1 -1
- package/lib/module/ui/components/theming.js +0 -1
- package/lib/module/ui/components/theming.js.map +1 -1
- package/lib/module/ui/context/OxyContext.js +32 -19
- package/lib/module/ui/context/OxyContext.js.map +1 -1
- package/lib/module/ui/context/hooks/useAuthOperations.js +1 -3
- package/lib/module/ui/context/hooks/useAuthOperations.js.map +1 -1
- package/lib/module/ui/hooks/index.js +5 -3
- package/lib/module/ui/hooks/index.js.map +1 -1
- package/lib/module/ui/hooks/mutations/mutationFactory.js +6 -1
- package/lib/module/ui/hooks/mutations/mutationFactory.js.map +1 -1
- package/lib/module/ui/hooks/mutations/mutationKeys.js +30 -0
- package/lib/module/ui/hooks/mutations/mutationKeys.js.map +1 -0
- package/lib/module/ui/hooks/mutations/useAccountMutations.js +231 -52
- package/lib/module/ui/hooks/mutations/useAccountMutations.js.map +1 -1
- package/lib/module/ui/hooks/mutations/useServicesMutations.js +9 -5
- package/lib/module/ui/hooks/mutations/useServicesMutations.js.map +1 -1
- package/lib/module/ui/hooks/queries/index.js +1 -1
- package/lib/module/ui/hooks/queries/index.js.map +1 -1
- package/lib/module/ui/hooks/queries/queryKeys.js +2 -1
- package/lib/module/ui/hooks/queries/queryKeys.js.map +1 -1
- package/lib/module/ui/hooks/queries/useAccountQueries.js +80 -3
- package/lib/module/ui/hooks/queries/useAccountQueries.js.map +1 -1
- package/lib/module/ui/hooks/queries/useSecurityQueries.js +35 -1
- package/lib/module/ui/hooks/queries/useSecurityQueries.js.map +1 -1
- package/lib/module/ui/hooks/queryClient.js +166 -68
- package/lib/module/ui/hooks/queryClient.js.map +1 -1
- package/lib/module/ui/hooks/useAsyncAction.js +3 -3
- package/lib/module/ui/hooks/useAsyncAction.js.map +1 -1
- package/lib/module/ui/hooks/useAuth.js +0 -3
- package/lib/module/ui/hooks/useAuth.js.map +1 -1
- package/lib/module/ui/hooks/useAvatarPicker.js +73 -22
- package/lib/module/ui/hooks/useAvatarPicker.js.map +1 -1
- package/lib/module/ui/hooks/useFileDownloadUrl.js +11 -39
- package/lib/module/ui/hooks/useFileDownloadUrl.js.map +1 -1
- package/lib/module/ui/hooks/useMutationStatus.js +82 -0
- package/lib/module/ui/hooks/useMutationStatus.js.map +1 -0
- package/lib/module/ui/hooks/useOnlineStatus.js +29 -0
- package/lib/module/ui/hooks/useOnlineStatus.js.map +1 -0
- package/lib/module/ui/hooks/useSessionSocket.js +101 -130
- package/lib/module/ui/hooks/useSessionSocket.js.map +1 -1
- package/lib/module/ui/hooks/useSettingToggle.js +1 -1
- package/lib/module/ui/hooks/useSettingToggle.js.map +1 -1
- package/lib/module/ui/index.js +1 -10
- package/lib/module/ui/index.js.map +1 -1
- package/lib/module/ui/navigation/routes.js +54 -2
- package/lib/module/ui/navigation/routes.js.map +1 -1
- package/lib/module/ui/screens/AccountCenterScreen.js +15 -14
- package/lib/module/ui/screens/AccountCenterScreen.js.map +1 -1
- package/lib/module/ui/screens/AccountOverviewScreen.js +96 -111
- package/lib/module/ui/screens/AccountOverviewScreen.js.map +1 -1
- package/lib/module/ui/screens/AccountSettingsScreen.js +19 -18
- package/lib/module/ui/screens/AccountSettingsScreen.js.map +1 -1
- package/lib/module/ui/screens/AccountSwitcherScreen.js +189 -145
- package/lib/module/ui/screens/AccountSwitcherScreen.js.map +1 -1
- package/lib/module/ui/screens/AccountVerificationScreen.js +15 -15
- package/lib/module/ui/screens/AccountVerificationScreen.js.map +1 -1
- package/lib/module/ui/screens/AppInfoScreen.js +14 -15
- package/lib/module/ui/screens/AppInfoScreen.js.map +1 -1
- package/lib/module/ui/screens/AvatarCropScreen.js +936 -0
- package/lib/module/ui/screens/AvatarCropScreen.js.map +1 -0
- package/lib/module/ui/screens/CreateManagedAccountScreen.js +11 -18
- package/lib/module/ui/screens/CreateManagedAccountScreen.js.map +1 -1
- package/lib/module/ui/screens/EditProfileFieldScreen.js +8 -11
- package/lib/module/ui/screens/EditProfileFieldScreen.js.map +1 -1
- package/lib/module/ui/screens/FAQScreen.js +3 -3
- package/lib/module/ui/screens/FAQScreen.js.map +1 -1
- package/lib/module/ui/screens/FeedbackScreen.js +14 -12
- package/lib/module/ui/screens/FeedbackScreen.js.map +1 -1
- package/lib/module/ui/screens/FileManagementScreen.js +764 -125
- package/lib/module/ui/screens/FileManagementScreen.js.map +1 -1
- package/lib/module/ui/screens/HelpSupportScreen.js +2 -3
- package/lib/module/ui/screens/HelpSupportScreen.js.map +1 -1
- package/lib/module/ui/screens/HistoryViewScreen.js +26 -17
- package/lib/module/ui/screens/HistoryViewScreen.js.map +1 -1
- package/lib/module/ui/screens/LanguageSelectorScreen.js +1 -3
- package/lib/module/ui/screens/LanguageSelectorScreen.js.map +1 -1
- package/lib/module/ui/screens/LegalDocumentsScreen.js +3 -3
- package/lib/module/ui/screens/LegalDocumentsScreen.js.map +1 -1
- package/lib/module/ui/screens/PaymentGatewayScreen.js +2 -2
- package/lib/module/ui/screens/PremiumSubscriptionScreen.js +60 -57
- package/lib/module/ui/screens/PremiumSubscriptionScreen.js.map +1 -1
- package/lib/module/ui/screens/PrivacySettingsScreen.js +27 -16
- package/lib/module/ui/screens/PrivacySettingsScreen.js.map +1 -1
- package/lib/module/ui/screens/ProfileScreen.js +4 -3
- package/lib/module/ui/screens/ProfileScreen.js.map +1 -1
- package/lib/module/ui/screens/SavesCollectionsScreen.js +2 -2
- package/lib/module/ui/screens/SavesCollectionsScreen.js.map +1 -1
- package/lib/module/ui/screens/SessionManagementScreen.js +48 -47
- package/lib/module/ui/screens/SessionManagementScreen.js.map +1 -1
- package/lib/module/ui/screens/UserLinksScreen.js +2 -3
- package/lib/module/ui/screens/UserLinksScreen.js.map +1 -1
- package/lib/module/ui/screens/UserListScreen.js +40 -23
- package/lib/module/ui/screens/UserListScreen.js.map +1 -1
- package/lib/module/ui/screens/WelcomeNewUserScreen.js +16 -19
- package/lib/module/ui/screens/WelcomeNewUserScreen.js.map +1 -1
- package/lib/module/ui/screens/karma/KarmaAboutScreen.js +0 -3
- package/lib/module/ui/screens/karma/KarmaAboutScreen.js.map +1 -1
- package/lib/module/ui/screens/karma/KarmaCenterScreen.js +6 -10
- package/lib/module/ui/screens/karma/KarmaCenterScreen.js.map +1 -1
- package/lib/module/ui/screens/karma/KarmaFAQScreen.js +1 -1
- package/lib/module/ui/screens/karma/KarmaFAQScreen.js.map +1 -1
- package/lib/module/ui/screens/karma/KarmaLeaderboardScreen.js +6 -6
- package/lib/module/ui/screens/karma/KarmaLeaderboardScreen.js.map +1 -1
- package/lib/module/ui/screens/karma/KarmaRewardsScreen.js +13 -19
- package/lib/module/ui/screens/karma/KarmaRewardsScreen.js.map +1 -1
- package/lib/module/ui/screens/karma/KarmaRulesScreen.js +5 -5
- package/lib/module/ui/screens/karma/KarmaRulesScreen.js.map +1 -1
- package/lib/module/ui/server.js +0 -4
- package/lib/module/ui/server.js.map +1 -1
- package/lib/module/ui/styles/authStyles.js +0 -5
- package/lib/module/ui/styles/authStyles.js.map +1 -1
- package/lib/module/ui/styles/index.js +0 -1
- package/lib/module/ui/styles/index.js.map +1 -1
- package/lib/module/ui/styles/spacing.js +0 -42
- package/lib/module/ui/styles/spacing.js.map +1 -1
- package/lib/module/ui/styles/theme.js +0 -4
- package/lib/module/ui/styles/theme.js.map +1 -1
- package/lib/module/ui/utils/fileManagement.js +54 -36
- package/lib/module/ui/utils/fileManagement.js.map +1 -1
- package/lib/module/ui/utils/sessionHelpers.js +3 -1
- package/lib/module/ui/utils/sessionHelpers.js.map +1 -1
- package/lib/module/ui/utils/userUtils.js +34 -16
- package/lib/module/ui/utils/userUtils.js.map +1 -1
- package/lib/typescript/commonjs/index.d.ts +7 -3
- package/lib/typescript/commonjs/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/client.d.ts +0 -2
- package/lib/typescript/commonjs/ui/client.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/ActingAsBanner.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/Avatar.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/BottomSheet.d.ts +27 -27
- package/lib/typescript/commonjs/ui/components/BottomSheet.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/BottomSheetRouter.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/FollowButton.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/Header.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/Icon.d.ts +3 -2
- package/lib/typescript/commonjs/ui/components/Icon.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/IconButton/IconButton.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/OxyPayButton.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/OxyProvider.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/OxySignInButton.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/ProfileCard.d.ts +4 -1
- package/lib/typescript/commonjs/ui/components/ProfileCard.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/SignInModal.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/StepBasedScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/TextField/Addons/Outline.d.ts +2 -2
- package/lib/typescript/commonjs/ui/components/TextField/helpers.d.ts +2 -2
- package/lib/typescript/commonjs/ui/components/TextField/types.d.ts +0 -1
- package/lib/typescript/commonjs/ui/components/TextField/types.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/TextField.d.ts +1 -1
- package/lib/typescript/commonjs/ui/components/TextField.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/feedback/feedbackStyles.d.ts +0 -1
- package/lib/typescript/commonjs/ui/components/feedback/feedbackStyles.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/fileManagement/AnimatedButton.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/fileManagement/FileDetailsModal.d.ts +1 -1
- package/lib/typescript/commonjs/ui/components/fileManagement/FileDetailsModal.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/fileManagement/FileViewer.d.ts +0 -2
- package/lib/typescript/commonjs/ui/components/fileManagement/FileViewer.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/fileManagement/UploadPreview.d.ts +3 -2
- package/lib/typescript/commonjs/ui/components/fileManagement/UploadPreview.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/fileManagement/styles.d.ts +200 -17
- package/lib/typescript/commonjs/ui/components/fileManagement/styles.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/logo/LogoIcon.d.ts +22 -0
- package/lib/typescript/commonjs/ui/components/logo/LogoIcon.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/components/logo/LogoText.d.ts +22 -0
- package/lib/typescript/commonjs/ui/components/logo/LogoText.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/components/modals/DeleteAccountModal.d.ts +2 -2
- package/lib/typescript/commonjs/ui/components/modals/DeleteAccountModal.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/payment/paymentStyles.d.ts +0 -7
- package/lib/typescript/commonjs/ui/components/payment/paymentStyles.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/styles/overlay.d.ts +3 -1
- package/lib/typescript/commonjs/ui/components/styles/overlay.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/theming.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/types.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/context/OxyContext.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/context/hooks/useAuthOperations.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/hooks/index.d.ts +5 -3
- package/lib/typescript/commonjs/ui/hooks/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/hooks/mutations/mutationFactory.d.ts +11 -0
- package/lib/typescript/commonjs/ui/hooks/mutations/mutationFactory.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/hooks/mutations/mutationKeys.d.ts +25 -0
- package/lib/typescript/commonjs/ui/hooks/mutations/mutationKeys.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/hooks/mutations/useAccountMutations.d.ts +161 -9
- package/lib/typescript/commonjs/ui/hooks/mutations/useAccountMutations.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/hooks/mutations/useServicesMutations.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/hooks/queries/index.d.ts +1 -1
- package/lib/typescript/commonjs/ui/hooks/queries/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/hooks/queries/queryKeys.d.ts +1 -0
- package/lib/typescript/commonjs/ui/hooks/queries/queryKeys.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/hooks/queries/useAccountQueries.d.ts +22 -8
- package/lib/typescript/commonjs/ui/hooks/queries/useAccountQueries.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/hooks/queries/useSecurityQueries.d.ts +13 -3
- package/lib/typescript/commonjs/ui/hooks/queries/useSecurityQueries.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/hooks/queries/useServicesQueries.d.ts +7 -5
- package/lib/typescript/commonjs/ui/hooks/queries/useServicesQueries.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/hooks/queryClient.d.ts +57 -9
- package/lib/typescript/commonjs/ui/hooks/queryClient.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/hooks/useAssets.d.ts +1 -1
- package/lib/typescript/commonjs/ui/hooks/useAuth.d.ts +0 -1
- package/lib/typescript/commonjs/ui/hooks/useAuth.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/hooks/useAvatarPicker.d.ts +10 -2
- package/lib/typescript/commonjs/ui/hooks/useAvatarPicker.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/hooks/useFileDownloadUrl.d.ts +2 -6
- package/lib/typescript/commonjs/ui/hooks/useFileDownloadUrl.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/hooks/useMutationStatus.d.ts +23 -0
- package/lib/typescript/commonjs/ui/hooks/useMutationStatus.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/hooks/useOnlineStatus.d.ts +13 -0
- package/lib/typescript/commonjs/ui/hooks/useOnlineStatus.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/hooks/useSessionSocket.d.ts +1 -2
- package/lib/typescript/commonjs/ui/hooks/useSessionSocket.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/index.d.ts +1 -4
- package/lib/typescript/commonjs/ui/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/navigation/routes.d.ts +48 -2
- package/lib/typescript/commonjs/ui/navigation/routes.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/AccountCenterScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/AccountOverviewScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/AccountSettingsScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/AccountSwitcherScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/AppInfoScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/AvatarCropScreen.d.ts +49 -0
- package/lib/typescript/commonjs/ui/screens/AvatarCropScreen.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/screens/CreateManagedAccountScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/EditProfileFieldScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/FeedbackScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/FileManagementScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/HelpSupportScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/HistoryViewScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/LanguageSelectorScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/PremiumSubscriptionScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/PrivacySettingsScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/ProfileScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/SessionManagementScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/UserLinksScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/UserListScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/WelcomeNewUserScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/karma/KarmaAboutScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/karma/KarmaCenterScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/karma/KarmaLeaderboardScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/karma/KarmaRewardsScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/karma/KarmaRulesScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/server.d.ts +0 -2
- package/lib/typescript/commonjs/ui/server.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/styles/authStyles.d.ts +0 -4
- package/lib/typescript/commonjs/ui/styles/authStyles.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/styles/index.d.ts +0 -1
- package/lib/typescript/commonjs/ui/styles/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/styles/spacing.d.ts +0 -36
- package/lib/typescript/commonjs/ui/styles/spacing.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/styles/theme.d.ts +0 -1
- package/lib/typescript/commonjs/ui/styles/theme.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/utils/fileManagement.d.ts +39 -12
- package/lib/typescript/commonjs/ui/utils/fileManagement.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/utils/sessionHelpers.d.ts +3 -1
- package/lib/typescript/commonjs/ui/utils/sessionHelpers.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/utils/userUtils.d.ts +19 -18
- package/lib/typescript/commonjs/ui/utils/userUtils.d.ts.map +1 -1
- package/lib/typescript/module/index.d.ts +7 -3
- package/lib/typescript/module/index.d.ts.map +1 -1
- package/lib/typescript/module/ui/client.d.ts +0 -2
- package/lib/typescript/module/ui/client.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/ActingAsBanner.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/Avatar.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/BottomSheet.d.ts +27 -27
- package/lib/typescript/module/ui/components/BottomSheet.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/BottomSheetRouter.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/FollowButton.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/Header.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/Icon.d.ts +3 -2
- package/lib/typescript/module/ui/components/Icon.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/IconButton/IconButton.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/OxyPayButton.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/OxyProvider.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/OxySignInButton.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/ProfileCard.d.ts +4 -1
- package/lib/typescript/module/ui/components/ProfileCard.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/SignInModal.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/StepBasedScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/TextField/Addons/Outline.d.ts +2 -2
- package/lib/typescript/module/ui/components/TextField/helpers.d.ts +2 -2
- package/lib/typescript/module/ui/components/TextField/types.d.ts +0 -1
- package/lib/typescript/module/ui/components/TextField/types.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/TextField.d.ts +1 -1
- package/lib/typescript/module/ui/components/TextField.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/feedback/feedbackStyles.d.ts +0 -1
- package/lib/typescript/module/ui/components/feedback/feedbackStyles.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/fileManagement/AnimatedButton.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/fileManagement/FileDetailsModal.d.ts +1 -1
- package/lib/typescript/module/ui/components/fileManagement/FileDetailsModal.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/fileManagement/FileViewer.d.ts +0 -2
- package/lib/typescript/module/ui/components/fileManagement/FileViewer.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/fileManagement/UploadPreview.d.ts +3 -2
- package/lib/typescript/module/ui/components/fileManagement/UploadPreview.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/fileManagement/styles.d.ts +200 -17
- package/lib/typescript/module/ui/components/fileManagement/styles.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/logo/LogoIcon.d.ts +22 -0
- package/lib/typescript/module/ui/components/logo/LogoIcon.d.ts.map +1 -0
- package/lib/typescript/module/ui/components/logo/LogoText.d.ts +22 -0
- package/lib/typescript/module/ui/components/logo/LogoText.d.ts.map +1 -0
- package/lib/typescript/module/ui/components/modals/DeleteAccountModal.d.ts +2 -2
- package/lib/typescript/module/ui/components/modals/DeleteAccountModal.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/payment/paymentStyles.d.ts +0 -7
- package/lib/typescript/module/ui/components/payment/paymentStyles.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/styles/overlay.d.ts +3 -1
- package/lib/typescript/module/ui/components/styles/overlay.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/theming.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/types.d.ts.map +1 -1
- package/lib/typescript/module/ui/context/OxyContext.d.ts.map +1 -1
- package/lib/typescript/module/ui/context/hooks/useAuthOperations.d.ts.map +1 -1
- package/lib/typescript/module/ui/hooks/index.d.ts +5 -3
- package/lib/typescript/module/ui/hooks/index.d.ts.map +1 -1
- package/lib/typescript/module/ui/hooks/mutations/mutationFactory.d.ts +11 -0
- package/lib/typescript/module/ui/hooks/mutations/mutationFactory.d.ts.map +1 -1
- package/lib/typescript/module/ui/hooks/mutations/mutationKeys.d.ts +25 -0
- package/lib/typescript/module/ui/hooks/mutations/mutationKeys.d.ts.map +1 -0
- package/lib/typescript/module/ui/hooks/mutations/useAccountMutations.d.ts +161 -9
- package/lib/typescript/module/ui/hooks/mutations/useAccountMutations.d.ts.map +1 -1
- package/lib/typescript/module/ui/hooks/mutations/useServicesMutations.d.ts.map +1 -1
- package/lib/typescript/module/ui/hooks/queries/index.d.ts +1 -1
- package/lib/typescript/module/ui/hooks/queries/index.d.ts.map +1 -1
- package/lib/typescript/module/ui/hooks/queries/queryKeys.d.ts +1 -0
- package/lib/typescript/module/ui/hooks/queries/queryKeys.d.ts.map +1 -1
- package/lib/typescript/module/ui/hooks/queries/useAccountQueries.d.ts +22 -8
- package/lib/typescript/module/ui/hooks/queries/useAccountQueries.d.ts.map +1 -1
- package/lib/typescript/module/ui/hooks/queries/useSecurityQueries.d.ts +13 -3
- package/lib/typescript/module/ui/hooks/queries/useSecurityQueries.d.ts.map +1 -1
- package/lib/typescript/module/ui/hooks/queries/useServicesQueries.d.ts +7 -5
- package/lib/typescript/module/ui/hooks/queries/useServicesQueries.d.ts.map +1 -1
- package/lib/typescript/module/ui/hooks/queryClient.d.ts +57 -9
- package/lib/typescript/module/ui/hooks/queryClient.d.ts.map +1 -1
- package/lib/typescript/module/ui/hooks/useAssets.d.ts +1 -1
- package/lib/typescript/module/ui/hooks/useAuth.d.ts +0 -1
- package/lib/typescript/module/ui/hooks/useAuth.d.ts.map +1 -1
- package/lib/typescript/module/ui/hooks/useAvatarPicker.d.ts +10 -2
- package/lib/typescript/module/ui/hooks/useAvatarPicker.d.ts.map +1 -1
- package/lib/typescript/module/ui/hooks/useFileDownloadUrl.d.ts +2 -6
- package/lib/typescript/module/ui/hooks/useFileDownloadUrl.d.ts.map +1 -1
- package/lib/typescript/module/ui/hooks/useMutationStatus.d.ts +23 -0
- package/lib/typescript/module/ui/hooks/useMutationStatus.d.ts.map +1 -0
- package/lib/typescript/module/ui/hooks/useOnlineStatus.d.ts +13 -0
- package/lib/typescript/module/ui/hooks/useOnlineStatus.d.ts.map +1 -0
- package/lib/typescript/module/ui/hooks/useSessionSocket.d.ts +1 -2
- package/lib/typescript/module/ui/hooks/useSessionSocket.d.ts.map +1 -1
- package/lib/typescript/module/ui/index.d.ts +1 -4
- package/lib/typescript/module/ui/index.d.ts.map +1 -1
- package/lib/typescript/module/ui/navigation/routes.d.ts +48 -2
- package/lib/typescript/module/ui/navigation/routes.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/AccountCenterScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/AccountOverviewScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/AccountSettingsScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/AccountSwitcherScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/AppInfoScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/AvatarCropScreen.d.ts +49 -0
- package/lib/typescript/module/ui/screens/AvatarCropScreen.d.ts.map +1 -0
- package/lib/typescript/module/ui/screens/CreateManagedAccountScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/EditProfileFieldScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/FeedbackScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/FileManagementScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/HelpSupportScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/HistoryViewScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/LanguageSelectorScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/PremiumSubscriptionScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/PrivacySettingsScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/ProfileScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/SessionManagementScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/UserLinksScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/UserListScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/WelcomeNewUserScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/karma/KarmaAboutScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/karma/KarmaCenterScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/karma/KarmaLeaderboardScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/karma/KarmaRewardsScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/karma/KarmaRulesScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/server.d.ts +0 -2
- package/lib/typescript/module/ui/server.d.ts.map +1 -1
- package/lib/typescript/module/ui/styles/authStyles.d.ts +0 -4
- package/lib/typescript/module/ui/styles/authStyles.d.ts.map +1 -1
- package/lib/typescript/module/ui/styles/index.d.ts +0 -1
- package/lib/typescript/module/ui/styles/index.d.ts.map +1 -1
- package/lib/typescript/module/ui/styles/spacing.d.ts +0 -36
- package/lib/typescript/module/ui/styles/spacing.d.ts.map +1 -1
- package/lib/typescript/module/ui/styles/theme.d.ts +0 -1
- package/lib/typescript/module/ui/styles/theme.d.ts.map +1 -1
- package/lib/typescript/module/ui/utils/fileManagement.d.ts +39 -12
- package/lib/typescript/module/ui/utils/fileManagement.d.ts.map +1 -1
- package/lib/typescript/module/ui/utils/sessionHelpers.d.ts +3 -1
- package/lib/typescript/module/ui/utils/sessionHelpers.d.ts.map +1 -1
- package/lib/typescript/module/ui/utils/userUtils.d.ts +19 -18
- package/lib/typescript/module/ui/utils/userUtils.d.ts.map +1 -1
- package/lib/typescript/types/expo-vector-icons.d.ts +7 -4
- package/package.json +64 -31
- package/src/index.ts +11 -4
- package/src/types/expo-vector-icons.d.ts +7 -4
- package/src/ui/client.ts +0 -6
- package/src/ui/components/ActingAsBanner.tsx +0 -4
- package/src/ui/components/ActivityIndicator.tsx +1 -1
- package/src/ui/components/Avatar.tsx +0 -2
- package/src/ui/components/BottomSheet.tsx +41 -440
- package/src/ui/components/BottomSheetRouter.tsx +12 -1
- package/src/ui/components/FollowButton.tsx +2 -4
- package/src/ui/components/Header.tsx +0 -5
- package/src/ui/components/Icon.tsx +12 -6
- package/src/ui/components/IconButton/IconButton.tsx +0 -3
- package/src/ui/components/OxyPayButton.tsx +0 -2
- package/src/ui/components/OxyProvider.tsx +127 -48
- package/src/ui/components/OxySignInButton.tsx +21 -9
- package/src/ui/components/ProfileCard.tsx +13 -10
- package/src/ui/components/QuickActions.tsx +2 -2
- package/src/ui/components/SignInModal.tsx +80 -199
- package/src/ui/components/StepBasedScreen.tsx +0 -2
- package/src/ui/components/TextField/Addons/Outline.tsx +2 -2
- package/src/ui/components/TextField/helpers.tsx +2 -2
- package/src/ui/components/TextField/types.tsx +0 -1
- package/src/ui/components/TextField.tsx +1 -2
- package/src/ui/components/TouchableRipple/TouchableRipple.native.tsx +1 -1
- package/src/ui/components/feedback/feedbackStyles.ts +0 -2
- package/src/ui/components/fileManagement/AnimatedButton.tsx +0 -1
- package/src/ui/components/fileManagement/FileDetailsModal.tsx +71 -65
- package/src/ui/components/fileManagement/FileViewer.tsx +6 -9
- package/src/ui/components/fileManagement/UploadPreview.tsx +21 -25
- package/src/ui/components/fileManagement/styles.ts +206 -18
- package/src/ui/components/logo/LogoIcon.tsx +70 -0
- package/src/ui/components/logo/LogoText.tsx +70 -0
- package/src/ui/components/modals/DeleteAccountModal.tsx +56 -91
- package/src/ui/components/payment/PaymentDetailsStep.tsx +1 -1
- package/src/ui/components/payment/PaymentReviewStep.tsx +1 -1
- package/src/ui/components/payment/PaymentSuccessStep.tsx +1 -1
- package/src/ui/components/payment/paymentStyles.ts +0 -8
- package/src/ui/components/styles/overlay.tsx +17 -8
- package/src/ui/components/theming.tsx +0 -1
- package/src/ui/components/types.tsx +3 -2
- package/src/ui/context/OxyContext.tsx +34 -19
- package/src/ui/context/hooks/useAuthOperations.ts +1 -3
- package/src/ui/hooks/index.ts +11 -4
- package/src/ui/hooks/mutations/mutationFactory.ts +16 -1
- package/src/ui/hooks/mutations/mutationKeys.ts +28 -0
- package/src/ui/hooks/mutations/useAccountMutations.ts +251 -59
- package/src/ui/hooks/mutations/useServicesMutations.ts +10 -4
- package/src/ui/hooks/queries/index.ts +1 -0
- package/src/ui/hooks/queries/queryKeys.ts +2 -0
- package/src/ui/hooks/queries/useAccountQueries.ts +83 -3
- package/src/ui/hooks/queries/useSecurityQueries.ts +42 -2
- package/src/ui/hooks/queryClient.ts +194 -69
- package/src/ui/hooks/useAsyncAction.ts +3 -3
- package/src/ui/hooks/useAuth.ts +0 -2
- package/src/ui/hooks/useAvatarPicker.ts +108 -27
- package/src/ui/hooks/useFileDownloadUrl.ts +15 -39
- package/src/ui/hooks/useMutationStatus.ts +111 -0
- package/src/ui/hooks/useOnlineStatus.ts +29 -0
- package/src/ui/hooks/useSessionSocket.ts +136 -126
- package/src/ui/hooks/useSettingToggle.ts +1 -1
- package/src/ui/index.ts +0 -12
- package/src/ui/navigation/routes.ts +93 -2
- package/src/ui/screens/AccountCenterScreen.tsx +15 -13
- package/src/ui/screens/AccountOverviewScreen.tsx +94 -104
- package/src/ui/screens/AccountSettingsScreen.tsx +18 -17
- package/src/ui/screens/AccountSwitcherScreen.tsx +331 -298
- package/src/ui/screens/AccountVerificationScreen.tsx +15 -15
- package/src/ui/screens/AppInfoScreen.tsx +8 -13
- package/src/ui/screens/AvatarCropScreen.tsx +1073 -0
- package/src/ui/screens/CreateManagedAccountScreen.tsx +5 -16
- package/src/ui/screens/EditProfileFieldScreen.tsx +5 -10
- package/src/ui/screens/FAQScreen.tsx +3 -3
- package/src/ui/screens/FeedbackScreen.tsx +14 -12
- package/src/ui/screens/FileManagementScreen.tsx +885 -124
- package/src/ui/screens/HelpSupportScreen.tsx +2 -3
- package/src/ui/screens/HistoryViewScreen.tsx +24 -9
- package/src/ui/screens/LanguageSelectorScreen.tsx +1 -3
- package/src/ui/screens/LegalDocumentsScreen.tsx +3 -3
- package/src/ui/screens/PaymentGatewayScreen.tsx +2 -2
- package/src/ui/screens/PremiumSubscriptionScreen.tsx +51 -56
- package/src/ui/screens/PrivacySettingsScreen.tsx +22 -20
- package/src/ui/screens/ProfileScreen.tsx +1 -2
- package/src/ui/screens/SavesCollectionsScreen.tsx +2 -2
- package/src/ui/screens/SessionManagementScreen.tsx +35 -47
- package/src/ui/screens/UserLinksScreen.tsx +1 -2
- package/src/ui/screens/UserListScreen.tsx +30 -19
- package/src/ui/screens/WelcomeNewUserScreen.tsx +14 -18
- package/src/ui/screens/karma/KarmaAboutScreen.tsx +0 -3
- package/src/ui/screens/karma/KarmaCenterScreen.tsx +4 -8
- package/src/ui/screens/karma/KarmaFAQScreen.tsx +1 -1
- package/src/ui/screens/karma/KarmaLeaderboardScreen.tsx +3 -4
- package/src/ui/screens/karma/KarmaRewardsScreen.tsx +13 -18
- package/src/ui/screens/karma/KarmaRulesScreen.tsx +3 -4
- package/src/ui/server.ts +0 -4
- package/src/ui/styles/authStyles.ts +0 -5
- package/src/ui/styles/index.ts +0 -1
- package/src/ui/styles/spacing.ts +0 -43
- package/src/ui/styles/theme.ts +0 -4
- package/src/ui/utils/fileManagement.ts +66 -38
- package/src/ui/utils/sessionHelpers.ts +3 -1
- package/src/ui/utils/userUtils.ts +45 -29
- package/lib/commonjs/lib/sonner-safe.js +0 -32
- package/lib/commonjs/lib/sonner-safe.js.map +0 -1
- package/lib/commonjs/lib/sonner.js +0 -19
- package/lib/commonjs/lib/sonner.js.map +0 -1
- package/lib/commonjs/lib/sonner.native.js +0 -24
- package/lib/commonjs/lib/sonner.native.js.map +0 -1
- package/lib/commonjs/lib/sonner.web.js +0 -24
- package/lib/commonjs/lib/sonner.web.js.map +0 -1
- package/lib/commonjs/ui/hooks/useThemeColors.js +0 -33
- package/lib/commonjs/ui/hooks/useThemeColors.js.map +0 -1
- package/lib/commonjs/ui/hooks/useThemeStyles.js +0 -38
- package/lib/commonjs/ui/hooks/useThemeStyles.js.map +0 -1
- package/lib/commonjs/ui/styles/fonts.js +0 -84
- package/lib/commonjs/ui/styles/fonts.js.map +0 -1
- package/lib/module/lib/sonner-safe.js +0 -29
- package/lib/module/lib/sonner-safe.js.map +0 -1
- package/lib/module/lib/sonner.js +0 -14
- package/lib/module/lib/sonner.js.map +0 -1
- package/lib/module/lib/sonner.native.js +0 -19
- package/lib/module/lib/sonner.native.js.map +0 -1
- package/lib/module/lib/sonner.web.js +0 -19
- package/lib/module/lib/sonner.web.js.map +0 -1
- package/lib/module/ui/hooks/useThemeColors.js +0 -29
- package/lib/module/ui/hooks/useThemeColors.js.map +0 -1
- package/lib/module/ui/hooks/useThemeStyles.js +0 -33
- package/lib/module/ui/hooks/useThemeStyles.js.map +0 -1
- package/lib/module/ui/styles/fonts.js +0 -81
- package/lib/module/ui/styles/fonts.js.map +0 -1
- package/lib/typescript/commonjs/lib/sonner-safe.d.ts +0 -9
- package/lib/typescript/commonjs/lib/sonner-safe.d.ts.map +0 -1
- package/lib/typescript/commonjs/lib/sonner.d.ts +0 -12
- package/lib/typescript/commonjs/lib/sonner.d.ts.map +0 -1
- package/lib/typescript/commonjs/lib/sonner.native.d.ts +0 -15
- package/lib/typescript/commonjs/lib/sonner.native.d.ts.map +0 -1
- package/lib/typescript/commonjs/lib/sonner.web.d.ts +0 -15
- package/lib/typescript/commonjs/lib/sonner.web.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/hooks/useThemeColors.d.ts +0 -87
- package/lib/typescript/commonjs/ui/hooks/useThemeColors.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/hooks/useThemeStyles.d.ts +0 -22
- package/lib/typescript/commonjs/ui/hooks/useThemeStyles.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/styles/fonts.d.ts +0 -21
- package/lib/typescript/commonjs/ui/styles/fonts.d.ts.map +0 -1
- package/lib/typescript/module/lib/sonner-safe.d.ts +0 -9
- package/lib/typescript/module/lib/sonner-safe.d.ts.map +0 -1
- package/lib/typescript/module/lib/sonner.d.ts +0 -12
- package/lib/typescript/module/lib/sonner.d.ts.map +0 -1
- package/lib/typescript/module/lib/sonner.native.d.ts +0 -15
- package/lib/typescript/module/lib/sonner.native.d.ts.map +0 -1
- package/lib/typescript/module/lib/sonner.web.d.ts +0 -15
- package/lib/typescript/module/lib/sonner.web.d.ts.map +0 -1
- package/lib/typescript/module/ui/hooks/useThemeColors.d.ts +0 -87
- package/lib/typescript/module/ui/hooks/useThemeColors.d.ts.map +0 -1
- package/lib/typescript/module/ui/hooks/useThemeStyles.d.ts +0 -22
- package/lib/typescript/module/ui/hooks/useThemeStyles.d.ts.map +0 -1
- package/lib/typescript/module/ui/styles/fonts.d.ts +0 -21
- package/lib/typescript/module/ui/styles/fonts.d.ts.map +0 -1
- package/src/lib/sonner-safe.ts +0 -31
- package/src/lib/sonner.native.ts +0 -28
- package/src/lib/sonner.ts +0 -11
- package/src/lib/sonner.web.ts +0 -28
- package/src/ui/hooks/useThemeColors.ts +0 -27
- package/src/ui/hooks/useThemeStyles.ts +0 -50
- package/src/ui/styles/fonts.ts +0 -77
package/src/ui/hooks/index.ts
CHANGED
|
@@ -1,6 +1,13 @@
|
|
|
1
1
|
export { useFollow, useFollowerCounts } from './useFollow';
|
|
2
|
-
export { 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 '
|
|
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 '
|
|
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
|
-
|
|
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.
|
|
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
|
|
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,
|
|
149
|
+
onError: (error, _file, context) => {
|
|
150
|
+
// Avatar upload only mutates the `avatar` field — restore only that key
|
|
124
151
|
if (context?.previousUser) {
|
|
125
|
-
|
|
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.
|
|
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
|
-
*
|
|
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
|
-
|
|
162
|
-
|
|
163
|
-
|
|
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 (
|
|
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
|
-
...
|
|
266
|
+
...updates,
|
|
175
267
|
},
|
|
176
268
|
});
|
|
177
269
|
}
|
|
178
270
|
|
|
179
271
|
return { previousUser };
|
|
180
272
|
},
|
|
181
|
-
onError: (error,
|
|
182
|
-
|
|
183
|
-
|
|
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
|
-
|
|
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<
|
|
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
|
-
|
|
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
|
-
|
|
260
|
-
|
|
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
|
-
|
|
263
|
-
|
|
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,
|
|
268
|
-
|
|
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
|
-
|
|
272
|
-
}
|
|
273
|
-
|
|
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:
|
|
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
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
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:
|
|
522
|
+
file: AssetUploadInput;
|
|
331
523
|
visibility?: 'private' | 'public' | 'unlisted';
|
|
332
|
-
metadata?: Record<string,
|
|
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 {
|
|
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 '
|
|
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
|
|
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
|
|
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;
|
|
@@ -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
|
|