@oxyhq/services 5.21.7 → 5.22.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +201 -2
- package/lib/commonjs/assets/assets/fonts/Inter/Inter_18pt-Black.ttf +0 -0
- package/lib/commonjs/assets/assets/fonts/Inter/Inter_18pt-Bold.ttf +0 -0
- package/lib/commonjs/assets/assets/fonts/Inter/Inter_18pt-ExtraBold.ttf +0 -0
- package/lib/commonjs/assets/assets/fonts/Inter/Inter_18pt-Light.ttf +0 -0
- package/lib/commonjs/assets/assets/fonts/Inter/Inter_18pt-Medium.ttf +0 -0
- package/lib/commonjs/assets/assets/fonts/Inter/Inter_18pt-Regular.ttf +0 -0
- package/lib/commonjs/assets/assets/fonts/Inter/Inter_18pt-SemiBold.ttf +0 -0
- package/lib/commonjs/assets/fonts/Inter/Inter_18pt-Black.ttf +0 -0
- package/lib/commonjs/assets/fonts/Inter/Inter_18pt-Bold.ttf +0 -0
- package/lib/commonjs/assets/fonts/Inter/Inter_18pt-ExtraBold.ttf +0 -0
- package/lib/commonjs/assets/fonts/Inter/Inter_18pt-Light.ttf +0 -0
- package/lib/commonjs/assets/fonts/Inter/Inter_18pt-Medium.ttf +0 -0
- package/lib/commonjs/assets/fonts/Inter/Inter_18pt-Regular.ttf +0 -0
- package/lib/commonjs/assets/fonts/Inter/Inter_18pt-SemiBold.ttf +0 -0
- package/lib/commonjs/core/HttpService.js +87 -2
- package/lib/commonjs/core/HttpService.js.map +1 -1
- package/lib/commonjs/core/mixins/OxyServices.assets.js +3 -1
- package/lib/commonjs/core/mixins/OxyServices.assets.js.map +1 -1
- package/lib/commonjs/i18n/locales/en-US.json +3 -3
- package/lib/commonjs/i18n/locales/es-ES.json +240 -19
- package/lib/commonjs/ui/components/Avatar.js +1 -1
- package/lib/commonjs/ui/components/Avatar.js.map +1 -1
- package/lib/commonjs/ui/components/FollowButton.js +1 -1
- package/lib/commonjs/ui/components/FollowButton.js.map +1 -1
- package/lib/commonjs/ui/components/FontLoader.js +34 -34
- package/lib/commonjs/ui/components/FontLoader.js.map +1 -1
- package/lib/commonjs/ui/components/Header.js +4 -4
- package/lib/commonjs/ui/components/Header.js.map +1 -1
- package/lib/commonjs/ui/components/OxyPayButton.js +1 -1
- package/lib/commonjs/ui/components/OxyPayButton.js.map +1 -1
- package/lib/commonjs/ui/components/OxySignInButton.js +2 -1
- package/lib/commonjs/ui/components/OxySignInButton.js.map +1 -1
- package/lib/commonjs/ui/components/ProfileCard.js +1 -1
- package/lib/commonjs/ui/components/ProfileCard.js.map +1 -1
- package/lib/commonjs/ui/components/SectionTitle.js +1 -1
- package/lib/commonjs/ui/components/SectionTitle.js.map +1 -1
- package/lib/commonjs/ui/components/StepBasedScreen.js +2 -1
- package/lib/commonjs/ui/components/StepBasedScreen.js.map +1 -1
- package/lib/commonjs/ui/components/feedback/feedbackStyles.js +2 -1
- package/lib/commonjs/ui/components/feedback/feedbackStyles.js.map +1 -1
- package/lib/commonjs/ui/components/fileManagement/styles.js +17 -17
- package/lib/commonjs/ui/components/fileManagement/styles.js.map +1 -1
- package/lib/commonjs/ui/components/payment/paymentStyles.js +7 -7
- package/lib/commonjs/ui/components/payment/paymentStyles.js.map +1 -1
- package/lib/commonjs/ui/navigation/routes.js +2 -0
- package/lib/commonjs/ui/navigation/routes.js.map +1 -1
- package/lib/commonjs/ui/screens/AccountCenterScreen.js +4 -2
- package/lib/commonjs/ui/screens/AccountCenterScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/AccountOverviewScreen.js +13 -5
- package/lib/commonjs/ui/screens/AccountOverviewScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/AccountSettingsScreen.js +273 -1820
- package/lib/commonjs/ui/screens/AccountSettingsScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/AccountSwitcherScreen.js +1 -1
- package/lib/commonjs/ui/screens/AccountSwitcherScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/AccountVerificationScreen.js +3 -1
- package/lib/commonjs/ui/screens/AccountVerificationScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/AppInfoScreen.js +2 -2
- package/lib/commonjs/ui/screens/AppInfoScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/EditProfileFieldScreen.js +640 -0
- package/lib/commonjs/ui/screens/EditProfileFieldScreen.js.map +1 -0
- package/lib/commonjs/ui/screens/FileManagementScreen.js +39 -21
- package/lib/commonjs/ui/screens/FileManagementScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/HistoryViewScreen.js +9 -3
- package/lib/commonjs/ui/screens/HistoryViewScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/LanguageSelectorScreen.js +4 -2
- package/lib/commonjs/ui/screens/LanguageSelectorScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/LegalDocumentsScreen.js +3 -1
- package/lib/commonjs/ui/screens/LegalDocumentsScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/PremiumSubscriptionScreen.js +11 -12
- package/lib/commonjs/ui/screens/PremiumSubscriptionScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/PrivacySettingsScreen.js +12 -4
- package/lib/commonjs/ui/screens/PrivacySettingsScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/SearchSettingsScreen.js +3 -1
- package/lib/commonjs/ui/screens/SearchSettingsScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/SessionManagementScreen.js +15 -5
- package/lib/commonjs/ui/screens/SessionManagementScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/UserLinksScreen.js +3 -1
- package/lib/commonjs/ui/screens/UserLinksScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/WelcomeNewUserScreen.js +2 -1
- package/lib/commonjs/ui/screens/WelcomeNewUserScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/karma/KarmaAboutScreen.js +2 -4
- package/lib/commonjs/ui/screens/karma/KarmaAboutScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/karma/KarmaCenterScreen.js +3 -3
- package/lib/commonjs/ui/screens/karma/KarmaCenterScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/karma/KarmaRewardsScreen.js +3 -3
- package/lib/commonjs/ui/screens/karma/KarmaRewardsScreen.js.map +1 -1
- package/lib/commonjs/ui/styles/authStyles.js +5 -4
- package/lib/commonjs/ui/styles/authStyles.js.map +1 -1
- package/lib/commonjs/ui/styles/fonts.js +27 -27
- package/lib/commonjs/ui/styles/fonts.js.map +1 -1
- package/lib/commonjs/ui/styles/theme.js +3 -3
- package/lib/commonjs/ui/styles/theme.js.map +1 -1
- package/lib/commonjs/web.js +682 -0
- package/lib/commonjs/web.js.map +1 -0
- package/lib/module/assets/assets/fonts/Inter/Inter_18pt-Black.ttf +0 -0
- package/lib/module/assets/assets/fonts/Inter/Inter_18pt-Bold.ttf +0 -0
- package/lib/module/assets/assets/fonts/Inter/Inter_18pt-ExtraBold.ttf +0 -0
- package/lib/module/assets/assets/fonts/Inter/Inter_18pt-Light.ttf +0 -0
- package/lib/module/assets/assets/fonts/Inter/Inter_18pt-Medium.ttf +0 -0
- package/lib/module/assets/assets/fonts/Inter/Inter_18pt-Regular.ttf +0 -0
- package/lib/module/assets/assets/fonts/Inter/Inter_18pt-SemiBold.ttf +0 -0
- package/lib/module/assets/fonts/Inter/Inter_18pt-Black.ttf +0 -0
- package/lib/module/assets/fonts/Inter/Inter_18pt-Bold.ttf +0 -0
- package/lib/module/assets/fonts/Inter/Inter_18pt-ExtraBold.ttf +0 -0
- package/lib/module/assets/fonts/Inter/Inter_18pt-Light.ttf +0 -0
- package/lib/module/assets/fonts/Inter/Inter_18pt-Medium.ttf +0 -0
- package/lib/module/assets/fonts/Inter/Inter_18pt-Regular.ttf +0 -0
- package/lib/module/assets/fonts/Inter/Inter_18pt-SemiBold.ttf +0 -0
- package/lib/module/core/HttpService.js +87 -2
- package/lib/module/core/HttpService.js.map +1 -1
- package/lib/module/core/mixins/OxyServices.assets.js +3 -1
- package/lib/module/core/mixins/OxyServices.assets.js.map +1 -1
- package/lib/module/i18n/locales/en-US.json +3 -3
- package/lib/module/i18n/locales/es-ES.json +240 -19
- package/lib/module/ui/components/Avatar.js +1 -1
- package/lib/module/ui/components/Avatar.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/FontLoader.js +34 -34
- package/lib/module/ui/components/FontLoader.js.map +1 -1
- package/lib/module/ui/components/Header.js +4 -4
- package/lib/module/ui/components/Header.js.map +1 -1
- package/lib/module/ui/components/OxyPayButton.js +1 -1
- package/lib/module/ui/components/OxyPayButton.js.map +1 -1
- package/lib/module/ui/components/OxySignInButton.js +2 -1
- package/lib/module/ui/components/OxySignInButton.js.map +1 -1
- package/lib/module/ui/components/ProfileCard.js +1 -1
- package/lib/module/ui/components/ProfileCard.js.map +1 -1
- package/lib/module/ui/components/SectionTitle.js +1 -1
- package/lib/module/ui/components/SectionTitle.js.map +1 -1
- package/lib/module/ui/components/StepBasedScreen.js +2 -1
- package/lib/module/ui/components/StepBasedScreen.js.map +1 -1
- package/lib/module/ui/components/feedback/feedbackStyles.js +2 -1
- package/lib/module/ui/components/feedback/feedbackStyles.js.map +1 -1
- package/lib/module/ui/components/fileManagement/styles.js +17 -17
- package/lib/module/ui/components/fileManagement/styles.js.map +1 -1
- package/lib/module/ui/components/payment/paymentStyles.js +7 -7
- package/lib/module/ui/components/payment/paymentStyles.js.map +1 -1
- package/lib/module/ui/navigation/routes.js +2 -0
- package/lib/module/ui/navigation/routes.js.map +1 -1
- package/lib/module/ui/screens/AccountCenterScreen.js +4 -2
- package/lib/module/ui/screens/AccountCenterScreen.js.map +1 -1
- package/lib/module/ui/screens/AccountOverviewScreen.js +13 -5
- package/lib/module/ui/screens/AccountOverviewScreen.js.map +1 -1
- package/lib/module/ui/screens/AccountSettingsScreen.js +277 -1824
- package/lib/module/ui/screens/AccountSettingsScreen.js.map +1 -1
- package/lib/module/ui/screens/AccountSwitcherScreen.js +1 -1
- package/lib/module/ui/screens/AccountSwitcherScreen.js.map +1 -1
- package/lib/module/ui/screens/AccountVerificationScreen.js +3 -1
- package/lib/module/ui/screens/AccountVerificationScreen.js.map +1 -1
- package/lib/module/ui/screens/AppInfoScreen.js +2 -2
- package/lib/module/ui/screens/AppInfoScreen.js.map +1 -1
- package/lib/module/ui/screens/EditProfileFieldScreen.js +635 -0
- package/lib/module/ui/screens/EditProfileFieldScreen.js.map +1 -0
- package/lib/module/ui/screens/FileManagementScreen.js +39 -21
- package/lib/module/ui/screens/FileManagementScreen.js.map +1 -1
- package/lib/module/ui/screens/HistoryViewScreen.js +9 -3
- package/lib/module/ui/screens/HistoryViewScreen.js.map +1 -1
- package/lib/module/ui/screens/LanguageSelectorScreen.js +4 -2
- package/lib/module/ui/screens/LanguageSelectorScreen.js.map +1 -1
- package/lib/module/ui/screens/LegalDocumentsScreen.js +3 -1
- package/lib/module/ui/screens/LegalDocumentsScreen.js.map +1 -1
- package/lib/module/ui/screens/PremiumSubscriptionScreen.js +11 -12
- package/lib/module/ui/screens/PremiumSubscriptionScreen.js.map +1 -1
- package/lib/module/ui/screens/PrivacySettingsScreen.js +12 -4
- package/lib/module/ui/screens/PrivacySettingsScreen.js.map +1 -1
- package/lib/module/ui/screens/SearchSettingsScreen.js +3 -1
- package/lib/module/ui/screens/SearchSettingsScreen.js.map +1 -1
- package/lib/module/ui/screens/SessionManagementScreen.js +15 -5
- package/lib/module/ui/screens/SessionManagementScreen.js.map +1 -1
- package/lib/module/ui/screens/UserLinksScreen.js +3 -1
- package/lib/module/ui/screens/UserLinksScreen.js.map +1 -1
- package/lib/module/ui/screens/WelcomeNewUserScreen.js +2 -1
- package/lib/module/ui/screens/WelcomeNewUserScreen.js.map +1 -1
- package/lib/module/ui/screens/karma/KarmaAboutScreen.js +2 -4
- package/lib/module/ui/screens/karma/KarmaAboutScreen.js.map +1 -1
- package/lib/module/ui/screens/karma/KarmaCenterScreen.js +3 -3
- package/lib/module/ui/screens/karma/KarmaCenterScreen.js.map +1 -1
- package/lib/module/ui/screens/karma/KarmaRewardsScreen.js +3 -3
- package/lib/module/ui/screens/karma/KarmaRewardsScreen.js.map +1 -1
- package/lib/module/ui/styles/authStyles.js +5 -4
- package/lib/module/ui/styles/authStyles.js.map +1 -1
- package/lib/module/ui/styles/fonts.js +27 -27
- package/lib/module/ui/styles/fonts.js.map +1 -1
- package/lib/module/ui/styles/theme.js +3 -3
- package/lib/module/ui/styles/theme.js.map +1 -1
- package/lib/module/web.js +75 -0
- package/lib/module/web.js.map +1 -0
- package/lib/typescript/commonjs/core/HttpService.d.ts +5 -0
- package/lib/typescript/commonjs/core/HttpService.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/OxySignInButton.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/StepBasedScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/feedback/feedbackStyles.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/navigation/routes.d.ts +1 -1
- package/lib/typescript/commonjs/ui/navigation/routes.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/AccountCenterScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/AccountOverviewScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/AccountSettingsScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/AccountVerificationScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/EditProfileFieldScreen.d.ts +13 -0
- package/lib/typescript/commonjs/ui/screens/EditProfileFieldScreen.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/screens/FileManagementScreen.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/PremiumSubscriptionScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/PrivacySettingsScreen.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/WelcomeNewUserScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/karma/KarmaAboutScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/styles/fonts.d.ts +7 -7
- package/lib/typescript/commonjs/ui/styles/theme.d.ts.map +1 -1
- package/lib/typescript/commonjs/web.d.ts +54 -0
- package/lib/typescript/commonjs/web.d.ts.map +1 -0
- package/lib/typescript/module/core/HttpService.d.ts +5 -0
- package/lib/typescript/module/core/HttpService.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/OxySignInButton.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/StepBasedScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/feedback/feedbackStyles.d.ts.map +1 -1
- package/lib/typescript/module/ui/navigation/routes.d.ts +1 -1
- package/lib/typescript/module/ui/navigation/routes.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/AccountCenterScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/AccountOverviewScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/AccountSettingsScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/AccountVerificationScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/EditProfileFieldScreen.d.ts +13 -0
- package/lib/typescript/module/ui/screens/EditProfileFieldScreen.d.ts.map +1 -0
- package/lib/typescript/module/ui/screens/FileManagementScreen.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/PremiumSubscriptionScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/PrivacySettingsScreen.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/WelcomeNewUserScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/karma/KarmaAboutScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/styles/fonts.d.ts +7 -7
- package/lib/typescript/module/ui/styles/theme.d.ts.map +1 -1
- package/lib/typescript/module/web.d.ts +54 -0
- package/lib/typescript/module/web.d.ts.map +1 -0
- package/package.json +27 -41
- package/src/assets/fonts/Inter/Inter_18pt-Black.ttf +0 -0
- package/src/assets/fonts/Inter/Inter_18pt-Bold.ttf +0 -0
- package/src/assets/fonts/Inter/Inter_18pt-ExtraBold.ttf +0 -0
- package/src/assets/fonts/Inter/Inter_18pt-Light.ttf +0 -0
- package/src/assets/fonts/Inter/Inter_18pt-Medium.ttf +0 -0
- package/src/assets/fonts/Inter/Inter_18pt-Regular.ttf +0 -0
- package/src/assets/fonts/Inter/Inter_18pt-SemiBold.ttf +0 -0
- package/src/core/HttpService.ts +91 -0
- package/src/core/mixins/OxyServices.assets.ts +1 -1
- package/src/i18n/locales/en-US.json +3 -3
- package/src/i18n/locales/es-ES.json +240 -19
- package/src/ui/components/Avatar.tsx +1 -1
- package/src/ui/components/FollowButton.tsx +1 -1
- package/src/ui/components/FontLoader.tsx +34 -34
- package/src/ui/components/Header.tsx +4 -4
- package/src/ui/components/OxyPayButton.tsx +1 -1
- package/src/ui/components/OxySignInButton.tsx +2 -1
- package/src/ui/components/ProfileCard.tsx +1 -1
- package/src/ui/components/SectionTitle.tsx +1 -1
- package/src/ui/components/StepBasedScreen.tsx +2 -1
- package/src/ui/components/feedback/feedbackStyles.ts +2 -1
- package/src/ui/components/fileManagement/styles.ts +17 -17
- package/src/ui/components/payment/paymentStyles.ts +7 -7
- package/src/ui/navigation/routes.ts +3 -0
- package/src/ui/screens/AccountCenterScreen.tsx +4 -2
- package/src/ui/screens/AccountOverviewScreen.tsx +13 -5
- package/src/ui/screens/AccountSettingsScreen.tsx +35 -1511
- package/src/ui/screens/AccountSwitcherScreen.tsx +1 -1
- package/src/ui/screens/AccountVerificationScreen.tsx +3 -1
- package/src/ui/screens/AppInfoScreen.tsx +2 -2
- package/src/ui/screens/EditProfileFieldScreen.tsx +685 -0
- package/src/ui/screens/FileManagementScreen.tsx +33 -15
- package/src/ui/screens/HistoryViewScreen.tsx +9 -3
- package/src/ui/screens/LanguageSelectorScreen.tsx +4 -2
- package/src/ui/screens/LegalDocumentsScreen.tsx +3 -1
- package/src/ui/screens/PremiumSubscriptionScreen.tsx +11 -13
- package/src/ui/screens/PrivacySettingsScreen.tsx +12 -4
- package/src/ui/screens/SearchSettingsScreen.tsx +3 -1
- package/src/ui/screens/SessionManagementScreen.tsx +15 -5
- package/src/ui/screens/UserLinksScreen.tsx +3 -1
- package/src/ui/screens/WelcomeNewUserScreen.tsx +2 -1
- package/src/ui/screens/karma/KarmaAboutScreen.tsx +6 -8
- package/src/ui/screens/karma/KarmaCenterScreen.tsx +3 -3
- package/src/ui/screens/karma/KarmaRewardsScreen.tsx +3 -3
- package/src/ui/styles/authStyles.ts +4 -4
- package/src/ui/styles/fonts.ts +26 -26
- package/src/ui/styles/theme.ts +3 -5
- package/src/web.ts +230 -0
- package/lib/commonjs/assets/assets/fonts/Phudu/Phudu-Black.ttf +0 -0
- package/lib/commonjs/assets/assets/fonts/Phudu/Phudu-Bold.ttf +0 -0
- package/lib/commonjs/assets/assets/fonts/Phudu/Phudu-ExtraBold.ttf +0 -0
- package/lib/commonjs/assets/assets/fonts/Phudu/Phudu-Light.ttf +0 -0
- package/lib/commonjs/assets/assets/fonts/Phudu/Phudu-Medium.ttf +0 -0
- package/lib/commonjs/assets/assets/fonts/Phudu/Phudu-Regular.ttf +0 -0
- package/lib/commonjs/assets/assets/fonts/Phudu/Phudu-SemiBold.ttf +0 -0
- package/lib/commonjs/assets/fonts/Phudu/Phudu-Black.ttf +0 -0
- package/lib/commonjs/assets/fonts/Phudu/Phudu-Bold.ttf +0 -0
- package/lib/commonjs/assets/fonts/Phudu/Phudu-ExtraBold.ttf +0 -0
- package/lib/commonjs/assets/fonts/Phudu/Phudu-Light.ttf +0 -0
- package/lib/commonjs/assets/fonts/Phudu/Phudu-Medium.ttf +0 -0
- package/lib/commonjs/assets/fonts/Phudu/Phudu-Regular.ttf +0 -0
- package/lib/commonjs/assets/fonts/Phudu/Phudu-SemiBold.ttf +0 -0
- package/lib/commonjs/ui/components/profile/EditBioModal.js +0 -49
- package/lib/commonjs/ui/components/profile/EditBioModal.js.map +0 -1
- package/lib/commonjs/ui/components/profile/EditDisplayNameModal.js +0 -54
- package/lib/commonjs/ui/components/profile/EditDisplayNameModal.js.map +0 -1
- package/lib/commonjs/ui/components/profile/EditEmailModal.js +0 -57
- package/lib/commonjs/ui/components/profile/EditEmailModal.js.map +0 -1
- package/lib/commonjs/ui/components/profile/EditFieldModal.js +0 -412
- package/lib/commonjs/ui/components/profile/EditFieldModal.js.map +0 -1
- package/lib/commonjs/ui/components/profile/EditLinksModal.js +0 -315
- package/lib/commonjs/ui/components/profile/EditLinksModal.js.map +0 -1
- package/lib/commonjs/ui/components/profile/EditLocationModal.js +0 -91
- package/lib/commonjs/ui/components/profile/EditLocationModal.js.map +0 -1
- package/lib/commonjs/ui/components/profile/EditUsernameModal.js +0 -55
- package/lib/commonjs/ui/components/profile/EditUsernameModal.js.map +0 -1
- package/lib/module/assets/assets/fonts/Phudu/Phudu-Black.ttf +0 -0
- package/lib/module/assets/assets/fonts/Phudu/Phudu-Bold.ttf +0 -0
- package/lib/module/assets/assets/fonts/Phudu/Phudu-ExtraBold.ttf +0 -0
- package/lib/module/assets/assets/fonts/Phudu/Phudu-Light.ttf +0 -0
- package/lib/module/assets/assets/fonts/Phudu/Phudu-Medium.ttf +0 -0
- package/lib/module/assets/assets/fonts/Phudu/Phudu-Regular.ttf +0 -0
- package/lib/module/assets/assets/fonts/Phudu/Phudu-SemiBold.ttf +0 -0
- package/lib/module/assets/fonts/Phudu/Phudu-Black.ttf +0 -0
- package/lib/module/assets/fonts/Phudu/Phudu-Bold.ttf +0 -0
- package/lib/module/assets/fonts/Phudu/Phudu-ExtraBold.ttf +0 -0
- package/lib/module/assets/fonts/Phudu/Phudu-Light.ttf +0 -0
- package/lib/module/assets/fonts/Phudu/Phudu-Medium.ttf +0 -0
- package/lib/module/assets/fonts/Phudu/Phudu-Regular.ttf +0 -0
- package/lib/module/assets/fonts/Phudu/Phudu-SemiBold.ttf +0 -0
- package/lib/module/ui/components/profile/EditBioModal.js +0 -43
- package/lib/module/ui/components/profile/EditBioModal.js.map +0 -1
- package/lib/module/ui/components/profile/EditDisplayNameModal.js +0 -48
- package/lib/module/ui/components/profile/EditDisplayNameModal.js.map +0 -1
- package/lib/module/ui/components/profile/EditEmailModal.js +0 -51
- package/lib/module/ui/components/profile/EditEmailModal.js.map +0 -1
- package/lib/module/ui/components/profile/EditFieldModal.js +0 -406
- package/lib/module/ui/components/profile/EditFieldModal.js.map +0 -1
- package/lib/module/ui/components/profile/EditLinksModal.js +0 -309
- package/lib/module/ui/components/profile/EditLinksModal.js.map +0 -1
- package/lib/module/ui/components/profile/EditLocationModal.js +0 -85
- package/lib/module/ui/components/profile/EditLocationModal.js.map +0 -1
- package/lib/module/ui/components/profile/EditUsernameModal.js +0 -49
- package/lib/module/ui/components/profile/EditUsernameModal.js.map +0 -1
- package/lib/typescript/commonjs/ui/components/profile/EditBioModal.d.ts +0 -11
- package/lib/typescript/commonjs/ui/components/profile/EditBioModal.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/profile/EditDisplayNameModal.d.ts +0 -12
- package/lib/typescript/commonjs/ui/components/profile/EditDisplayNameModal.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/profile/EditEmailModal.d.ts +0 -11
- package/lib/typescript/commonjs/ui/components/profile/EditEmailModal.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/profile/EditFieldModal.d.ts +0 -110
- package/lib/typescript/commonjs/ui/components/profile/EditFieldModal.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/profile/EditLinksModal.d.ts +0 -18
- package/lib/typescript/commonjs/ui/components/profile/EditLinksModal.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/profile/EditLocationModal.d.ts +0 -21
- package/lib/typescript/commonjs/ui/components/profile/EditLocationModal.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/profile/EditUsernameModal.d.ts +0 -11
- package/lib/typescript/commonjs/ui/components/profile/EditUsernameModal.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/profile/EditBioModal.d.ts +0 -11
- package/lib/typescript/module/ui/components/profile/EditBioModal.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/profile/EditDisplayNameModal.d.ts +0 -12
- package/lib/typescript/module/ui/components/profile/EditDisplayNameModal.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/profile/EditEmailModal.d.ts +0 -11
- package/lib/typescript/module/ui/components/profile/EditEmailModal.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/profile/EditFieldModal.d.ts +0 -110
- package/lib/typescript/module/ui/components/profile/EditFieldModal.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/profile/EditLinksModal.d.ts +0 -18
- package/lib/typescript/module/ui/components/profile/EditLinksModal.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/profile/EditLocationModal.d.ts +0 -21
- package/lib/typescript/module/ui/components/profile/EditLocationModal.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/profile/EditUsernameModal.d.ts +0 -11
- package/lib/typescript/module/ui/components/profile/EditUsernameModal.d.ts.map +0 -1
- package/src/assets/fonts/Phudu/Phudu-Black.ttf +0 -0
- package/src/assets/fonts/Phudu/Phudu-Bold.ttf +0 -0
- package/src/assets/fonts/Phudu/Phudu-ExtraBold.ttf +0 -0
- package/src/assets/fonts/Phudu/Phudu-Light.ttf +0 -0
- package/src/assets/fonts/Phudu/Phudu-Medium.ttf +0 -0
- package/src/assets/fonts/Phudu/Phudu-Regular.ttf +0 -0
- package/src/assets/fonts/Phudu/Phudu-SemiBold.ttf +0 -0
- package/src/ui/components/profile/EditBioModal.tsx +0 -46
- package/src/ui/components/profile/EditDisplayNameModal.tsx +0 -56
- package/src/ui/components/profile/EditEmailModal.tsx +0 -57
- package/src/ui/components/profile/EditFieldModal.tsx +0 -465
- package/src/ui/components/profile/EditLinksModal.tsx +0 -316
- package/src/ui/components/profile/EditLocationModal.tsx +0 -91
- package/src/ui/components/profile/EditUsernameModal.tsx +0 -55
package/src/core/HttpService.ts
CHANGED
|
@@ -53,6 +53,8 @@ class TokenStore {
|
|
|
53
53
|
private static instance: TokenStore;
|
|
54
54
|
private accessToken: string | null = null;
|
|
55
55
|
private refreshToken: string | null = null;
|
|
56
|
+
private csrfToken: string | null = null;
|
|
57
|
+
private csrfTokenFetchPromise: Promise<string | null> | null = null;
|
|
56
58
|
|
|
57
59
|
private constructor() {}
|
|
58
60
|
|
|
@@ -84,6 +86,27 @@ class TokenStore {
|
|
|
84
86
|
hasAccessToken(): boolean {
|
|
85
87
|
return !!this.accessToken;
|
|
86
88
|
}
|
|
89
|
+
|
|
90
|
+
setCsrfToken(token: string | null): void {
|
|
91
|
+
this.csrfToken = token;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
getCsrfToken(): string | null {
|
|
95
|
+
return this.csrfToken;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
setCsrfTokenFetchPromise(promise: Promise<string | null> | null): void {
|
|
99
|
+
this.csrfTokenFetchPromise = promise;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
getCsrfTokenFetchPromise(): Promise<string | null> | null {
|
|
103
|
+
return this.csrfTokenFetchPromise;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
clearCsrfToken(): void {
|
|
107
|
+
this.csrfToken = null;
|
|
108
|
+
this.csrfTokenFetchPromise = null;
|
|
109
|
+
}
|
|
87
110
|
}
|
|
88
111
|
|
|
89
112
|
/**
|
|
@@ -206,6 +229,10 @@ export class HttpService {
|
|
|
206
229
|
// Get auth token (with auto-refresh)
|
|
207
230
|
const authHeader = await this.getAuthHeader();
|
|
208
231
|
|
|
232
|
+
// Get CSRF token for state-changing requests
|
|
233
|
+
const isStateChangingMethod = ['POST', 'PUT', 'PATCH', 'DELETE'].includes(method);
|
|
234
|
+
const csrfToken = isStateChangingMethod ? await this.fetchCsrfToken() : null;
|
|
235
|
+
|
|
209
236
|
// Determine if data is FormData using robust detection
|
|
210
237
|
const isFormData = this.isFormData(data);
|
|
211
238
|
|
|
@@ -232,6 +259,11 @@ export class HttpService {
|
|
|
232
259
|
headers['Authorization'] = authHeader;
|
|
233
260
|
}
|
|
234
261
|
|
|
262
|
+
// Add CSRF token header for state-changing requests
|
|
263
|
+
if (csrfToken) {
|
|
264
|
+
headers['X-CSRF-Token'] = csrfToken;
|
|
265
|
+
}
|
|
266
|
+
|
|
235
267
|
// Merge custom headers if provided
|
|
236
268
|
if (config.headers) {
|
|
237
269
|
Object.entries(config.headers).forEach(([key, value]) => {
|
|
@@ -254,6 +286,7 @@ export class HttpService {
|
|
|
254
286
|
headers,
|
|
255
287
|
body: bodyValue as BodyInit | null | undefined,
|
|
256
288
|
signal: controller.signal,
|
|
289
|
+
credentials: 'include', // Include cookies for cross-origin requests (CSRF, session)
|
|
257
290
|
});
|
|
258
291
|
|
|
259
292
|
if (timeoutId) clearTimeout(timeoutId);
|
|
@@ -416,6 +449,62 @@ export class HttpService {
|
|
|
416
449
|
return queryString ? `${base}${base.includes('?') ? '&' : '?'}${queryString}` : base;
|
|
417
450
|
}
|
|
418
451
|
|
|
452
|
+
/**
|
|
453
|
+
* Fetch CSRF token from server (with deduplication)
|
|
454
|
+
* Required for state-changing requests (POST, PUT, PATCH, DELETE)
|
|
455
|
+
*/
|
|
456
|
+
private async fetchCsrfToken(): Promise<string | null> {
|
|
457
|
+
// Return cached token if available
|
|
458
|
+
const cachedToken = this.tokenStore.getCsrfToken();
|
|
459
|
+
if (cachedToken) {
|
|
460
|
+
return cachedToken;
|
|
461
|
+
}
|
|
462
|
+
|
|
463
|
+
// Deduplicate concurrent CSRF token fetches
|
|
464
|
+
const existingPromise = this.tokenStore.getCsrfTokenFetchPromise();
|
|
465
|
+
if (existingPromise) {
|
|
466
|
+
return existingPromise;
|
|
467
|
+
}
|
|
468
|
+
|
|
469
|
+
const fetchPromise = (async () => {
|
|
470
|
+
try {
|
|
471
|
+
const response = await fetch(`${this.baseURL}/api/csrf-token`, {
|
|
472
|
+
method: 'GET',
|
|
473
|
+
headers: { 'Accept': 'application/json' },
|
|
474
|
+
credentials: 'include', // Required to receive and send cookies
|
|
475
|
+
signal: AbortSignal.timeout(5000),
|
|
476
|
+
});
|
|
477
|
+
|
|
478
|
+
if (response.ok) {
|
|
479
|
+
const data = await response.json() as { csrfToken?: string };
|
|
480
|
+
const token = data.csrfToken || null;
|
|
481
|
+
this.tokenStore.setCsrfToken(token);
|
|
482
|
+
this.logger.debug('CSRF token fetched');
|
|
483
|
+
return token;
|
|
484
|
+
}
|
|
485
|
+
|
|
486
|
+
// Also check response header for CSRF token
|
|
487
|
+
const headerToken = response.headers.get('X-CSRF-Token');
|
|
488
|
+
if (headerToken) {
|
|
489
|
+
this.tokenStore.setCsrfToken(headerToken);
|
|
490
|
+
this.logger.debug('CSRF token from header');
|
|
491
|
+
return headerToken;
|
|
492
|
+
}
|
|
493
|
+
|
|
494
|
+
this.logger.warn('Failed to fetch CSRF token:', response.status);
|
|
495
|
+
return null;
|
|
496
|
+
} catch (error) {
|
|
497
|
+
this.logger.warn('CSRF token fetch error:', error);
|
|
498
|
+
return null;
|
|
499
|
+
} finally {
|
|
500
|
+
this.tokenStore.setCsrfTokenFetchPromise(null);
|
|
501
|
+
}
|
|
502
|
+
})();
|
|
503
|
+
|
|
504
|
+
this.tokenStore.setCsrfTokenFetchPromise(fetchPromise);
|
|
505
|
+
return fetchPromise;
|
|
506
|
+
}
|
|
507
|
+
|
|
419
508
|
/**
|
|
420
509
|
* Get auth header with automatic token refresh
|
|
421
510
|
*/
|
|
@@ -439,6 +528,7 @@ export class HttpService {
|
|
|
439
528
|
method: 'GET',
|
|
440
529
|
headers: { 'Accept': 'application/json' },
|
|
441
530
|
signal: AbortSignal.timeout(5000),
|
|
531
|
+
credentials: 'include', // Include cookies for cross-origin requests
|
|
442
532
|
});
|
|
443
533
|
|
|
444
534
|
if (response.ok) {
|
|
@@ -568,6 +658,7 @@ export class HttpService {
|
|
|
568
658
|
|
|
569
659
|
clearTokens(): void {
|
|
570
660
|
this.tokenStore.clearTokens();
|
|
661
|
+
this.tokenStore.clearCsrfToken();
|
|
571
662
|
}
|
|
572
663
|
|
|
573
664
|
getAccessToken(): string | null {
|
|
@@ -402,7 +402,7 @@ export function OxyServicesAssetsMixin<T extends typeof OxyServicesBase>(Base: T
|
|
|
402
402
|
public async fetchAssetContent(url: string, type: 'text'): Promise<string>;
|
|
403
403
|
public async fetchAssetContent(url: string, type: 'blob'): Promise<Blob>;
|
|
404
404
|
public async fetchAssetContent(url: string, type: 'text' | 'blob') {
|
|
405
|
-
const response = await fetch(url);
|
|
405
|
+
const response = await fetch(url, { credentials: 'include' });
|
|
406
406
|
if (!response?.ok) {
|
|
407
407
|
throw new Error(`Failed to fetch asset content (status ${response?.status})`);
|
|
408
408
|
}
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
"viewAllAccounts": "View {{count}} more",
|
|
46
46
|
"status": {
|
|
47
47
|
"accountSwitched": "Now using {{name}}"
|
|
48
|
-
}
|
|
48
|
+
}
|
|
49
49
|
},
|
|
50
50
|
"signup": {
|
|
51
51
|
"welcome": {
|
|
@@ -580,7 +580,7 @@
|
|
|
580
580
|
"verifyAccount": {
|
|
581
581
|
"title": "Verify Account",
|
|
582
582
|
"subtitle": "Get a verified badge"
|
|
583
|
-
}
|
|
583
|
+
}
|
|
584
584
|
},
|
|
585
585
|
"confirms": {
|
|
586
586
|
"removeAvatar": "Remove your profile picture?"
|
|
@@ -594,7 +594,7 @@
|
|
|
594
594
|
"avatarSelected": "Avatar selected",
|
|
595
595
|
"avatarUpdated": "Avatar updated",
|
|
596
596
|
"updateAvatarFailed": "Failed to update avatar",
|
|
597
|
-
"noActiveSession": "No active session"
|
|
597
|
+
"noActiveSession": "No active session"
|
|
598
598
|
}
|
|
599
599
|
},
|
|
600
600
|
"accountOverview": {
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
"viewAllAccounts": "Ver {{count}} más",
|
|
46
46
|
"status": {
|
|
47
47
|
"accountSwitched": "Ahora usando {{name}}"
|
|
48
|
-
}
|
|
48
|
+
}
|
|
49
49
|
},
|
|
50
50
|
"signup": {
|
|
51
51
|
"welcome": {
|
|
@@ -91,7 +91,15 @@
|
|
|
91
91
|
},
|
|
92
92
|
"notSet": "Sin definir",
|
|
93
93
|
"securityTip": "Para mayor seguridad, habilita la autenticación biométrica en Configuración de la cuenta después de crear tu cuenta.",
|
|
94
|
-
"legalReminder": "Al crear una cuenta, aceptas nuestros Términos de servicio y Política de privacidad."
|
|
94
|
+
"legalReminder": "Al crear una cuenta, aceptas nuestros Términos de servicio y Política de privacidad.",
|
|
95
|
+
"sections": {
|
|
96
|
+
"account": "Información de la cuenta",
|
|
97
|
+
"next": "Próximos pasos"
|
|
98
|
+
},
|
|
99
|
+
"next": {
|
|
100
|
+
"securityTitle": "Mantén tu cuenta segura",
|
|
101
|
+
"legalTitle": "Todo listo"
|
|
102
|
+
}
|
|
95
103
|
}
|
|
96
104
|
},
|
|
97
105
|
"profile": {
|
|
@@ -116,7 +124,8 @@
|
|
|
116
124
|
"username": {
|
|
117
125
|
"label": "Usuario",
|
|
118
126
|
"placeholder": "Introduce tu usuario",
|
|
119
|
-
"errorRequired": "Por favor, introduce tu usuario."
|
|
127
|
+
"errorRequired": "Por favor, introduce tu usuario.",
|
|
128
|
+
"helper": "Introduce tu usuario o correo electrónico"
|
|
120
129
|
},
|
|
121
130
|
"verify": {
|
|
122
131
|
"title": "Verificar código",
|
|
@@ -180,14 +189,12 @@
|
|
|
180
189
|
},
|
|
181
190
|
"privacySettings": {
|
|
182
191
|
"title": "Ajustes de privacidad",
|
|
183
|
-
"subtitle": "Controla quién puede ver tu perfil"
|
|
184
|
-
"coming": "¡Los ajustes de privacidad estarán disponibles pronto!"
|
|
192
|
+
"subtitle": "Controla quién puede ver tu perfil"
|
|
185
193
|
},
|
|
186
194
|
"verifyAccount": {
|
|
187
195
|
"title": "Verificar cuenta",
|
|
188
|
-
"subtitle": "Obtén una insignia verificada"
|
|
189
|
-
|
|
190
|
-
},
|
|
196
|
+
"subtitle": "Obtén una insignia verificada"
|
|
197
|
+
}
|
|
191
198
|
},
|
|
192
199
|
"confirms": {
|
|
193
200
|
"removeAvatar": "¿Eliminar tu foto de perfil?"
|
|
@@ -201,7 +208,7 @@
|
|
|
201
208
|
"avatarSelected": "Avatar seleccionado",
|
|
202
209
|
"avatarUpdated": "Avatar actualizado",
|
|
203
210
|
"updateAvatarFailed": "Error al actualizar el avatar",
|
|
204
|
-
"noActiveSession": "No hay sesión activa"
|
|
211
|
+
"noActiveSession": "No hay sesión activa"
|
|
205
212
|
}
|
|
206
213
|
},
|
|
207
214
|
"common": {
|
|
@@ -289,23 +296,27 @@
|
|
|
289
296
|
"subtitle": "Métodos de pago y facturas",
|
|
290
297
|
"coming": "¡La gestión de facturación estará disponible pronto!"
|
|
291
298
|
},
|
|
292
|
-
"accountSwitcher": {
|
|
293
|
-
"titleShow": "Mostrar conmutador de cuentas",
|
|
294
|
-
"titleHide": "Ocultar conmutador de cuentas",
|
|
295
|
-
"subtitleHide": "Ocultar el conmutador de cuentas",
|
|
296
|
-
"subtitleSwitchBetween": "Cambiar entre {{count}} cuentas",
|
|
297
|
-
"subtitleLoading": "Cargando cuentas adicionales...",
|
|
298
|
-
"subtitleManageMultiple": "Gestionar varias cuentas"
|
|
299
|
-
},
|
|
300
299
|
"downloadData": {
|
|
301
300
|
"title": "Descargar mis datos",
|
|
302
301
|
"subtitle": "Exporta la información de tu cuenta",
|
|
303
|
-
"
|
|
302
|
+
"confirmTitle": "Descargar datos de la cuenta",
|
|
303
|
+
"confirmMessage": "Elige el formato para exportar los datos de tu cuenta:",
|
|
304
|
+
"downloading": "Preparando descarga...",
|
|
305
|
+
"success": "Datos descargados correctamente",
|
|
306
|
+
"error": "Error al descargar los datos"
|
|
304
307
|
},
|
|
305
308
|
"deleteAccount": {
|
|
306
309
|
"title": "Eliminar cuenta",
|
|
307
310
|
"subtitle": "Elimina tu cuenta permanentemente",
|
|
308
|
-
"
|
|
311
|
+
"confirmTitle": "Eliminar cuenta",
|
|
312
|
+
"confirmMessage": "Esta acción no se puede deshacer. Esto eliminará permanentemente tu cuenta y todos los datos asociados.\n\n¿Seguro que quieres eliminar tu cuenta?",
|
|
313
|
+
"finalConfirm": "Esta es tu advertencia final. Tu cuenta será eliminada permanentemente y no se podrá recuperar. Escribe \"{{username}}\" para confirmar.",
|
|
314
|
+
"confirm": "Eliminar para siempre",
|
|
315
|
+
"passwordRequired": "Se requiere confirmación de contraseña. Por favor, usa un modal con entrada de contraseña para completar la eliminación de la cuenta.",
|
|
316
|
+
"missingFields": "Se requiere contraseña y confirmación",
|
|
317
|
+
"confirmMismatch": "El texto de confirmación no coincide con el usuario",
|
|
318
|
+
"success": "Cuenta eliminada correctamente",
|
|
319
|
+
"error": "Error al eliminar la cuenta"
|
|
309
320
|
},
|
|
310
321
|
"preferences": {
|
|
311
322
|
"title": "Preferencias de la cuenta",
|
|
@@ -329,6 +340,30 @@
|
|
|
329
340
|
"signOut": {
|
|
330
341
|
"title": "Cerrar sesión",
|
|
331
342
|
"subtitle": "Cierra sesión en tu cuenta actual"
|
|
343
|
+
},
|
|
344
|
+
"history": {
|
|
345
|
+
"title": "Historial",
|
|
346
|
+
"subtitle": "Ver y gestionar tu historial de búsqueda"
|
|
347
|
+
},
|
|
348
|
+
"saves": {
|
|
349
|
+
"title": "Guardados y colecciones",
|
|
350
|
+
"subtitle": "Ver tus elementos guardados y colecciones"
|
|
351
|
+
},
|
|
352
|
+
"searchSettings": {
|
|
353
|
+
"title": "Configuración de búsqueda",
|
|
354
|
+
"subtitle": "SafeSearch y personalización"
|
|
355
|
+
},
|
|
356
|
+
"language": {
|
|
357
|
+
"title": "Idioma",
|
|
358
|
+
"subtitle": "Elige tu idioma preferido"
|
|
359
|
+
},
|
|
360
|
+
"privacyPolicy": {
|
|
361
|
+
"title": "Política de privacidad",
|
|
362
|
+
"subtitle": "Cómo manejamos tus datos"
|
|
363
|
+
},
|
|
364
|
+
"termsOfService": {
|
|
365
|
+
"title": "Términos de servicio",
|
|
366
|
+
"subtitle": "Términos y condiciones de uso"
|
|
332
367
|
}
|
|
333
368
|
},
|
|
334
369
|
"manageComing": "¡La gestión de tu cuenta Oxy estará disponible pronto!",
|
|
@@ -719,5 +754,191 @@
|
|
|
719
754
|
"enter": "Entrar",
|
|
720
755
|
"continue": "Continuar"
|
|
721
756
|
}
|
|
757
|
+
},
|
|
758
|
+
"history": {
|
|
759
|
+
"title": "Historial",
|
|
760
|
+
"actions": "Acciones",
|
|
761
|
+
"recent": "Historial reciente",
|
|
762
|
+
"loading": "Cargando historial...",
|
|
763
|
+
"empty": "Aún no hay historial",
|
|
764
|
+
"justNow": "Justo ahora",
|
|
765
|
+
"minutesAgo": "minutos atrás",
|
|
766
|
+
"hoursAgo": "horas atrás",
|
|
767
|
+
"daysAgo": "días atrás",
|
|
768
|
+
"deleteLast15Minutes": {
|
|
769
|
+
"title": "Eliminar últimos 15 minutos",
|
|
770
|
+
"subtitle": "Eliminar entradas recientes del historial",
|
|
771
|
+
"confirm": "¿Eliminar los últimos 15 minutos del historial?",
|
|
772
|
+
"success": "Últimos 15 minutos eliminados",
|
|
773
|
+
"error": "Error al eliminar el historial"
|
|
774
|
+
},
|
|
775
|
+
"clearAll": {
|
|
776
|
+
"title": "Borrar todo el historial",
|
|
777
|
+
"subtitle": "Eliminar todas las entradas del historial",
|
|
778
|
+
"confirm": "¿Borrar todo el historial? Esto no se puede deshacer.",
|
|
779
|
+
"success": "Historial borrado",
|
|
780
|
+
"error": "Error al borrar el historial"
|
|
781
|
+
}
|
|
782
|
+
},
|
|
783
|
+
"saves": {
|
|
784
|
+
"title": "Guardados y colecciones",
|
|
785
|
+
"tabs": {
|
|
786
|
+
"saves": "Guardados",
|
|
787
|
+
"collections": "Colecciones"
|
|
788
|
+
},
|
|
789
|
+
"loading": "Cargando...",
|
|
790
|
+
"empty": "Aún no hay elementos guardados",
|
|
791
|
+
"noCollections": "Aún no hay colecciones",
|
|
792
|
+
"savedItems": "Elementos guardados",
|
|
793
|
+
"collections": "Colecciones",
|
|
794
|
+
"loadError": "Error al cargar elementos guardados"
|
|
795
|
+
},
|
|
796
|
+
"searchSettings": {
|
|
797
|
+
"title": "Configuración de búsqueda",
|
|
798
|
+
"safeSearch": {
|
|
799
|
+
"title": "SafeSearch",
|
|
800
|
+
"label": "Activar SafeSearch",
|
|
801
|
+
"description": "Filtrar contenido explícito de los resultados de búsqueda",
|
|
802
|
+
"updated": "Configuración de SafeSearch actualizada",
|
|
803
|
+
"error": "Error al actualizar SafeSearch"
|
|
804
|
+
},
|
|
805
|
+
"personalization": {
|
|
806
|
+
"title": "Personalización de búsqueda",
|
|
807
|
+
"label": "Búsqueda personalizada",
|
|
808
|
+
"description": "Usa tu actividad para mejorar los resultados de búsqueda",
|
|
809
|
+
"updated": "Personalización de búsqueda actualizada",
|
|
810
|
+
"error": "Error al actualizar la personalización"
|
|
811
|
+
}
|
|
812
|
+
},
|
|
813
|
+
"privacySettings": {
|
|
814
|
+
"title": "Configuración de privacidad",
|
|
815
|
+
"loadError": "Error al cargar la configuración de privacidad",
|
|
816
|
+
"updated": "Configuración de privacidad actualizada",
|
|
817
|
+
"updateError": "Error al actualizar la configuración de privacidad",
|
|
818
|
+
"sections": {
|
|
819
|
+
"account": "PRIVACIDAD DE LA CUENTA",
|
|
820
|
+
"interactions": "INTERACCIONES",
|
|
821
|
+
"activity": "ACTIVIDAD Y DATOS",
|
|
822
|
+
"content": "CONTENIDO Y SEGURIDAD"
|
|
823
|
+
},
|
|
824
|
+
"isPrivateAccount": "Cuenta privada",
|
|
825
|
+
"isPrivateAccountDesc": "Solo los seguidores aprobados pueden ver tus publicaciones",
|
|
826
|
+
"profileVisibility": "Visibilidad del perfil",
|
|
827
|
+
"profileVisibilityDesc": "Controla quién puede ver tu perfil",
|
|
828
|
+
"hideOnlineStatus": "Ocultar estado en línea",
|
|
829
|
+
"hideOnlineStatusDesc": "No mostrar cuando estás en línea",
|
|
830
|
+
"hideLastSeen": "Ocultar última vez visto",
|
|
831
|
+
"hideLastSeenDesc": "No mostrar cuándo estuviste activo por última vez",
|
|
832
|
+
"allowTagging": "Permitir etiquetado",
|
|
833
|
+
"allowTaggingDesc": "Permite que otros te etiqueten en publicaciones",
|
|
834
|
+
"allowMentions": "Permitir menciones",
|
|
835
|
+
"allowMentionsDesc": "Permite que otros te mencionen",
|
|
836
|
+
"allowDirectMessages": "Permitir mensajes directos",
|
|
837
|
+
"allowDirectMessagesDesc": "Permite que otros te envíen mensajes directos",
|
|
838
|
+
"hideReadReceipts": "Ocultar confirmaciones de lectura",
|
|
839
|
+
"hideReadReceiptsDesc": "No mostrar confirmaciones de lectura en mensajes",
|
|
840
|
+
"showActivity": "Mostrar estado de actividad",
|
|
841
|
+
"showActivityDesc": "Mostrar tu actividad en tu perfil",
|
|
842
|
+
"dataSharing": "Compartir datos",
|
|
843
|
+
"dataSharingDesc": "Permitir compartir datos para personalización",
|
|
844
|
+
"locationSharing": "Compartir ubicación",
|
|
845
|
+
"locationSharingDesc": "Compartir tu ubicación",
|
|
846
|
+
"analyticsSharing": "Compartir análisis",
|
|
847
|
+
"analyticsSharingDesc": "Permitir recopilación de datos de análisis",
|
|
848
|
+
"sensitiveContent": "Mostrar contenido sensible",
|
|
849
|
+
"sensitiveContentDesc": "Permitir contenido sensible o explícito",
|
|
850
|
+
"autoFilter": "Filtro automático",
|
|
851
|
+
"autoFilterDesc": "Filtrar automáticamente contenido inapropiado",
|
|
852
|
+
"muteKeywords": "Silenciar palabras clave",
|
|
853
|
+
"muteKeywordsDesc": "Ocultar publicaciones que contengan palabras clave silenciadas",
|
|
854
|
+
"blockScreenshots": "Bloquear capturas de pantalla",
|
|
855
|
+
"blockScreenshotsDesc": "Evitar capturas de pantalla de tu contenido"
|
|
856
|
+
},
|
|
857
|
+
"accountVerification": {
|
|
858
|
+
"title": "Verificación de cuenta",
|
|
859
|
+
"description": "Solicita una insignia verificada para tu cuenta. Las cuentas verificadas ayudan a establecer autenticidad y credibilidad.",
|
|
860
|
+
"sections": {
|
|
861
|
+
"request": "SOLICITUD DE VERIFICACIÓN"
|
|
862
|
+
},
|
|
863
|
+
"reasonLabel": "Motivo de la verificación *",
|
|
864
|
+
"reasonPlaceholder": "Explica por qué necesitas una insignia verificada (p. ej., figura pública, marca, organización)",
|
|
865
|
+
"reasonRequired": "Por favor, proporciona un motivo para la verificación",
|
|
866
|
+
"evidenceLabel": "Evidencia (Opcional)",
|
|
867
|
+
"evidencePlaceholder": "Proporciona documentación de respaldo o enlaces (p. ej., sitio web oficial, perfiles de redes sociales)",
|
|
868
|
+
"submit": "Enviar solicitud",
|
|
869
|
+
"submitError": "Error al enviar la solicitud de verificación",
|
|
870
|
+
"successTitle": "Solicitud enviada",
|
|
871
|
+
"successMessage": "Tu solicitud de verificación ha sido enviada. ID de solicitud: {{requestId}}",
|
|
872
|
+
"ok": "OK",
|
|
873
|
+
"error": "Servicio no disponible",
|
|
874
|
+
"note": "Nota: Las solicitudes de verificación se revisan manualmente y pueden tardar varios días. Te notificaremos cuando tu solicitud haya sido revisada."
|
|
875
|
+
},
|
|
876
|
+
"help": {
|
|
877
|
+
"title": "Ayuda y soporte",
|
|
878
|
+
"options": "Obtener ayuda",
|
|
879
|
+
"resources": "Recursos",
|
|
880
|
+
"contactError": "Error al abrir el cliente de correo",
|
|
881
|
+
"reportError": "Error al abrir el cliente de correo",
|
|
882
|
+
"linkError": "Error al abrir el enlace",
|
|
883
|
+
"faqComing": "FAQ próximamente",
|
|
884
|
+
"faq": {
|
|
885
|
+
"title": "Preguntas frecuentes",
|
|
886
|
+
"subtitle": "Encuentra respuestas a preguntas comunes"
|
|
887
|
+
},
|
|
888
|
+
"contact": {
|
|
889
|
+
"title": "Contactar con soporte",
|
|
890
|
+
"subtitle": "Obtén ayuda de nuestro equipo de soporte"
|
|
891
|
+
},
|
|
892
|
+
"reportBug": {
|
|
893
|
+
"title": "Reportar un error",
|
|
894
|
+
"subtitle": "Ayúdanos a mejorar reportando problemas"
|
|
895
|
+
},
|
|
896
|
+
"documentation": {
|
|
897
|
+
"title": "Documentación",
|
|
898
|
+
"subtitle": "Guías de usuario y tutoriales"
|
|
899
|
+
},
|
|
900
|
+
"community": {
|
|
901
|
+
"title": "Comunidad",
|
|
902
|
+
"subtitle": "Únete a nuestra comunidad"
|
|
903
|
+
},
|
|
904
|
+
"developersPortal": {
|
|
905
|
+
"title": "Portal de desarrolladores",
|
|
906
|
+
"subtitle": "Documentación de API y recursos para desarrolladores"
|
|
907
|
+
}
|
|
908
|
+
},
|
|
909
|
+
"legal": {
|
|
910
|
+
"title": "Documentos legales",
|
|
911
|
+
"documents": "Documentos",
|
|
912
|
+
"policies": "Políticas y directrices",
|
|
913
|
+
"opening": "Abriendo documento...",
|
|
914
|
+
"openError": "Error al abrir el documento",
|
|
915
|
+
"privacyPolicy": {
|
|
916
|
+
"title": "Política de privacidad",
|
|
917
|
+
"subtitle": "Cómo manejamos tus datos"
|
|
918
|
+
},
|
|
919
|
+
"termsOfService": {
|
|
920
|
+
"title": "Términos de servicio",
|
|
921
|
+
"subtitle": "Términos y condiciones de uso"
|
|
922
|
+
},
|
|
923
|
+
"communityGuidelines": {
|
|
924
|
+
"title": "Directrices de la comunidad",
|
|
925
|
+
"subtitle": "Reglas y expectativas para nuestra comunidad"
|
|
926
|
+
},
|
|
927
|
+
"dataRetention": {
|
|
928
|
+
"title": "Política de retención de datos",
|
|
929
|
+
"subtitle": "Cuánto tiempo conservamos tus datos"
|
|
930
|
+
},
|
|
931
|
+
"contentModeration": {
|
|
932
|
+
"title": "Política de moderación de contenido",
|
|
933
|
+
"subtitle": "Cómo moderamos el contenido"
|
|
934
|
+
},
|
|
935
|
+
"childSafety": {
|
|
936
|
+
"title": "Política de seguridad infantil",
|
|
937
|
+
"subtitle": "Protegiendo a los menores en nuestra plataforma"
|
|
938
|
+
},
|
|
939
|
+
"cookiePolicy": {
|
|
940
|
+
"title": "Política de cookies",
|
|
941
|
+
"subtitle": "Cómo usamos cookies y tecnologías similares"
|
|
942
|
+
}
|
|
722
943
|
}
|
|
723
944
|
}
|
|
@@ -191,7 +191,7 @@ const Avatar: React.FC<AvatarProps> = ({
|
|
|
191
191
|
styles.text,
|
|
192
192
|
{
|
|
193
193
|
fontSize,
|
|
194
|
-
fontFamily: fontFamilies.
|
|
194
|
+
fontFamily: fontFamilies.interBold,
|
|
195
195
|
color: textColor,
|
|
196
196
|
textAlign: 'center' as const,
|
|
197
197
|
lineHeight: size, // Match line height to size for perfect vertical centering
|
|
@@ -212,7 +212,7 @@ const FollowButton: React.FC<FollowButtonProps> = ({
|
|
|
212
212
|
// Get base text style (without state-specific colors since they're animated)
|
|
213
213
|
const getBaseTextStyle = (): StyleProp<TextStyle> => {
|
|
214
214
|
const baseTextStyle = {
|
|
215
|
-
fontFamily: fontFamilies.
|
|
215
|
+
fontFamily: fontFamilies.interSemiBold,
|
|
216
216
|
fontWeight: '600' as const,
|
|
217
217
|
};
|
|
218
218
|
|
|
@@ -4,25 +4,25 @@ import { Platform } from 'react-native';
|
|
|
4
4
|
import * as Font from 'expo-font';
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
|
-
* Get the
|
|
7
|
+
* Get the Inter font sources for both native and web environments
|
|
8
8
|
* This is specifically designed to work when distributed as an npm package
|
|
9
9
|
*/
|
|
10
|
-
const
|
|
10
|
+
const getInterFonts = () => {
|
|
11
11
|
try {
|
|
12
12
|
// For both development and when used as a package
|
|
13
13
|
// Load all static font weights
|
|
14
14
|
return {
|
|
15
|
-
'
|
|
16
|
-
'
|
|
17
|
-
'
|
|
18
|
-
'
|
|
19
|
-
'
|
|
20
|
-
'
|
|
21
|
-
'
|
|
15
|
+
'Inter-Light': require('../../assets/fonts/Inter/Inter_18pt-Light.ttf'),
|
|
16
|
+
'Inter-Regular': require('../../assets/fonts/Inter/Inter_18pt-Regular.ttf'),
|
|
17
|
+
'Inter-Medium': require('../../assets/fonts/Inter/Inter_18pt-Medium.ttf'),
|
|
18
|
+
'Inter-SemiBold': require('../../assets/fonts/Inter/Inter_18pt-SemiBold.ttf'),
|
|
19
|
+
'Inter-Bold': require('../../assets/fonts/Inter/Inter_18pt-Bold.ttf'),
|
|
20
|
+
'Inter-ExtraBold': require('../../assets/fonts/Inter/Inter_18pt-ExtraBold.ttf'),
|
|
21
|
+
'Inter-Black': require('../../assets/fonts/Inter/Inter_18pt-Black.ttf'),
|
|
22
22
|
};
|
|
23
23
|
} catch (error) {
|
|
24
24
|
if (__DEV__) {
|
|
25
|
-
console.warn('Failed to load
|
|
25
|
+
console.warn('Failed to load Inter fonts:', error);
|
|
26
26
|
}
|
|
27
27
|
return null;
|
|
28
28
|
}
|
|
@@ -44,14 +44,14 @@ export const FontLoader = ({
|
|
|
44
44
|
const loadFonts = async () => {
|
|
45
45
|
try {
|
|
46
46
|
// Get all the font weights
|
|
47
|
-
const
|
|
47
|
+
const interFonts = getInterFonts();
|
|
48
48
|
|
|
49
|
-
if (!
|
|
50
|
-
throw new Error('
|
|
49
|
+
if (!interFonts) {
|
|
50
|
+
throw new Error('Inter font files not found');
|
|
51
51
|
}
|
|
52
52
|
|
|
53
|
-
// Load all the static
|
|
54
|
-
await Font.loadAsync(
|
|
53
|
+
// Load all the static Inter fonts with their respective weights
|
|
54
|
+
await Font.loadAsync(interFonts);
|
|
55
55
|
|
|
56
56
|
setFontState('loaded');
|
|
57
57
|
} catch (error) {
|
|
@@ -82,10 +82,10 @@ export const FontLoader = ({
|
|
|
82
82
|
*/
|
|
83
83
|
export const setupFonts = async () => {
|
|
84
84
|
try {
|
|
85
|
-
const
|
|
85
|
+
const interFonts = getInterFonts();
|
|
86
86
|
|
|
87
|
-
if (!
|
|
88
|
-
throw new Error('
|
|
87
|
+
if (!interFonts) {
|
|
88
|
+
throw new Error('Inter font files not found');
|
|
89
89
|
}
|
|
90
90
|
|
|
91
91
|
if (Platform.OS === 'web') {
|
|
@@ -97,44 +97,44 @@ export const setupFonts = async () => {
|
|
|
97
97
|
// Define @font-face rules for each font weight
|
|
98
98
|
const fontFaceRules = `
|
|
99
99
|
@font-face {
|
|
100
|
-
font-family: '
|
|
101
|
-
src: url(${
|
|
100
|
+
font-family: 'Inter';
|
|
101
|
+
src: url(${interFonts['Inter-Light']}) format('truetype');
|
|
102
102
|
font-weight: 300;
|
|
103
103
|
font-style: normal;
|
|
104
104
|
}
|
|
105
105
|
@font-face {
|
|
106
|
-
font-family: '
|
|
107
|
-
src: url(${
|
|
106
|
+
font-family: 'Inter';
|
|
107
|
+
src: url(${interFonts['Inter-Regular']}) format('truetype');
|
|
108
108
|
font-weight: 400;
|
|
109
109
|
font-style: normal;
|
|
110
110
|
}
|
|
111
111
|
@font-face {
|
|
112
|
-
font-family: '
|
|
113
|
-
src: url(${
|
|
112
|
+
font-family: 'Inter';
|
|
113
|
+
src: url(${interFonts['Inter-Medium']}) format('truetype');
|
|
114
114
|
font-weight: 500;
|
|
115
115
|
font-style: normal;
|
|
116
116
|
}
|
|
117
117
|
@font-face {
|
|
118
|
-
font-family: '
|
|
119
|
-
src: url(${
|
|
118
|
+
font-family: 'Inter';
|
|
119
|
+
src: url(${interFonts['Inter-SemiBold']}) format('truetype');
|
|
120
120
|
font-weight: 600;
|
|
121
121
|
font-style: normal;
|
|
122
122
|
}
|
|
123
123
|
@font-face {
|
|
124
|
-
font-family: '
|
|
125
|
-
src: url(${
|
|
124
|
+
font-family: 'Inter';
|
|
125
|
+
src: url(${interFonts['Inter-Bold']}) format('truetype');
|
|
126
126
|
font-weight: 700;
|
|
127
127
|
font-style: normal;
|
|
128
128
|
}
|
|
129
129
|
@font-face {
|
|
130
|
-
font-family: '
|
|
131
|
-
src: url(${
|
|
130
|
+
font-family: 'Inter';
|
|
131
|
+
src: url(${interFonts['Inter-ExtraBold']}) format('truetype');
|
|
132
132
|
font-weight: 800;
|
|
133
133
|
font-style: normal;
|
|
134
134
|
}
|
|
135
135
|
@font-face {
|
|
136
|
-
font-family: '
|
|
137
|
-
src: url(${
|
|
136
|
+
font-family: 'Inter';
|
|
137
|
+
src: url(${interFonts['Inter-Black']}) format('truetype');
|
|
138
138
|
font-weight: 900;
|
|
139
139
|
font-style: normal;
|
|
140
140
|
}
|
|
@@ -143,12 +143,12 @@ export const setupFonts = async () => {
|
|
|
143
143
|
style.textContent = fontFaceRules;
|
|
144
144
|
document.head.appendChild(style);
|
|
145
145
|
if (__DEV__) {
|
|
146
|
-
console.info('All
|
|
146
|
+
console.info('All Inter web fonts have been dynamically loaded');
|
|
147
147
|
}
|
|
148
148
|
}
|
|
149
149
|
} else {
|
|
150
150
|
// Attempt to load the fonts anyway (this works if the consumer has linked the assets)
|
|
151
|
-
await Font.loadAsync(
|
|
151
|
+
await Font.loadAsync(interFonts);
|
|
152
152
|
}
|
|
153
153
|
|
|
154
154
|
return true;
|