@oxyhq/services 6.9.33 → 6.9.34
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/ui/components/Avatar.js +5 -3
- package/lib/commonjs/ui/components/Avatar.js.map +1 -1
- package/lib/commonjs/ui/components/BottomSheet.js +2 -2
- package/lib/commonjs/ui/components/BottomSheet.js.map +1 -1
- package/lib/commonjs/ui/components/BottomSheetRouter.js +3 -4
- package/lib/commonjs/ui/components/BottomSheetRouter.js.map +1 -1
- package/lib/commonjs/ui/components/GroupedItem.js +12 -18
- package/lib/commonjs/ui/components/GroupedItem.js.map +1 -1
- package/lib/commonjs/ui/components/Header.js +11 -18
- package/lib/commonjs/ui/components/Header.js.map +1 -1
- package/lib/commonjs/ui/components/HelperText.js +6 -14
- package/lib/commonjs/ui/components/HelperText.js.map +1 -1
- package/lib/commonjs/ui/components/OxyLogo.js +4 -2
- package/lib/commonjs/ui/components/OxyLogo.js.map +1 -1
- package/lib/commonjs/ui/components/ProfileCard.js +13 -20
- package/lib/commonjs/ui/components/ProfileCard.js.map +1 -1
- package/lib/commonjs/ui/components/QuickActions.js +9 -13
- package/lib/commonjs/ui/components/QuickActions.js.map +1 -1
- package/lib/commonjs/ui/components/SectionTitle.js +2 -8
- package/lib/commonjs/ui/components/SectionTitle.js.map +1 -1
- package/lib/commonjs/ui/components/SignInModal.js +10 -16
- package/lib/commonjs/ui/components/SignInModal.js.map +1 -1
- package/lib/commonjs/ui/components/TextField/TextFieldFlat.js +6 -4
- package/lib/commonjs/ui/components/TextField/TextFieldFlat.js.map +1 -1
- package/lib/commonjs/ui/components/TextField/TextFieldOutlined.js +6 -4
- package/lib/commonjs/ui/components/TextField/TextFieldOutlined.js.map +1 -1
- package/lib/commonjs/ui/components/fileManagement/FileDetailsModal.js +36 -51
- package/lib/commonjs/ui/components/fileManagement/FileDetailsModal.js.map +1 -1
- package/lib/commonjs/ui/components/fileManagement/FileViewer.js +68 -82
- package/lib/commonjs/ui/components/fileManagement/FileViewer.js.map +1 -1
- package/lib/commonjs/ui/components/fileManagement/UploadPreview.js +35 -48
- package/lib/commonjs/ui/components/fileManagement/UploadPreview.js.map +1 -1
- package/lib/commonjs/ui/components/modals/DeleteAccountModal.js +22 -34
- package/lib/commonjs/ui/components/modals/DeleteAccountModal.js.map +1 -1
- package/lib/commonjs/ui/components/theming.js +14 -1
- package/lib/commonjs/ui/components/theming.js.map +1 -1
- package/lib/commonjs/ui/screens/AccountCenterScreen.js +15 -27
- package/lib/commonjs/ui/screens/AccountCenterScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/AccountOverviewScreen.js +44 -49
- package/lib/commonjs/ui/screens/AccountOverviewScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/AccountSettingsScreen.js +22 -29
- package/lib/commonjs/ui/screens/AccountSettingsScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/AccountSwitcherScreen.js +2 -25
- package/lib/commonjs/ui/screens/AccountSwitcherScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/AccountVerificationScreen.js +20 -40
- package/lib/commonjs/ui/screens/AccountVerificationScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/AppInfoScreen.js +28 -24
- package/lib/commonjs/ui/screens/AppInfoScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/EditProfileFieldScreen.js +25 -29
- package/lib/commonjs/ui/screens/EditProfileFieldScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/FAQScreen.js +26 -27
- package/lib/commonjs/ui/screens/FAQScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/FeedbackScreen.js +70 -108
- package/lib/commonjs/ui/screens/FeedbackScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/FileManagementScreen.js +106 -119
- package/lib/commonjs/ui/screens/FileManagementScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/HelpSupportScreen.js +13 -10
- package/lib/commonjs/ui/screens/HelpSupportScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/HistoryViewScreen.js +13 -10
- package/lib/commonjs/ui/screens/HistoryViewScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/LanguageSelectorScreen.js +9 -13
- package/lib/commonjs/ui/screens/LanguageSelectorScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/LearnMoreUsernamesScreen.js +19 -20
- package/lib/commonjs/ui/screens/LearnMoreUsernamesScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/LegalDocumentsScreen.js +16 -14
- package/lib/commonjs/ui/screens/LegalDocumentsScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/OxyAuthScreen.js +33 -60
- package/lib/commonjs/ui/screens/OxyAuthScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/PaymentGatewayScreen.js +2 -5
- package/lib/commonjs/ui/screens/PaymentGatewayScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/PremiumSubscriptionScreen.js +10 -16
- package/lib/commonjs/ui/screens/PremiumSubscriptionScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/PrivacySettingsScreen.js +65 -69
- package/lib/commonjs/ui/screens/PrivacySettingsScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/ProfileScreen.js +79 -110
- package/lib/commonjs/ui/screens/ProfileScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/SavesCollectionsScreen.js +16 -13
- package/lib/commonjs/ui/screens/SavesCollectionsScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/SearchSettingsScreen.js +13 -17
- package/lib/commonjs/ui/screens/SearchSettingsScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/SessionManagementScreen.js +17 -30
- package/lib/commonjs/ui/screens/SessionManagementScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/UserLinksScreen.js +6 -12
- package/lib/commonjs/ui/screens/UserLinksScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/UserListScreen.js +41 -35
- package/lib/commonjs/ui/screens/UserListScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/WelcomeNewUserScreen.js +15 -14
- package/lib/commonjs/ui/screens/WelcomeNewUserScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/karma/KarmaAboutScreen.js +7 -12
- package/lib/commonjs/ui/screens/karma/KarmaAboutScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/karma/KarmaCenterScreen.js +25 -23
- package/lib/commonjs/ui/screens/karma/KarmaCenterScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/karma/KarmaFAQScreen.js +9 -17
- package/lib/commonjs/ui/screens/karma/KarmaFAQScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/karma/KarmaLeaderboardScreen.js +6 -11
- package/lib/commonjs/ui/screens/karma/KarmaLeaderboardScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/karma/KarmaRewardsScreen.js +18 -22
- package/lib/commonjs/ui/screens/karma/KarmaRewardsScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/karma/KarmaRulesScreen.js +6 -11
- package/lib/commonjs/ui/screens/karma/KarmaRulesScreen.js.map +1 -1
- package/lib/module/ui/components/Avatar.js +5 -3
- package/lib/module/ui/components/Avatar.js.map +1 -1
- package/lib/module/ui/components/BottomSheet.js +2 -2
- package/lib/module/ui/components/BottomSheet.js.map +1 -1
- package/lib/module/ui/components/BottomSheetRouter.js +3 -4
- package/lib/module/ui/components/BottomSheetRouter.js.map +1 -1
- package/lib/module/ui/components/GroupedItem.js +12 -18
- package/lib/module/ui/components/GroupedItem.js.map +1 -1
- package/lib/module/ui/components/Header.js +11 -18
- package/lib/module/ui/components/Header.js.map +1 -1
- package/lib/module/ui/components/HelperText.js +6 -15
- package/lib/module/ui/components/HelperText.js.map +1 -1
- package/lib/module/ui/components/OxyLogo.js +4 -2
- package/lib/module/ui/components/OxyLogo.js.map +1 -1
- package/lib/module/ui/components/ProfileCard.js +13 -20
- package/lib/module/ui/components/ProfileCard.js.map +1 -1
- package/lib/module/ui/components/QuickActions.js +9 -13
- package/lib/module/ui/components/QuickActions.js.map +1 -1
- package/lib/module/ui/components/SectionTitle.js +2 -8
- package/lib/module/ui/components/SectionTitle.js.map +1 -1
- package/lib/module/ui/components/SignInModal.js +10 -16
- package/lib/module/ui/components/SignInModal.js.map +1 -1
- package/lib/module/ui/components/TextField/TextFieldFlat.js +6 -4
- package/lib/module/ui/components/TextField/TextFieldFlat.js.map +1 -1
- package/lib/module/ui/components/TextField/TextFieldOutlined.js +6 -4
- package/lib/module/ui/components/TextField/TextFieldOutlined.js.map +1 -1
- package/lib/module/ui/components/fileManagement/FileDetailsModal.js +36 -51
- package/lib/module/ui/components/fileManagement/FileDetailsModal.js.map +1 -1
- package/lib/module/ui/components/fileManagement/FileViewer.js +68 -82
- package/lib/module/ui/components/fileManagement/FileViewer.js.map +1 -1
- package/lib/module/ui/components/fileManagement/UploadPreview.js +35 -48
- package/lib/module/ui/components/fileManagement/UploadPreview.js.map +1 -1
- package/lib/module/ui/components/modals/DeleteAccountModal.js +22 -34
- package/lib/module/ui/components/modals/DeleteAccountModal.js.map +1 -1
- package/lib/module/ui/components/theming.js +15 -2
- package/lib/module/ui/components/theming.js.map +1 -1
- package/lib/module/ui/screens/AccountCenterScreen.js +14 -26
- package/lib/module/ui/screens/AccountCenterScreen.js.map +1 -1
- package/lib/module/ui/screens/AccountOverviewScreen.js +45 -50
- package/lib/module/ui/screens/AccountOverviewScreen.js.map +1 -1
- package/lib/module/ui/screens/AccountSettingsScreen.js +21 -28
- package/lib/module/ui/screens/AccountSettingsScreen.js.map +1 -1
- package/lib/module/ui/screens/AccountSwitcherScreen.js +2 -25
- package/lib/module/ui/screens/AccountSwitcherScreen.js.map +1 -1
- package/lib/module/ui/screens/AccountVerificationScreen.js +21 -41
- package/lib/module/ui/screens/AccountVerificationScreen.js.map +1 -1
- package/lib/module/ui/screens/AppInfoScreen.js +28 -24
- package/lib/module/ui/screens/AppInfoScreen.js.map +1 -1
- package/lib/module/ui/screens/EditProfileFieldScreen.js +25 -29
- package/lib/module/ui/screens/EditProfileFieldScreen.js.map +1 -1
- package/lib/module/ui/screens/FAQScreen.js +26 -27
- package/lib/module/ui/screens/FAQScreen.js.map +1 -1
- package/lib/module/ui/screens/FeedbackScreen.js +70 -108
- package/lib/module/ui/screens/FeedbackScreen.js.map +1 -1
- package/lib/module/ui/screens/FileManagementScreen.js +106 -119
- package/lib/module/ui/screens/FileManagementScreen.js.map +1 -1
- package/lib/module/ui/screens/HelpSupportScreen.js +13 -10
- package/lib/module/ui/screens/HelpSupportScreen.js.map +1 -1
- package/lib/module/ui/screens/HistoryViewScreen.js +13 -10
- package/lib/module/ui/screens/HistoryViewScreen.js.map +1 -1
- package/lib/module/ui/screens/LanguageSelectorScreen.js +9 -13
- package/lib/module/ui/screens/LanguageSelectorScreen.js.map +1 -1
- package/lib/module/ui/screens/LearnMoreUsernamesScreen.js +19 -20
- package/lib/module/ui/screens/LearnMoreUsernamesScreen.js.map +1 -1
- package/lib/module/ui/screens/LegalDocumentsScreen.js +16 -14
- package/lib/module/ui/screens/LegalDocumentsScreen.js.map +1 -1
- package/lib/module/ui/screens/OxyAuthScreen.js +33 -60
- package/lib/module/ui/screens/OxyAuthScreen.js.map +1 -1
- package/lib/module/ui/screens/PaymentGatewayScreen.js +2 -5
- package/lib/module/ui/screens/PaymentGatewayScreen.js.map +1 -1
- package/lib/module/ui/screens/PremiumSubscriptionScreen.js +10 -16
- package/lib/module/ui/screens/PremiumSubscriptionScreen.js.map +1 -1
- package/lib/module/ui/screens/PrivacySettingsScreen.js +65 -69
- package/lib/module/ui/screens/PrivacySettingsScreen.js.map +1 -1
- package/lib/module/ui/screens/ProfileScreen.js +77 -108
- package/lib/module/ui/screens/ProfileScreen.js.map +1 -1
- package/lib/module/ui/screens/SavesCollectionsScreen.js +16 -13
- package/lib/module/ui/screens/SavesCollectionsScreen.js.map +1 -1
- package/lib/module/ui/screens/SearchSettingsScreen.js +13 -17
- package/lib/module/ui/screens/SearchSettingsScreen.js.map +1 -1
- package/lib/module/ui/screens/SessionManagementScreen.js +17 -30
- package/lib/module/ui/screens/SessionManagementScreen.js.map +1 -1
- package/lib/module/ui/screens/UserLinksScreen.js +6 -12
- package/lib/module/ui/screens/UserLinksScreen.js.map +1 -1
- package/lib/module/ui/screens/UserListScreen.js +39 -33
- package/lib/module/ui/screens/UserListScreen.js.map +1 -1
- package/lib/module/ui/screens/WelcomeNewUserScreen.js +15 -14
- package/lib/module/ui/screens/WelcomeNewUserScreen.js.map +1 -1
- package/lib/module/ui/screens/karma/KarmaAboutScreen.js +7 -12
- package/lib/module/ui/screens/karma/KarmaAboutScreen.js.map +1 -1
- package/lib/module/ui/screens/karma/KarmaCenterScreen.js +25 -23
- package/lib/module/ui/screens/karma/KarmaCenterScreen.js.map +1 -1
- package/lib/module/ui/screens/karma/KarmaFAQScreen.js +8 -16
- package/lib/module/ui/screens/karma/KarmaFAQScreen.js.map +1 -1
- package/lib/module/ui/screens/karma/KarmaLeaderboardScreen.js +6 -11
- package/lib/module/ui/screens/karma/KarmaLeaderboardScreen.js.map +1 -1
- package/lib/module/ui/screens/karma/KarmaRewardsScreen.js +17 -21
- package/lib/module/ui/screens/karma/KarmaRewardsScreen.js.map +1 -1
- package/lib/module/ui/screens/karma/KarmaRulesScreen.js +6 -11
- package/lib/module/ui/screens/karma/KarmaRulesScreen.js.map +1 -1
- package/lib/typescript/commonjs/ui/components/BottomSheet.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/GroupedItem.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/Header.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/HelperText.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/ProfileCard.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/QuickActions.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/SectionTitle.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/SignInModal.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/fileManagement/FileDetailsModal.d.ts +2 -2
- package/lib/typescript/commonjs/ui/components/fileManagement/FileDetailsModal.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/fileManagement/FileViewer.d.ts +2 -2
- package/lib/typescript/commonjs/ui/components/fileManagement/FileViewer.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/fileManagement/UploadPreview.d.ts +2 -2
- package/lib/typescript/commonjs/ui/components/fileManagement/UploadPreview.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/modals/DeleteAccountModal.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/theming.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/AccountCenterScreen.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/AccountVerificationScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/AppInfoScreen.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/LegalDocumentsScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/OxyAuthScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/PaymentGatewayScreen.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/SavesCollectionsScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/SearchSettingsScreen.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/KarmaFAQScreen.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/module/ui/components/BottomSheet.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/GroupedItem.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/Header.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/HelperText.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/ProfileCard.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/QuickActions.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/SectionTitle.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/SignInModal.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/fileManagement/FileDetailsModal.d.ts +2 -2
- package/lib/typescript/module/ui/components/fileManagement/FileDetailsModal.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/fileManagement/FileViewer.d.ts +2 -2
- package/lib/typescript/module/ui/components/fileManagement/FileViewer.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/fileManagement/UploadPreview.d.ts +2 -2
- package/lib/typescript/module/ui/components/fileManagement/UploadPreview.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/modals/DeleteAccountModal.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/theming.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/AccountCenterScreen.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/AccountVerificationScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/AppInfoScreen.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/LegalDocumentsScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/OxyAuthScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/PaymentGatewayScreen.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/SavesCollectionsScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/SearchSettingsScreen.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/KarmaFAQScreen.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/package.json +1 -1
- package/src/ui/components/Avatar.tsx +3 -3
- package/src/ui/components/BottomSheet.tsx +2 -3
- package/src/ui/components/BottomSheetRouter.tsx +2 -2
- package/src/ui/components/GroupedItem.tsx +8 -15
- package/src/ui/components/Header.tsx +7 -15
- package/src/ui/components/HelperText.tsx +4 -15
- package/src/ui/components/OxyLogo.tsx +2 -2
- package/src/ui/components/ProfileCard.tsx +14 -17
- package/src/ui/components/QuickActions.tsx +12 -14
- package/src/ui/components/SectionTitle.tsx +1 -7
- package/src/ui/components/SignInModal.tsx +4 -6
- package/src/ui/components/TextField/TextFieldFlat.tsx +4 -4
- package/src/ui/components/TextField/TextFieldOutlined.tsx +4 -4
- package/src/ui/components/fileManagement/FileDetailsModal.tsx +23 -22
- package/src/ui/components/fileManagement/FileViewer.tsx +57 -45
- package/src/ui/components/fileManagement/UploadPreview.tsx +23 -28
- package/src/ui/components/modals/DeleteAccountModal.tsx +13 -12
- package/src/ui/components/theming.tsx +15 -2
- package/src/ui/screens/AccountCenterScreen.tsx +10 -13
- package/src/ui/screens/AccountOverviewScreen.tsx +39 -39
- package/src/ui/screens/AccountSettingsScreen.tsx +15 -19
- package/src/ui/screens/AccountSwitcherScreen.tsx +1 -23
- package/src/ui/screens/AccountVerificationScreen.tsx +15 -33
- package/src/ui/screens/AppInfoScreen.tsx +28 -24
- package/src/ui/screens/EditProfileFieldScreen.tsx +24 -26
- package/src/ui/screens/FAQScreen.tsx +23 -23
- package/src/ui/screens/FeedbackScreen.tsx +47 -38
- package/src/ui/screens/FileManagementScreen.tsx +102 -116
- package/src/ui/screens/HelpSupportScreen.tsx +12 -8
- package/src/ui/screens/HistoryViewScreen.tsx +12 -8
- package/src/ui/screens/LanguageSelectorScreen.tsx +8 -11
- package/src/ui/screens/LearnMoreUsernamesScreen.tsx +17 -17
- package/src/ui/screens/LegalDocumentsScreen.tsx +14 -10
- package/src/ui/screens/OxyAuthScreen.tsx +17 -27
- package/src/ui/screens/PaymentGatewayScreen.tsx +1 -3
- package/src/ui/screens/PremiumSubscriptionScreen.tsx +10 -7
- package/src/ui/screens/PrivacySettingsScreen.tsx +63 -65
- package/src/ui/screens/ProfileScreen.tsx +54 -58
- package/src/ui/screens/SavesCollectionsScreen.tsx +15 -11
- package/src/ui/screens/SearchSettingsScreen.tsx +11 -13
- package/src/ui/screens/SessionManagementScreen.tsx +12 -12
- package/src/ui/screens/UserLinksScreen.tsx +4 -8
- package/src/ui/screens/UserListScreen.tsx +34 -46
- package/src/ui/screens/WelcomeNewUserScreen.tsx +11 -6
- package/src/ui/screens/karma/KarmaAboutScreen.tsx +6 -10
- package/src/ui/screens/karma/KarmaCenterScreen.tsx +23 -19
- package/src/ui/screens/karma/KarmaFAQScreen.tsx +7 -14
- package/src/ui/screens/karma/KarmaLeaderboardScreen.tsx +5 -9
- package/src/ui/screens/karma/KarmaRewardsScreen.tsx +15 -17
- package/src/ui/screens/karma/KarmaRulesScreen.tsx +5 -9
|
@@ -10,9 +10,8 @@ import type { BaseScreenProps } from '../types/navigation';
|
|
|
10
10
|
import { toast } from '../../lib/sonner';
|
|
11
11
|
import { Header, Section, Avatar, SettingRow, LoadingState, EmptyState, GroupedSection } from '../components';
|
|
12
12
|
import { useI18n } from '../hooks/useI18n';
|
|
13
|
-
import {
|
|
13
|
+
import { useTheme } from '@oxyhq/bloom/theme';
|
|
14
14
|
import { useSettingToggles } from '../hooks/useSettingToggle';
|
|
15
|
-
import { normalizeTheme } from '../utils/themeUtils';
|
|
16
15
|
import type { BlockedUser, RestrictedUser } from '@oxyhq/core';
|
|
17
16
|
import { useOxy } from '../context/OxyContext';
|
|
18
17
|
|
|
@@ -196,8 +195,7 @@ const PrivacySettingsScreen: React.FC<BaseScreenProps> = ({
|
|
|
196
195
|
return { userId, username, avatar };
|
|
197
196
|
}, []);
|
|
198
197
|
|
|
199
|
-
const
|
|
200
|
-
const themeStyles = useThemeStyles(normalizedTheme);
|
|
198
|
+
const bloomTheme = useTheme();
|
|
201
199
|
|
|
202
200
|
// Convert blocked users to GroupedSection items
|
|
203
201
|
const blockedUserItems = useMemo(() => {
|
|
@@ -220,16 +218,16 @@ const PrivacySettingsScreen: React.FC<BaseScreenProps> = ({
|
|
|
220
218
|
customContent: (
|
|
221
219
|
<TouchableOpacity
|
|
222
220
|
onPress={() => handleUnblock(userId)}
|
|
223
|
-
style={[styles.actionButton, { backgroundColor:
|
|
221
|
+
style={[styles.actionButton, { backgroundColor: bloomTheme.colors.backgroundSecondary }]}
|
|
224
222
|
>
|
|
225
|
-
<Text style={[styles.actionButtonText, { color:
|
|
223
|
+
<Text style={[styles.actionButtonText, { color: bloomTheme.colors.error }]}>
|
|
226
224
|
{t('privacySettings.unblock') || 'Unblock'}
|
|
227
225
|
</Text>
|
|
228
226
|
</TouchableOpacity>
|
|
229
227
|
),
|
|
230
228
|
};
|
|
231
229
|
});
|
|
232
|
-
}, [blockedUsers, oxyServices,
|
|
230
|
+
}, [blockedUsers, oxyServices, bloomTheme, handleUnblock, t]);
|
|
233
231
|
|
|
234
232
|
// Convert restricted users to GroupedSection items
|
|
235
233
|
const restrictedUserItems = useMemo(() => {
|
|
@@ -253,33 +251,33 @@ const PrivacySettingsScreen: React.FC<BaseScreenProps> = ({
|
|
|
253
251
|
customContent: (
|
|
254
252
|
<TouchableOpacity
|
|
255
253
|
onPress={() => handleUnrestrict(userId)}
|
|
256
|
-
style={[styles.actionButton, { backgroundColor:
|
|
254
|
+
style={[styles.actionButton, { backgroundColor: bloomTheme.colors.backgroundSecondary }]}
|
|
257
255
|
>
|
|
258
|
-
<Text style={[styles.actionButtonText, { color:
|
|
256
|
+
<Text style={[styles.actionButtonText, { color: bloomTheme.colors.primary }]}>
|
|
259
257
|
{t('privacySettings.unrestrict') || 'Unrestrict'}
|
|
260
258
|
</Text>
|
|
261
259
|
</TouchableOpacity>
|
|
262
260
|
),
|
|
263
261
|
};
|
|
264
262
|
});
|
|
265
|
-
}, [restrictedUsers, oxyServices,
|
|
263
|
+
}, [restrictedUsers, oxyServices, bloomTheme, handleUnrestrict, t]);
|
|
266
264
|
|
|
267
265
|
if (isLoading) {
|
|
268
266
|
return (
|
|
269
|
-
<View style={
|
|
267
|
+
<View style={styles.container} className="bg-background">
|
|
270
268
|
<Header
|
|
271
269
|
title={t('privacySettings.title') || 'Privacy Settings'}
|
|
272
270
|
onBack={goBack || onClose}
|
|
273
271
|
variant="minimal"
|
|
274
272
|
elevation="subtle"
|
|
275
273
|
/>
|
|
276
|
-
<LoadingState color={
|
|
274
|
+
<LoadingState color={bloomTheme.colors.text} />
|
|
277
275
|
</View>
|
|
278
276
|
);
|
|
279
277
|
}
|
|
280
278
|
|
|
281
279
|
return (
|
|
282
|
-
<View style={
|
|
280
|
+
<View style={styles.container} className="bg-background">
|
|
283
281
|
<Header
|
|
284
282
|
title={t('privacySettings.title') || 'Privacy Settings'}
|
|
285
283
|
onBack={goBack || onClose}
|
|
@@ -296,9 +294,9 @@ const PrivacySettingsScreen: React.FC<BaseScreenProps> = ({
|
|
|
296
294
|
value={settings.isPrivateAccount}
|
|
297
295
|
onValueChange={() => toggle('isPrivateAccount')}
|
|
298
296
|
disabled={isSaving}
|
|
299
|
-
textColor={
|
|
300
|
-
mutedTextColor={
|
|
301
|
-
borderColor={
|
|
297
|
+
textColor={bloomTheme.colors.text}
|
|
298
|
+
mutedTextColor={bloomTheme.colors.textSecondary}
|
|
299
|
+
borderColor={bloomTheme.colors.border}
|
|
302
300
|
/>
|
|
303
301
|
<SettingRow
|
|
304
302
|
title={t('privacySettings.profileVisibility') || 'Profile Visibility'}
|
|
@@ -306,9 +304,9 @@ const PrivacySettingsScreen: React.FC<BaseScreenProps> = ({
|
|
|
306
304
|
value={settings.profileVisibility}
|
|
307
305
|
onValueChange={() => toggle('profileVisibility')}
|
|
308
306
|
disabled={isSaving}
|
|
309
|
-
textColor={
|
|
310
|
-
mutedTextColor={
|
|
311
|
-
borderColor={
|
|
307
|
+
textColor={bloomTheme.colors.text}
|
|
308
|
+
mutedTextColor={bloomTheme.colors.textSecondary}
|
|
309
|
+
borderColor={bloomTheme.colors.border}
|
|
312
310
|
/>
|
|
313
311
|
<SettingRow
|
|
314
312
|
title={t('privacySettings.hideOnlineStatus') || 'Hide Online Status'}
|
|
@@ -316,9 +314,9 @@ const PrivacySettingsScreen: React.FC<BaseScreenProps> = ({
|
|
|
316
314
|
value={settings.hideOnlineStatus}
|
|
317
315
|
onValueChange={() => toggle('hideOnlineStatus')}
|
|
318
316
|
disabled={isSaving}
|
|
319
|
-
textColor={
|
|
320
|
-
mutedTextColor={
|
|
321
|
-
borderColor={
|
|
317
|
+
textColor={bloomTheme.colors.text}
|
|
318
|
+
mutedTextColor={bloomTheme.colors.textSecondary}
|
|
319
|
+
borderColor={bloomTheme.colors.border}
|
|
322
320
|
/>
|
|
323
321
|
<SettingRow
|
|
324
322
|
title={t('privacySettings.hideLastSeen') || 'Hide Last Seen'}
|
|
@@ -326,9 +324,9 @@ const PrivacySettingsScreen: React.FC<BaseScreenProps> = ({
|
|
|
326
324
|
value={settings.hideLastSeen}
|
|
327
325
|
onValueChange={() => toggle('hideLastSeen')}
|
|
328
326
|
disabled={isSaving}
|
|
329
|
-
textColor={
|
|
330
|
-
mutedTextColor={
|
|
331
|
-
borderColor={
|
|
327
|
+
textColor={bloomTheme.colors.text}
|
|
328
|
+
mutedTextColor={bloomTheme.colors.textSecondary}
|
|
329
|
+
borderColor={bloomTheme.colors.border}
|
|
332
330
|
/>
|
|
333
331
|
</Section>
|
|
334
332
|
|
|
@@ -340,9 +338,9 @@ const PrivacySettingsScreen: React.FC<BaseScreenProps> = ({
|
|
|
340
338
|
value={settings.allowTagging}
|
|
341
339
|
onValueChange={() => toggle('allowTagging')}
|
|
342
340
|
disabled={isSaving}
|
|
343
|
-
textColor={
|
|
344
|
-
mutedTextColor={
|
|
345
|
-
borderColor={
|
|
341
|
+
textColor={bloomTheme.colors.text}
|
|
342
|
+
mutedTextColor={bloomTheme.colors.textSecondary}
|
|
343
|
+
borderColor={bloomTheme.colors.border}
|
|
346
344
|
/>
|
|
347
345
|
<SettingRow
|
|
348
346
|
title={t('privacySettings.allowMentions') || 'Allow Mentions'}
|
|
@@ -350,9 +348,9 @@ const PrivacySettingsScreen: React.FC<BaseScreenProps> = ({
|
|
|
350
348
|
value={settings.allowMentions}
|
|
351
349
|
onValueChange={() => toggle('allowMentions')}
|
|
352
350
|
disabled={isSaving}
|
|
353
|
-
textColor={
|
|
354
|
-
mutedTextColor={
|
|
355
|
-
borderColor={
|
|
351
|
+
textColor={bloomTheme.colors.text}
|
|
352
|
+
mutedTextColor={bloomTheme.colors.textSecondary}
|
|
353
|
+
borderColor={bloomTheme.colors.border}
|
|
356
354
|
/>
|
|
357
355
|
<SettingRow
|
|
358
356
|
title={t('privacySettings.allowDirectMessages') || 'Allow Direct Messages'}
|
|
@@ -360,9 +358,9 @@ const PrivacySettingsScreen: React.FC<BaseScreenProps> = ({
|
|
|
360
358
|
value={settings.allowDirectMessages}
|
|
361
359
|
onValueChange={() => toggle('allowDirectMessages')}
|
|
362
360
|
disabled={isSaving}
|
|
363
|
-
textColor={
|
|
364
|
-
mutedTextColor={
|
|
365
|
-
borderColor={
|
|
361
|
+
textColor={bloomTheme.colors.text}
|
|
362
|
+
mutedTextColor={bloomTheme.colors.textSecondary}
|
|
363
|
+
borderColor={bloomTheme.colors.border}
|
|
366
364
|
/>
|
|
367
365
|
<SettingRow
|
|
368
366
|
title={t('privacySettings.hideReadReceipts') || 'Hide Read Receipts'}
|
|
@@ -370,9 +368,9 @@ const PrivacySettingsScreen: React.FC<BaseScreenProps> = ({
|
|
|
370
368
|
value={settings.hideReadReceipts}
|
|
371
369
|
onValueChange={() => toggle('hideReadReceipts')}
|
|
372
370
|
disabled={isSaving}
|
|
373
|
-
textColor={
|
|
374
|
-
mutedTextColor={
|
|
375
|
-
borderColor={
|
|
371
|
+
textColor={bloomTheme.colors.text}
|
|
372
|
+
mutedTextColor={bloomTheme.colors.textSecondary}
|
|
373
|
+
borderColor={bloomTheme.colors.border}
|
|
376
374
|
/>
|
|
377
375
|
</Section>
|
|
378
376
|
|
|
@@ -384,9 +382,9 @@ const PrivacySettingsScreen: React.FC<BaseScreenProps> = ({
|
|
|
384
382
|
value={settings.showActivity}
|
|
385
383
|
onValueChange={() => toggle('showActivity')}
|
|
386
384
|
disabled={isSaving}
|
|
387
|
-
textColor={
|
|
388
|
-
mutedTextColor={
|
|
389
|
-
borderColor={
|
|
385
|
+
textColor={bloomTheme.colors.text}
|
|
386
|
+
mutedTextColor={bloomTheme.colors.textSecondary}
|
|
387
|
+
borderColor={bloomTheme.colors.border}
|
|
390
388
|
/>
|
|
391
389
|
<SettingRow
|
|
392
390
|
title={t('privacySettings.dataSharing') || 'Data Sharing'}
|
|
@@ -394,9 +392,9 @@ const PrivacySettingsScreen: React.FC<BaseScreenProps> = ({
|
|
|
394
392
|
value={settings.dataSharing}
|
|
395
393
|
onValueChange={() => toggle('dataSharing')}
|
|
396
394
|
disabled={isSaving}
|
|
397
|
-
textColor={
|
|
398
|
-
mutedTextColor={
|
|
399
|
-
borderColor={
|
|
395
|
+
textColor={bloomTheme.colors.text}
|
|
396
|
+
mutedTextColor={bloomTheme.colors.textSecondary}
|
|
397
|
+
borderColor={bloomTheme.colors.border}
|
|
400
398
|
/>
|
|
401
399
|
<SettingRow
|
|
402
400
|
title={t('privacySettings.locationSharing') || 'Location Sharing'}
|
|
@@ -404,9 +402,9 @@ const PrivacySettingsScreen: React.FC<BaseScreenProps> = ({
|
|
|
404
402
|
value={settings.locationSharing}
|
|
405
403
|
onValueChange={() => toggle('locationSharing')}
|
|
406
404
|
disabled={isSaving}
|
|
407
|
-
textColor={
|
|
408
|
-
mutedTextColor={
|
|
409
|
-
borderColor={
|
|
405
|
+
textColor={bloomTheme.colors.text}
|
|
406
|
+
mutedTextColor={bloomTheme.colors.textSecondary}
|
|
407
|
+
borderColor={bloomTheme.colors.border}
|
|
410
408
|
/>
|
|
411
409
|
<SettingRow
|
|
412
410
|
title={t('privacySettings.analyticsSharing') || 'Analytics Sharing'}
|
|
@@ -414,9 +412,9 @@ const PrivacySettingsScreen: React.FC<BaseScreenProps> = ({
|
|
|
414
412
|
value={settings.analyticsSharing}
|
|
415
413
|
onValueChange={() => toggle('analyticsSharing')}
|
|
416
414
|
disabled={isSaving}
|
|
417
|
-
textColor={
|
|
418
|
-
mutedTextColor={
|
|
419
|
-
borderColor={
|
|
415
|
+
textColor={bloomTheme.colors.text}
|
|
416
|
+
mutedTextColor={bloomTheme.colors.textSecondary}
|
|
417
|
+
borderColor={bloomTheme.colors.border}
|
|
420
418
|
/>
|
|
421
419
|
</Section>
|
|
422
420
|
|
|
@@ -428,9 +426,9 @@ const PrivacySettingsScreen: React.FC<BaseScreenProps> = ({
|
|
|
428
426
|
value={settings.sensitiveContent}
|
|
429
427
|
onValueChange={() => toggle('sensitiveContent')}
|
|
430
428
|
disabled={isSaving}
|
|
431
|
-
textColor={
|
|
432
|
-
mutedTextColor={
|
|
433
|
-
borderColor={
|
|
429
|
+
textColor={bloomTheme.colors.text}
|
|
430
|
+
mutedTextColor={bloomTheme.colors.textSecondary}
|
|
431
|
+
borderColor={bloomTheme.colors.border}
|
|
434
432
|
/>
|
|
435
433
|
<SettingRow
|
|
436
434
|
title={t('privacySettings.autoFilter') || 'Auto Filter'}
|
|
@@ -438,9 +436,9 @@ const PrivacySettingsScreen: React.FC<BaseScreenProps> = ({
|
|
|
438
436
|
value={settings.autoFilter}
|
|
439
437
|
onValueChange={() => toggle('autoFilter')}
|
|
440
438
|
disabled={isSaving}
|
|
441
|
-
textColor={
|
|
442
|
-
mutedTextColor={
|
|
443
|
-
borderColor={
|
|
439
|
+
textColor={bloomTheme.colors.text}
|
|
440
|
+
mutedTextColor={bloomTheme.colors.textSecondary}
|
|
441
|
+
borderColor={bloomTheme.colors.border}
|
|
444
442
|
/>
|
|
445
443
|
<SettingRow
|
|
446
444
|
title={t('privacySettings.muteKeywords') || 'Mute Keywords'}
|
|
@@ -448,9 +446,9 @@ const PrivacySettingsScreen: React.FC<BaseScreenProps> = ({
|
|
|
448
446
|
value={settings.muteKeywords}
|
|
449
447
|
onValueChange={() => toggle('muteKeywords')}
|
|
450
448
|
disabled={isSaving}
|
|
451
|
-
textColor={
|
|
452
|
-
mutedTextColor={
|
|
453
|
-
borderColor={
|
|
449
|
+
textColor={bloomTheme.colors.text}
|
|
450
|
+
mutedTextColor={bloomTheme.colors.textSecondary}
|
|
451
|
+
borderColor={bloomTheme.colors.border}
|
|
454
452
|
/>
|
|
455
453
|
<SettingRow
|
|
456
454
|
title={t('privacySettings.blockScreenshots') || 'Block Screenshots'}
|
|
@@ -458,20 +456,20 @@ const PrivacySettingsScreen: React.FC<BaseScreenProps> = ({
|
|
|
458
456
|
value={settings.blockScreenshots}
|
|
459
457
|
onValueChange={() => toggle('blockScreenshots')}
|
|
460
458
|
disabled={isSaving}
|
|
461
|
-
textColor={
|
|
462
|
-
mutedTextColor={
|
|
463
|
-
borderColor={
|
|
459
|
+
textColor={bloomTheme.colors.text}
|
|
460
|
+
mutedTextColor={bloomTheme.colors.textSecondary}
|
|
461
|
+
borderColor={bloomTheme.colors.border}
|
|
464
462
|
/>
|
|
465
463
|
</Section>
|
|
466
464
|
|
|
467
465
|
{/* Blocked Users */}
|
|
468
466
|
<Section title={t('privacySettings.sections.blockedUsers') || 'BLOCKED USERS'}>
|
|
469
467
|
{isLoadingUsers ? (
|
|
470
|
-
<LoadingState color={
|
|
468
|
+
<LoadingState color={bloomTheme.colors.text} size="small" />
|
|
471
469
|
) : blockedUsers.length === 0 ? (
|
|
472
470
|
<EmptyState
|
|
473
471
|
message={t('privacySettings.noBlockedUsers') || 'No blocked users'}
|
|
474
|
-
textColor={
|
|
472
|
+
textColor={bloomTheme.colors.textSecondary}
|
|
475
473
|
/>
|
|
476
474
|
) : (
|
|
477
475
|
<GroupedSection items={blockedUserItems} />
|
|
@@ -481,11 +479,11 @@ const PrivacySettingsScreen: React.FC<BaseScreenProps> = ({
|
|
|
481
479
|
{/* Restricted Users */}
|
|
482
480
|
<Section title={t('privacySettings.sections.restrictedUsers') || 'RESTRICTED USERS'}>
|
|
483
481
|
{isLoadingUsers ? (
|
|
484
|
-
<LoadingState color={
|
|
482
|
+
<LoadingState color={bloomTheme.colors.text} size="small" />
|
|
485
483
|
) : restrictedUsers.length === 0 ? (
|
|
486
484
|
<EmptyState
|
|
487
485
|
message={t('privacySettings.noRestrictedUsers') || 'No restricted users'}
|
|
488
|
-
textColor={
|
|
486
|
+
textColor={bloomTheme.colors.textSecondary}
|
|
489
487
|
/>
|
|
490
488
|
) : (
|
|
491
489
|
<GroupedSection items={restrictedUserItems} />
|
|
@@ -2,7 +2,7 @@ import type React from 'react';
|
|
|
2
2
|
import { useEffect, useState } from 'react';
|
|
3
3
|
import { View, Text, StyleSheet, ActivityIndicator, ScrollView, TouchableOpacity, Image } from 'react-native';
|
|
4
4
|
import type { BaseScreenProps } from '../types/navigation';
|
|
5
|
-
import {
|
|
5
|
+
import { useTheme } from '@oxyhq/bloom/theme';
|
|
6
6
|
import Avatar from '../components/Avatar';
|
|
7
7
|
import { FollowButton } from '../components';
|
|
8
8
|
import { useFollow } from '../hooks/useFollow';
|
|
@@ -52,8 +52,8 @@ const ProfileScreen: React.FC<ProfileScreenProps> = ({ userId, username, theme,
|
|
|
52
52
|
isLoadingCounts,
|
|
53
53
|
} = useFollow(userId);
|
|
54
54
|
|
|
55
|
-
const
|
|
56
|
-
const styles = createStyles(
|
|
55
|
+
const bloomTheme = useTheme();
|
|
56
|
+
const styles = createStyles();
|
|
57
57
|
const { t } = useI18n();
|
|
58
58
|
|
|
59
59
|
// Check if current user is viewing their own profile
|
|
@@ -176,27 +176,27 @@ const ProfileScreen: React.FC<ProfileScreenProps> = ({ userId, username, theme,
|
|
|
176
176
|
|
|
177
177
|
if (isLoading) {
|
|
178
178
|
return (
|
|
179
|
-
<View style={[styles.container, {
|
|
180
|
-
<ActivityIndicator size="large" color={colors.primary} />
|
|
179
|
+
<View style={[styles.container, { justifyContent: 'center' }]} className="bg-background">
|
|
180
|
+
<ActivityIndicator size="large" color={bloomTheme.colors.primary} />
|
|
181
181
|
</View>
|
|
182
182
|
);
|
|
183
183
|
}
|
|
184
184
|
|
|
185
185
|
if (error) {
|
|
186
186
|
return (
|
|
187
|
-
<View style={
|
|
187
|
+
<View style={styles.container} className="bg-background">
|
|
188
188
|
<View style={styles.errorHeader}>
|
|
189
189
|
{goBack && (
|
|
190
190
|
<TouchableOpacity onPress={goBack} style={styles.backButton}>
|
|
191
|
-
<Ionicons name="arrow-back" size={24} color={colors.text} />
|
|
191
|
+
<Ionicons name="arrow-back" size={24} color={bloomTheme.colors.text} />
|
|
192
192
|
</TouchableOpacity>
|
|
193
193
|
)}
|
|
194
|
-
<Text style={
|
|
194
|
+
<Text style={styles.errorTitle} className="text-foreground">Profile Error</Text>
|
|
195
195
|
</View>
|
|
196
196
|
<View style={styles.errorContent}>
|
|
197
|
-
<Ionicons name="alert-circle" size={48} color={colors.error} style={styles.errorIcon} />
|
|
198
|
-
<Text style={
|
|
199
|
-
<Text style={
|
|
197
|
+
<Ionicons name="alert-circle" size={48} color={bloomTheme.colors.error} style={styles.errorIcon} />
|
|
198
|
+
<Text style={styles.errorText} className="text-destructive">{error}</Text>
|
|
199
|
+
<Text style={styles.errorSubtext} className="text-muted-foreground">
|
|
200
200
|
This could happen if the user doesn't exist or the profile service is unavailable.
|
|
201
201
|
</Text>
|
|
202
202
|
</View>
|
|
@@ -205,15 +205,15 @@ const ProfileScreen: React.FC<ProfileScreenProps> = ({ userId, username, theme,
|
|
|
205
205
|
}
|
|
206
206
|
|
|
207
207
|
return (
|
|
208
|
-
<View style={
|
|
208
|
+
<View style={styles.container} className="bg-background">
|
|
209
209
|
<ScrollView style={{ flex: 1 }} contentContainerStyle={styles.scrollContainer}>
|
|
210
210
|
{/* Banner Image */}
|
|
211
|
-
<View style={styles.bannerContainer}>
|
|
212
|
-
<View style={styles.bannerImage} />
|
|
211
|
+
<View style={styles.bannerContainer} className="bg-primary/20">
|
|
212
|
+
<View style={styles.bannerImage} className="bg-primary" />
|
|
213
213
|
</View>
|
|
214
214
|
{/* Avatar overlapping banner */}
|
|
215
215
|
<View style={styles.avatarRow}>
|
|
216
|
-
<View style={styles.avatarWrapper}>
|
|
216
|
+
<View style={styles.avatarWrapper} className="border-background bg-background">
|
|
217
217
|
<Avatar
|
|
218
218
|
uri={profile?.avatar ? oxyServices.getFileDownloadUrl(profile.avatar, 'thumb') : undefined}
|
|
219
219
|
name={profile?.username || username}
|
|
@@ -226,9 +226,10 @@ const ProfileScreen: React.FC<ProfileScreenProps> = ({ userId, username, theme,
|
|
|
226
226
|
{isOwnProfile ? (
|
|
227
227
|
<TouchableOpacity
|
|
228
228
|
style={styles.actionButton}
|
|
229
|
+
className="bg-background border-primary"
|
|
229
230
|
onPress={() => navigate?.('AccountSettings')}
|
|
230
231
|
>
|
|
231
|
-
<Text style={styles.actionButtonText}>{t('editProfile.title') || 'Edit Profile'}</Text>
|
|
232
|
+
<Text style={styles.actionButtonText} className="text-primary">{t('editProfile.title') || 'Edit Profile'}</Text>
|
|
232
233
|
</TouchableOpacity>
|
|
233
234
|
) : (
|
|
234
235
|
<FollowButton
|
|
@@ -246,59 +247,59 @@ const ProfileScreen: React.FC<ProfileScreenProps> = ({ userId, username, theme,
|
|
|
246
247
|
</View>
|
|
247
248
|
{/* Profile Info */}
|
|
248
249
|
<View style={styles.header}>
|
|
249
|
-
<Text style={
|
|
250
|
+
<Text style={styles.displayName} className="text-foreground">
|
|
250
251
|
{(profile && 'displayName' in profile && typeof profile.displayName === 'string' ? profile.displayName : null) || profile?.username || username || profile?.id || ''}
|
|
251
252
|
</Text>
|
|
252
253
|
{profile?.username && (
|
|
253
|
-
<Text style={
|
|
254
|
+
<Text style={styles.subText} className="text-muted-foreground">@{profile.username}</Text>
|
|
254
255
|
)}
|
|
255
256
|
{/* Bio placeholder */}
|
|
256
|
-
<Text style={
|
|
257
|
+
<Text style={styles.bio} className="text-foreground">{profile?.bio || (t('profile.noBio') || 'This user has no bio yet.')}</Text>
|
|
257
258
|
|
|
258
259
|
{/* Info Grid Row */}
|
|
259
260
|
<View style={styles.infoGrid}>
|
|
260
261
|
{profile?.createdAt && (
|
|
261
262
|
<View style={styles.infoGridItem}>
|
|
262
|
-
<Ionicons name="calendar-outline" size={16} color={colors.
|
|
263
|
-
<Text style={
|
|
263
|
+
<Ionicons name="calendar-outline" size={16} color={bloomTheme.colors.textSecondary} style={{ marginRight: 6 }} />
|
|
264
|
+
<Text style={styles.infoGridText} className="text-muted-foreground">
|
|
264
265
|
{t('profile.joinedOn', { date: new Date(profile.createdAt).toLocaleDateString() }) || `Joined ${new Date(profile.createdAt).toLocaleDateString()}`}
|
|
265
266
|
</Text>
|
|
266
267
|
</View>
|
|
267
268
|
)}
|
|
268
269
|
{profile?.location && (
|
|
269
270
|
<View style={styles.infoGridItem}>
|
|
270
|
-
<Ionicons name="location-outline" size={16} color={colors.
|
|
271
|
-
<Text style={
|
|
271
|
+
<Ionicons name="location-outline" size={16} color={bloomTheme.colors.textSecondary} style={{ marginRight: 6 }} />
|
|
272
|
+
<Text style={styles.infoGridText} className="text-muted-foreground" numberOfLines={1}>{profile.location}</Text>
|
|
272
273
|
</View>
|
|
273
274
|
)}
|
|
274
275
|
{profile?.website && (
|
|
275
276
|
<View style={styles.infoGridItem}>
|
|
276
|
-
<Ionicons name="globe-outline" size={16} color={colors.
|
|
277
|
-
<Text style={
|
|
277
|
+
<Ionicons name="globe-outline" size={16} color={bloomTheme.colors.textSecondary} style={{ marginRight: 6 }} />
|
|
278
|
+
<Text style={styles.infoGridText} className="text-muted-foreground" numberOfLines={1}>{profile.website}</Text>
|
|
278
279
|
</View>
|
|
279
280
|
)}
|
|
280
281
|
{profile && 'company' in profile && typeof profile.company === 'string' && profile.company && (
|
|
281
282
|
<View style={styles.infoGridItem}>
|
|
282
|
-
<Ionicons name="business-outline" size={16} color={colors.
|
|
283
|
-
<Text style={
|
|
283
|
+
<Ionicons name="business-outline" size={16} color={bloomTheme.colors.textSecondary} style={{ marginRight: 6 }} />
|
|
284
|
+
<Text style={styles.infoGridText} className="text-muted-foreground" numberOfLines={1}>{profile.company}</Text>
|
|
284
285
|
</View>
|
|
285
286
|
)}
|
|
286
287
|
{profile && 'jobTitle' in profile && typeof profile.jobTitle === 'string' && profile.jobTitle && (
|
|
287
288
|
<View style={styles.infoGridItem}>
|
|
288
|
-
<Ionicons name="briefcase-outline" size={16} color={colors.
|
|
289
|
-
<Text style={
|
|
289
|
+
<Ionicons name="briefcase-outline" size={16} color={bloomTheme.colors.textSecondary} style={{ marginRight: 6 }} />
|
|
290
|
+
<Text style={styles.infoGridText} className="text-muted-foreground" numberOfLines={1}>{profile.jobTitle}</Text>
|
|
290
291
|
</View>
|
|
291
292
|
)}
|
|
292
293
|
{profile && 'education' in profile && typeof profile.education === 'string' && profile.education && (
|
|
293
294
|
<View style={styles.infoGridItem}>
|
|
294
|
-
<Ionicons name="school-outline" size={16} color={colors.
|
|
295
|
-
<Text style={
|
|
295
|
+
<Ionicons name="school-outline" size={16} color={bloomTheme.colors.textSecondary} style={{ marginRight: 6 }} />
|
|
296
|
+
<Text style={styles.infoGridText} className="text-muted-foreground" numberOfLines={1}>{profile.education}</Text>
|
|
296
297
|
</View>
|
|
297
298
|
)}
|
|
298
299
|
{profile && 'birthday' in profile && typeof profile.birthday === 'string' && profile.birthday && (
|
|
299
300
|
<View style={styles.infoGridItem}>
|
|
300
|
-
<Ionicons name="gift-outline" size={16} color={colors.
|
|
301
|
-
<Text style={
|
|
301
|
+
<Ionicons name="gift-outline" size={16} color={bloomTheme.colors.textSecondary} style={{ marginRight: 6 }} />
|
|
302
|
+
<Text style={styles.infoGridText} className="text-muted-foreground">
|
|
302
303
|
{t('profile.bornOn', { date: new Date(profile.birthday).toLocaleDateString() }) || `Born ${new Date(profile.birthday).toLocaleDateString()}`}
|
|
303
304
|
</Text>
|
|
304
305
|
</View>
|
|
@@ -308,12 +309,12 @@ const ProfileScreen: React.FC<ProfileScreenProps> = ({ userId, username, theme,
|
|
|
308
309
|
style={styles.infoGridItem}
|
|
309
310
|
onPress={() => navigate?.('UserLinks', { userId, links })}
|
|
310
311
|
>
|
|
311
|
-
<Ionicons name="link-outline" size={16} color={colors.
|
|
312
|
-
<Text style={
|
|
312
|
+
<Ionicons name="link-outline" size={16} color={bloomTheme.colors.textSecondary} style={{ marginRight: 6 }} />
|
|
313
|
+
<Text style={styles.infoGridText} className="text-muted-foreground" numberOfLines={1}>
|
|
313
314
|
{links[0].url}
|
|
314
315
|
</Text>
|
|
315
316
|
{links.length > 1 && (
|
|
316
|
-
<Text style={
|
|
317
|
+
<Text style={styles.linksMore} className="text-muted-foreground">
|
|
317
318
|
{t('profile.more', { count: links.length - 1 }) || `+ ${links.length - 1} more`}
|
|
318
319
|
</Text>
|
|
319
320
|
)}
|
|
@@ -321,28 +322,28 @@ const ProfileScreen: React.FC<ProfileScreenProps> = ({ userId, username, theme,
|
|
|
321
322
|
)}
|
|
322
323
|
</View>
|
|
323
324
|
{/* Divider */}
|
|
324
|
-
<View style={styles.divider} />
|
|
325
|
+
<View style={styles.divider} className="bg-border" />
|
|
325
326
|
{/* All Stats in one row */}
|
|
326
327
|
<View style={styles.statsRow}>
|
|
327
328
|
<View style={styles.statItem}>
|
|
328
|
-
<Text style={
|
|
329
|
-
<Text style={
|
|
329
|
+
<Text style={styles.karmaAmount} className="text-primary">{karmaTotal !== null && karmaTotal !== undefined ? karmaTotal : '--'}</Text>
|
|
330
|
+
<Text style={styles.karmaLabel} className="text-muted-foreground">{t('profile.karma') || 'Karma'}</Text>
|
|
330
331
|
</View>
|
|
331
332
|
<View style={styles.statItem}>
|
|
332
333
|
{isLoadingCounts ? (
|
|
333
|
-
<ActivityIndicator size="small" color={colors.text} />
|
|
334
|
+
<ActivityIndicator size="small" color={bloomTheme.colors.text} />
|
|
334
335
|
) : (
|
|
335
|
-
<Text style={
|
|
336
|
+
<Text style={styles.karmaAmount} className="text-foreground">{followerCount !== null ? followerCount : '--'}</Text>
|
|
336
337
|
)}
|
|
337
|
-
<Text style={
|
|
338
|
+
<Text style={styles.karmaLabel} className="text-muted-foreground">{t('profile.followers') || 'Followers'}</Text>
|
|
338
339
|
</View>
|
|
339
340
|
<View style={styles.statItem}>
|
|
340
341
|
{isLoadingCounts ? (
|
|
341
|
-
<ActivityIndicator size="small" color={colors.text} />
|
|
342
|
+
<ActivityIndicator size="small" color={bloomTheme.colors.text} />
|
|
342
343
|
) : (
|
|
343
|
-
<Text style={
|
|
344
|
+
<Text style={styles.karmaAmount} className="text-foreground">{followingCount !== null ? followingCount : '--'}</Text>
|
|
344
345
|
)}
|
|
345
|
-
<Text style={
|
|
346
|
+
<Text style={styles.karmaLabel} className="text-muted-foreground">{t('profile.following') || 'Following'}</Text>
|
|
346
347
|
</View>
|
|
347
348
|
</View>
|
|
348
349
|
</View>
|
|
@@ -351,37 +352,33 @@ const ProfileScreen: React.FC<ProfileScreenProps> = ({ userId, username, theme,
|
|
|
351
352
|
);
|
|
352
353
|
};
|
|
353
354
|
|
|
354
|
-
const createStyles = (
|
|
355
|
+
const createStyles = () => StyleSheet.create({
|
|
355
356
|
container: { flex: 1 },
|
|
356
357
|
scrollContainer: { alignItems: 'stretch', paddingBottom: 40 },
|
|
357
|
-
bannerContainer: { height: 160,
|
|
358
|
-
bannerImage: { flex: 1
|
|
358
|
+
bannerContainer: { height: 160, position: 'relative', overflow: 'hidden' },
|
|
359
|
+
bannerImage: { flex: 1 },
|
|
359
360
|
avatarRow: { flexDirection: 'row', alignItems: 'flex-end', marginTop: -56, paddingHorizontal: 20, justifyContent: 'space-between', zIndex: 2 },
|
|
360
|
-
avatarWrapper: { borderWidth: 5,
|
|
361
|
+
avatarWrapper: { borderWidth: 5, borderRadius: 64, overflow: 'hidden' },
|
|
361
362
|
actionButtonWrapper: { flex: 1, alignItems: 'flex-end', justifyContent: 'flex-end' },
|
|
362
363
|
actionButton: {
|
|
363
|
-
backgroundColor: colors.background,
|
|
364
364
|
borderWidth: 1,
|
|
365
|
-
borderColor: colors.primary,
|
|
366
365
|
borderRadius: 24,
|
|
367
366
|
paddingVertical: 7,
|
|
368
367
|
paddingHorizontal: 22,
|
|
369
368
|
marginBottom: 8,
|
|
370
369
|
elevation: 2,
|
|
371
|
-
shadowColor: colors.primary,
|
|
372
370
|
shadowOffset: { width: 0, height: 1 },
|
|
373
371
|
shadowOpacity: 0.08,
|
|
374
372
|
shadowRadius: 2
|
|
375
373
|
},
|
|
376
374
|
actionButtonText: {
|
|
377
|
-
color: colors.primary,
|
|
378
375
|
fontWeight: 'bold',
|
|
379
376
|
fontSize: 16
|
|
380
377
|
},
|
|
381
378
|
header: { alignItems: 'flex-start', width: '100%', paddingHorizontal: 20 },
|
|
382
379
|
displayName: { fontSize: 24, fontWeight: 'bold', marginTop: 10, marginBottom: 2, letterSpacing: 0.1 },
|
|
383
|
-
subText: { fontSize: 16, marginBottom: 2
|
|
384
|
-
bio: { fontSize: 16, marginTop: 10, marginBottom: 10,
|
|
380
|
+
subText: { fontSize: 16, marginBottom: 2 },
|
|
381
|
+
bio: { fontSize: 16, marginTop: 10, marginBottom: 10, lineHeight: 22 },
|
|
385
382
|
infoGrid: {
|
|
386
383
|
flexDirection: 'row',
|
|
387
384
|
alignItems: 'center',
|
|
@@ -396,16 +393,15 @@ const createStyles = (colors: ThemeColors) => StyleSheet.create({
|
|
|
396
393
|
},
|
|
397
394
|
infoGridText: {
|
|
398
395
|
fontSize: 15,
|
|
399
|
-
color: colors.text
|
|
400
396
|
},
|
|
401
|
-
divider: { height: 1,
|
|
397
|
+
divider: { height: 1, width: '100%', marginVertical: 14 },
|
|
402
398
|
linksMore: {
|
|
403
399
|
fontSize: 15,
|
|
404
400
|
marginLeft: 4
|
|
405
401
|
},
|
|
406
402
|
statsRow: { width: '100%', flex: 1, flexDirection: 'row', alignItems: 'center', marginTop: 6, marginBottom: 2, justifyContent: 'space-between' },
|
|
407
403
|
statItem: { flex: 1, alignItems: 'center', minWidth: 50, marginBottom: 12 },
|
|
408
|
-
karmaLabel: { fontSize: 14, marginBottom: 2, textAlign: 'center'
|
|
404
|
+
karmaLabel: { fontSize: 14, marginBottom: 2, textAlign: 'center' },
|
|
409
405
|
karmaAmount: { fontSize: 24, fontWeight: 'bold', textAlign: 'center', letterSpacing: 0.2 },
|
|
410
406
|
// Error handling styles
|
|
411
407
|
errorHeader: {
|