@oxyhq/services 26.0.0 → 26.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/android/src/main/java/so/oxy/identity/OxyIdentityStore.kt +127 -21
- package/expo-module.config.json +1 -4
- package/lib/commonjs/index.js +49 -18
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/notifications/deviceNotifications.js +0 -63
- package/lib/commonjs/notifications/deviceNotifications.js.map +1 -1
- package/lib/commonjs/ui/boot/runProviderColdBoot.js +64 -20
- package/lib/commonjs/ui/boot/runProviderColdBoot.js.map +1 -1
- package/lib/commonjs/ui/components/FollowButton.js +4 -4
- package/lib/commonjs/ui/components/FollowButton.js.map +1 -1
- package/lib/commonjs/ui/components/OxyAccountDialogScreen.js +1 -13
- package/lib/commonjs/ui/components/OxyAccountDialogScreen.js.map +1 -1
- package/lib/commonjs/ui/components/OxyAuthChooser.js +8 -9
- package/lib/commonjs/ui/components/OxyAuthChooser.js.map +1 -1
- package/lib/commonjs/ui/components/OxyProvider.js +7 -8
- package/lib/commonjs/ui/components/OxyProvider.js.map +1 -1
- package/lib/commonjs/ui/components/OxySignInButton.js.map +1 -1
- package/lib/commonjs/ui/components/ProfileButton.js +1 -1
- package/lib/commonjs/ui/components/ProfileButton.js.map +1 -1
- package/lib/commonjs/ui/components/authChooser/AccountsMenuView.js +30 -25
- package/lib/commonjs/ui/components/authChooser/AccountsMenuView.js.map +1 -1
- package/lib/commonjs/ui/components/authChooser/primitives.js +9 -9
- package/lib/commonjs/ui/components/authChooser/primitives.js.map +1 -1
- package/lib/commonjs/ui/components/authChooser/useUsernameAvailability.js +2 -2
- package/lib/commonjs/ui/components/authChooser/useUsernameAvailability.js.map +1 -1
- package/lib/commonjs/ui/components/fileManagement/UploadPreview.js +2 -2
- package/lib/commonjs/ui/components/fileManagement/UploadPreview.js.map +1 -1
- package/lib/commonjs/ui/components/internal/PinInput.js +1 -3
- package/lib/commonjs/ui/components/internal/PinInput.js.map +1 -1
- package/lib/commonjs/ui/components/logo/LogoText.js +4 -4
- package/lib/commonjs/ui/components/logo/LogoText.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/PaymentSummaryStep.js +2 -2
- package/lib/commonjs/ui/components/payment/PaymentSummaryStep.js.map +1 -1
- package/lib/commonjs/ui/components/styles/shadow.js.map +1 -1
- package/lib/commonjs/ui/context/OxyContext.js +46 -32
- package/lib/commonjs/ui/context/OxyContext.js.map +1 -1
- package/lib/commonjs/ui/context/commitSessionFlow.js +43 -3
- package/lib/commonjs/ui/context/commitSessionFlow.js.map +1 -1
- package/lib/commonjs/ui/context/hooks/useAuthOperations.js +2 -15
- package/lib/commonjs/ui/context/hooks/useAuthOperations.js.map +1 -1
- package/lib/commonjs/ui/context/useOxyAccountGraph.js +4 -3
- package/lib/commonjs/ui/context/useOxyAccountGraph.js.map +1 -1
- package/lib/commonjs/ui/hooks/mutations/mutationFactory.js +5 -5
- package/lib/commonjs/ui/hooks/mutations/mutationFactory.js.map +1 -1
- package/lib/commonjs/ui/hooks/mutations/useAccountMutations.js +11 -11
- package/lib/commonjs/ui/hooks/mutations/useAccountMutations.js.map +1 -1
- package/lib/commonjs/ui/hooks/mutations/useServicesMutations.js +9 -9
- package/lib/commonjs/ui/hooks/mutations/useServicesMutations.js.map +1 -1
- package/lib/commonjs/ui/hooks/queries/usePaymentQueries.js +2 -3
- package/lib/commonjs/ui/hooks/queries/usePaymentQueries.js.map +1 -1
- package/lib/commonjs/ui/hooks/queries/userCache.js +17 -17
- package/lib/commonjs/ui/hooks/queries/userCache.js.map +1 -1
- package/lib/commonjs/ui/hooks/useAssets.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 +2 -4
- package/lib/commonjs/ui/hooks/useAuth.js.map +1 -1
- package/lib/commonjs/ui/hooks/useAvatarPicker.js +5 -5
- package/lib/commonjs/ui/hooks/useAvatarPicker.js.map +1 -1
- package/lib/commonjs/ui/hooks/useOnlineStatus.js +2 -3
- package/lib/commonjs/ui/hooks/useOnlineStatus.js.map +1 -1
- package/lib/commonjs/ui/hooks/useSessionManagement.js +2 -0
- package/lib/commonjs/ui/hooks/useSessionManagement.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/hooks/useSurfaceHeader.js +11 -68
- package/lib/commonjs/ui/hooks/useSurfaceHeader.js.map +1 -1
- package/lib/commonjs/ui/oauth/browserAuthTransport.js +64 -66
- package/lib/commonjs/ui/oauth/browserAuthTransport.js.map +1 -1
- package/lib/commonjs/ui/oauth/legacyRedirectLanes.js +48 -0
- package/lib/commonjs/ui/oauth/legacyRedirectLanes.js.map +1 -0
- package/lib/commonjs/ui/oauth/oauthPopup.js +0 -47
- package/lib/commonjs/ui/oauth/oauthPopup.js.map +1 -1
- package/lib/commonjs/ui/screens/AccountMembersScreen.js +10 -10
- package/lib/commonjs/ui/screens/AccountMembersScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/AccountSettingsScreen.js +19 -41
- package/lib/commonjs/ui/screens/AccountSettingsScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/AccountVerificationScreen.js +4 -4
- package/lib/commonjs/ui/screens/AccountVerificationScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/AppInfoScreen.js +9 -9
- package/lib/commonjs/ui/screens/AppInfoScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/AvatarCropScreen.js +3 -3
- package/lib/commonjs/ui/screens/AvatarCropScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/ChangeAvatarScreen.js +7 -6
- package/lib/commonjs/ui/screens/ChangeAvatarScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/ConnectedAppsScreen.js +4 -4
- package/lib/commonjs/ui/screens/ConnectedAppsScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/CreateAccountScreen.js +13 -35
- package/lib/commonjs/ui/screens/CreateAccountScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/EditProfileFieldScreen.js +5 -5
- package/lib/commonjs/ui/screens/EditProfileFieldScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/EditProfileScreen.js +3 -2
- package/lib/commonjs/ui/screens/EditProfileScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/FAQScreen.js +2 -2
- package/lib/commonjs/ui/screens/FAQScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/FeedbackScreen.js +89 -90
- package/lib/commonjs/ui/screens/FeedbackScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/FileManagementScreen.js +20 -20
- package/lib/commonjs/ui/screens/FileManagementScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/FollowersListScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/FollowingListScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/HelpSupportScreen.js +7 -7
- package/lib/commonjs/ui/screens/HelpSupportScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/HistoryViewScreen.js +34 -9
- package/lib/commonjs/ui/screens/HistoryViewScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/LanguageSelectorScreen.js +3 -3
- package/lib/commonjs/ui/screens/LanguageSelectorScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/LegalDocumentsScreen.js +3 -3
- package/lib/commonjs/ui/screens/LegalDocumentsScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/ManageAccountScreen.js +15 -15
- package/lib/commonjs/ui/screens/ManageAccountScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/PremiumSubscriptionScreen.js +19 -19
- package/lib/commonjs/ui/screens/PremiumSubscriptionScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/PrivacySettingsScreen.js +15 -15
- package/lib/commonjs/ui/screens/PrivacySettingsScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/ProfileScreen.js +7 -17
- package/lib/commonjs/ui/screens/ProfileScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/SavesCollectionsScreen.js +2 -2
- package/lib/commonjs/ui/screens/SavesCollectionsScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/UserListScreen.js +7 -13
- package/lib/commonjs/ui/screens/UserListScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/WelcomeNewUserScreen.js +6 -5
- package/lib/commonjs/ui/screens/WelcomeNewUserScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/fileManagement/PhotoPickerSection.js +4 -1
- package/lib/commonjs/ui/screens/fileManagement/PhotoPickerSection.js.map +1 -1
- package/lib/commonjs/ui/screens/fileManagement/hooks/useFileUploadState.js +24 -34
- package/lib/commonjs/ui/screens/fileManagement/hooks/useFileUploadState.js.map +1 -1
- package/lib/commonjs/ui/screens/trust/TrustCenterScreen.js +1 -1
- package/lib/commonjs/ui/screens/trust/TrustCenterScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/trust/TrustLeaderboardScreen.js +4 -3
- package/lib/commonjs/ui/screens/trust/TrustLeaderboardScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/trust/TrustRewardsScreen.js +1 -1
- package/lib/commonjs/ui/screens/trust/TrustRewardsScreen.js.map +1 -1
- package/lib/commonjs/ui/session/index.js +0 -7
- package/lib/commonjs/ui/session/index.js.map +1 -1
- package/lib/commonjs/ui/utils/crossOriginRestore.js +140 -0
- package/lib/commonjs/ui/utils/crossOriginRestore.js.map +1 -0
- package/lib/commonjs/ui/utils/fileManagement.js +24 -24
- package/lib/commonjs/ui/utils/fileManagement.js.map +1 -1
- package/lib/commonjs/ui/utils/oauthReturn.js +30 -19
- package/lib/commonjs/ui/utils/oauthReturn.js.map +1 -1
- package/lib/commonjs/ui/utils/userUtils.js +28 -27
- package/lib/commonjs/ui/utils/userUtils.js.map +1 -1
- package/lib/module/index.js +8 -20
- package/lib/module/index.js.map +1 -1
- package/lib/module/notifications/deviceNotifications.js +0 -62
- package/lib/module/notifications/deviceNotifications.js.map +1 -1
- package/lib/module/ui/boot/runProviderColdBoot.js +65 -21
- package/lib/module/ui/boot/runProviderColdBoot.js.map +1 -1
- package/lib/module/ui/components/FollowButton.js +1 -1
- package/lib/module/ui/components/FollowButton.js.map +1 -1
- package/lib/module/ui/components/OxyAccountDialogScreen.js +1 -13
- package/lib/module/ui/components/OxyAccountDialogScreen.js.map +1 -1
- package/lib/module/ui/components/OxyAuthChooser.js +4 -5
- package/lib/module/ui/components/OxyAuthChooser.js.map +1 -1
- package/lib/module/ui/components/OxyProvider.js +6 -7
- package/lib/module/ui/components/OxyProvider.js.map +1 -1
- package/lib/module/ui/components/OxySignInButton.js.map +1 -1
- package/lib/module/ui/components/ProfileButton.js +2 -2
- package/lib/module/ui/components/ProfileButton.js.map +1 -1
- package/lib/module/ui/components/authChooser/AccountsMenuView.js +8 -3
- package/lib/module/ui/components/authChooser/AccountsMenuView.js.map +1 -1
- package/lib/module/ui/components/authChooser/primitives.js +1 -1
- package/lib/module/ui/components/authChooser/primitives.js.map +1 -1
- package/lib/module/ui/components/authChooser/useUsernameAvailability.js +1 -1
- package/lib/module/ui/components/authChooser/useUsernameAvailability.js.map +1 -1
- package/lib/module/ui/components/fileManagement/UploadPreview.js +1 -1
- package/lib/module/ui/components/fileManagement/UploadPreview.js.map +1 -1
- package/lib/module/ui/components/internal/PinInput.js +1 -3
- package/lib/module/ui/components/internal/PinInput.js.map +1 -1
- package/lib/module/ui/components/logo/LogoText.js +4 -4
- package/lib/module/ui/components/logo/LogoText.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/PaymentSummaryStep.js +2 -2
- package/lib/module/ui/components/payment/PaymentSummaryStep.js.map +1 -1
- package/lib/module/ui/components/styles/shadow.js.map +1 -1
- package/lib/module/ui/context/OxyContext.js +49 -35
- package/lib/module/ui/context/OxyContext.js.map +1 -1
- package/lib/module/ui/context/commitSessionFlow.js +42 -3
- package/lib/module/ui/context/commitSessionFlow.js.map +1 -1
- package/lib/module/ui/context/hooks/useAuthOperations.js +2 -15
- package/lib/module/ui/context/hooks/useAuthOperations.js.map +1 -1
- package/lib/module/ui/context/useOxyAccountGraph.js +4 -3
- package/lib/module/ui/context/useOxyAccountGraph.js.map +1 -1
- package/lib/module/ui/hooks/mutations/mutationFactory.js +1 -1
- package/lib/module/ui/hooks/mutations/mutationFactory.js.map +1 -1
- package/lib/module/ui/hooks/mutations/useAccountMutations.js +1 -1
- package/lib/module/ui/hooks/mutations/useAccountMutations.js.map +1 -1
- package/lib/module/ui/hooks/mutations/useServicesMutations.js +1 -1
- package/lib/module/ui/hooks/mutations/useServicesMutations.js.map +1 -1
- package/lib/module/ui/hooks/queries/usePaymentQueries.js +2 -3
- package/lib/module/ui/hooks/queries/usePaymentQueries.js.map +1 -1
- package/lib/module/ui/hooks/queries/userCache.js +17 -17
- package/lib/module/ui/hooks/queries/userCache.js.map +1 -1
- package/lib/module/ui/hooks/useAssets.js.map +1 -1
- package/lib/module/ui/hooks/useAsyncAction.js +1 -1
- package/lib/module/ui/hooks/useAsyncAction.js.map +1 -1
- package/lib/module/ui/hooks/useAuth.js +2 -4
- package/lib/module/ui/hooks/useAuth.js.map +1 -1
- package/lib/module/ui/hooks/useAvatarPicker.js +1 -1
- package/lib/module/ui/hooks/useAvatarPicker.js.map +1 -1
- package/lib/module/ui/hooks/useOnlineStatus.js +2 -3
- package/lib/module/ui/hooks/useOnlineStatus.js.map +1 -1
- package/lib/module/ui/hooks/useSessionManagement.js +2 -0
- package/lib/module/ui/hooks/useSessionManagement.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/hooks/useSurfaceHeader.js +11 -68
- package/lib/module/ui/hooks/useSurfaceHeader.js.map +1 -1
- package/lib/module/ui/oauth/browserAuthTransport.js +64 -66
- package/lib/module/ui/oauth/browserAuthTransport.js.map +1 -1
- package/lib/module/ui/oauth/legacyRedirectLanes.js +44 -0
- package/lib/module/ui/oauth/legacyRedirectLanes.js.map +1 -0
- package/lib/module/ui/oauth/oauthPopup.js +1 -48
- package/lib/module/ui/oauth/oauthPopup.js.map +1 -1
- package/lib/module/ui/screens/AccountMembersScreen.js +1 -1
- package/lib/module/ui/screens/AccountMembersScreen.js.map +1 -1
- package/lib/module/ui/screens/AccountSettingsScreen.js +15 -37
- package/lib/module/ui/screens/AccountSettingsScreen.js.map +1 -1
- package/lib/module/ui/screens/AccountVerificationScreen.js +1 -1
- package/lib/module/ui/screens/AccountVerificationScreen.js.map +1 -1
- package/lib/module/ui/screens/AppInfoScreen.js +1 -1
- package/lib/module/ui/screens/AppInfoScreen.js.map +1 -1
- package/lib/module/ui/screens/AvatarCropScreen.js +1 -1
- package/lib/module/ui/screens/AvatarCropScreen.js.map +1 -1
- package/lib/module/ui/screens/ChangeAvatarScreen.js +5 -4
- package/lib/module/ui/screens/ChangeAvatarScreen.js.map +1 -1
- package/lib/module/ui/screens/ConnectedAppsScreen.js +2 -2
- package/lib/module/ui/screens/ConnectedAppsScreen.js.map +1 -1
- package/lib/module/ui/screens/CreateAccountScreen.js +12 -34
- package/lib/module/ui/screens/CreateAccountScreen.js.map +1 -1
- package/lib/module/ui/screens/EditProfileFieldScreen.js +4 -4
- package/lib/module/ui/screens/EditProfileFieldScreen.js.map +1 -1
- package/lib/module/ui/screens/EditProfileScreen.js +4 -3
- package/lib/module/ui/screens/EditProfileScreen.js.map +1 -1
- package/lib/module/ui/screens/FAQScreen.js +1 -1
- package/lib/module/ui/screens/FAQScreen.js.map +1 -1
- package/lib/module/ui/screens/FeedbackScreen.js +91 -94
- package/lib/module/ui/screens/FeedbackScreen.js.map +1 -1
- package/lib/module/ui/screens/FileManagementScreen.js +1 -1
- package/lib/module/ui/screens/FileManagementScreen.js.map +1 -1
- package/lib/module/ui/screens/FollowersListScreen.js.map +1 -1
- package/lib/module/ui/screens/FollowingListScreen.js.map +1 -1
- package/lib/module/ui/screens/HelpSupportScreen.js +1 -1
- package/lib/module/ui/screens/HelpSupportScreen.js.map +1 -1
- package/lib/module/ui/screens/HistoryViewScreen.js +30 -5
- package/lib/module/ui/screens/HistoryViewScreen.js.map +1 -1
- package/lib/module/ui/screens/LanguageSelectorScreen.js +1 -1
- package/lib/module/ui/screens/LanguageSelectorScreen.js.map +1 -1
- package/lib/module/ui/screens/LegalDocumentsScreen.js +1 -1
- package/lib/module/ui/screens/LegalDocumentsScreen.js.map +1 -1
- package/lib/module/ui/screens/ManageAccountScreen.js +3 -3
- package/lib/module/ui/screens/ManageAccountScreen.js.map +1 -1
- package/lib/module/ui/screens/PremiumSubscriptionScreen.js +4 -4
- package/lib/module/ui/screens/PremiumSubscriptionScreen.js.map +1 -1
- package/lib/module/ui/screens/PrivacySettingsScreen.js +11 -11
- package/lib/module/ui/screens/PrivacySettingsScreen.js.map +1 -1
- package/lib/module/ui/screens/ProfileScreen.js +8 -18
- package/lib/module/ui/screens/ProfileScreen.js.map +1 -1
- package/lib/module/ui/screens/SavesCollectionsScreen.js +1 -1
- package/lib/module/ui/screens/SavesCollectionsScreen.js.map +1 -1
- package/lib/module/ui/screens/UserListScreen.js +8 -14
- package/lib/module/ui/screens/UserListScreen.js.map +1 -1
- package/lib/module/ui/screens/WelcomeNewUserScreen.js +6 -5
- package/lib/module/ui/screens/WelcomeNewUserScreen.js.map +1 -1
- package/lib/module/ui/screens/fileManagement/PhotoPickerSection.js +4 -1
- package/lib/module/ui/screens/fileManagement/PhotoPickerSection.js.map +1 -1
- package/lib/module/ui/screens/fileManagement/hooks/useFileUploadState.js +5 -15
- package/lib/module/ui/screens/fileManagement/hooks/useFileUploadState.js.map +1 -1
- package/lib/module/ui/screens/trust/TrustCenterScreen.js +1 -1
- package/lib/module/ui/screens/trust/TrustCenterScreen.js.map +1 -1
- package/lib/module/ui/screens/trust/TrustLeaderboardScreen.js +5 -4
- package/lib/module/ui/screens/trust/TrustLeaderboardScreen.js.map +1 -1
- package/lib/module/ui/screens/trust/TrustRewardsScreen.js +1 -1
- package/lib/module/ui/screens/trust/TrustRewardsScreen.js.map +1 -1
- package/lib/module/ui/session/index.js +0 -1
- package/lib/module/ui/session/index.js.map +1 -1
- package/lib/module/ui/utils/crossOriginRestore.js +131 -0
- package/lib/module/ui/utils/crossOriginRestore.js.map +1 -0
- package/lib/module/ui/utils/fileManagement.js +25 -25
- package/lib/module/ui/utils/fileManagement.js.map +1 -1
- package/lib/module/ui/utils/oauthReturn.js +30 -20
- package/lib/module/ui/utils/oauthReturn.js.map +1 -1
- package/lib/module/ui/utils/userUtils.js +28 -27
- package/lib/module/ui/utils/userUtils.js.map +1 -1
- package/lib/typescript/commonjs/index.d.ts +2 -0
- package/lib/typescript/commonjs/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/notifications/deviceNotifications.d.ts +0 -51
- package/lib/typescript/commonjs/notifications/deviceNotifications.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/boot/runProviderColdBoot.d.ts +30 -11
- package/lib/typescript/commonjs/ui/boot/runProviderColdBoot.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/OxyAccountDialogScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/OxyAuthChooser.d.ts +0 -7
- package/lib/typescript/commonjs/ui/components/OxyAuthChooser.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 +1 -2
- package/lib/typescript/commonjs/ui/components/OxySignInButton.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/ProfileButton.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/authChooser/AccountsMenuView.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/authChooser/primitives.d.ts +1 -1
- package/lib/typescript/commonjs/ui/components/authChooser/primitives.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/fileManagement/UploadPreview.d.ts +1 -1
- package/lib/typescript/commonjs/ui/components/fileManagement/UploadPreview.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/internal/PinInput.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/payment/types.d.ts +6 -6
- package/lib/typescript/commonjs/ui/components/payment/types.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/context/OxyContext.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/context/commitSessionFlow.d.ts +40 -0
- package/lib/typescript/commonjs/ui/context/commitSessionFlow.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/context/hooks/useAuthOperations.d.ts +2 -11
- package/lib/typescript/commonjs/ui/context/hooks/useAuthOperations.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/context/oxyContextTypes.d.ts +7 -26
- package/lib/typescript/commonjs/ui/context/oxyContextTypes.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/context/useOxyAccountGraph.d.ts +1 -0
- package/lib/typescript/commonjs/ui/context/useOxyAccountGraph.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/hooks/mutations/useAccountMutations.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/hooks/queries/paymentTypes.d.ts +2 -3
- package/lib/typescript/commonjs/ui/hooks/queries/paymentTypes.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/hooks/queries/usePaymentQueries.d.ts +2 -3
- package/lib/typescript/commonjs/ui/hooks/queries/usePaymentQueries.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/hooks/queries/userCache.d.ts +2 -2
- package/lib/typescript/commonjs/ui/hooks/queries/userCache.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/hooks/useAssets.d.ts +1 -1
- package/lib/typescript/commonjs/ui/hooks/useAssets.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/hooks/useAsyncAction.d.ts +2 -2
- package/lib/typescript/commonjs/ui/hooks/useAsyncAction.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/hooks/useAuth.d.ts +2 -4
- package/lib/typescript/commonjs/ui/hooks/useAuth.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/hooks/useOnlineStatus.d.ts +2 -3
- package/lib/typescript/commonjs/ui/hooks/useOnlineStatus.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/hooks/useSessionManagement.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/hooks/useSurfaceHeader.d.ts +2 -7
- package/lib/typescript/commonjs/ui/hooks/useSurfaceHeader.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/oauth/browserAuthTransport.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/oauth/legacyRedirectLanes.d.ts +40 -0
- package/lib/typescript/commonjs/ui/oauth/legacyRedirectLanes.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/oauth/oauthPopup.d.ts +0 -6
- package/lib/typescript/commonjs/ui/oauth/oauthPopup.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/AccountSettingsScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/ChangeAvatarScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/CreateAccountScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/EditProfileScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/FeedbackScreen.d.ts +2 -2
- package/lib/typescript/commonjs/ui/screens/FeedbackScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/FollowersListScreen.d.ts +0 -3
- package/lib/typescript/commonjs/ui/screens/FollowersListScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/FollowingListScreen.d.ts +0 -3
- package/lib/typescript/commonjs/ui/screens/FollowingListScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/HistoryViewScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/ManageAccountScreen.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/UserListScreen.d.ts +0 -7
- 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/fileManagement/hooks/useFileUploadState.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/trust/TrustLeaderboardScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/trust/trustTier.d.ts +1 -1
- package/lib/typescript/commonjs/ui/screens/trust/trustTier.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/session/index.d.ts +0 -1
- package/lib/typescript/commonjs/ui/session/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/types/navigation.d.ts +19 -27
- package/lib/typescript/commonjs/ui/types/navigation.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/utils/crossOriginRestore.d.ts +43 -0
- package/lib/typescript/commonjs/ui/utils/crossOriginRestore.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/utils/fileManagement.d.ts +5 -5
- package/lib/typescript/commonjs/ui/utils/fileManagement.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/utils/oauthReturn.d.ts +12 -15
- package/lib/typescript/commonjs/ui/utils/oauthReturn.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/utils/userUtils.d.ts +14 -7
- package/lib/typescript/commonjs/ui/utils/userUtils.d.ts.map +1 -1
- package/lib/typescript/module/index.d.ts +2 -0
- package/lib/typescript/module/index.d.ts.map +1 -1
- package/lib/typescript/module/notifications/deviceNotifications.d.ts +0 -51
- package/lib/typescript/module/notifications/deviceNotifications.d.ts.map +1 -1
- package/lib/typescript/module/ui/boot/runProviderColdBoot.d.ts +30 -11
- package/lib/typescript/module/ui/boot/runProviderColdBoot.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/OxyAccountDialogScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/OxyAuthChooser.d.ts +0 -7
- package/lib/typescript/module/ui/components/OxyAuthChooser.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 +1 -2
- package/lib/typescript/module/ui/components/OxySignInButton.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/ProfileButton.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/authChooser/AccountsMenuView.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/authChooser/primitives.d.ts +1 -1
- package/lib/typescript/module/ui/components/authChooser/primitives.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/fileManagement/UploadPreview.d.ts +1 -1
- package/lib/typescript/module/ui/components/fileManagement/UploadPreview.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/internal/PinInput.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/payment/types.d.ts +6 -6
- package/lib/typescript/module/ui/components/payment/types.d.ts.map +1 -1
- package/lib/typescript/module/ui/context/OxyContext.d.ts.map +1 -1
- package/lib/typescript/module/ui/context/commitSessionFlow.d.ts +40 -0
- package/lib/typescript/module/ui/context/commitSessionFlow.d.ts.map +1 -1
- package/lib/typescript/module/ui/context/hooks/useAuthOperations.d.ts +2 -11
- package/lib/typescript/module/ui/context/hooks/useAuthOperations.d.ts.map +1 -1
- package/lib/typescript/module/ui/context/oxyContextTypes.d.ts +7 -26
- package/lib/typescript/module/ui/context/oxyContextTypes.d.ts.map +1 -1
- package/lib/typescript/module/ui/context/useOxyAccountGraph.d.ts +1 -0
- package/lib/typescript/module/ui/context/useOxyAccountGraph.d.ts.map +1 -1
- package/lib/typescript/module/ui/hooks/mutations/useAccountMutations.d.ts.map +1 -1
- package/lib/typescript/module/ui/hooks/queries/paymentTypes.d.ts +2 -3
- package/lib/typescript/module/ui/hooks/queries/paymentTypes.d.ts.map +1 -1
- package/lib/typescript/module/ui/hooks/queries/usePaymentQueries.d.ts +2 -3
- package/lib/typescript/module/ui/hooks/queries/usePaymentQueries.d.ts.map +1 -1
- package/lib/typescript/module/ui/hooks/queries/userCache.d.ts +2 -2
- package/lib/typescript/module/ui/hooks/queries/userCache.d.ts.map +1 -1
- package/lib/typescript/module/ui/hooks/useAssets.d.ts +1 -1
- package/lib/typescript/module/ui/hooks/useAssets.d.ts.map +1 -1
- package/lib/typescript/module/ui/hooks/useAsyncAction.d.ts +2 -2
- package/lib/typescript/module/ui/hooks/useAsyncAction.d.ts.map +1 -1
- package/lib/typescript/module/ui/hooks/useAuth.d.ts +2 -4
- package/lib/typescript/module/ui/hooks/useAuth.d.ts.map +1 -1
- package/lib/typescript/module/ui/hooks/useOnlineStatus.d.ts +2 -3
- package/lib/typescript/module/ui/hooks/useOnlineStatus.d.ts.map +1 -1
- package/lib/typescript/module/ui/hooks/useSessionManagement.d.ts.map +1 -1
- package/lib/typescript/module/ui/hooks/useSurfaceHeader.d.ts +2 -7
- package/lib/typescript/module/ui/hooks/useSurfaceHeader.d.ts.map +1 -1
- package/lib/typescript/module/ui/oauth/browserAuthTransport.d.ts.map +1 -1
- package/lib/typescript/module/ui/oauth/legacyRedirectLanes.d.ts +40 -0
- package/lib/typescript/module/ui/oauth/legacyRedirectLanes.d.ts.map +1 -0
- package/lib/typescript/module/ui/oauth/oauthPopup.d.ts +0 -6
- package/lib/typescript/module/ui/oauth/oauthPopup.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/AccountSettingsScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/ChangeAvatarScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/CreateAccountScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/EditProfileScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/FeedbackScreen.d.ts +2 -2
- package/lib/typescript/module/ui/screens/FeedbackScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/FollowersListScreen.d.ts +0 -3
- package/lib/typescript/module/ui/screens/FollowersListScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/FollowingListScreen.d.ts +0 -3
- package/lib/typescript/module/ui/screens/FollowingListScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/HistoryViewScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/ManageAccountScreen.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/UserListScreen.d.ts +0 -7
- 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/fileManagement/hooks/useFileUploadState.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/trust/TrustLeaderboardScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/trust/trustTier.d.ts +1 -1
- package/lib/typescript/module/ui/screens/trust/trustTier.d.ts.map +1 -1
- package/lib/typescript/module/ui/session/index.d.ts +0 -1
- package/lib/typescript/module/ui/session/index.d.ts.map +1 -1
- package/lib/typescript/module/ui/types/navigation.d.ts +19 -27
- package/lib/typescript/module/ui/types/navigation.d.ts.map +1 -1
- package/lib/typescript/module/ui/utils/crossOriginRestore.d.ts +43 -0
- package/lib/typescript/module/ui/utils/crossOriginRestore.d.ts.map +1 -0
- package/lib/typescript/module/ui/utils/fileManagement.d.ts +5 -5
- package/lib/typescript/module/ui/utils/fileManagement.d.ts.map +1 -1
- package/lib/typescript/module/ui/utils/oauthReturn.d.ts +12 -15
- package/lib/typescript/module/ui/utils/oauthReturn.d.ts.map +1 -1
- package/lib/typescript/module/ui/utils/userUtils.d.ts +14 -7
- package/lib/typescript/module/ui/utils/userUtils.d.ts.map +1 -1
- package/package.json +10 -22
- package/src/index.ts +16 -18
- package/src/notifications/deviceNotifications.ts +0 -82
- package/src/ui/boot/__tests__/coldBootWebAuthMode.test.ts +281 -0
- package/src/ui/boot/runProviderColdBoot.ts +101 -24
- package/src/ui/components/FollowButton.tsx +1 -1
- package/src/ui/components/OxyAccountDialogScreen.tsx +1 -13
- package/src/ui/components/OxyAuthChooser.tsx +4 -14
- package/src/ui/components/OxyProvider.tsx +7 -8
- package/src/ui/components/OxySignInButton.tsx +1 -2
- package/src/ui/components/ProfileButton.tsx +2 -5
- package/src/ui/components/authChooser/AccountsMenuView.tsx +10 -5
- package/src/ui/components/authChooser/primitives.tsx +1 -1
- package/src/ui/components/authChooser/useUsernameAvailability.ts +1 -1
- package/src/ui/components/fileManagement/UploadPreview.tsx +1 -1
- package/src/ui/components/internal/PinInput.tsx +0 -1
- package/src/ui/components/logo/LogoText.tsx +4 -4
- package/src/ui/components/payment/PaymentDetailsStep.tsx +1 -1
- package/src/ui/components/payment/PaymentSummaryStep.tsx +2 -2
- package/src/ui/components/payment/types.ts +24 -24
- package/src/ui/components/styles/shadow.tsx +2 -2
- package/src/ui/context/OxyContext.tsx +46 -35
- package/src/ui/context/__tests__/commitSessionFlow.test.ts +89 -13
- package/src/ui/context/commitSessionFlow.ts +61 -3
- package/src/ui/context/hooks/useAuthOperations.ts +1 -26
- package/src/ui/context/oxyContextTypes.ts +7 -26
- package/src/ui/context/useOxyAccountGraph.ts +4 -4
- package/src/ui/hooks/mutations/mutationFactory.ts +1 -1
- package/src/ui/hooks/mutations/useAccountMutations.ts +1 -1
- package/src/ui/hooks/mutations/useServicesMutations.ts +1 -1
- package/src/ui/hooks/queries/paymentTypes.ts +2 -3
- package/src/ui/hooks/queries/usePaymentQueries.ts +2 -3
- package/src/ui/hooks/queries/userCache.ts +148 -169
- package/src/ui/hooks/useAssets.ts +1 -1
- package/src/ui/hooks/useAsyncAction.ts +3 -3
- package/src/ui/hooks/useAuth.ts +2 -4
- package/src/ui/hooks/useAvatarPicker.ts +1 -1
- package/src/ui/hooks/useOnlineStatus.ts +2 -3
- package/src/ui/hooks/useSessionManagement.ts +2 -0
- package/src/ui/hooks/useSettingToggle.ts +1 -1
- package/src/ui/hooks/useSurfaceHeader.ts +15 -90
- package/src/ui/oauth/__tests__/oauthPopup.test.ts +0 -26
- package/src/ui/oauth/browserAuthTransport.ts +49 -55
- package/src/ui/oauth/legacyRedirectLanes.ts +43 -0
- package/src/ui/oauth/oauthPopup.ts +3 -61
- package/src/ui/screens/AccountMembersScreen.tsx +1 -1
- package/src/ui/screens/AccountSettingsScreen.tsx +17 -45
- package/src/ui/screens/AccountVerificationScreen.tsx +1 -1
- package/src/ui/screens/AppInfoScreen.tsx +1 -1
- package/src/ui/screens/AvatarCropScreen.tsx +1 -1
- package/src/ui/screens/ChangeAvatarScreen.tsx +4 -7
- package/src/ui/screens/ConnectedAppsScreen.tsx +2 -2
- package/src/ui/screens/CreateAccountScreen.tsx +13 -43
- package/src/ui/screens/EditProfileFieldScreen.tsx +4 -4
- package/src/ui/screens/EditProfileScreen.tsx +3 -6
- package/src/ui/screens/FAQScreen.tsx +1 -1
- package/src/ui/screens/FeedbackScreen.tsx +575 -741
- package/src/ui/screens/FileManagementScreen.tsx +1 -1
- package/src/ui/screens/FollowersListScreen.tsx +0 -3
- package/src/ui/screens/FollowingListScreen.tsx +0 -3
- package/src/ui/screens/HelpSupportScreen.tsx +1 -1
- package/src/ui/screens/HistoryViewScreen.tsx +20 -5
- package/src/ui/screens/LanguageSelectorScreen.tsx +1 -1
- package/src/ui/screens/LegalDocumentsScreen.tsx +1 -1
- package/src/ui/screens/ManageAccountScreen.tsx +2 -9
- package/src/ui/screens/PremiumSubscriptionScreen.tsx +4 -4
- package/src/ui/screens/PrivacySettingsScreen.tsx +12 -15
- package/src/ui/screens/ProfileScreen.tsx +6 -24
- package/src/ui/screens/SavesCollectionsScreen.tsx +1 -1
- package/src/ui/screens/UserListScreen.tsx +8 -18
- package/src/ui/screens/WelcomeNewUserScreen.tsx +6 -6
- package/src/ui/screens/fileManagement/PhotoPickerSection.tsx +1 -1
- package/src/ui/screens/fileManagement/hooks/useFileUploadState.ts +5 -14
- package/src/ui/screens/trust/TrustCenterScreen.tsx +2 -2
- package/src/ui/screens/trust/TrustLeaderboardScreen.tsx +5 -6
- package/src/ui/screens/trust/TrustRewardsScreen.tsx +1 -1
- package/src/ui/screens/trust/TrustRulesScreen.tsx +1 -1
- package/src/ui/screens/trust/trustTier.ts +1 -1
- package/src/ui/session/index.ts +0 -1
- package/src/ui/types/navigation.ts +19 -27
- package/src/ui/utils/__tests__/crossOriginRestore.test.ts +143 -0
- package/src/ui/utils/crossOriginRestore.ts +169 -0
- package/src/ui/utils/fileManagement.ts +92 -108
- package/src/ui/utils/oauthReturn.ts +33 -23
- package/src/ui/utils/userUtils.ts +32 -27
- package/android/src/main/java/so/oxy/session/OxyBackgroundSession.kt +0 -184
- package/android/src/main/java/so/oxy/session/OxyBackgroundSessionApi.kt +0 -162
- package/android/src/main/java/so/oxy/session/OxyBackgroundSessionModule.kt +0 -116
- package/android/src/main/java/so/oxy/session/OxyBackgroundSessionStore.kt +0 -179
- package/android/src/main/java/so/oxy/session/OxyBackgroundToken.kt +0 -61
- package/android/src/main/java/so/oxy/storage/OxyEncryptedPrefs.kt +0 -241
- package/lib/commonjs/ui/session/backgroundSession.js +0 -258
- package/lib/commonjs/ui/session/backgroundSession.js.map +0 -1
- package/lib/commonjs/ui/session/useBackgroundSessionSync.js +0 -81
- package/lib/commonjs/ui/session/useBackgroundSessionSync.js.map +0 -1
- package/lib/commonjs/ui/utils/netConnectivity.js +0 -28
- package/lib/commonjs/ui/utils/netConnectivity.js.map +0 -1
- package/lib/module/ui/session/backgroundSession.js +0 -252
- package/lib/module/ui/session/backgroundSession.js.map +0 -1
- package/lib/module/ui/session/useBackgroundSessionSync.js +0 -76
- package/lib/module/ui/session/useBackgroundSessionSync.js.map +0 -1
- package/lib/module/ui/utils/netConnectivity.js +0 -23
- package/lib/module/ui/utils/netConnectivity.js.map +0 -1
- package/lib/typescript/commonjs/ui/session/backgroundSession.d.ts +0 -42
- package/lib/typescript/commonjs/ui/session/backgroundSession.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/session/useBackgroundSessionSync.d.ts +0 -23
- package/lib/typescript/commonjs/ui/session/useBackgroundSessionSync.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/utils/netConnectivity.d.ts +0 -17
- package/lib/typescript/commonjs/ui/utils/netConnectivity.d.ts.map +0 -1
- package/lib/typescript/module/ui/session/backgroundSession.d.ts +0 -42
- package/lib/typescript/module/ui/session/backgroundSession.d.ts.map +0 -1
- package/lib/typescript/module/ui/session/useBackgroundSessionSync.d.ts +0 -23
- package/lib/typescript/module/ui/session/useBackgroundSessionSync.d.ts.map +0 -1
- package/lib/typescript/module/ui/utils/netConnectivity.d.ts +0 -17
- package/lib/typescript/module/ui/utils/netConnectivity.d.ts.map +0 -1
- package/lib/typescript/types/expo-image-picker.d.ts +0 -35
- package/src/types/expo-image-picker.d.ts +0 -35
- package/src/ui/boot/__tests__/coldBootNoIdpRedirect.test.ts +0 -215
- package/src/ui/session/__tests__/backgroundSession.test.ts +0 -392
- package/src/ui/session/backgroundSession.ts +0 -313
- package/src/ui/session/useBackgroundSessionSync.ts +0 -92
- package/src/ui/utils/netConnectivity.ts +0 -27
|
@@ -14,7 +14,7 @@ import {
|
|
|
14
14
|
import { useQueryClient } from '@tanstack/react-query';
|
|
15
15
|
import { Image as ExpoImage } from 'expo-image';
|
|
16
16
|
import type { FileManagementScreenProps } from '../types/fileManagement';
|
|
17
|
-
import { toast } from '@oxyhq/bloom
|
|
17
|
+
import { toast } from '@oxyhq/bloom';
|
|
18
18
|
import { surfaces } from '@oxyhq/bloom/surfaces';
|
|
19
19
|
import * as Skeleton from '@oxyhq/bloom/skeleton';
|
|
20
20
|
import Ionicons from '@expo/vector-icons/Ionicons';
|
|
@@ -1,13 +1,10 @@
|
|
|
1
1
|
import type React from 'react';
|
|
2
|
-
import type { FollowGraphSort } from '@oxyhq/core';
|
|
3
2
|
import type { BaseScreenProps } from '../types/navigation';
|
|
4
3
|
import UserListScreen from './UserListScreen';
|
|
5
4
|
|
|
6
5
|
interface FollowersListScreenProps extends BaseScreenProps {
|
|
7
6
|
userId: string;
|
|
8
7
|
initialCount?: number;
|
|
9
|
-
/** List ordering — see `UserListScreen`. Omitted ⇒ the server default. */
|
|
10
|
-
sort?: FollowGraphSort;
|
|
11
8
|
}
|
|
12
9
|
|
|
13
10
|
const FollowersListScreen: React.FC<FollowersListScreenProps> = (props) => {
|
|
@@ -1,13 +1,10 @@
|
|
|
1
1
|
import type React from 'react';
|
|
2
|
-
import type { FollowGraphSort } from '@oxyhq/core';
|
|
3
2
|
import type { BaseScreenProps } from '../types/navigation';
|
|
4
3
|
import UserListScreen from './UserListScreen';
|
|
5
4
|
|
|
6
5
|
interface FollowingListScreenProps extends BaseScreenProps {
|
|
7
6
|
userId: string;
|
|
8
7
|
initialCount?: number;
|
|
9
|
-
/** List ordering — see `UserListScreen`. Omitted ⇒ the server default. */
|
|
10
|
-
sort?: FollowGraphSort;
|
|
11
8
|
}
|
|
12
9
|
|
|
13
10
|
const FollowingListScreen: React.FC<FollowingListScreenProps> = (props) => {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React, { useMemo } from 'react';
|
|
2
2
|
import { View, Linking } from 'react-native';
|
|
3
3
|
import type { BaseScreenProps } from '../types/navigation';
|
|
4
|
-
import { toast } from '@oxyhq/bloom
|
|
4
|
+
import { toast } from '@oxyhq/bloom';
|
|
5
5
|
import { SettingsListGroup, SettingsListItem } from '@oxyhq/bloom/settings-list';
|
|
6
6
|
import { useTheme } from '@oxyhq/bloom/theme';
|
|
7
7
|
import { SettingsIcon } from '../components/SettingsIcon';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React, { useState, useCallback } from 'react';
|
|
2
2
|
import { View } from 'react-native';
|
|
3
3
|
import type { BaseScreenProps } from '../types/navigation';
|
|
4
|
-
import { toast } from '@oxyhq/bloom
|
|
4
|
+
import { toast } from '@oxyhq/bloom';
|
|
5
5
|
import { Loading } from '@oxyhq/bloom/loading';
|
|
6
6
|
import { Text } from '@oxyhq/bloom/typography';
|
|
7
7
|
import { SettingsListGroup, SettingsListItem } from '@oxyhq/bloom/settings-list';
|
|
@@ -11,7 +11,6 @@ import { useSurfaceHeader } from '../hooks/useSurfaceHeader';
|
|
|
11
11
|
import { useTheme } from '@oxyhq/bloom/theme';
|
|
12
12
|
import { useOxy } from '../context/OxyContext';
|
|
13
13
|
import { surfaces } from '@oxyhq/bloom/surfaces';
|
|
14
|
-
import { createPlatformStorage } from '../utils/storageHelpers';
|
|
15
14
|
|
|
16
15
|
interface HistoryItem { id: string; query: string; type: 'search' | 'browse'; timestamp: Date; }
|
|
17
16
|
|
|
@@ -27,11 +26,27 @@ const HistoryViewScreen: React.FC<BaseScreenProps> = ({ onClose, goBack }) => {
|
|
|
27
26
|
const [isLoading, setIsLoading] = useState(true);
|
|
28
27
|
const [isDeleting, setIsDeleting] = useState(false);
|
|
29
28
|
|
|
29
|
+
const getStorage = async () => {
|
|
30
|
+
const isRN = typeof navigator !== 'undefined' && navigator.product === 'ReactNative';
|
|
31
|
+
if (isRN) {
|
|
32
|
+
try {
|
|
33
|
+
const mod = await import('@react-native-async-storage/async-storage');
|
|
34
|
+
const s = mod.default as unknown as { getItem: (k: string) => Promise<string | null>; setItem: (k: string, v: string) => Promise<void>; removeItem: (k: string) => Promise<void> };
|
|
35
|
+
return { getItem: s.getItem.bind(s), setItem: s.setItem.bind(s), removeItem: s.removeItem.bind(s) };
|
|
36
|
+
} catch (e) { if (__DEV__) console.error('AsyncStorage not available:', e); throw new Error('AsyncStorage required'); }
|
|
37
|
+
}
|
|
38
|
+
return {
|
|
39
|
+
getItem: async (k: string) => typeof window !== 'undefined' && window.localStorage ? window.localStorage.getItem(k) : null,
|
|
40
|
+
setItem: async (k: string, v: string) => { if (typeof window !== 'undefined' && window.localStorage) window.localStorage.setItem(k, v); },
|
|
41
|
+
removeItem: async (k: string) => { if (typeof window !== 'undefined' && window.localStorage) window.localStorage.removeItem(k); },
|
|
42
|
+
};
|
|
43
|
+
};
|
|
44
|
+
|
|
30
45
|
React.useEffect(() => {
|
|
31
46
|
const load = async () => {
|
|
32
47
|
try {
|
|
33
48
|
setIsLoading(true);
|
|
34
|
-
const storage = await
|
|
49
|
+
const storage = await getStorage();
|
|
35
50
|
const stored = await storage.getItem(`history_${user?.id || 'guest'}`);
|
|
36
51
|
if (stored) { const parsed = JSON.parse(stored); setHistory(parsed.map((i: HistoryItem) => ({ ...i, timestamp: new Date(i.timestamp) }))); }
|
|
37
52
|
else setHistory([]);
|
|
@@ -54,7 +69,7 @@ const HistoryViewScreen: React.FC<BaseScreenProps> = ({ onClose, goBack }) => {
|
|
|
54
69
|
const cutoff = new Date(Date.now() - 15 * 60 * 1000);
|
|
55
70
|
const filtered = history.filter(item => item.timestamp < cutoff);
|
|
56
71
|
setHistory(filtered);
|
|
57
|
-
const storage = await
|
|
72
|
+
const storage = await getStorage();
|
|
58
73
|
await storage.setItem(`history_${user?.id || 'guest'}`, JSON.stringify(filtered));
|
|
59
74
|
toast.success(t('history.deleteLast15Minutes.success') || 'Last 15 minutes deleted');
|
|
60
75
|
} catch (e) { if (__DEV__) console.error('Failed to delete history:', e); toast.error(t('history.deleteLast15Minutes.error') || 'Failed to delete history'); }
|
|
@@ -72,7 +87,7 @@ const HistoryViewScreen: React.FC<BaseScreenProps> = ({ onClose, goBack }) => {
|
|
|
72
87
|
if (!confirmed) return;
|
|
73
88
|
try {
|
|
74
89
|
setIsDeleting(true); setHistory([]);
|
|
75
|
-
const storage = await
|
|
90
|
+
const storage = await getStorage();
|
|
76
91
|
await storage.removeItem(`history_${user?.id || 'guest'}`);
|
|
77
92
|
toast.success(t('history.clearAll.success') || 'History cleared');
|
|
78
93
|
} catch (e) { if (__DEV__) console.error('Failed to clear history:', e); toast.error(t('history.clearAll.error') || 'Failed to clear history'); }
|
|
@@ -3,7 +3,7 @@ import { View, StyleSheet, TouchableOpacity } from 'react-native';
|
|
|
3
3
|
import type { BaseScreenProps } from '../types/navigation';
|
|
4
4
|
import { useTheme } from '@oxyhq/bloom/theme';
|
|
5
5
|
import Ionicons from '@expo/vector-icons/Ionicons';
|
|
6
|
-
import { toast } from '@oxyhq/bloom
|
|
6
|
+
import { toast } from '@oxyhq/bloom';
|
|
7
7
|
import { Text } from '@oxyhq/bloom/typography';
|
|
8
8
|
import { Search } from '@oxyhq/bloom/search';
|
|
9
9
|
import { SettingsListGroup, SettingsListItem } from '@oxyhq/bloom/settings-list';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React, { useState, useCallback } from 'react';
|
|
2
2
|
import { View, Linking } from 'react-native';
|
|
3
|
-
import { toast } from '@oxyhq/bloom
|
|
3
|
+
import { toast } from '@oxyhq/bloom';
|
|
4
4
|
import { useTheme } from '@oxyhq/bloom/theme';
|
|
5
5
|
import { SettingsListGroup, SettingsListItem } from '@oxyhq/bloom/settings-list';
|
|
6
6
|
import { logger } from '@oxyhq/core';
|
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
Platform,
|
|
8
8
|
} from 'react-native';
|
|
9
9
|
import Ionicons from '@expo/vector-icons/Ionicons';
|
|
10
|
-
import { toast } from '@oxyhq/bloom
|
|
10
|
+
import { toast } from '@oxyhq/bloom';
|
|
11
11
|
import { surfaces } from '@oxyhq/bloom/surfaces';
|
|
12
12
|
import { useTheme } from '@oxyhq/bloom/theme';
|
|
13
13
|
import { Text } from '@oxyhq/bloom/typography';
|
|
@@ -15,7 +15,6 @@ import { SettingsListGroup, SettingsListItem } from '@oxyhq/bloom/settings-list'
|
|
|
15
15
|
import {
|
|
16
16
|
getAccountDisplayName,
|
|
17
17
|
getAccountFallbackHandle,
|
|
18
|
-
getNormalizedUserHandle,
|
|
19
18
|
logger as loggerUtil,
|
|
20
19
|
packageInfo,
|
|
21
20
|
} from '@oxyhq/core';
|
|
@@ -121,13 +120,7 @@ const ManageAccountScreen: React.FC<BaseScreenProps> = ({
|
|
|
121
120
|
const [signingOutAllDevices, setSigningOutAllDevices] = useState(false);
|
|
122
121
|
const [signingOut, setSigningOut] = useState(false);
|
|
123
122
|
|
|
124
|
-
const displayName = useMemo(
|
|
125
|
-
() =>
|
|
126
|
-
user?.name?.displayName ??
|
|
127
|
-
getNormalizedUserHandle(user) ??
|
|
128
|
-
getAccountDisplayName(null, locale),
|
|
129
|
-
[user, locale],
|
|
130
|
-
);
|
|
123
|
+
const displayName = useMemo(() => getAccountDisplayName(user, locale), [user, locale]);
|
|
131
124
|
const handle = useMemo(() => getAccountFallbackHandle(user), [user]);
|
|
132
125
|
const avatarUri = useMemo(() => {
|
|
133
126
|
return user?.avatar
|
|
@@ -2,7 +2,7 @@ import type React from 'react';
|
|
|
2
2
|
import { useState, useEffect, useCallback } from 'react';
|
|
3
3
|
import { View, ScrollView, ActivityIndicator } from 'react-native';
|
|
4
4
|
import type { BaseScreenProps } from '../types/navigation';
|
|
5
|
-
import { toast } from '@oxyhq/bloom
|
|
5
|
+
import { toast } from '@oxyhq/bloom';
|
|
6
6
|
import { surfaces } from '@oxyhq/bloom/surfaces';
|
|
7
7
|
import { useTheme } from '@oxyhq/bloom/theme';
|
|
8
8
|
import { Button } from '@oxyhq/bloom/button';
|
|
@@ -343,7 +343,7 @@ const PremiumSubscriptionScreen: React.FC<BaseScreenProps> = ({
|
|
|
343
343
|
if (currentAppPackage) {
|
|
344
344
|
loadSubscriptionData();
|
|
345
345
|
}
|
|
346
|
-
}, [currentAppPackage]);
|
|
346
|
+
}, [currentAppPackage, user?.isPremium]);
|
|
347
347
|
|
|
348
348
|
const detectCurrentApp = () => {
|
|
349
349
|
const detectedApp = 'mention';
|
|
@@ -741,9 +741,9 @@ const PremiumSubscriptionScreen: React.FC<BaseScreenProps> = ({
|
|
|
741
741
|
</View>
|
|
742
742
|
|
|
743
743
|
<BenefitList className="mb-space-24">
|
|
744
|
-
{plan.features.map((feature) => (
|
|
744
|
+
{plan.features.map((feature, index) => (
|
|
745
745
|
<BenefitRow
|
|
746
|
-
key={
|
|
746
|
+
key={index}
|
|
747
747
|
icon={<Ionicons name="checkmark" size={18} color={colors.success} />}
|
|
748
748
|
label={feature}
|
|
749
749
|
/>
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React, { useState, useCallback, useEffect } from 'react';
|
|
2
2
|
import { View } from 'react-native';
|
|
3
3
|
import type { BaseScreenProps } from '../types/navigation';
|
|
4
|
-
import { toast } from '@oxyhq/bloom
|
|
4
|
+
import { toast } from '@oxyhq/bloom';
|
|
5
5
|
import { SettingsListGroup, SettingsListItem } from '@oxyhq/bloom/settings-list';
|
|
6
6
|
import { Switch } from '@oxyhq/bloom/switch';
|
|
7
7
|
import { Button } from '@oxyhq/bloom/button';
|
|
@@ -14,7 +14,7 @@ import { useI18n } from '../hooks/useI18n';
|
|
|
14
14
|
import { useSurfaceHeader } from '../hooks/useSurfaceHeader';
|
|
15
15
|
import { useSettingToggles } from '../hooks/useSettingToggle';
|
|
16
16
|
import type { BlockedUser, RestrictedUser } from '@oxyhq/core';
|
|
17
|
-
import {
|
|
17
|
+
import { getAccountDisplayName } from '@oxyhq/core';
|
|
18
18
|
import { useOxy } from '../context/OxyContext';
|
|
19
19
|
|
|
20
20
|
interface PrivacySettings {
|
|
@@ -68,7 +68,7 @@ const PrivacySettingsScreen: React.FC<BaseScreenProps> = ({
|
|
|
68
68
|
// Privacy settings belong to the ACTIVE account (the org/project/bot when
|
|
69
69
|
// switched, else the personal user).
|
|
70
70
|
const { oxyServices, user } = useOxy();
|
|
71
|
-
const { t } = useI18n();
|
|
71
|
+
const { t, locale } = useI18n();
|
|
72
72
|
|
|
73
73
|
useSurfaceHeader({ title: t('privacySettings.title') || 'Privacy Settings' });
|
|
74
74
|
const bloomTheme = useTheme();
|
|
@@ -114,7 +114,6 @@ const PrivacySettingsScreen: React.FC<BaseScreenProps> = ({
|
|
|
114
114
|
}, [user?.id, oxyServices, t, setValues]);
|
|
115
115
|
|
|
116
116
|
// Load blocked and restricted users
|
|
117
|
-
// biome-ignore lint/correctness/useExhaustiveDependencies: reload when active account switches
|
|
118
117
|
useEffect(() => {
|
|
119
118
|
const loadUsers = async () => {
|
|
120
119
|
if (!oxyServices) return;
|
|
@@ -176,37 +175,35 @@ const PrivacySettingsScreen: React.FC<BaseScreenProps> = ({
|
|
|
176
175
|
}, [oxyServices, t]);
|
|
177
176
|
|
|
178
177
|
// Helper to extract user info from blocked/restricted objects.
|
|
178
|
+
// Display names go through the canonical helper so the fallback chain is
|
|
179
|
+
// identical across every UI surface (name → username → publicKey → "Unnamed").
|
|
179
180
|
const extractUserInfo = useCallback((
|
|
180
181
|
item: BlockedUser | RestrictedUser,
|
|
181
182
|
idField: 'blockedId' | 'restrictedId'
|
|
182
183
|
) => {
|
|
183
|
-
let userIdField: string | { _id: string; username?: string; avatar?: string
|
|
184
|
-
let userShape: { username?: string
|
|
184
|
+
let userIdField: string | { _id: string; username?: string; avatar?: string };
|
|
185
|
+
let userShape: { username?: string };
|
|
185
186
|
let avatar: string | undefined;
|
|
186
187
|
|
|
187
188
|
if (idField === 'blockedId' && 'blockedId' in item) {
|
|
188
189
|
userIdField = item.blockedId;
|
|
189
190
|
userShape = typeof item.blockedId === 'string'
|
|
190
191
|
? { username: item.username }
|
|
191
|
-
: { username: item.blockedId.username
|
|
192
|
+
: { username: item.blockedId.username };
|
|
192
193
|
avatar = typeof item.blockedId === 'string' ? item.avatar : item.blockedId.avatar;
|
|
193
194
|
} else if (idField === 'restrictedId' && 'restrictedId' in item) {
|
|
194
195
|
userIdField = item.restrictedId;
|
|
195
196
|
userShape = typeof item.restrictedId === 'string'
|
|
196
197
|
? { username: item.username }
|
|
197
|
-
: { username: item.restrictedId.username
|
|
198
|
+
: { username: item.restrictedId.username };
|
|
198
199
|
avatar = typeof item.restrictedId === 'string' ? item.avatar : item.restrictedId.avatar;
|
|
199
200
|
} else {
|
|
200
|
-
return { userId: '', displayName:
|
|
201
|
+
return { userId: '', displayName: getAccountDisplayName(null, locale), avatar: undefined };
|
|
201
202
|
}
|
|
202
203
|
|
|
203
204
|
const userId = typeof userIdField === 'string' ? userIdField : userIdField._id;
|
|
204
|
-
return {
|
|
205
|
-
|
|
206
|
-
displayName: userShape.name?.displayName ?? getNormalizedUserHandle(userShape) ?? '',
|
|
207
|
-
avatar,
|
|
208
|
-
};
|
|
209
|
-
}, []);
|
|
205
|
+
return { userId, displayName: getAccountDisplayName(userShape, locale), avatar };
|
|
206
|
+
}, [locale]);
|
|
210
207
|
|
|
211
208
|
if (isLoading) {
|
|
212
209
|
return (
|
|
@@ -14,7 +14,7 @@ import Ionicons from '@expo/vector-icons/Ionicons';
|
|
|
14
14
|
import { useI18n } from '../hooks/useI18n';
|
|
15
15
|
import { useSurfaceHeader } from '../hooks/useSurfaceHeader';
|
|
16
16
|
import { useOxy } from '../context/OxyContext';
|
|
17
|
-
import {
|
|
17
|
+
import { getAccountDisplayName, logger, normalizeProfileLinks } from '@oxyhq/core';
|
|
18
18
|
import { extractErrorMessage } from '../utils/errorHandlers';
|
|
19
19
|
|
|
20
20
|
interface ProfileScreenProps extends BaseScreenProps {
|
|
@@ -42,7 +42,7 @@ const ProfileScreen: React.FC<ProfileScreenProps> = ({ userId, username, theme,
|
|
|
42
42
|
} = useFollow(userId);
|
|
43
43
|
|
|
44
44
|
const bloomTheme = useTheme();
|
|
45
|
-
const { t } = useI18n();
|
|
45
|
+
const { t, locale } = useI18n();
|
|
46
46
|
|
|
47
47
|
// Check if current user is viewing their own profile
|
|
48
48
|
// Normalize IDs by trimming whitespace to handle format mismatches
|
|
@@ -78,9 +78,7 @@ const ProfileScreen: React.FC<ProfileScreenProps> = ({ userId, username, theme,
|
|
|
78
78
|
);
|
|
79
79
|
throw err;
|
|
80
80
|
}),
|
|
81
|
-
(
|
|
82
|
-
? oxyServices.getMyReputationBalance()
|
|
83
|
-
: oxyServices.getReputationBalance(userId))
|
|
81
|
+
oxyServices.getReputationBalance(userId)
|
|
84
82
|
.then((balance): { total: number | undefined } => ({ total: balance.total }))
|
|
85
83
|
.catch((): { total: number | undefined } => ({ total: undefined })),
|
|
86
84
|
oxyServices.getUserStats
|
|
@@ -135,14 +133,7 @@ const ProfileScreen: React.FC<ProfileScreenProps> = ({ userId, username, theme,
|
|
|
135
133
|
// title (a stable "Profile" fallback before it resolves), so the banner +
|
|
136
134
|
// overlapping avatar scroll as content UNDER the shared gradient nav bar.
|
|
137
135
|
// `onImage` tone keeps the title + close legible over the colored banner.
|
|
138
|
-
|
|
139
|
-
// user it cannot normalise, and letting that null travel makes this `string | null`
|
|
140
|
-
// — which does not satisfy `Avatar.name` and does not typecheck. Empty is the honest
|
|
141
|
-
// bottom of the chain and every reader below already treats it as falsy
|
|
142
|
-
// (`displayName || t('profile.title')`), so nothing renders a literal "null".
|
|
143
|
-
const displayName = profile
|
|
144
|
-
? (profile.name?.displayName ?? getNormalizedUserHandle(profile) ?? '')
|
|
145
|
-
: username || '';
|
|
136
|
+
const displayName = profile ? getAccountDisplayName(profile, locale) : username || '';
|
|
146
137
|
useSurfaceHeader({
|
|
147
138
|
title: displayName || t('profile.title'),
|
|
148
139
|
largeTitle: false,
|
|
@@ -196,17 +187,8 @@ const ProfileScreen: React.FC<ProfileScreenProps> = ({ userId, username, theme,
|
|
|
196
187
|
<View style={styles.avatarRow} className="px-screen-margin">
|
|
197
188
|
<View style={styles.avatarWrapper} className="border-bg bg-bg rounded-radius-max">
|
|
198
189
|
<Avatar
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
// the two spellings of absent do not meet, so the coalesce is the
|
|
202
|
-
// whole fix. Without it this file does not typecheck, which blocks
|
|
203
|
-
// `bun run build` and therefore every publish of this package.
|
|
204
|
-
source={
|
|
205
|
-
profile?.avatar
|
|
206
|
-
? (oxyServices.getFileDownloadUrl(profile.avatar, 'thumb') ?? undefined)
|
|
207
|
-
: undefined
|
|
208
|
-
}
|
|
209
|
-
name={displayName}
|
|
190
|
+
source={profile?.avatar ? oxyServices.getFileDownloadUrl(profile.avatar, 'thumb') : undefined}
|
|
191
|
+
name={displayName || username}
|
|
210
192
|
size={AVATAR_SIZE}
|
|
211
193
|
/>
|
|
212
194
|
</View>
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React, { useState, useEffect } from 'react';
|
|
2
2
|
import { View } from 'react-native';
|
|
3
3
|
import type { BaseScreenProps } from '../types/navigation';
|
|
4
|
-
import { toast } from '@oxyhq/bloom
|
|
4
|
+
import { toast } from '@oxyhq/bloom';
|
|
5
5
|
import {
|
|
6
6
|
SegmentedControl,
|
|
7
7
|
SegmentedControlItem,
|
|
@@ -18,8 +18,8 @@ import Ionicons from '@expo/vector-icons/Ionicons';
|
|
|
18
18
|
import { useI18n } from '../hooks/useI18n';
|
|
19
19
|
import { useSurfaceHeader } from '../hooks/useSurfaceHeader';
|
|
20
20
|
import { useOxy } from '../context/OxyContext';
|
|
21
|
-
import { logger,
|
|
22
|
-
import type { User
|
|
21
|
+
import { logger, getAccountDisplayName, getAccountFallbackHandle } from '@oxyhq/core';
|
|
22
|
+
import type { User } from '@oxyhq/core';
|
|
23
23
|
|
|
24
24
|
type ListMode = 'followers' | 'following';
|
|
25
25
|
|
|
@@ -27,12 +27,6 @@ interface UserListScreenProps extends BaseScreenProps {
|
|
|
27
27
|
userId: string;
|
|
28
28
|
mode: ListMode;
|
|
29
29
|
initialCount?: number;
|
|
30
|
-
/**
|
|
31
|
-
* Ordering of the list — `recent` (newest follow first) or `oldest`.
|
|
32
|
-
* Omitted ⇒ the server default (`recent`). Changing it re-fetches from
|
|
33
|
-
* offset 0, since a page boundary is meaningless across two orderings.
|
|
34
|
-
*/
|
|
35
|
-
sort?: FollowGraphSort;
|
|
36
30
|
}
|
|
37
31
|
|
|
38
32
|
const PAGE_SIZE = 20;
|
|
@@ -52,7 +46,6 @@ const UserListScreen: React.FC<UserListScreenProps> = ({
|
|
|
52
46
|
userId,
|
|
53
47
|
mode,
|
|
54
48
|
initialCount,
|
|
55
|
-
sort,
|
|
56
49
|
navigate,
|
|
57
50
|
}) => {
|
|
58
51
|
const { oxyServices, user: currentUser } = useOxy();
|
|
@@ -65,7 +58,7 @@ const UserListScreen: React.FC<UserListScreenProps> = ({
|
|
|
65
58
|
const [hasMore, setHasMore] = useState(true);
|
|
66
59
|
|
|
67
60
|
const bloomTheme = useTheme();
|
|
68
|
-
const { t } = useI18n();
|
|
61
|
+
const { t, locale } = useI18n();
|
|
69
62
|
|
|
70
63
|
const currentUserId = currentUser ? resolveUserId(currentUser) : '';
|
|
71
64
|
|
|
@@ -92,12 +85,12 @@ const UserListScreen: React.FC<UserListScreenProps> = ({
|
|
|
92
85
|
let hasMore: boolean;
|
|
93
86
|
|
|
94
87
|
if (mode === 'followers') {
|
|
95
|
-
const result = await oxyServices.getUserFollowers(userId, { limit: PAGE_SIZE, offset
|
|
88
|
+
const result = await oxyServices.getUserFollowers(userId, { limit: PAGE_SIZE, offset });
|
|
96
89
|
newUsers = result.followers;
|
|
97
90
|
total = result.total;
|
|
98
91
|
hasMore = result.hasMore;
|
|
99
92
|
} else {
|
|
100
|
-
const result = await oxyServices.getUserFollowing(userId, { limit: PAGE_SIZE, offset
|
|
93
|
+
const result = await oxyServices.getUserFollowing(userId, { limit: PAGE_SIZE, offset });
|
|
101
94
|
newUsers = result.following;
|
|
102
95
|
total = result.total;
|
|
103
96
|
hasMore = result.hasMore;
|
|
@@ -122,10 +115,7 @@ const UserListScreen: React.FC<UserListScreenProps> = ({
|
|
|
122
115
|
setIsRefreshing(false);
|
|
123
116
|
}
|
|
124
117
|
},
|
|
125
|
-
|
|
126
|
-
// ordering forever, and the mount effect below (keyed on `fetchUsers`)
|
|
127
|
-
// would never re-run — flipping the control would change nothing.
|
|
128
|
-
[userId, mode, sort, oxyServices]
|
|
118
|
+
[userId, mode, oxyServices]
|
|
129
119
|
);
|
|
130
120
|
|
|
131
121
|
useEffect(() => {
|
|
@@ -157,7 +147,7 @@ const UserListScreen: React.FC<UserListScreenProps> = ({
|
|
|
157
147
|
const itemUserId = resolveUserId(item);
|
|
158
148
|
const isCurrentUser = itemUserId === currentUserId;
|
|
159
149
|
const description = typeof item.description === 'string' ? item.description : '';
|
|
160
|
-
const displayName = item
|
|
150
|
+
const displayName = getAccountDisplayName(item, locale);
|
|
161
151
|
const handle = getAccountFallbackHandle(item);
|
|
162
152
|
|
|
163
153
|
return (
|
|
@@ -199,7 +189,7 @@ const UserListScreen: React.FC<UserListScreenProps> = ({
|
|
|
199
189
|
</TouchableOpacity>
|
|
200
190
|
);
|
|
201
191
|
},
|
|
202
|
-
[handleUserPress, currentUserId, oxyServices]
|
|
192
|
+
[handleUserPress, currentUserId, oxyServices, locale]
|
|
203
193
|
);
|
|
204
194
|
|
|
205
195
|
const renderEmpty = useCallback(() => {
|
|
@@ -4,7 +4,7 @@ import { View, StyleSheet, Platform, Animated } from 'react-native';
|
|
|
4
4
|
import type { BaseScreenProps } from '../types/navigation';
|
|
5
5
|
import { Avatar } from '@oxyhq/bloom/avatar';
|
|
6
6
|
import Ionicons from '@expo/vector-icons/Ionicons';
|
|
7
|
-
import { toast } from '@oxyhq/bloom
|
|
7
|
+
import { toast } from '@oxyhq/bloom';
|
|
8
8
|
import { useTheme } from '@oxyhq/bloom/theme';
|
|
9
9
|
import { Button } from '@oxyhq/bloom/button';
|
|
10
10
|
import { H1, Text } from '@oxyhq/bloom/typography';
|
|
@@ -13,7 +13,7 @@ import { useI18n } from '../hooks/useI18n';
|
|
|
13
13
|
import { useSurfaceHeader } from '../hooks/useSurfaceHeader';
|
|
14
14
|
import { useOxy } from '../context/OxyContext';
|
|
15
15
|
import { useUpdateProfile } from '../hooks/mutations/useAccountMutations';
|
|
16
|
-
import {
|
|
16
|
+
import { getAccountDisplayName, type User } from '@oxyhq/core';
|
|
17
17
|
|
|
18
18
|
const GAP = 12;
|
|
19
19
|
const INNER_GAP = 8;
|
|
@@ -63,10 +63,10 @@ const WelcomeNewUserScreen: React.FC<BaseScreenProps & { newUser?: User }> = ({
|
|
|
63
63
|
? oxyServices.getFileDownloadUrl(currentUser.avatar, 'thumb')
|
|
64
64
|
: undefined;
|
|
65
65
|
|
|
66
|
-
//
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
const welcomeTitle = currentUser
|
|
66
|
+
// Steps content. Use the canonical helper so partially-onboarded accounts
|
|
67
|
+
// (publicKey only) still get a friendly greeting instead of a blank one.
|
|
68
|
+
const welcomeName = getAccountDisplayName(currentUser ?? null, locale);
|
|
69
|
+
const welcomeTitle = currentUser
|
|
70
70
|
? (t('welcomeNew.welcome.titleWithName', { username: welcomeName }) || `Welcome, ${welcomeName} 👋`)
|
|
71
71
|
: (t('welcomeNew.welcome.title') || 'Welcome 👋');
|
|
72
72
|
// Only ask the user for their name during onboarding when they don't have a
|
|
@@ -551,8 +551,8 @@ const PhotoPickerView: React.FC<PhotoPickerViewProps> = ({
|
|
|
551
551
|
importantForAccessibility="no-hide-descendants"
|
|
552
552
|
>
|
|
553
553
|
{Array.from({ length: skeletonTileCount }, (_, index) => (
|
|
554
|
+
// biome-ignore lint/suspicious/noArrayIndexKey: fixed-size skeleton grid, order never changes
|
|
554
555
|
<Skeleton.Box
|
|
555
|
-
// biome-ignore lint/suspicious/noArrayIndexKey: fixed-size skeleton grid, order never changes
|
|
556
556
|
key={`skeleton-${index}`}
|
|
557
557
|
width={cellSize}
|
|
558
558
|
height={cellSize}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type React from 'react';
|
|
2
2
|
import { useCallback, useEffect, useRef, useState } from 'react';
|
|
3
3
|
import { useQueryClient } from '@tanstack/react-query';
|
|
4
|
-
import { toast } from '@oxyhq/bloom
|
|
4
|
+
import { toast } from '@oxyhq/bloom';
|
|
5
5
|
import type { AssetUploadInput, FileMetadata } from '@oxyhq/core';
|
|
6
6
|
import type { useUploadFile } from '../../../hooks/mutations/useAccountMutations';
|
|
7
7
|
import { queryKeys } from '../../../hooks/queries/queryKeys';
|
|
@@ -411,11 +411,7 @@ export const useFileUploadState = ({
|
|
|
411
411
|
}
|
|
412
412
|
};
|
|
413
413
|
|
|
414
|
-
|
|
415
|
-
// NODE from it (`fmHeaderBack`): a node can only be compared by identity, so
|
|
416
|
-
// a fresh closure here re-creates the node every render and thrashes the
|
|
417
|
-
// surface-header bridge into an unbounded update loop (React error #185).
|
|
418
|
-
const handleCancelUpload = useCallback(() => {
|
|
414
|
+
const handleCancelUpload = () => {
|
|
419
415
|
clearPostSelectTimer();
|
|
420
416
|
|
|
421
417
|
// Cleanup preview URLs
|
|
@@ -424,7 +420,7 @@ export const useFileUploadState = ({
|
|
|
424
420
|
}
|
|
425
421
|
setPendingFiles([]);
|
|
426
422
|
setShowUploadPreview(false);
|
|
427
|
-
}
|
|
423
|
+
};
|
|
428
424
|
|
|
429
425
|
const removePendingFile = (id: string) => {
|
|
430
426
|
const file = pendingFiles.find((pf) => pf.id === id);
|
|
@@ -442,13 +438,8 @@ export const useFileUploadState = ({
|
|
|
442
438
|
/**
|
|
443
439
|
* Handle file upload - opens document picker and processes selected files
|
|
444
440
|
* Expo 54 compatible - works on web, iOS, and Android
|
|
445
|
-
*
|
|
446
|
-
* Memoized because the orchestrator feeds it to the picker header's
|
|
447
|
-
* `primaryAction` (the Upload CTA) through a `useMemo`: a fresh closure each
|
|
448
|
-
* render invalidates that memo every render, which is the input the
|
|
449
|
-
* surface-header bridge is guarding against.
|
|
450
441
|
*/
|
|
451
|
-
const handleFileUpload =
|
|
442
|
+
const handleFileUpload = async () => {
|
|
452
443
|
// Prevent concurrent document picker calls
|
|
453
444
|
if (isPickingDocument) {
|
|
454
445
|
toast.error(t('fileManagement.toasts.waitForSelection'));
|
|
@@ -547,7 +538,7 @@ export const useFileUploadState = ({
|
|
|
547
538
|
// Always reset the picking state, even if there was an error
|
|
548
539
|
setIsPickingDocument(false);
|
|
549
540
|
}
|
|
550
|
-
}
|
|
541
|
+
};
|
|
551
542
|
|
|
552
543
|
return {
|
|
553
544
|
isPickingDocument,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type React from 'react';
|
|
2
2
|
import { useEffect, useMemo, useState } from 'react';
|
|
3
3
|
import { View, StyleSheet } from 'react-native';
|
|
4
|
-
import type { ReputationTransaction, TrustTier } from '@oxyhq/
|
|
4
|
+
import type { ReputationTransaction, TrustTier } from '@oxyhq/core';
|
|
5
5
|
import Ionicons from '@expo/vector-icons/Ionicons';
|
|
6
6
|
import { Chip } from '@oxyhq/bloom/chip';
|
|
7
7
|
import { useTheme } from '@oxyhq/bloom/theme';
|
|
@@ -36,7 +36,7 @@ const TrustCenterScreen: React.FC<BaseScreenProps> = ({
|
|
|
36
36
|
setIsLoading(true);
|
|
37
37
|
setError(null);
|
|
38
38
|
Promise.all([
|
|
39
|
-
oxyServices.
|
|
39
|
+
oxyServices.getReputationBalance(user.id),
|
|
40
40
|
oxyServices.getReputationTransactions(user.id, 20, 0),
|
|
41
41
|
])
|
|
42
42
|
.then(([balance, txns]) => {
|
|
@@ -7,8 +7,8 @@ import {
|
|
|
7
7
|
FlatList,
|
|
8
8
|
TouchableOpacity,
|
|
9
9
|
} from 'react-native';
|
|
10
|
-
import type { ReputationLeaderboardEntry } from '@oxyhq/
|
|
11
|
-
import {
|
|
10
|
+
import type { ReputationLeaderboardEntry } from '@oxyhq/core';
|
|
11
|
+
import { getAccountDisplayName, logger } from '@oxyhq/core';
|
|
12
12
|
import { useTheme } from '@oxyhq/bloom/theme';
|
|
13
13
|
import { H6, Text } from '@oxyhq/bloom/typography';
|
|
14
14
|
import { Chip } from '@oxyhq/bloom/chip';
|
|
@@ -29,7 +29,7 @@ const PODIUM_RANK = 3;
|
|
|
29
29
|
|
|
30
30
|
const TrustLeaderboardScreen: React.FC<BaseScreenProps> = ({ navigate }) => {
|
|
31
31
|
const { oxyServices, user: currentUser } = useOxy();
|
|
32
|
-
const { t } = useI18n();
|
|
32
|
+
const { t, locale } = useI18n();
|
|
33
33
|
const bloomTheme = useTheme();
|
|
34
34
|
|
|
35
35
|
const [leaderboard, setLeaderboard] = useState<ReputationLeaderboardEntry[]>([]);
|
|
@@ -72,8 +72,7 @@ const TrustLeaderboardScreen: React.FC<BaseScreenProps> = ({ navigate }) => {
|
|
|
72
72
|
|
|
73
73
|
const renderEntry = useCallback(
|
|
74
74
|
({ item }: { item: ReputationLeaderboardEntry }) => {
|
|
75
|
-
const displayName =
|
|
76
|
-
item.user.name?.displayName ?? getNormalizedUserHandle(item.user) ?? '';
|
|
75
|
+
const displayName = getAccountDisplayName(item.user, locale);
|
|
77
76
|
const isViewer = currentUserId !== '' && item.user.id === currentUserId;
|
|
78
77
|
const isPodium = item.rank <= PODIUM_RANK;
|
|
79
78
|
// Viewer's own row and podium ranks get a subtle highlighted surface.
|
|
@@ -116,7 +115,7 @@ const TrustLeaderboardScreen: React.FC<BaseScreenProps> = ({ navigate }) => {
|
|
|
116
115
|
</TouchableOpacity>
|
|
117
116
|
);
|
|
118
117
|
},
|
|
119
|
-
[oxyServices, currentUserId, handleEntryPress, t],
|
|
118
|
+
[oxyServices, locale, currentUserId, handleEntryPress, t],
|
|
120
119
|
);
|
|
121
120
|
|
|
122
121
|
const keyExtractor = useCallback(
|
|
@@ -97,7 +97,7 @@ const TrustRewardsScreen: React.FC<BaseScreenProps> = () => {
|
|
|
97
97
|
return;
|
|
98
98
|
}
|
|
99
99
|
setIsLoading(true);
|
|
100
|
-
oxyServices.
|
|
100
|
+
oxyServices.getReputationBalance(user.id)
|
|
101
101
|
.then((balance) => {
|
|
102
102
|
setReputationTotal(balance.total || 0);
|
|
103
103
|
})
|
|
@@ -4,7 +4,7 @@ import { View, Text } from 'react-native';
|
|
|
4
4
|
import { SettingsListGroup, SettingsListItem } from '@oxyhq/bloom/settings-list';
|
|
5
5
|
import { Chip } from '@oxyhq/bloom/chip';
|
|
6
6
|
import { useTheme } from '@oxyhq/bloom/theme';
|
|
7
|
-
import type { ReputationRule, ReputationCategory } from '@oxyhq/
|
|
7
|
+
import type { ReputationRule, ReputationCategory } from '@oxyhq/core';
|
|
8
8
|
import type { BaseScreenProps } from '../../types/navigation';
|
|
9
9
|
import { useSurfaceHeader } from '../../hooks/useSurfaceHeader';
|
|
10
10
|
import { Loading } from '@oxyhq/bloom/loading';
|
package/src/ui/session/index.ts
CHANGED
|
@@ -13,7 +13,6 @@
|
|
|
13
13
|
export { createSessionClient } from './createSessionClient';
|
|
14
14
|
export { createTokenTransport } from './tokenTransport';
|
|
15
15
|
export { createPlatformAuthStateStore } from './authStore';
|
|
16
|
-
export { useBackgroundSessionSync } from './useBackgroundSessionSync';
|
|
17
16
|
export { createIdentitySessionBinding, IdentityBoundSessionError } from './identityBinding';
|
|
18
17
|
export type { IdentitySessionBinding } from './identityBinding';
|
|
19
18
|
export {
|