@oxyhq/services 5.24.0 → 5.26.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 +60 -8
- package/lib/commonjs/core/AuthManager.js +405 -0
- package/lib/commonjs/core/AuthManager.js.map +1 -0
- package/lib/commonjs/core/HttpService.js +39 -1
- package/lib/commonjs/core/HttpService.js.map +1 -1
- package/lib/commonjs/core/index.js +16 -0
- package/lib/commonjs/core/index.js.map +1 -1
- package/lib/commonjs/core/mixins/OxyServices.fedcm.js +38 -44
- package/lib/commonjs/core/mixins/OxyServices.fedcm.js.map +1 -1
- package/lib/commonjs/core/mixins/OxyServices.popup.js +9 -7
- package/lib/commonjs/core/mixins/OxyServices.popup.js.map +1 -1
- package/lib/commonjs/index.js +321 -18
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/shared/index.js +227 -0
- package/lib/commonjs/shared/index.js.map +1 -0
- package/lib/commonjs/shared/utils/colorUtils.js +161 -0
- package/lib/commonjs/shared/utils/colorUtils.js.map +1 -0
- package/lib/commonjs/shared/utils/debugUtils.js +84 -0
- package/lib/commonjs/shared/utils/debugUtils.js.map +1 -0
- package/lib/commonjs/shared/utils/errorUtils.js +190 -0
- package/lib/commonjs/shared/utils/errorUtils.js.map +1 -0
- package/lib/commonjs/shared/utils/index.js +196 -0
- package/lib/commonjs/shared/utils/index.js.map +1 -0
- package/lib/commonjs/shared/utils/networkUtils.js +213 -0
- package/lib/commonjs/shared/utils/networkUtils.js.map +1 -0
- package/lib/commonjs/shared/utils/themeUtils.js +118 -0
- package/lib/commonjs/shared/utils/themeUtils.js.map +1 -0
- package/lib/commonjs/ui/components/BottomSheetRouter.js +1 -1
- package/lib/commonjs/ui/components/FontLoader.js +1 -1
- package/lib/commonjs/ui/components/FontLoader.js.map +1 -1
- package/lib/commonjs/ui/components/GroupedItem.js +1 -1
- package/lib/commonjs/ui/components/Header.js +1 -1
- package/lib/commonjs/ui/components/OxyProvider.js +9 -1
- package/lib/commonjs/ui/components/OxyProvider.js.map +1 -1
- package/lib/commonjs/ui/components/OxySignInButton.js +19 -20
- 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/QuickActions.js +1 -1
- package/lib/commonjs/ui/components/QuickActions.js.map +1 -1
- package/lib/commonjs/ui/components/Section.js +1 -1
- package/lib/commonjs/ui/components/SectionTitle.js +1 -1
- package/lib/commonjs/ui/components/SignInModal.js +546 -0
- package/lib/commonjs/ui/components/SignInModal.js.map +1 -0
- package/lib/commonjs/ui/context/OxyContext.js +2 -1
- package/lib/commonjs/ui/context/OxyContext.js.map +1 -1
- package/lib/commonjs/ui/hooks/{use-color-scheme.js → useColorScheme.js} +1 -1
- package/lib/commonjs/ui/hooks/useColorScheme.js.map +1 -0
- package/lib/commonjs/ui/hooks/useSessionSocket.js +6 -12
- package/lib/commonjs/ui/hooks/useSessionSocket.js.map +1 -1
- package/lib/commonjs/ui/hooks/useThemeColors.js +1 -1
- package/lib/commonjs/ui/hooks/useThemeStyles.js +1 -1
- package/lib/commonjs/ui/navigation/bottomSheetManager.js +5 -2
- package/lib/commonjs/ui/navigation/bottomSheetManager.js.map +1 -1
- package/lib/commonjs/ui/navigation/routes.js +7 -8
- package/lib/commonjs/ui/navigation/routes.js.map +1 -1
- package/lib/commonjs/ui/screens/AccountCenterScreen.js +7 -7
- package/lib/commonjs/ui/screens/AccountCenterScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/AccountOverviewScreen.js +6 -6
- package/lib/commonjs/ui/screens/AccountOverviewScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/AccountSettingsScreen.js +2 -2
- package/lib/commonjs/ui/screens/AccountSwitcherScreen.js +4 -4
- package/lib/commonjs/ui/screens/AccountSwitcherScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/AppInfoScreen.js +1 -1
- package/lib/commonjs/ui/screens/EditProfileFieldScreen.js +1 -1
- package/lib/commonjs/ui/screens/FileManagementScreen.js +1 -1
- package/lib/commonjs/ui/screens/FollowersListScreen.js +18 -0
- package/lib/commonjs/ui/screens/FollowersListScreen.js.map +1 -0
- package/lib/commonjs/ui/screens/FollowingListScreen.js +18 -0
- package/lib/commonjs/ui/screens/FollowingListScreen.js.map +1 -0
- package/lib/commonjs/ui/screens/HelpSupportScreen.js +1 -1
- package/lib/commonjs/ui/screens/HelpSupportScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/HistoryViewScreen.js +1 -1
- package/lib/commonjs/ui/screens/LanguageSelectorScreen.js +1 -1
- package/lib/commonjs/ui/screens/LearnMoreUsernamesScreen.js +229 -0
- package/lib/commonjs/ui/screens/LearnMoreUsernamesScreen.js.map +1 -0
- package/lib/commonjs/ui/screens/LegalDocumentsScreen.js +1 -1
- package/lib/commonjs/ui/screens/LegalDocumentsScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/OxyAuthScreen.js +9 -21
- package/lib/commonjs/ui/screens/OxyAuthScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/PremiumSubscriptionScreen.js +1 -1
- package/lib/commonjs/ui/screens/ProfileScreen.js +1 -1
- package/lib/commonjs/ui/screens/ProfileScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/SavesCollectionsScreen.js +1 -1
- package/lib/commonjs/ui/screens/UserListScreen.js +411 -0
- package/lib/commonjs/ui/screens/UserListScreen.js.map +1 -0
- package/lib/commonjs/ui/screens/karma/KarmaAboutScreen.js +1 -1
- package/lib/commonjs/ui/screens/karma/KarmaCenterScreen.js +1 -1
- package/lib/commonjs/ui/screens/karma/KarmaFAQScreen.js +1 -1
- package/lib/commonjs/ui/screens/karma/KarmaLeaderboardScreen.js +1 -1
- package/lib/commonjs/ui/screens/karma/KarmaRewardsScreen.js +1 -1
- package/lib/commonjs/ui/screens/karma/KarmaRulesScreen.js +1 -1
- package/lib/commonjs/ui/stores/authStore.js +4 -6
- package/lib/commonjs/ui/stores/authStore.js.map +1 -1
- package/lib/commonjs/ui/utils/colorUtils.js +43 -46
- package/lib/commonjs/ui/utils/colorUtils.js.map +1 -1
- package/lib/commonjs/ui/utils/themeUtils.js +29 -39
- package/lib/commonjs/ui/utils/themeUtils.js.map +1 -1
- package/lib/commonjs/ui/utils/{user-utils.js → userUtils.js} +1 -1
- package/lib/commonjs/ui/utils/userUtils.js.map +1 -0
- package/lib/commonjs/utils/errorUtils.js +0 -13
- package/lib/commonjs/utils/errorUtils.js.map +1 -1
- package/lib/commonjs/utils/hookUtils.js +8 -8
- package/lib/commonjs/utils/hookUtils.js.map +1 -1
- package/lib/commonjs/web/WebOxyContext.js +277 -72
- package/lib/commonjs/web/WebOxyContext.js.map +1 -1
- package/lib/commonjs/web/index.js +177 -4
- package/lib/commonjs/web/index.js.map +1 -1
- package/lib/commonjs/web.js +12 -12
- package/lib/commonjs/web.js.map +1 -1
- package/lib/module/core/AuthManager.js +399 -0
- package/lib/module/core/AuthManager.js.map +1 -0
- package/lib/module/core/HttpService.js +39 -1
- package/lib/module/core/HttpService.js.map +1 -1
- package/lib/module/core/index.js +2 -0
- package/lib/module/core/index.js.map +1 -1
- package/lib/module/core/mixins/OxyServices.fedcm.js +38 -44
- package/lib/module/core/mixins/OxyServices.fedcm.js.map +1 -1
- package/lib/module/core/mixins/OxyServices.popup.js +9 -7
- package/lib/module/core/mixins/OxyServices.popup.js.map +1 -1
- package/lib/module/index.js +27 -2
- package/lib/module/index.js.map +1 -1
- package/lib/module/shared/index.js +37 -0
- package/lib/module/shared/index.js.map +1 -0
- package/lib/module/shared/utils/colorUtils.js +150 -0
- package/lib/module/shared/utils/colorUtils.js.map +1 -0
- package/lib/module/shared/utils/debugUtils.js +75 -0
- package/lib/module/shared/utils/debugUtils.js.map +1 -0
- package/lib/module/shared/utils/errorUtils.js +176 -0
- package/lib/module/shared/utils/errorUtils.js.map +1 -0
- package/lib/module/shared/utils/index.js +21 -0
- package/lib/module/shared/utils/index.js.map +1 -0
- package/lib/module/shared/utils/networkUtils.js +202 -0
- package/lib/module/shared/utils/networkUtils.js.map +1 -0
- package/lib/module/shared/utils/themeUtils.js +109 -0
- package/lib/module/shared/utils/themeUtils.js.map +1 -0
- package/lib/module/ui/components/BottomSheetRouter.js +1 -1
- package/lib/module/ui/components/BottomSheetRouter.js.map +1 -1
- package/lib/module/ui/components/FontLoader.js +1 -1
- package/lib/module/ui/components/FontLoader.js.map +1 -1
- package/lib/module/ui/components/GroupedItem.js +1 -1
- package/lib/module/ui/components/GroupedItem.js.map +1 -1
- package/lib/module/ui/components/Header.js +1 -1
- package/lib/module/ui/components/Header.js.map +1 -1
- package/lib/module/ui/components/OxyProvider.js +9 -1
- package/lib/module/ui/components/OxyProvider.js.map +1 -1
- package/lib/module/ui/components/OxySignInButton.js +20 -21
- 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/QuickActions.js +1 -1
- package/lib/module/ui/components/QuickActions.js.map +1 -1
- package/lib/module/ui/components/Section.js +1 -1
- package/lib/module/ui/components/Section.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/SignInModal.js +536 -0
- package/lib/module/ui/components/SignInModal.js.map +1 -0
- package/lib/module/ui/context/OxyContext.js +1 -1
- package/lib/module/ui/context/OxyContext.js.map +1 -1
- package/lib/module/ui/hooks/{use-color-scheme.js → useColorScheme.js} +1 -1
- package/lib/module/ui/hooks/useColorScheme.js.map +1 -0
- package/lib/module/ui/hooks/useSessionSocket.js +6 -12
- package/lib/module/ui/hooks/useSessionSocket.js.map +1 -1
- package/lib/module/ui/hooks/useThemeColors.js +1 -1
- package/lib/module/ui/hooks/useThemeColors.js.map +1 -1
- package/lib/module/ui/hooks/useThemeStyles.js +1 -1
- package/lib/module/ui/hooks/useThemeStyles.js.map +1 -1
- package/lib/module/ui/navigation/bottomSheetManager.js +5 -2
- package/lib/module/ui/navigation/bottomSheetManager.js.map +1 -1
- package/lib/module/ui/navigation/routes.js +7 -8
- package/lib/module/ui/navigation/routes.js.map +1 -1
- package/lib/module/ui/screens/AccountCenterScreen.js +7 -7
- package/lib/module/ui/screens/AccountCenterScreen.js.map +1 -1
- package/lib/module/ui/screens/AccountOverviewScreen.js +6 -6
- package/lib/module/ui/screens/AccountOverviewScreen.js.map +1 -1
- package/lib/module/ui/screens/AccountSettingsScreen.js +2 -2
- package/lib/module/ui/screens/AccountSettingsScreen.js.map +1 -1
- package/lib/module/ui/screens/AccountSwitcherScreen.js +4 -4
- package/lib/module/ui/screens/AccountSwitcherScreen.js.map +1 -1
- package/lib/module/ui/screens/AppInfoScreen.js +1 -1
- package/lib/module/ui/screens/AppInfoScreen.js.map +1 -1
- package/lib/module/ui/screens/EditProfileFieldScreen.js +1 -1
- package/lib/module/ui/screens/EditProfileFieldScreen.js.map +1 -1
- package/lib/module/ui/screens/FileManagementScreen.js +1 -1
- package/lib/module/ui/screens/FileManagementScreen.js.map +1 -1
- package/lib/module/ui/screens/FollowersListScreen.js +13 -0
- package/lib/module/ui/screens/FollowersListScreen.js.map +1 -0
- package/lib/module/ui/screens/FollowingListScreen.js +13 -0
- package/lib/module/ui/screens/FollowingListScreen.js.map +1 -0
- package/lib/module/ui/screens/HelpSupportScreen.js +1 -1
- package/lib/module/ui/screens/HelpSupportScreen.js.map +1 -1
- package/lib/module/ui/screens/HistoryViewScreen.js +1 -1
- package/lib/module/ui/screens/HistoryViewScreen.js.map +1 -1
- package/lib/module/ui/screens/LanguageSelectorScreen.js +1 -1
- package/lib/module/ui/screens/LanguageSelectorScreen.js.map +1 -1
- package/lib/module/ui/screens/LearnMoreUsernamesScreen.js +224 -0
- package/lib/module/ui/screens/LearnMoreUsernamesScreen.js.map +1 -0
- package/lib/module/ui/screens/LegalDocumentsScreen.js +1 -1
- package/lib/module/ui/screens/LegalDocumentsScreen.js.map +1 -1
- package/lib/module/ui/screens/OxyAuthScreen.js +9 -21
- package/lib/module/ui/screens/OxyAuthScreen.js.map +1 -1
- package/lib/module/ui/screens/PremiumSubscriptionScreen.js +1 -1
- package/lib/module/ui/screens/PremiumSubscriptionScreen.js.map +1 -1
- package/lib/module/ui/screens/ProfileScreen.js +1 -1
- package/lib/module/ui/screens/ProfileScreen.js.map +1 -1
- package/lib/module/ui/screens/SavesCollectionsScreen.js +1 -1
- package/lib/module/ui/screens/SavesCollectionsScreen.js.map +1 -1
- package/lib/module/ui/screens/UserListScreen.js +405 -0
- package/lib/module/ui/screens/UserListScreen.js.map +1 -0
- package/lib/module/ui/screens/karma/KarmaAboutScreen.js +1 -1
- package/lib/module/ui/screens/karma/KarmaAboutScreen.js.map +1 -1
- package/lib/module/ui/screens/karma/KarmaCenterScreen.js +1 -1
- package/lib/module/ui/screens/karma/KarmaCenterScreen.js.map +1 -1
- package/lib/module/ui/screens/karma/KarmaFAQScreen.js +1 -1
- package/lib/module/ui/screens/karma/KarmaFAQScreen.js.map +1 -1
- package/lib/module/ui/screens/karma/KarmaLeaderboardScreen.js +1 -1
- package/lib/module/ui/screens/karma/KarmaLeaderboardScreen.js.map +1 -1
- package/lib/module/ui/screens/karma/KarmaRewardsScreen.js +1 -1
- package/lib/module/ui/screens/karma/KarmaRewardsScreen.js.map +1 -1
- package/lib/module/ui/screens/karma/KarmaRulesScreen.js +1 -1
- package/lib/module/ui/screens/karma/KarmaRulesScreen.js.map +1 -1
- package/lib/module/ui/stores/authStore.js +4 -6
- package/lib/module/ui/stores/authStore.js.map +1 -1
- package/lib/module/ui/utils/colorUtils.js +7 -40
- package/lib/module/ui/utils/colorUtils.js.map +1 -1
- package/lib/module/ui/utils/themeUtils.js +7 -35
- package/lib/module/ui/utils/themeUtils.js.map +1 -1
- package/lib/module/ui/utils/{user-utils.js → userUtils.js} +1 -1
- package/lib/module/ui/utils/userUtils.js.map +1 -0
- package/lib/module/utils/errorUtils.js +0 -7
- package/lib/module/utils/errorUtils.js.map +1 -1
- package/lib/module/utils/hookUtils.js +8 -8
- package/lib/module/utils/hookUtils.js.map +1 -1
- package/lib/module/web/WebOxyContext.js +276 -72
- package/lib/module/web/WebOxyContext.js.map +1 -1
- package/lib/module/web/index.js +26 -5
- package/lib/module/web/index.js.map +1 -1
- package/lib/module/web.js +2 -1
- package/lib/module/web.js.map +1 -1
- package/lib/typescript/commonjs/core/AuthManager.d.ts +144 -0
- package/lib/typescript/commonjs/core/AuthManager.d.ts.map +1 -0
- package/lib/typescript/commonjs/core/HttpService.d.ts.map +1 -1
- package/lib/typescript/commonjs/core/index.d.ts +2 -0
- package/lib/typescript/commonjs/core/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/core/mixins/OxyServices.fedcm.d.ts.map +1 -1
- package/lib/typescript/commonjs/core/mixins/OxyServices.popup.d.ts.map +1 -1
- package/lib/typescript/commonjs/index.d.ts +16 -2
- package/lib/typescript/commonjs/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/models/session.d.ts +4 -0
- package/lib/typescript/commonjs/models/session.d.ts.map +1 -1
- package/lib/typescript/commonjs/shared/index.d.ts +29 -0
- package/lib/typescript/commonjs/shared/index.d.ts.map +1 -0
- package/lib/typescript/commonjs/shared/utils/colorUtils.d.ts +105 -0
- package/lib/typescript/commonjs/shared/utils/colorUtils.d.ts.map +1 -0
- package/lib/typescript/commonjs/shared/utils/debugUtils.d.ts +49 -0
- package/lib/typescript/commonjs/shared/utils/debugUtils.d.ts.map +1 -0
- package/lib/typescript/commonjs/shared/utils/errorUtils.d.ts +98 -0
- package/lib/typescript/commonjs/shared/utils/errorUtils.d.ts.map +1 -0
- package/lib/typescript/commonjs/shared/utils/index.d.ts +14 -0
- package/lib/typescript/commonjs/shared/utils/index.d.ts.map +1 -0
- package/lib/typescript/commonjs/shared/utils/networkUtils.d.ts +140 -0
- package/lib/typescript/commonjs/shared/utils/networkUtils.d.ts.map +1 -0
- package/lib/typescript/commonjs/shared/utils/themeUtils.d.ts +91 -0
- package/lib/typescript/commonjs/shared/utils/themeUtils.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/components/FontLoader.d.ts +1 -1
- package/lib/typescript/commonjs/ui/components/FontLoader.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/OxyProvider.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/OxySignInButton.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/SignInModal.d.ts +18 -0
- package/lib/typescript/commonjs/ui/components/SignInModal.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/context/OxyContext.d.ts +1 -2
- package/lib/typescript/commonjs/ui/context/OxyContext.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/hooks/{use-color-scheme.d.ts → useColorScheme.d.ts} +1 -1
- package/lib/typescript/commonjs/ui/hooks/useColorScheme.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/hooks/useSessionSocket.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/navigation/bottomSheetManager.d.ts +2 -0
- package/lib/typescript/commonjs/ui/navigation/bottomSheetManager.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/FollowersListScreen.d.ts +9 -0
- package/lib/typescript/commonjs/ui/screens/FollowersListScreen.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/screens/FollowingListScreen.d.ts +9 -0
- package/lib/typescript/commonjs/ui/screens/FollowingListScreen.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/screens/LearnMoreUsernamesScreen.d.ts +5 -0
- package/lib/typescript/commonjs/ui/screens/LearnMoreUsernamesScreen.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/screens/OxyAuthScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/UserListScreen.d.ts +11 -0
- package/lib/typescript/commonjs/ui/screens/UserListScreen.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/stores/authStore.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/utils/colorUtils.d.ts +7 -11
- package/lib/typescript/commonjs/ui/utils/colorUtils.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/utils/themeUtils.d.ts +6 -19
- package/lib/typescript/commonjs/ui/utils/themeUtils.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/utils/{user-utils.d.ts → userUtils.d.ts} +1 -1
- package/lib/typescript/commonjs/ui/utils/userUtils.d.ts.map +1 -0
- package/lib/typescript/commonjs/utils/errorUtils.d.ts +0 -6
- package/lib/typescript/commonjs/utils/errorUtils.d.ts.map +1 -1
- package/lib/typescript/commonjs/web/WebOxyContext.d.ts +113 -4
- package/lib/typescript/commonjs/web/WebOxyContext.d.ts.map +1 -1
- package/lib/typescript/commonjs/web/index.d.ts +20 -9
- package/lib/typescript/commonjs/web/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/web.d.ts +2 -1
- package/lib/typescript/commonjs/web.d.ts.map +1 -1
- package/lib/typescript/module/core/AuthManager.d.ts +144 -0
- package/lib/typescript/module/core/AuthManager.d.ts.map +1 -0
- package/lib/typescript/module/core/HttpService.d.ts.map +1 -1
- package/lib/typescript/module/core/index.d.ts +2 -0
- package/lib/typescript/module/core/index.d.ts.map +1 -1
- package/lib/typescript/module/core/mixins/OxyServices.fedcm.d.ts.map +1 -1
- package/lib/typescript/module/core/mixins/OxyServices.popup.d.ts.map +1 -1
- package/lib/typescript/module/index.d.ts +16 -2
- package/lib/typescript/module/index.d.ts.map +1 -1
- package/lib/typescript/module/models/session.d.ts +4 -0
- package/lib/typescript/module/models/session.d.ts.map +1 -1
- package/lib/typescript/module/shared/index.d.ts +29 -0
- package/lib/typescript/module/shared/index.d.ts.map +1 -0
- package/lib/typescript/module/shared/utils/colorUtils.d.ts +105 -0
- package/lib/typescript/module/shared/utils/colorUtils.d.ts.map +1 -0
- package/lib/typescript/module/shared/utils/debugUtils.d.ts +49 -0
- package/lib/typescript/module/shared/utils/debugUtils.d.ts.map +1 -0
- package/lib/typescript/module/shared/utils/errorUtils.d.ts +98 -0
- package/lib/typescript/module/shared/utils/errorUtils.d.ts.map +1 -0
- package/lib/typescript/module/shared/utils/index.d.ts +14 -0
- package/lib/typescript/module/shared/utils/index.d.ts.map +1 -0
- package/lib/typescript/module/shared/utils/networkUtils.d.ts +140 -0
- package/lib/typescript/module/shared/utils/networkUtils.d.ts.map +1 -0
- package/lib/typescript/module/shared/utils/themeUtils.d.ts +91 -0
- package/lib/typescript/module/shared/utils/themeUtils.d.ts.map +1 -0
- package/lib/typescript/module/ui/components/FontLoader.d.ts +1 -1
- package/lib/typescript/module/ui/components/FontLoader.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/OxyProvider.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/OxySignInButton.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/SignInModal.d.ts +18 -0
- package/lib/typescript/module/ui/components/SignInModal.d.ts.map +1 -0
- package/lib/typescript/module/ui/context/OxyContext.d.ts +1 -2
- package/lib/typescript/module/ui/context/OxyContext.d.ts.map +1 -1
- package/lib/typescript/module/ui/hooks/{use-color-scheme.d.ts → useColorScheme.d.ts} +1 -1
- package/lib/typescript/module/ui/hooks/useColorScheme.d.ts.map +1 -0
- package/lib/typescript/module/ui/hooks/useSessionSocket.d.ts.map +1 -1
- package/lib/typescript/module/ui/navigation/bottomSheetManager.d.ts +2 -0
- package/lib/typescript/module/ui/navigation/bottomSheetManager.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/FollowersListScreen.d.ts +9 -0
- package/lib/typescript/module/ui/screens/FollowersListScreen.d.ts.map +1 -0
- package/lib/typescript/module/ui/screens/FollowingListScreen.d.ts +9 -0
- package/lib/typescript/module/ui/screens/FollowingListScreen.d.ts.map +1 -0
- package/lib/typescript/module/ui/screens/LearnMoreUsernamesScreen.d.ts +5 -0
- package/lib/typescript/module/ui/screens/LearnMoreUsernamesScreen.d.ts.map +1 -0
- package/lib/typescript/module/ui/screens/OxyAuthScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/UserListScreen.d.ts +11 -0
- package/lib/typescript/module/ui/screens/UserListScreen.d.ts.map +1 -0
- package/lib/typescript/module/ui/stores/authStore.d.ts.map +1 -1
- package/lib/typescript/module/ui/utils/colorUtils.d.ts +7 -11
- package/lib/typescript/module/ui/utils/colorUtils.d.ts.map +1 -1
- package/lib/typescript/module/ui/utils/themeUtils.d.ts +6 -19
- package/lib/typescript/module/ui/utils/themeUtils.d.ts.map +1 -1
- package/lib/typescript/module/ui/utils/{user-utils.d.ts → userUtils.d.ts} +1 -1
- package/lib/typescript/module/ui/utils/userUtils.d.ts.map +1 -0
- package/lib/typescript/module/utils/errorUtils.d.ts +0 -6
- package/lib/typescript/module/utils/errorUtils.d.ts.map +1 -1
- package/lib/typescript/module/web/WebOxyContext.d.ts +113 -4
- package/lib/typescript/module/web/WebOxyContext.d.ts.map +1 -1
- package/lib/typescript/module/web/index.d.ts +20 -9
- package/lib/typescript/module/web/index.d.ts.map +1 -1
- package/lib/typescript/module/web.d.ts +2 -1
- package/lib/typescript/module/web.d.ts.map +1 -1
- package/package.json +8 -2
- package/src/core/AuthManager.ts +436 -0
- package/src/core/HttpService.ts +43 -1
- package/src/core/index.ts +4 -0
- package/src/core/mixins/OxyServices.fedcm.ts +37 -42
- package/src/core/mixins/OxyServices.popup.ts +10 -7
- package/src/index.ts +76 -11
- package/src/models/session.ts +4 -0
- package/src/shared/index.ts +82 -0
- package/src/shared/utils/colorUtils.ts +155 -0
- package/src/shared/utils/debugUtils.ts +73 -0
- package/src/shared/utils/errorUtils.ts +181 -0
- package/src/shared/utils/index.ts +59 -0
- package/src/shared/utils/networkUtils.ts +248 -0
- package/src/shared/utils/themeUtils.ts +115 -0
- package/src/ui/components/BottomSheetRouter.tsx +1 -1
- package/src/ui/components/FontLoader.tsx +1 -2
- package/src/ui/components/GroupedItem.tsx +1 -1
- package/src/ui/components/Header.tsx +1 -1
- package/src/ui/components/OxyProvider.tsx +10 -0
- package/src/ui/components/OxySignInButton.tsx +20 -22
- package/src/ui/components/ProfileCard.tsx +1 -1
- package/src/ui/components/QuickActions.tsx +1 -1
- package/src/ui/components/Section.tsx +1 -1
- package/src/ui/components/SectionTitle.tsx +1 -1
- package/src/ui/components/SignInModal.tsx +534 -0
- package/src/ui/context/OxyContext.tsx +1 -2
- package/src/ui/hooks/queries/queryKeys.ts +2 -2
- package/src/ui/hooks/useSessionSocket.ts +12 -17
- package/src/ui/hooks/useThemeColors.ts +1 -1
- package/src/ui/hooks/useThemeStyles.ts +1 -1
- package/src/ui/navigation/bottomSheetManager.ts +5 -1
- package/src/ui/navigation/routes.ts +8 -9
- package/src/ui/screens/AccountCenterScreen.tsx +7 -7
- package/src/ui/screens/AccountOverviewScreen.tsx +6 -6
- package/src/ui/screens/AccountSettingsScreen.tsx +2 -2
- package/src/ui/screens/AccountSwitcherScreen.tsx +4 -4
- package/src/ui/screens/AppInfoScreen.tsx +1 -1
- package/src/ui/screens/EditProfileFieldScreen.tsx +1 -1
- package/src/ui/screens/FileManagementScreen.tsx +1 -1
- package/src/ui/screens/FollowersListScreen.tsx +14 -0
- package/src/ui/screens/FollowingListScreen.tsx +14 -0
- package/src/ui/screens/HelpSupportScreen.tsx +1 -1
- package/src/ui/screens/HistoryViewScreen.tsx +1 -1
- package/src/ui/screens/LanguageSelectorScreen.tsx +1 -1
- package/src/ui/screens/LearnMoreUsernamesScreen.tsx +231 -0
- package/src/ui/screens/LegalDocumentsScreen.tsx +1 -1
- package/src/ui/screens/OxyAuthScreen.tsx +10 -21
- package/src/ui/screens/PremiumSubscriptionScreen.tsx +1 -1
- package/src/ui/screens/ProfileScreen.tsx +1 -1
- package/src/ui/screens/SavesCollectionsScreen.tsx +1 -1
- package/src/ui/screens/UserListScreen.tsx +416 -0
- package/src/ui/screens/karma/KarmaAboutScreen.tsx +1 -1
- package/src/ui/screens/karma/KarmaCenterScreen.tsx +1 -1
- package/src/ui/screens/karma/KarmaFAQScreen.tsx +1 -1
- package/src/ui/screens/karma/KarmaLeaderboardScreen.tsx +1 -1
- package/src/ui/screens/karma/KarmaRewardsScreen.tsx +1 -1
- package/src/ui/screens/karma/KarmaRulesScreen.tsx +1 -1
- package/src/ui/stores/authStore.ts +5 -6
- package/src/ui/utils/colorUtils.ts +15 -43
- package/src/ui/utils/themeUtils.ts +14 -39
- package/src/utils/errorUtils.ts +1 -6
- package/src/utils/hookUtils.ts +8 -8
- package/src/web/WebOxyContext.tsx +330 -72
- package/src/web/index.ts +77 -7
- package/src/web.ts +1 -1
- package/lib/commonjs/ui/hooks/use-color-scheme.js.map +0 -1
- package/lib/commonjs/ui/utils/user-utils.js.map +0 -1
- package/lib/module/ui/hooks/use-color-scheme.js.map +0 -1
- package/lib/module/ui/utils/user-utils.js.map +0 -1
- package/lib/typescript/commonjs/ui/hooks/use-color-scheme.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/utils/user-utils.d.ts.map +0 -1
- package/lib/typescript/module/ui/hooks/use-color-scheme.d.ts.map +0 -1
- package/lib/typescript/module/ui/utils/user-utils.d.ts.map +0 -1
- /package/src/ui/hooks/{use-color-scheme.ts → useColorScheme.ts} +0 -0
- /package/src/ui/utils/{user-utils.ts → userUtils.ts} +0 -0
|
@@ -6,7 +6,6 @@ import type { BaseScreenProps } from '../types/navigation';
|
|
|
6
6
|
// before OxyContext is fully initialized
|
|
7
7
|
|
|
8
8
|
// Define all available route names
|
|
9
|
-
// Note: SignIn has been replaced with OxyAuth for cross-app authentication via Oxy Accounts
|
|
10
9
|
export type RouteName =
|
|
11
10
|
| 'OxyAuth' // Sign in with Oxy (QR code / deep link to Accounts app)
|
|
12
11
|
| 'AccountOverview'
|
|
@@ -31,23 +30,21 @@ export type RouteName =
|
|
|
31
30
|
| 'UserLinks'
|
|
32
31
|
| 'HistoryView'
|
|
33
32
|
| 'SavesCollections'
|
|
34
|
-
| 'EditProfile' // For backward compatibility, maps to AccountSettings
|
|
35
33
|
| 'EditProfileField' // Dedicated screen for editing a single profile field
|
|
34
|
+
| 'LearnMoreUsernames' // Informational screen about usernames
|
|
36
35
|
| 'KarmaCenter'
|
|
37
36
|
| 'KarmaLeaderboard'
|
|
38
37
|
| 'KarmaRewards'
|
|
39
38
|
| 'KarmaRules'
|
|
40
39
|
| 'AboutKarma'
|
|
41
40
|
| 'KarmaFAQ'
|
|
42
|
-
//
|
|
43
|
-
| '
|
|
41
|
+
| 'FollowersList' // List of user's followers
|
|
42
|
+
| 'FollowingList'; // List of users being followed
|
|
44
43
|
|
|
45
44
|
// Lazy screen loaders - functions that return screen components on-demand
|
|
46
45
|
// This breaks the require cycle by deferring imports until screens are actually needed
|
|
47
46
|
const screenLoaders: Record<RouteName, () => ComponentType<BaseScreenProps>> = {
|
|
48
47
|
OxyAuth: () => require('../screens/OxyAuthScreen').default,
|
|
49
|
-
// Legacy alias - SignIn now maps to OxyAuth
|
|
50
|
-
SignIn: () => require('../screens/OxyAuthScreen').default,
|
|
51
48
|
AccountOverview: () => require('../screens/AccountOverviewScreen').default,
|
|
52
49
|
AccountSettings: () => require('../screens/AccountSettingsScreen').default,
|
|
53
50
|
AccountCenter: () => require('../screens/AccountCenterScreen').default,
|
|
@@ -70,10 +67,9 @@ const screenLoaders: Record<RouteName, () => ComponentType<BaseScreenProps>> = {
|
|
|
70
67
|
UserLinks: () => require('../screens/UserLinksScreen').default,
|
|
71
68
|
HistoryView: () => require('../screens/HistoryViewScreen').default,
|
|
72
69
|
SavesCollections: () => require('../screens/SavesCollectionsScreen').default,
|
|
73
|
-
// Backward compatibility - EditProfile maps to AccountSettings
|
|
74
|
-
EditProfile: () => require('../screens/AccountSettingsScreen').default,
|
|
75
|
-
// Dedicated screen for editing a single profile field
|
|
76
70
|
EditProfileField: () => require('../screens/EditProfileFieldScreen').default,
|
|
71
|
+
// Informational screens
|
|
72
|
+
LearnMoreUsernames: () => require('../screens/LearnMoreUsernamesScreen').default,
|
|
77
73
|
// Karma screens
|
|
78
74
|
KarmaCenter: () => require('../screens/karma/KarmaCenterScreen').default,
|
|
79
75
|
KarmaLeaderboard: () => require('../screens/karma/KarmaLeaderboardScreen').default,
|
|
@@ -81,6 +77,9 @@ const screenLoaders: Record<RouteName, () => ComponentType<BaseScreenProps>> = {
|
|
|
81
77
|
KarmaRules: () => require('../screens/karma/KarmaRulesScreen').default,
|
|
82
78
|
AboutKarma: () => require('../screens/karma/KarmaAboutScreen').default,
|
|
83
79
|
KarmaFAQ: () => require('../screens/karma/KarmaFAQScreen').default,
|
|
80
|
+
// User list screens (followers/following)
|
|
81
|
+
FollowersList: () => require('../screens/FollowersListScreen').default,
|
|
82
|
+
FollowingList: () => require('../screens/FollowingListScreen').default,
|
|
84
83
|
};
|
|
85
84
|
|
|
86
85
|
// Cache loaded components to avoid re-requiring
|
|
@@ -23,7 +23,7 @@ import GroupedSection from '../components/GroupedSection';
|
|
|
23
23
|
import GroupedItem from '../components/GroupedItem';
|
|
24
24
|
import { useI18n } from '../hooks/useI18n';
|
|
25
25
|
import { useThemeStyles } from '../hooks/useThemeStyles';
|
|
26
|
-
import { useColorScheme } from '../hooks/
|
|
26
|
+
import { useColorScheme } from '../hooks/useColorScheme';
|
|
27
27
|
import { Colors } from '../constants/theme';
|
|
28
28
|
import { normalizeColorScheme, normalizeTheme } from '../utils/themeUtils';
|
|
29
29
|
import { useOxy } from '../context/OxyContext';
|
|
@@ -92,7 +92,7 @@ const AccountCenterScreen: React.FC<BaseScreenProps> = ({
|
|
|
92
92
|
<ProfileCard
|
|
93
93
|
user={user}
|
|
94
94
|
theme={normalizedTheme}
|
|
95
|
-
onEditPress={() => navigate?.('
|
|
95
|
+
onEditPress={() => navigate?.('AccountSettings', { activeTab: 'profile' })}
|
|
96
96
|
onClosePress={onClose}
|
|
97
97
|
showCloseButton={!!onClose}
|
|
98
98
|
/>
|
|
@@ -105,7 +105,7 @@ const AccountCenterScreen: React.FC<BaseScreenProps> = ({
|
|
|
105
105
|
theme={normalizedTheme}
|
|
106
106
|
actions={useMemo(() => [
|
|
107
107
|
{ id: 'overview', icon: 'account-circle', iconColor: colors.iconSecurity, title: t('accountCenter.quickActions.overview') || 'Overview', onPress: () => navigate?.('AccountOverview') },
|
|
108
|
-
{ id: 'settings', icon: 'cog', iconColor: colors.iconData, title: t('accountCenter.quickActions.editProfile') || 'Edit Profile', onPress: () => navigate?.('
|
|
108
|
+
{ id: 'settings', icon: 'cog', iconColor: colors.iconData, title: t('accountCenter.quickActions.editProfile') || 'Edit Profile', onPress: () => navigate?.('AccountSettings') },
|
|
109
109
|
{ id: 'sessions', icon: 'shield-check', iconColor: colors.iconSecurity, title: t('accountCenter.quickActions.sessions') || 'Sessions', onPress: () => navigate?.('SessionManagement') },
|
|
110
110
|
{ id: 'premium', icon: 'star', iconColor: colors.iconPayments, title: t('accountCenter.quickActions.premium') || 'Premium', onPress: () => navigate?.('PremiumSubscription') },
|
|
111
111
|
...(user?.isPremium ? [{ id: 'billing', icon: 'card', iconColor: colors.iconPersonalInfo, title: t('accountCenter.quickActions.billing') || 'Billing', onPress: () => navigate?.('PaymentGateway') }] : []),
|
|
@@ -133,7 +133,7 @@ const AccountCenterScreen: React.FC<BaseScreenProps> = ({
|
|
|
133
133
|
iconColor: colors.iconData,
|
|
134
134
|
title: t('accountCenter.items.editProfile.title') || 'Edit Profile',
|
|
135
135
|
subtitle: t('accountCenter.items.editProfile.subtitle') || 'Manage your profile and preferences',
|
|
136
|
-
onPress: () => navigate?.('
|
|
136
|
+
onPress: () => navigate?.('AccountSettings'),
|
|
137
137
|
},
|
|
138
138
|
{
|
|
139
139
|
id: 'sessions',
|
|
@@ -191,7 +191,7 @@ const AccountCenterScreen: React.FC<BaseScreenProps> = ({
|
|
|
191
191
|
iconColor: colors.iconPersonalInfo,
|
|
192
192
|
title: t('accountCenter.items.addAccount.title') || 'Add Another Account',
|
|
193
193
|
subtitle: t('accountCenter.items.addAccount.subtitle') || 'Sign in with a different account',
|
|
194
|
-
onPress: () => navigate?.('
|
|
194
|
+
onPress: () => navigate?.('OxyAuth'),
|
|
195
195
|
},
|
|
196
196
|
], [sessions.length, navigate, t, colors])}
|
|
197
197
|
|
|
@@ -210,7 +210,7 @@ const AccountCenterScreen: React.FC<BaseScreenProps> = ({
|
|
|
210
210
|
iconColor: colors.iconPersonalInfo,
|
|
211
211
|
title: t('accountCenter.items.addAccount.title') || 'Add Another Account',
|
|
212
212
|
subtitle: t('accountCenter.items.addAccount.subtitle') || 'Sign in with a different account',
|
|
213
|
-
onPress: () => navigate?.('
|
|
213
|
+
onPress: () => navigate?.('OxyAuth'),
|
|
214
214
|
},
|
|
215
215
|
], [navigate, t, colors])}
|
|
216
216
|
|
|
@@ -228,7 +228,7 @@ const AccountCenterScreen: React.FC<BaseScreenProps> = ({
|
|
|
228
228
|
iconColor: colors.iconStorage,
|
|
229
229
|
title: t('accountCenter.items.notifications.title') || 'Notifications',
|
|
230
230
|
subtitle: t('accountCenter.items.notifications.subtitle') || 'Manage notification settings',
|
|
231
|
-
onPress: () => navigate?.('
|
|
231
|
+
onPress: () => navigate?.('AccountSettings', { activeTab: 'notifications' }),
|
|
232
232
|
}] : []),
|
|
233
233
|
{
|
|
234
234
|
id: 'language',
|
|
@@ -23,8 +23,8 @@ import { Ionicons } from '@expo/vector-icons';
|
|
|
23
23
|
import { Section, GroupedSection, GroupedItem } from '../components';
|
|
24
24
|
import { useI18n } from '../hooks/useI18n';
|
|
25
25
|
import { useThemeStyles } from '../hooks/useThemeStyles';
|
|
26
|
-
import { getDisplayName, getShortDisplayName } from '../utils/
|
|
27
|
-
import { useColorScheme } from '../hooks/
|
|
26
|
+
import { getDisplayName, getShortDisplayName } from '../utils/userUtils';
|
|
27
|
+
import { useColorScheme } from '../hooks/useColorScheme';
|
|
28
28
|
import { normalizeTheme } from '../utils/themeUtils';
|
|
29
29
|
import { useOxy } from '../context/OxyContext';
|
|
30
30
|
import { useUsersBySessions } from '../hooks/queries/useAccountQueries';
|
|
@@ -389,7 +389,7 @@ const AccountOverviewScreen: React.FC<BaseScreenProps> = ({
|
|
|
389
389
|
iconColor: baseThemeStyles.colors.iconSecurity,
|
|
390
390
|
title: displayName,
|
|
391
391
|
subtitle: user ? (user.email || user.username) : (t('common.status.loading') || 'Loading...'),
|
|
392
|
-
onPress: () => navigate?.('
|
|
392
|
+
onPress: () => navigate?.('AccountSettings', { activeTab: 'profile' }),
|
|
393
393
|
},
|
|
394
394
|
]}
|
|
395
395
|
/>
|
|
@@ -405,7 +405,7 @@ const AccountOverviewScreen: React.FC<BaseScreenProps> = ({
|
|
|
405
405
|
iconColor: baseThemeStyles.colors.iconPersonalInfo,
|
|
406
406
|
title: t('accountOverview.items.editProfile.title'),
|
|
407
407
|
subtitle: t('accountOverview.items.editProfile.subtitle'),
|
|
408
|
-
onPress: () => navigate?.('
|
|
408
|
+
onPress: () => navigate?.('AccountSettings', { activeTab: 'profile' }),
|
|
409
409
|
},
|
|
410
410
|
{
|
|
411
411
|
id: 'security-privacy',
|
|
@@ -413,7 +413,7 @@ const AccountOverviewScreen: React.FC<BaseScreenProps> = ({
|
|
|
413
413
|
iconColor: baseThemeStyles.colors.iconSecurity,
|
|
414
414
|
title: t('accountOverview.items.security.title'),
|
|
415
415
|
subtitle: t('accountOverview.items.security.subtitle'),
|
|
416
|
-
onPress: () => navigate?.('
|
|
416
|
+
onPress: () => navigate?.('AccountSettings', { activeTab: 'password' }),
|
|
417
417
|
},
|
|
418
418
|
{
|
|
419
419
|
id: 'notifications',
|
|
@@ -421,7 +421,7 @@ const AccountOverviewScreen: React.FC<BaseScreenProps> = ({
|
|
|
421
421
|
iconColor: baseThemeStyles.colors.iconStorage,
|
|
422
422
|
title: t('accountOverview.items.notifications.title'),
|
|
423
423
|
subtitle: t('accountOverview.items.notifications.subtitle'),
|
|
424
|
-
onPress: () => navigate?.('
|
|
424
|
+
onPress: () => navigate?.('AccountSettings', { activeTab: 'notifications' }),
|
|
425
425
|
},
|
|
426
426
|
{
|
|
427
427
|
id: 'premium-subscription',
|
|
@@ -17,11 +17,11 @@ import { useAuthStore } from '../stores/authStore';
|
|
|
17
17
|
import { GroupedSection } from '../components';
|
|
18
18
|
import { useI18n } from '../hooks/useI18n';
|
|
19
19
|
import { useThemeStyles } from '../hooks/useThemeStyles';
|
|
20
|
-
import { useColorScheme } from '../hooks/
|
|
20
|
+
import { useColorScheme } from '../hooks/useColorScheme';
|
|
21
21
|
import { Colors } from '../constants/theme';
|
|
22
22
|
import { normalizeColorScheme } from '../utils/themeUtils';
|
|
23
23
|
import type { ProfileFieldType } from './EditProfileFieldScreen';
|
|
24
|
-
import { getDisplayName } from '../utils/
|
|
24
|
+
import { getDisplayName } from '../utils/userUtils';
|
|
25
25
|
import { useOxy } from '../context/OxyContext';
|
|
26
26
|
import { useCurrentUser } from '../hooks/queries/useAccountQueries';
|
|
27
27
|
import { useUploadAvatar } from '../hooks/mutations/useAccountMutations';
|
|
@@ -24,7 +24,7 @@ import Avatar from '../components/Avatar';
|
|
|
24
24
|
import { Header, GroupedSection, LoadingState } from '../components';
|
|
25
25
|
import { useI18n } from '../hooks/useI18n';
|
|
26
26
|
import { useThemeStyles } from '../hooks/useThemeStyles';
|
|
27
|
-
import { useColorScheme } from '../hooks/
|
|
27
|
+
import { useColorScheme } from '../hooks/useColorScheme';
|
|
28
28
|
import { normalizeTheme } from '../utils/themeUtils';
|
|
29
29
|
import { useOxy } from '../context/OxyContext';
|
|
30
30
|
|
|
@@ -460,7 +460,7 @@ const ModernAccountSwitcherScreen: React.FC<BaseScreenProps> = ({
|
|
|
460
460
|
iconColor: '#007AFF',
|
|
461
461
|
title: 'Add Another Account',
|
|
462
462
|
subtitle: 'Sign in with a different account',
|
|
463
|
-
onPress: () => navigate?.('
|
|
463
|
+
onPress: () => navigate?.('OxyAuth'),
|
|
464
464
|
},
|
|
465
465
|
{
|
|
466
466
|
id: 'device-management',
|
|
@@ -561,7 +561,7 @@ const ModernAccountSwitcherScreen: React.FC<BaseScreenProps> = ({
|
|
|
561
561
|
iconColor: '#ccc',
|
|
562
562
|
title: t('accountSwitcher.empty.title') || 'No saved accounts',
|
|
563
563
|
subtitle: t('accountSwitcher.empty.subtitle') || 'Add another account to switch between them quickly',
|
|
564
|
-
onPress: () => navigate?.('
|
|
564
|
+
onPress: () => navigate?.('OxyAuth'),
|
|
565
565
|
customContent: (
|
|
566
566
|
<View style={styles.emptyStateContainer}>
|
|
567
567
|
<OxyIcon name="person-outline" size={48} color="#ccc" />
|
|
@@ -571,7 +571,7 @@ const ModernAccountSwitcherScreen: React.FC<BaseScreenProps> = ({
|
|
|
571
571
|
</Text>
|
|
572
572
|
<TouchableOpacity
|
|
573
573
|
style={styles.addAccountButton}
|
|
574
|
-
onPress={() => navigate?.('
|
|
574
|
+
onPress={() => navigate?.('OxyAuth')}
|
|
575
575
|
>
|
|
576
576
|
<Text style={styles.addAccountButtonText}>{t('accountCenter.sections.addAccount') || 'Add Account'}</Text>
|
|
577
577
|
</TouchableOpacity>
|
|
@@ -23,7 +23,7 @@ import { Ionicons } from '@expo/vector-icons';
|
|
|
23
23
|
import OxyServicesLogo from '../../assets/icons/OxyServices';
|
|
24
24
|
import { Section, GroupedSection } from '../components';
|
|
25
25
|
import { useThemeStyles } from '../hooks/useThemeStyles';
|
|
26
|
-
import { useColorScheme } from '../hooks/
|
|
26
|
+
import { useColorScheme } from '../hooks/useColorScheme';
|
|
27
27
|
import { useOxy } from '../context/OxyContext';
|
|
28
28
|
|
|
29
29
|
|
|
@@ -14,7 +14,7 @@ import {
|
|
|
14
14
|
import { Ionicons } from '@expo/vector-icons';
|
|
15
15
|
import type { BaseScreenProps } from '../types/navigation';
|
|
16
16
|
import { useThemeStyles } from '../hooks/useThemeStyles';
|
|
17
|
-
import { useColorScheme } from '../hooks/
|
|
17
|
+
import { useColorScheme } from '../hooks/useColorScheme';
|
|
18
18
|
import { normalizeTheme } from '../utils/themeUtils';
|
|
19
19
|
import { Header } from '../components';
|
|
20
20
|
import { useI18n } from '../hooks/useI18n';
|
|
@@ -38,7 +38,7 @@ import Header from '../components/Header';
|
|
|
38
38
|
import JustifiedPhotoGrid from '../components/photogrid/JustifiedPhotoGrid';
|
|
39
39
|
import { GroupedSection } from '../components';
|
|
40
40
|
import { useThemeStyles } from '../hooks/useThemeStyles';
|
|
41
|
-
import { useColorScheme } from '../hooks/
|
|
41
|
+
import { useColorScheme } from '../hooks/useColorScheme';
|
|
42
42
|
import { normalizeTheme } from '../utils/themeUtils';
|
|
43
43
|
import { useOxy } from '../context/OxyContext';
|
|
44
44
|
import { useUploadFile } from '../hooks/mutations/useAccountMutations';
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { BaseScreenProps } from '../types/navigation';
|
|
3
|
+
import UserListScreen from './UserListScreen';
|
|
4
|
+
|
|
5
|
+
interface FollowersListScreenProps extends BaseScreenProps {
|
|
6
|
+
userId: string;
|
|
7
|
+
initialCount?: number;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
const FollowersListScreen: React.FC<FollowersListScreenProps> = (props) => {
|
|
11
|
+
return <UserListScreen {...props} mode="followers" />;
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
export default FollowersListScreen;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { BaseScreenProps } from '../types/navigation';
|
|
3
|
+
import UserListScreen from './UserListScreen';
|
|
4
|
+
|
|
5
|
+
interface FollowingListScreenProps extends BaseScreenProps {
|
|
6
|
+
userId: string;
|
|
7
|
+
initialCount?: number;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
const FollowingListScreen: React.FC<FollowingListScreenProps> = (props) => {
|
|
11
|
+
return <UserListScreen {...props} mode="following" />;
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
export default FollowingListScreen;
|
|
@@ -12,7 +12,7 @@ import { toast } from '../../lib/sonner';
|
|
|
12
12
|
import { Header, Section, GroupedSection } from '../components';
|
|
13
13
|
import { useI18n } from '../hooks/useI18n';
|
|
14
14
|
import { useThemeStyles } from '../hooks/useThemeStyles';
|
|
15
|
-
import { useColorScheme } from '../hooks/
|
|
15
|
+
import { useColorScheme } from '../hooks/useColorScheme';
|
|
16
16
|
|
|
17
17
|
const HelpSupportScreen: React.FC<BaseScreenProps> = ({
|
|
18
18
|
onClose,
|
|
@@ -10,7 +10,7 @@ import { confirmAction } from '../utils/confirmAction';
|
|
|
10
10
|
import { Header, Section, GroupedSection, LoadingState, EmptyState } from '../components';
|
|
11
11
|
import { useI18n } from '../hooks/useI18n';
|
|
12
12
|
import { useThemeStyles } from '../hooks/useThemeStyles';
|
|
13
|
-
import { useColorScheme } from '../hooks/
|
|
13
|
+
import { useColorScheme } from '../hooks/useColorScheme';
|
|
14
14
|
import { useOxy } from '../context/OxyContext';
|
|
15
15
|
|
|
16
16
|
interface HistoryItem {
|
|
@@ -9,7 +9,7 @@ import {
|
|
|
9
9
|
} from 'react-native';
|
|
10
10
|
import type { BaseScreenProps } from '../types/navigation';
|
|
11
11
|
import { useThemeStyles } from '../hooks/useThemeStyles';
|
|
12
|
-
import { useColorScheme } from '../hooks/
|
|
12
|
+
import { useColorScheme } from '../hooks/useColorScheme';
|
|
13
13
|
import { normalizeTheme } from '../utils/themeUtils';
|
|
14
14
|
import { Ionicons } from '@expo/vector-icons';
|
|
15
15
|
import { toast } from '../../lib/sonner';
|
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
import React, { useState, useCallback, useMemo } from 'react';
|
|
2
|
+
import {
|
|
3
|
+
View,
|
|
4
|
+
Text,
|
|
5
|
+
TouchableOpacity,
|
|
6
|
+
StyleSheet,
|
|
7
|
+
ScrollView,
|
|
8
|
+
} from 'react-native';
|
|
9
|
+
import { Ionicons } from '@expo/vector-icons';
|
|
10
|
+
import type { BaseScreenProps } from '../types/navigation';
|
|
11
|
+
import { useThemeStyles } from '../hooks/useThemeStyles';
|
|
12
|
+
|
|
13
|
+
interface InfoSection {
|
|
14
|
+
id: string;
|
|
15
|
+
title: string;
|
|
16
|
+
content: string;
|
|
17
|
+
icon: string;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
const INFO_SECTIONS: InfoSection[] = [
|
|
21
|
+
{
|
|
22
|
+
id: 'what',
|
|
23
|
+
title: 'What is a username?',
|
|
24
|
+
content: 'Your username is your unique identifier on Oxy. It\'s how other people find and mention you. Think of it like your handle on social media - it\'s public and represents your identity across all Oxy apps.',
|
|
25
|
+
icon: 'at-outline',
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
id: 'rules',
|
|
29
|
+
title: 'Username rules',
|
|
30
|
+
content: 'Usernames can only contain lowercase letters (a-z) and numbers (0-9). They must be at least 4 characters long. Special characters, spaces, and uppercase letters are not allowed to keep usernames simple and easy to remember.',
|
|
31
|
+
icon: 'list-outline',
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
id: 'unique',
|
|
35
|
+
title: 'Why must it be unique?',
|
|
36
|
+
content: 'Each username can only belong to one person. This ensures that when someone searches for you or mentions you, they find the right person. It also prevents confusion and impersonation.',
|
|
37
|
+
icon: 'finger-print-outline',
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
id: 'change',
|
|
41
|
+
title: 'Can I change it later?',
|
|
42
|
+
content: 'Yes! You can change your username anytime in your account settings. Keep in mind that your old username will become available for others to use, and people who knew your old username will need to find you with the new one.',
|
|
43
|
+
icon: 'refresh-outline',
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
id: 'tips',
|
|
47
|
+
title: 'Tips for choosing a username',
|
|
48
|
+
content: 'Choose something memorable and easy to spell. Avoid using personal information like your birth year or phone number. Consider using a name that represents you across all contexts - professional and personal.',
|
|
49
|
+
icon: 'bulb-outline',
|
|
50
|
+
},
|
|
51
|
+
];
|
|
52
|
+
|
|
53
|
+
const LearnMoreUsernamesScreen: React.FC<BaseScreenProps> = ({
|
|
54
|
+
theme,
|
|
55
|
+
}) => {
|
|
56
|
+
const themeStyles = useThemeStyles(theme || 'light');
|
|
57
|
+
const [expandedIds, setExpandedIds] = useState<Set<string>>(new Set(['what'])); // Start with first section expanded
|
|
58
|
+
|
|
59
|
+
const toggleExpanded = useCallback((id: string) => {
|
|
60
|
+
setExpandedIds(prev => {
|
|
61
|
+
const next = new Set(prev);
|
|
62
|
+
if (next.has(id)) {
|
|
63
|
+
next.delete(id);
|
|
64
|
+
} else {
|
|
65
|
+
next.add(id);
|
|
66
|
+
}
|
|
67
|
+
return next;
|
|
68
|
+
});
|
|
69
|
+
}, []);
|
|
70
|
+
|
|
71
|
+
const styles = useMemo(() => createStyles(themeStyles), [themeStyles]);
|
|
72
|
+
|
|
73
|
+
return (
|
|
74
|
+
<View style={[styles.container, { backgroundColor: themeStyles.backgroundColor }]}>
|
|
75
|
+
<ScrollView
|
|
76
|
+
style={styles.content}
|
|
77
|
+
showsVerticalScrollIndicator={false}
|
|
78
|
+
contentContainerStyle={styles.contentContainer}
|
|
79
|
+
>
|
|
80
|
+
<View style={styles.introSection}>
|
|
81
|
+
<View style={[styles.introIcon, { backgroundColor: themeStyles.primaryColor + '15' }]}>
|
|
82
|
+
<Ionicons name="at" size={32} color={themeStyles.primaryColor} />
|
|
83
|
+
</View>
|
|
84
|
+
<Text style={[styles.introTitle, { color: themeStyles.textColor }]}>
|
|
85
|
+
Your unique identity
|
|
86
|
+
</Text>
|
|
87
|
+
<Text style={[styles.introText, { color: themeStyles.mutedTextColor }]}>
|
|
88
|
+
Your username is how people find and recognize you across all Oxy apps.
|
|
89
|
+
</Text>
|
|
90
|
+
</View>
|
|
91
|
+
|
|
92
|
+
{INFO_SECTIONS.map((section, index) => {
|
|
93
|
+
const isExpanded = expandedIds.has(section.id);
|
|
94
|
+
return (
|
|
95
|
+
<View
|
|
96
|
+
key={section.id}
|
|
97
|
+
style={[
|
|
98
|
+
styles.section,
|
|
99
|
+
{ backgroundColor: themeStyles.secondaryBackgroundColor, borderColor: themeStyles.borderColor },
|
|
100
|
+
index === 0 && styles.sectionFirst,
|
|
101
|
+
]}
|
|
102
|
+
>
|
|
103
|
+
<TouchableOpacity
|
|
104
|
+
style={styles.sectionHeader}
|
|
105
|
+
onPress={() => toggleExpanded(section.id)}
|
|
106
|
+
accessibilityRole="button"
|
|
107
|
+
accessibilityLabel={section.title}
|
|
108
|
+
accessibilityHint={isExpanded ? 'Collapse section' : 'Expand section'}
|
|
109
|
+
accessibilityState={{ expanded: isExpanded }}
|
|
110
|
+
>
|
|
111
|
+
<View style={[styles.sectionIconContainer, { backgroundColor: themeStyles.primaryColor + '15' }]}>
|
|
112
|
+
<Ionicons
|
|
113
|
+
name={section.icon}
|
|
114
|
+
size={20}
|
|
115
|
+
color={themeStyles.primaryColor}
|
|
116
|
+
/>
|
|
117
|
+
</View>
|
|
118
|
+
<Text style={[styles.sectionTitle, { color: themeStyles.textColor }]}>
|
|
119
|
+
{section.title}
|
|
120
|
+
</Text>
|
|
121
|
+
<Ionicons
|
|
122
|
+
name={isExpanded ? 'chevron-up' : 'chevron-down'}
|
|
123
|
+
size={20}
|
|
124
|
+
color={themeStyles.mutedTextColor}
|
|
125
|
+
/>
|
|
126
|
+
</TouchableOpacity>
|
|
127
|
+
{isExpanded && (
|
|
128
|
+
<View style={[styles.sectionContent, { borderTopColor: themeStyles.borderColor }]}>
|
|
129
|
+
<Text style={[styles.sectionText, { color: themeStyles.mutedTextColor }]}>
|
|
130
|
+
{section.content}
|
|
131
|
+
</Text>
|
|
132
|
+
</View>
|
|
133
|
+
)}
|
|
134
|
+
</View>
|
|
135
|
+
);
|
|
136
|
+
})}
|
|
137
|
+
|
|
138
|
+
<View style={styles.footer}>
|
|
139
|
+
<Text style={[styles.footerText, { color: themeStyles.mutedTextColor }]}>
|
|
140
|
+
Need more help? Visit our Help Center for additional information.
|
|
141
|
+
</Text>
|
|
142
|
+
</View>
|
|
143
|
+
</ScrollView>
|
|
144
|
+
</View>
|
|
145
|
+
);
|
|
146
|
+
};
|
|
147
|
+
|
|
148
|
+
const createStyles = (themeStyles: ReturnType<typeof useThemeStyles>) => StyleSheet.create({
|
|
149
|
+
container: {
|
|
150
|
+
flex: 1,
|
|
151
|
+
},
|
|
152
|
+
content: {
|
|
153
|
+
flex: 1,
|
|
154
|
+
},
|
|
155
|
+
contentContainer: {
|
|
156
|
+
padding: 16,
|
|
157
|
+
paddingBottom: 32,
|
|
158
|
+
},
|
|
159
|
+
introSection: {
|
|
160
|
+
alignItems: 'center',
|
|
161
|
+
paddingVertical: 24,
|
|
162
|
+
paddingHorizontal: 16,
|
|
163
|
+
},
|
|
164
|
+
introIcon: {
|
|
165
|
+
width: 64,
|
|
166
|
+
height: 64,
|
|
167
|
+
borderRadius: 32,
|
|
168
|
+
alignItems: 'center',
|
|
169
|
+
justifyContent: 'center',
|
|
170
|
+
marginBottom: 16,
|
|
171
|
+
},
|
|
172
|
+
introTitle: {
|
|
173
|
+
fontSize: 24,
|
|
174
|
+
fontWeight: '700',
|
|
175
|
+
marginBottom: 8,
|
|
176
|
+
textAlign: 'center',
|
|
177
|
+
},
|
|
178
|
+
introText: {
|
|
179
|
+
fontSize: 16,
|
|
180
|
+
lineHeight: 24,
|
|
181
|
+
textAlign: 'center',
|
|
182
|
+
},
|
|
183
|
+
section: {
|
|
184
|
+
borderRadius: 12,
|
|
185
|
+
borderWidth: 1,
|
|
186
|
+
marginBottom: 12,
|
|
187
|
+
overflow: 'hidden',
|
|
188
|
+
},
|
|
189
|
+
sectionFirst: {
|
|
190
|
+
marginTop: 8,
|
|
191
|
+
},
|
|
192
|
+
sectionHeader: {
|
|
193
|
+
flexDirection: 'row',
|
|
194
|
+
alignItems: 'center',
|
|
195
|
+
padding: 16,
|
|
196
|
+
},
|
|
197
|
+
sectionIconContainer: {
|
|
198
|
+
width: 36,
|
|
199
|
+
height: 36,
|
|
200
|
+
borderRadius: 18,
|
|
201
|
+
alignItems: 'center',
|
|
202
|
+
justifyContent: 'center',
|
|
203
|
+
marginRight: 12,
|
|
204
|
+
},
|
|
205
|
+
sectionTitle: {
|
|
206
|
+
flex: 1,
|
|
207
|
+
fontSize: 16,
|
|
208
|
+
fontWeight: '600',
|
|
209
|
+
marginRight: 12,
|
|
210
|
+
},
|
|
211
|
+
sectionContent: {
|
|
212
|
+
padding: 16,
|
|
213
|
+
paddingTop: 12,
|
|
214
|
+
borderTopWidth: 1,
|
|
215
|
+
},
|
|
216
|
+
sectionText: {
|
|
217
|
+
fontSize: 14,
|
|
218
|
+
lineHeight: 22,
|
|
219
|
+
},
|
|
220
|
+
footer: {
|
|
221
|
+
marginTop: 16,
|
|
222
|
+
paddingHorizontal: 16,
|
|
223
|
+
},
|
|
224
|
+
footerText: {
|
|
225
|
+
fontSize: 14,
|
|
226
|
+
textAlign: 'center',
|
|
227
|
+
lineHeight: 20,
|
|
228
|
+
},
|
|
229
|
+
});
|
|
230
|
+
|
|
231
|
+
export default LearnMoreUsernamesScreen;
|
|
@@ -10,7 +10,7 @@ import { toast } from '../../lib/sonner';
|
|
|
10
10
|
import { Header, Section, GroupedSection, LoadingState } from '../components';
|
|
11
11
|
import { useI18n } from '../hooks/useI18n';
|
|
12
12
|
import { useThemeStyles } from '../hooks/useThemeStyles';
|
|
13
|
-
import { useColorScheme } from '../hooks/
|
|
13
|
+
import { useColorScheme } from '../hooks/useColorScheme';
|
|
14
14
|
|
|
15
15
|
const LegalDocumentsScreen: React.FC<BaseScreenProps> = ({
|
|
16
16
|
onClose,
|
|
@@ -28,6 +28,9 @@ import { useThemeColors } from '../styles';
|
|
|
28
28
|
import { useOxy } from '../context/OxyContext';
|
|
29
29
|
import QRCode from 'react-native-qrcode-svg';
|
|
30
30
|
import OxyLogo from '../components/OxyLogo';
|
|
31
|
+
import { createDebugLogger } from '../../shared/utils/debugUtils';
|
|
32
|
+
|
|
33
|
+
const debug = createDebugLogger('OxyAuthScreen');
|
|
31
34
|
|
|
32
35
|
const OXY_ACCOUNTS_WEB_URL = 'https://accounts.oxy.so';
|
|
33
36
|
const OXY_AUTH_WEB_URL = 'https://auth.oxy.so';
|
|
@@ -150,9 +153,7 @@ const OxyAuthScreen: React.FC<BaseScreenProps> = ({
|
|
|
150
153
|
}
|
|
151
154
|
}
|
|
152
155
|
} catch (err) {
|
|
153
|
-
|
|
154
|
-
console.error('Error completing auth:', err);
|
|
155
|
-
}
|
|
156
|
+
debug.error('Error completing auth:', err);
|
|
156
157
|
setError('Authorization successful but failed to complete sign in. Please try again.');
|
|
157
158
|
isProcessingRef.current = false;
|
|
158
159
|
}
|
|
@@ -173,24 +174,18 @@ const OxyAuthScreen: React.FC<BaseScreenProps> = ({
|
|
|
173
174
|
socketRef.current = socket;
|
|
174
175
|
|
|
175
176
|
socket.on('connect', () => {
|
|
176
|
-
|
|
177
|
-
console.log('Auth socket connected');
|
|
178
|
-
}
|
|
177
|
+
debug.log('Auth socket connected');
|
|
179
178
|
// Join the room for this session token
|
|
180
179
|
socket.emit('join', sessionToken);
|
|
181
180
|
setConnectionType('socket');
|
|
182
181
|
});
|
|
183
182
|
|
|
184
183
|
socket.on('joined', () => {
|
|
185
|
-
|
|
186
|
-
console.log('Joined auth session room');
|
|
187
|
-
}
|
|
184
|
+
debug.log('Joined auth session room');
|
|
188
185
|
});
|
|
189
186
|
|
|
190
187
|
socket.on('auth_update', (payload: AuthUpdatePayload) => {
|
|
191
|
-
|
|
192
|
-
console.log('Auth update received:', payload);
|
|
193
|
-
}
|
|
188
|
+
debug.log('Auth update received:', payload);
|
|
194
189
|
|
|
195
190
|
if (payload.status === 'authorized' && payload.sessionId) {
|
|
196
191
|
cleanup();
|
|
@@ -205,18 +200,14 @@ const OxyAuthScreen: React.FC<BaseScreenProps> = ({
|
|
|
205
200
|
});
|
|
206
201
|
|
|
207
202
|
socket.on('connect_error', (err) => {
|
|
208
|
-
|
|
209
|
-
console.log('Socket connection error, falling back to polling:', err.message);
|
|
210
|
-
}
|
|
203
|
+
debug.log('Socket connection error, falling back to polling:', err.message);
|
|
211
204
|
// Fall back to polling if socket fails
|
|
212
205
|
socket.disconnect();
|
|
213
206
|
startPolling(sessionToken);
|
|
214
207
|
});
|
|
215
208
|
|
|
216
209
|
socket.on('disconnect', () => {
|
|
217
|
-
|
|
218
|
-
console.log('Auth socket disconnected');
|
|
219
|
-
}
|
|
210
|
+
debug.log('Auth socket disconnected');
|
|
220
211
|
});
|
|
221
212
|
}, [oxyServices, handleAuthSuccess]);
|
|
222
213
|
|
|
@@ -247,9 +238,7 @@ const OxyAuthScreen: React.FC<BaseScreenProps> = ({
|
|
|
247
238
|
}
|
|
248
239
|
} catch (err) {
|
|
249
240
|
// Silent fail for polling - will retry
|
|
250
|
-
|
|
251
|
-
console.log('Auth polling error:', err);
|
|
252
|
-
}
|
|
241
|
+
debug.log('Auth polling error:', err);
|
|
253
242
|
}
|
|
254
243
|
}, POLLING_INTERVAL_MS);
|
|
255
244
|
}, [oxyServices, handleAuthSuccess]);
|
|
@@ -21,7 +21,7 @@ import Avatar from '../components/Avatar';
|
|
|
21
21
|
import { useI18n } from '../hooks/useI18n';
|
|
22
22
|
import { useThemeStyles } from '../hooks/useThemeStyles';
|
|
23
23
|
import { normalizeTheme } from '../utils/themeUtils';
|
|
24
|
-
import { useColorScheme } from '../hooks/
|
|
24
|
+
import { useColorScheme } from '../hooks/useColorScheme';
|
|
25
25
|
import { useOxy } from '../context/OxyContext';
|
|
26
26
|
|
|
27
27
|
interface SubscriptionPlan {
|