@oxyhq/services 6.9.45 → 6.9.46
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/commonjs/ui/components/OxyProvider.js +6 -5
- package/lib/commonjs/ui/components/OxyProvider.js.map +1 -1
- package/lib/commonjs/ui/components/SignInModal.js +271 -102
- package/lib/commonjs/ui/components/SignInModal.js.map +1 -1
- package/lib/commonjs/ui/components/fileManagement/FileViewer.js +24 -15
- package/lib/commonjs/ui/components/fileManagement/FileViewer.js.map +1 -1
- package/lib/commonjs/ui/components/index.js +0 -35
- package/lib/commonjs/ui/components/index.js.map +1 -1
- package/lib/commonjs/ui/components/payment/PaymentDetailsStep.js +26 -13
- package/lib/commonjs/ui/components/payment/PaymentDetailsStep.js.map +1 -1
- package/lib/commonjs/ui/components/payment/PaymentMethodStep.js +50 -28
- package/lib/commonjs/ui/components/payment/PaymentMethodStep.js.map +1 -1
- package/lib/commonjs/ui/components/payment/PaymentReviewStep.js +83 -48
- package/lib/commonjs/ui/components/payment/PaymentReviewStep.js.map +1 -1
- package/lib/commonjs/ui/components/payment/PaymentSuccessStep.js +11 -10
- package/lib/commonjs/ui/components/payment/PaymentSuccessStep.js.map +1 -1
- package/lib/commonjs/ui/components/payment/PaymentSummaryStep.js +38 -23
- package/lib/commonjs/ui/components/payment/PaymentSummaryStep.js.map +1 -1
- package/lib/commonjs/ui/context/hooks/useAuthOperations.js +4 -3
- package/lib/commonjs/ui/context/hooks/useAuthOperations.js.map +1 -1
- package/lib/commonjs/ui/screens/AccountCenterScreen.js +1 -3
- package/lib/commonjs/ui/screens/AccountCenterScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/AccountOverviewScreen.js +47 -63
- package/lib/commonjs/ui/screens/AccountOverviewScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/AccountSettingsScreen.js +90 -68
- package/lib/commonjs/ui/screens/AccountSettingsScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/AccountSwitcherScreen.js +72 -63
- package/lib/commonjs/ui/screens/AccountSwitcherScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/AccountVerificationScreen.js +5 -5
- package/lib/commonjs/ui/screens/AccountVerificationScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/FeedbackScreen.js +57 -51
- package/lib/commonjs/ui/screens/FeedbackScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/FileManagementScreen.js +25 -36
- package/lib/commonjs/ui/screens/FileManagementScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/HistoryViewScreen.js +31 -31
- package/lib/commonjs/ui/screens/HistoryViewScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/LanguageSelectorScreen.js +15 -8
- package/lib/commonjs/ui/screens/LanguageSelectorScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/LegalDocumentsScreen.js +60 -54
- package/lib/commonjs/ui/screens/LegalDocumentsScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/PaymentGatewayScreen.js +12 -9
- package/lib/commonjs/ui/screens/PaymentGatewayScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/PrivacySettingsScreen.js +159 -190
- package/lib/commonjs/ui/screens/PrivacySettingsScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/SavesCollectionsScreen.js +20 -22
- package/lib/commonjs/ui/screens/SavesCollectionsScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/SearchSettingsScreen.js +16 -17
- package/lib/commonjs/ui/screens/SearchSettingsScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/SessionManagementScreen.js +26 -4
- package/lib/commonjs/ui/screens/SessionManagementScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/UserLinksScreen.js +13 -29
- package/lib/commonjs/ui/screens/UserLinksScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/WelcomeNewUserScreen.js +110 -52
- package/lib/commonjs/ui/screens/WelcomeNewUserScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/karma/KarmaFAQScreen.js +3 -5
- package/lib/commonjs/ui/screens/karma/KarmaFAQScreen.js.map +1 -1
- package/lib/module/ui/components/OxyProvider.js +6 -5
- package/lib/module/ui/components/OxyProvider.js.map +1 -1
- package/lib/module/ui/components/SignInModal.js +271 -100
- package/lib/module/ui/components/SignInModal.js.map +1 -1
- package/lib/module/ui/components/fileManagement/FileViewer.js +24 -15
- package/lib/module/ui/components/fileManagement/FileViewer.js.map +1 -1
- package/lib/module/ui/components/index.js +0 -5
- package/lib/module/ui/components/index.js.map +1 -1
- package/lib/module/ui/components/payment/PaymentDetailsStep.js +26 -13
- package/lib/module/ui/components/payment/PaymentDetailsStep.js.map +1 -1
- package/lib/module/ui/components/payment/PaymentMethodStep.js +49 -26
- package/lib/module/ui/components/payment/PaymentMethodStep.js.map +1 -1
- package/lib/module/ui/components/payment/PaymentReviewStep.js +84 -48
- package/lib/module/ui/components/payment/PaymentReviewStep.js.map +1 -1
- package/lib/module/ui/components/payment/PaymentSuccessStep.js +11 -9
- package/lib/module/ui/components/payment/PaymentSuccessStep.js.map +1 -1
- package/lib/module/ui/components/payment/PaymentSummaryStep.js +38 -22
- package/lib/module/ui/components/payment/PaymentSummaryStep.js.map +1 -1
- package/lib/module/ui/context/hooks/useAuthOperations.js +4 -3
- package/lib/module/ui/context/hooks/useAuthOperations.js.map +1 -1
- package/lib/module/ui/screens/AccountCenterScreen.js +1 -3
- package/lib/module/ui/screens/AccountCenterScreen.js.map +1 -1
- package/lib/module/ui/screens/AccountOverviewScreen.js +46 -62
- package/lib/module/ui/screens/AccountOverviewScreen.js.map +1 -1
- package/lib/module/ui/screens/AccountSettingsScreen.js +90 -68
- package/lib/module/ui/screens/AccountSettingsScreen.js.map +1 -1
- package/lib/module/ui/screens/AccountSwitcherScreen.js +73 -64
- package/lib/module/ui/screens/AccountSwitcherScreen.js.map +1 -1
- package/lib/module/ui/screens/AccountVerificationScreen.js +6 -6
- package/lib/module/ui/screens/AccountVerificationScreen.js.map +1 -1
- package/lib/module/ui/screens/FeedbackScreen.js +48 -42
- package/lib/module/ui/screens/FeedbackScreen.js.map +1 -1
- package/lib/module/ui/screens/FileManagementScreen.js +25 -36
- package/lib/module/ui/screens/FileManagementScreen.js.map +1 -1
- package/lib/module/ui/screens/HistoryViewScreen.js +32 -32
- package/lib/module/ui/screens/HistoryViewScreen.js.map +1 -1
- package/lib/module/ui/screens/LanguageSelectorScreen.js +16 -9
- package/lib/module/ui/screens/LanguageSelectorScreen.js.map +1 -1
- package/lib/module/ui/screens/LegalDocumentsScreen.js +61 -55
- package/lib/module/ui/screens/LegalDocumentsScreen.js.map +1 -1
- package/lib/module/ui/screens/PaymentGatewayScreen.js +12 -9
- package/lib/module/ui/screens/PaymentGatewayScreen.js.map +1 -1
- package/lib/module/ui/screens/PrivacySettingsScreen.js +161 -192
- package/lib/module/ui/screens/PrivacySettingsScreen.js.map +1 -1
- package/lib/module/ui/screens/SavesCollectionsScreen.js +21 -23
- package/lib/module/ui/screens/SavesCollectionsScreen.js.map +1 -1
- package/lib/module/ui/screens/SearchSettingsScreen.js +17 -18
- package/lib/module/ui/screens/SearchSettingsScreen.js.map +1 -1
- package/lib/module/ui/screens/SessionManagementScreen.js +27 -5
- package/lib/module/ui/screens/SessionManagementScreen.js.map +1 -1
- package/lib/module/ui/screens/UserLinksScreen.js +15 -31
- package/lib/module/ui/screens/UserLinksScreen.js.map +1 -1
- package/lib/module/ui/screens/WelcomeNewUserScreen.js +110 -52
- package/lib/module/ui/screens/WelcomeNewUserScreen.js.map +1 -1
- package/lib/module/ui/screens/karma/KarmaFAQScreen.js +4 -6
- package/lib/module/ui/screens/karma/KarmaFAQScreen.js.map +1 -1
- package/lib/typescript/commonjs/ui/components/OxyProvider.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/SignInModal.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/fileManagement/FileViewer.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/index.d.ts +0 -5
- package/lib/typescript/commonjs/ui/components/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/payment/PaymentDetailsStep.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/payment/PaymentMethodStep.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/payment/PaymentReviewStep.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/payment/PaymentSuccessStep.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/payment/PaymentSummaryStep.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/context/hooks/useAuthOperations.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/navigation/bottomSheetManager.d.ts +1 -1
- package/lib/typescript/commonjs/ui/navigation/bottomSheetManager.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/AccountCenterScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/AccountOverviewScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/AccountSettingsScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/AccountSwitcherScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/AccountVerificationScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/FeedbackScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/FileManagementScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/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/PaymentGatewayScreen.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/KarmaFAQScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/OxyProvider.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/SignInModal.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/fileManagement/FileViewer.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/index.d.ts +0 -5
- package/lib/typescript/module/ui/components/index.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/payment/PaymentDetailsStep.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/payment/PaymentMethodStep.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/payment/PaymentReviewStep.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/payment/PaymentSuccessStep.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/payment/PaymentSummaryStep.d.ts.map +1 -1
- package/lib/typescript/module/ui/context/hooks/useAuthOperations.d.ts.map +1 -1
- package/lib/typescript/module/ui/navigation/bottomSheetManager.d.ts +1 -1
- package/lib/typescript/module/ui/navigation/bottomSheetManager.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/AccountCenterScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/AccountOverviewScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/AccountSettingsScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/AccountSwitcherScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/AccountVerificationScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/FeedbackScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/FileManagementScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/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/PaymentGatewayScreen.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/KarmaFAQScreen.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/ui/components/OxyProvider.tsx +6 -5
- package/src/ui/components/SignInModal.tsx +186 -42
- package/src/ui/components/fileManagement/FileViewer.tsx +25 -15
- package/src/ui/components/index.ts +0 -5
- package/src/ui/components/payment/PaymentDetailsStep.tsx +16 -19
- package/src/ui/components/payment/PaymentMethodStep.tsx +33 -35
- package/src/ui/components/payment/PaymentReviewStep.tsx +63 -67
- package/src/ui/components/payment/PaymentSuccessStep.tsx +4 -12
- package/src/ui/components/payment/PaymentSummaryStep.tsx +26 -33
- package/src/ui/context/hooks/useAuthOperations.ts +4 -3
- package/src/ui/screens/AccountCenterScreen.tsx +2 -3
- package/src/ui/screens/AccountOverviewScreen.tsx +44 -65
- package/src/ui/screens/AccountSettingsScreen.tsx +121 -149
- package/src/ui/screens/AccountSwitcherScreen.tsx +94 -115
- package/src/ui/screens/AccountVerificationScreen.tsx +10 -9
- package/src/ui/screens/FeedbackScreen.tsx +50 -38
- package/src/ui/screens/FileManagementScreen.tsx +26 -34
- package/src/ui/screens/HistoryViewScreen.tsx +29 -10
- package/src/ui/screens/LanguageSelectorScreen.tsx +19 -7
- package/src/ui/screens/LegalDocumentsScreen.tsx +46 -63
- package/src/ui/screens/PaymentGatewayScreen.tsx +11 -12
- package/src/ui/screens/PrivacySettingsScreen.tsx +81 -193
- package/src/ui/screens/SavesCollectionsScreen.tsx +23 -23
- package/src/ui/screens/SearchSettingsScreen.tsx +11 -19
- package/src/ui/screens/SessionManagementScreen.tsx +29 -3
- package/src/ui/screens/UserLinksScreen.tsx +15 -32
- package/src/ui/screens/WelcomeNewUserScreen.tsx +46 -20
- package/src/ui/screens/karma/KarmaFAQScreen.tsx +4 -6
- package/lib/commonjs/ui/components/GroupedItem.js +0 -138
- package/lib/commonjs/ui/components/GroupedItem.js.map +0 -1
- package/lib/commonjs/ui/components/GroupedSection.js +0 -41
- package/lib/commonjs/ui/components/GroupedSection.js.map +0 -1
- package/lib/commonjs/ui/components/Section.js +0 -39
- package/lib/commonjs/ui/components/Section.js.map +0 -1
- package/lib/commonjs/ui/components/SectionTitle.js +0 -29
- package/lib/commonjs/ui/components/SectionTitle.js.map +0 -1
- package/lib/commonjs/ui/components/SettingRow.js +0 -96
- package/lib/commonjs/ui/components/SettingRow.js.map +0 -1
- package/lib/commonjs/ui/components/internal/GroupedPillButtons.js +0 -208
- package/lib/commonjs/ui/components/internal/GroupedPillButtons.js.map +0 -1
- package/lib/module/ui/components/GroupedItem.js +0 -135
- package/lib/module/ui/components/GroupedItem.js.map +0 -1
- package/lib/module/ui/components/GroupedSection.js +0 -37
- package/lib/module/ui/components/GroupedSection.js.map +0 -1
- package/lib/module/ui/components/Section.js +0 -34
- package/lib/module/ui/components/Section.js.map +0 -1
- package/lib/module/ui/components/SectionTitle.js +0 -25
- package/lib/module/ui/components/SectionTitle.js.map +0 -1
- package/lib/module/ui/components/SettingRow.js +0 -91
- package/lib/module/ui/components/SettingRow.js.map +0 -1
- package/lib/module/ui/components/internal/GroupedPillButtons.js +0 -204
- package/lib/module/ui/components/internal/GroupedPillButtons.js.map +0 -1
- package/lib/typescript/commonjs/ui/components/GroupedItem.d.ts +0 -24
- package/lib/typescript/commonjs/ui/components/GroupedItem.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/GroupedSection.d.ts +0 -30
- package/lib/typescript/commonjs/ui/components/GroupedSection.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/Section.d.ts +0 -12
- package/lib/typescript/commonjs/ui/components/Section.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/SectionTitle.d.ts +0 -10
- package/lib/typescript/commonjs/ui/components/SectionTitle.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/SettingRow.d.ts +0 -20
- package/lib/typescript/commonjs/ui/components/SettingRow.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/internal/GroupedPillButtons.d.ts +0 -24
- package/lib/typescript/commonjs/ui/components/internal/GroupedPillButtons.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/GroupedItem.d.ts +0 -24
- package/lib/typescript/module/ui/components/GroupedItem.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/GroupedSection.d.ts +0 -30
- package/lib/typescript/module/ui/components/GroupedSection.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/Section.d.ts +0 -12
- package/lib/typescript/module/ui/components/Section.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/SectionTitle.d.ts +0 -10
- package/lib/typescript/module/ui/components/SectionTitle.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/SettingRow.d.ts +0 -20
- package/lib/typescript/module/ui/components/SettingRow.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/internal/GroupedPillButtons.d.ts +0 -24
- package/lib/typescript/module/ui/components/internal/GroupedPillButtons.d.ts.map +0 -1
- package/src/ui/components/GroupedItem.tsx +0 -161
- package/src/ui/components/GroupedSection.tsx +0 -60
- package/src/ui/components/Section.tsx +0 -42
- package/src/ui/components/SectionTitle.tsx +0 -27
- package/src/ui/components/SettingRow.tsx +0 -105
- package/src/ui/components/internal/GroupedPillButtons.tsx +0 -253
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import type React from 'react';
|
|
2
2
|
import { useMemo } from 'react';
|
|
3
|
-
import { View, Text, Animated } from 'react-native';
|
|
4
|
-
import {
|
|
5
|
-
import
|
|
3
|
+
import { View, Text, Animated, ActivityIndicator } from 'react-native';
|
|
4
|
+
import { Ionicons } from '@expo/vector-icons';
|
|
5
|
+
import { SettingsListGroup, SettingsListItem } from '@oxyhq/bloom/settings-list';
|
|
6
|
+
import { Button } from '@oxyhq/bloom/button';
|
|
6
7
|
import { createPaymentStyles } from './paymentStyles';
|
|
7
8
|
import { PAYMENT_METHODS, getCurrencySymbol } from './constants';
|
|
8
9
|
import type { CardDetails, PaymentColors, PaymentStepAnimations } from './types';
|
|
@@ -56,72 +57,67 @@ const PaymentReviewStep: React.FC<PaymentReviewStepProps> = ({
|
|
|
56
57
|
<View style={styles.section}>
|
|
57
58
|
<Text style={styles.sectionTitle}>{t('payment.review.title')}</Text>
|
|
58
59
|
|
|
59
|
-
<
|
|
60
|
-
|
|
61
|
-
{
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
}
|
|
68
|
-
{
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
}
|
|
75
|
-
{
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
]}
|
|
104
|
-
/>
|
|
60
|
+
<SettingsListGroup>
|
|
61
|
+
<SettingsListItem
|
|
62
|
+
icon={<Ionicons name="shield-checkmark" size={20} color={colors.success || '#4BB543'} />}
|
|
63
|
+
title={t('payment.review.securePayment')}
|
|
64
|
+
description={t('payment.review.securePaymentDesc')}
|
|
65
|
+
showChevron={false}
|
|
66
|
+
/>
|
|
67
|
+
<SettingsListItem
|
|
68
|
+
icon={<Ionicons name="cash-outline" size={20} color={colors.primary} />}
|
|
69
|
+
title={t('payment.review.amount')}
|
|
70
|
+
description={`${currencySymbol} ${amount}`}
|
|
71
|
+
showChevron={false}
|
|
72
|
+
/>
|
|
73
|
+
<SettingsListItem
|
|
74
|
+
icon={selectedMethod ? <Ionicons name={selectedMethod.icon} size={20} color={colors.primary} /> : undefined}
|
|
75
|
+
title={t('payment.review.paymentMethod')}
|
|
76
|
+
description={selectedMethod ? t(`payment.methods.${selectedMethod.key}.label`) : undefined}
|
|
77
|
+
showChevron={false}
|
|
78
|
+
/>
|
|
79
|
+
{paymentMethod === 'card' ? (
|
|
80
|
+
<SettingsListItem
|
|
81
|
+
icon={<Ionicons name="card-outline" size={20} color={colors.primary} />}
|
|
82
|
+
title={t('payment.review.card')}
|
|
83
|
+
description={cardDetails.number.replace(/.(?=.{4})/g, '*')}
|
|
84
|
+
showChevron={false}
|
|
85
|
+
/>
|
|
86
|
+
) : null}
|
|
87
|
+
{paymentMethod === 'oxy' ? (
|
|
88
|
+
<SettingsListItem
|
|
89
|
+
icon={<Ionicons name="wallet-outline" size={20} color={colors.primary} />}
|
|
90
|
+
title={t('payment.review.oxyPayAccount')}
|
|
91
|
+
description={t('payment.details.balance', { balance: '⊜ 123.45' })}
|
|
92
|
+
showChevron={false}
|
|
93
|
+
/>
|
|
94
|
+
) : null}
|
|
95
|
+
{paymentMethod === 'faircoin' ? (
|
|
96
|
+
<SettingsListItem
|
|
97
|
+
icon={<Ionicons name="qr-code-outline" size={20} color={colors.primary} />}
|
|
98
|
+
title={t('payment.review.faircoinWallet')}
|
|
99
|
+
description={t('payment.review.paidViaQR')}
|
|
100
|
+
showChevron={false}
|
|
101
|
+
/>
|
|
102
|
+
) : null}
|
|
103
|
+
</SettingsListGroup>
|
|
105
104
|
</View>
|
|
106
105
|
|
|
107
|
-
<
|
|
108
|
-
|
|
109
|
-
{
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
{
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
]}
|
|
123
|
-
colors={colors}
|
|
124
|
-
/>
|
|
106
|
+
<View style={{ flexDirection: 'row', gap: 8, justifyContent: 'flex-end' }}>
|
|
107
|
+
<Button variant="secondary" onPress={onBack} size="small" disabled={isPaying} icon={<Ionicons name="arrow-back" size={16} />}>
|
|
108
|
+
{t('payment.actions.back')}
|
|
109
|
+
</Button>
|
|
110
|
+
<Button
|
|
111
|
+
variant="primary"
|
|
112
|
+
onPress={onPay}
|
|
113
|
+
size="small"
|
|
114
|
+
disabled={isPaying}
|
|
115
|
+
icon={isPaying ? <ActivityIndicator size="small" color="#FFFFFF" /> : <Ionicons name="checkmark" size={16} />}
|
|
116
|
+
iconPosition="right"
|
|
117
|
+
>
|
|
118
|
+
{isPaying ? t('payment.review.processing') : t('payment.review.payNow')}
|
|
119
|
+
</Button>
|
|
120
|
+
</View>
|
|
125
121
|
</Animated.View>
|
|
126
122
|
);
|
|
127
123
|
};
|
|
@@ -2,7 +2,7 @@ import type React from 'react';
|
|
|
2
2
|
import { useMemo } from 'react';
|
|
3
3
|
import { View, Text, Animated } from 'react-native';
|
|
4
4
|
import { Ionicons } from '@expo/vector-icons';
|
|
5
|
-
import
|
|
5
|
+
import { Button } from '@oxyhq/bloom/button';
|
|
6
6
|
import { createPaymentStyles } from './paymentStyles';
|
|
7
7
|
import type { PaymentColors, PaymentStepAnimations } from './types';
|
|
8
8
|
import { useI18n } from '../../hooks/useI18n';
|
|
@@ -56,17 +56,9 @@ const PaymentSuccessStep: React.FC<PaymentSuccessStepProps> = ({
|
|
|
56
56
|
</View>
|
|
57
57
|
</View>
|
|
58
58
|
|
|
59
|
-
<
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
text: t('payment.actions.done'),
|
|
63
|
-
onPress: onDone,
|
|
64
|
-
icon: 'checkmark',
|
|
65
|
-
variant: 'primary',
|
|
66
|
-
},
|
|
67
|
-
]}
|
|
68
|
-
colors={colors}
|
|
69
|
-
/>
|
|
59
|
+
<Button variant="primary" onPress={onDone} size="small" icon={<Ionicons name="checkmark" size={16} />} iconPosition="right">
|
|
60
|
+
{t('payment.actions.done')}
|
|
61
|
+
</Button>
|
|
70
62
|
</Animated.View>
|
|
71
63
|
);
|
|
72
64
|
};
|
|
@@ -2,8 +2,8 @@ import type React from 'react';
|
|
|
2
2
|
import { useMemo } from 'react';
|
|
3
3
|
import { View, Text, Animated } from 'react-native';
|
|
4
4
|
import { Ionicons } from '@expo/vector-icons';
|
|
5
|
-
import {
|
|
6
|
-
import
|
|
5
|
+
import { SettingsListGroup, SettingsListItem } from '@oxyhq/bloom/settings-list';
|
|
6
|
+
import { Button } from '@oxyhq/bloom/button';
|
|
7
7
|
import { createPaymentStyles } from './paymentStyles';
|
|
8
8
|
import { getCurrencySymbol, CURRENCY_SYMBOLS } from './constants';
|
|
9
9
|
import type { PaymentItem, PaymentColors, PaymentStepAnimations } from './types';
|
|
@@ -81,20 +81,22 @@ const PaymentSummaryStep: React.FC<PaymentSummaryStepProps> = ({
|
|
|
81
81
|
{paymentItems.length > 0 ? (
|
|
82
82
|
<>
|
|
83
83
|
<View style={styles.summaryCardItems}>
|
|
84
|
-
<
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
84
|
+
<SettingsListGroup>
|
|
85
|
+
{paymentItems.map((item, idx) => (
|
|
86
|
+
<SettingsListItem
|
|
87
|
+
key={`item-${idx}`}
|
|
88
|
+
icon={<Ionicons name={getItemTypeIcon(item.type)} size={20} color={colors.primary} />}
|
|
89
|
+
title={`${item.type === 'product' && item.quantity ? `${item.quantity} \u00d7 ` : ''}${item.name}${item.type === 'subscription' && item.period ? ` (${item.period})` : ''}`}
|
|
90
|
+
description={item.description || `${item.currency ? (CURRENCY_SYMBOLS[item.currency.toUpperCase()] || item.currency) : currencySymbol} ${item.price * (item.quantity ?? 1)}`}
|
|
91
|
+
showChevron={false}
|
|
92
|
+
rightElement={
|
|
93
|
+
<Text style={styles.summaryItemPrice}>
|
|
94
|
+
{item.currency ? (CURRENCY_SYMBOLS[item.currency.toUpperCase()] || item.currency) : currencySymbol} {item.price * (item.quantity ?? 1)}
|
|
95
|
+
</Text>
|
|
96
|
+
}
|
|
97
|
+
/>
|
|
98
|
+
))}
|
|
99
|
+
</SettingsListGroup>
|
|
98
100
|
</View>
|
|
99
101
|
|
|
100
102
|
<View style={styles.summaryCardDivider} />
|
|
@@ -138,23 +140,14 @@ const PaymentSummaryStep: React.FC<PaymentSummaryStepProps> = ({
|
|
|
138
140
|
</View>
|
|
139
141
|
</View>
|
|
140
142
|
|
|
141
|
-
<
|
|
142
|
-
|
|
143
|
-
{
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
{
|
|
150
|
-
text: t('payment.actions.continue'),
|
|
151
|
-
onPress: onNext,
|
|
152
|
-
icon: 'arrow-forward',
|
|
153
|
-
variant: 'primary',
|
|
154
|
-
},
|
|
155
|
-
]}
|
|
156
|
-
colors={colors}
|
|
157
|
-
/>
|
|
143
|
+
<View style={{ flexDirection: 'row', gap: 8, justifyContent: 'flex-end' }}>
|
|
144
|
+
<Button variant="secondary" onPress={onClose} size="small" icon={<Ionicons name="close" size={16} />}>
|
|
145
|
+
{t('payment.actions.close')}
|
|
146
|
+
</Button>
|
|
147
|
+
<Button variant="primary" onPress={onNext} size="small" icon={<Ionicons name="arrow-forward" size={16} />} iconPosition="right">
|
|
148
|
+
{t('payment.actions.continue')}
|
|
149
|
+
</Button>
|
|
150
|
+
</View>
|
|
158
151
|
</Animated.View>
|
|
159
152
|
);
|
|
160
153
|
};
|
|
@@ -131,9 +131,10 @@ export const useAuthOperations = ({
|
|
|
131
131
|
logger('Creating offline session');
|
|
132
132
|
}
|
|
133
133
|
|
|
134
|
-
// Generate a local session ID using cryptographically secure randomness
|
|
135
|
-
|
|
136
|
-
|
|
134
|
+
// Generate a local session ID using cryptographically secure randomness.
|
|
135
|
+
// Literal-string import: Hermes/Metro require static strings, not variable
|
|
136
|
+
// expressions or webpackIgnore comments.
|
|
137
|
+
const Crypto = await import('expo-crypto');
|
|
137
138
|
const localSessionId = `offline_${Crypto.getRandomUUID()}`;
|
|
138
139
|
const localDeviceId = `device_${Crypto.getRandomUUID()}`;
|
|
139
140
|
const expiresAt = new Date(Date.now() + 7 * 24 * 60 * 60 * 1000).toISOString(); // 7 days
|
|
@@ -15,7 +15,6 @@ import { fontFamilies } from '../styles/fonts';
|
|
|
15
15
|
import * as Prompt from '@oxyhq/bloom/prompt';
|
|
16
16
|
import { usePromptControl } from '@oxyhq/bloom/prompt';
|
|
17
17
|
import ProfileCard from '../components/ProfileCard';
|
|
18
|
-
import Section from '../components/Section';
|
|
19
18
|
import QuickActions from '../components/QuickActions';
|
|
20
19
|
import { SettingsIcon } from '../components/SettingsIcon';
|
|
21
20
|
import { useI18n } from '../hooks/useI18n';
|
|
@@ -84,7 +83,7 @@ const AccountCenterScreen: React.FC<BaseScreenProps> = ({
|
|
|
84
83
|
)}
|
|
85
84
|
|
|
86
85
|
<ScrollView style={styles.scrollView} contentContainerStyle={styles.scrollContainer} showsVerticalScrollIndicator={false}>
|
|
87
|
-
<
|
|
86
|
+
<SettingsListGroup title={t('accountCenter.sections.quickActions') || 'Quick Actions'}>
|
|
88
87
|
<QuickActions
|
|
89
88
|
theme={normalizedTheme}
|
|
90
89
|
actions={useMemo(() => [
|
|
@@ -96,7 +95,7 @@ const AccountCenterScreen: React.FC<BaseScreenProps> = ({
|
|
|
96
95
|
...(sessions && sessions.length > 1 ? [{ id: 'switch', icon: 'swap-horizontal', iconColor: colors.iconStorage, title: t('accountCenter.quickActions.switch') || 'Switch', onPress: () => navigate?.('AccountSwitcher') }] : []),
|
|
97
96
|
], [user?.isPremium, sessions, navigate, t, colors])}
|
|
98
97
|
/>
|
|
99
|
-
</
|
|
98
|
+
</SettingsListGroup>
|
|
100
99
|
|
|
101
100
|
<SettingsListGroup title={t('accountCenter.sections.accountManagement') || 'Account Management'}>
|
|
102
101
|
<SettingsListItem icon={<SettingsIcon name="account-circle" color={colors.iconSecurity} />} title={t('accountCenter.items.accountOverview.title') || 'Account Overview'} description={t('accountCenter.items.accountOverview.subtitle') || 'Complete account information'} onPress={() => navigate?.('AccountOverview')} />
|
|
@@ -14,13 +14,11 @@ import { useSafeAreaInsets } from 'react-native-safe-area-context';
|
|
|
14
14
|
import type { BaseScreenProps } from '../types/navigation';
|
|
15
15
|
import OxyLogo from '../components/OxyLogo';
|
|
16
16
|
import Avatar from '../components/Avatar';
|
|
17
|
-
import OxyIcon from '../components/icon/OxyIcon';
|
|
18
17
|
import { fontFamilies } from '../styles/fonts';
|
|
19
18
|
import { toast } from '../../lib/sonner';
|
|
20
19
|
import { Ionicons } from '@expo/vector-icons';
|
|
21
20
|
import * as Prompt from '@oxyhq/bloom/prompt';
|
|
22
21
|
import { usePromptControl } from '@oxyhq/bloom/prompt';
|
|
23
|
-
import { Section, GroupedSection, GroupedItem } from '../components';
|
|
24
22
|
import { SettingsIcon } from '../components/SettingsIcon';
|
|
25
23
|
import { useI18n } from '../hooks/useI18n';
|
|
26
24
|
import { useTheme } from '@oxyhq/bloom/theme';
|
|
@@ -365,78 +363,59 @@ const AccountOverviewScreen: React.FC<BaseScreenProps> = ({
|
|
|
365
363
|
) : null}
|
|
366
364
|
</SettingsListGroup>
|
|
367
365
|
|
|
368
|
-
{/* Additional Accounts
|
|
366
|
+
{/* Additional Accounts */}
|
|
369
367
|
{showMoreAccounts && (
|
|
370
|
-
<
|
|
368
|
+
<SettingsListGroup title={`${t('accountOverview.sections.additionalAccounts') || 'Additional Accounts'}${additionalAccountsData.length > 0 ? ` (${additionalAccountsData.length})` : ''}`}>
|
|
371
369
|
{loadingAdditionalAccounts ? (
|
|
372
|
-
<
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
<ActivityIndicator size="small" color={baseThemeColors.iconSecurity} />
|
|
383
|
-
<Text style={styles.loadingText}>{t('accountOverview.loadingAdditional.title') || 'Loading accounts...'}</Text>
|
|
384
|
-
</View>
|
|
385
|
-
),
|
|
386
|
-
},
|
|
387
|
-
]}
|
|
388
|
-
|
|
370
|
+
<SettingsListItem
|
|
371
|
+
icon={<SettingsIcon name="sync" color={baseThemeColors.iconSecurity} />}
|
|
372
|
+
title={t('accountOverview.loadingAdditional.title') || 'Loading accounts...'}
|
|
373
|
+
description={t('accountOverview.loadingAdditional.subtitle') || 'Please wait while we load your additional accounts'}
|
|
374
|
+
rightElement={
|
|
375
|
+
<View style={styles.loadingContainer}>
|
|
376
|
+
<ActivityIndicator size="small" color={baseThemeColors.iconSecurity} />
|
|
377
|
+
</View>
|
|
378
|
+
}
|
|
379
|
+
showChevron={false}
|
|
389
380
|
/>
|
|
390
381
|
) : additionalAccountsData.length > 0 ? (
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
icon
|
|
395
|
-
|
|
396
|
-
|
|
382
|
+
additionalAccountsData.map((account) => (
|
|
383
|
+
<SettingsListItem
|
|
384
|
+
key={`account-${account.id}`}
|
|
385
|
+
icon={
|
|
386
|
+
<View style={styles.userIcon}>
|
|
387
|
+
{account.avatar ? (
|
|
388
|
+
<Image
|
|
389
|
+
source={{ uri: oxyServices.getFileDownloadUrl(account.avatar, 'thumb') }}
|
|
390
|
+
style={styles.accountAvatarImage}
|
|
391
|
+
/>
|
|
392
|
+
) : (
|
|
393
|
+
<View style={styles.accountAvatarFallback}>
|
|
394
|
+
<Text style={styles.accountAvatarText}>
|
|
395
|
+
{account.username?.charAt(0).toUpperCase() || '?'}
|
|
396
|
+
</Text>
|
|
397
|
+
</View>
|
|
398
|
+
)}
|
|
399
|
+
</View>
|
|
400
|
+
}
|
|
401
|
+
title={typeof account.name === 'object'
|
|
397
402
|
? account.name?.full || account.name?.first || account.username
|
|
398
|
-
: account.name || account.username
|
|
399
|
-
|
|
400
|
-
onPress
|
|
403
|
+
: account.name || account.username}
|
|
404
|
+
description={account.email || account.username}
|
|
405
|
+
onPress={() => {
|
|
401
406
|
toast.info(t('accountOverview.items.accountSwitcher.switchPrompt', { username: account.username }) || `Switch to ${account.username}?`);
|
|
402
|
-
}
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
<View style={styles.userIcon}>
|
|
406
|
-
{account.avatar ? (
|
|
407
|
-
<Image
|
|
408
|
-
source={{ uri: oxyServices.getFileDownloadUrl(account.avatar, 'thumb') }}
|
|
409
|
-
style={styles.accountAvatarImage}
|
|
410
|
-
/>
|
|
411
|
-
) : (
|
|
412
|
-
<View style={styles.accountAvatarFallback}>
|
|
413
|
-
<Text style={styles.accountAvatarText}>
|
|
414
|
-
{account.username?.charAt(0).toUpperCase() || '?'}
|
|
415
|
-
</Text>
|
|
416
|
-
</View>
|
|
417
|
-
)}
|
|
418
|
-
</View>
|
|
419
|
-
<OxyIcon name="chevron-forward" size={16} color="#ccc" />
|
|
420
|
-
</>
|
|
421
|
-
),
|
|
422
|
-
}))}
|
|
423
|
-
|
|
424
|
-
/>
|
|
407
|
+
}}
|
|
408
|
+
/>
|
|
409
|
+
))
|
|
425
410
|
) : (
|
|
426
|
-
<
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
iconColor: '#ccc',
|
|
432
|
-
title: t('accountOverview.additional.noAccounts.title') || 'No other accounts',
|
|
433
|
-
subtitle: t('accountOverview.additional.noAccounts.subtitle') || 'Add another account to switch between them',
|
|
434
|
-
},
|
|
435
|
-
]}
|
|
436
|
-
|
|
411
|
+
<SettingsListItem
|
|
412
|
+
icon={<SettingsIcon name="account-outline" color="#ccc" />}
|
|
413
|
+
title={t('accountOverview.additional.noAccounts.title') || 'No other accounts'}
|
|
414
|
+
description={t('accountOverview.additional.noAccounts.subtitle') || 'Add another account to switch between them'}
|
|
415
|
+
showChevron={false}
|
|
437
416
|
/>
|
|
438
417
|
)}
|
|
439
|
-
</
|
|
418
|
+
</SettingsListGroup>
|
|
440
419
|
)}
|
|
441
420
|
|
|
442
421
|
{/* Account Management */}
|