react-native-fpay 0.4.29 → 0.4.31

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.
Files changed (79) hide show
  1. package/lib/module/FountainPayProvider.js +5 -0
  2. package/lib/module/FountainPayProvider.js.map +1 -1
  3. package/lib/module/core/api/index.js +59 -0
  4. package/lib/module/core/api/index.js.map +1 -1
  5. package/lib/module/core/types/index.js +32 -0
  6. package/lib/module/core/types/index.js.map +1 -1
  7. package/lib/module/engine/FPEngine.js +9 -0
  8. package/lib/module/engine/FPEngine.js.map +1 -1
  9. package/lib/module/hooks/useLocation.js +66 -0
  10. package/lib/module/hooks/useLocation.js.map +1 -0
  11. package/lib/module/ui/components/ConfirmScreen.js +43 -51
  12. package/lib/module/ui/components/ConfirmScreen.js.map +1 -1
  13. package/lib/module/ui/components/RecurringToggle.js +94 -0
  14. package/lib/module/ui/components/RecurringToggle.js.map +1 -0
  15. package/lib/module/ui/modals/FPShell.js +19 -0
  16. package/lib/module/ui/modals/FPShell.js.map +1 -1
  17. package/lib/module/ui/screens/BillsScreen.js +186 -0
  18. package/lib/module/ui/screens/BillsScreen.js.map +1 -0
  19. package/lib/module/ui/screens/ResultScreen.js +113 -28
  20. package/lib/module/ui/screens/ResultScreen.js.map +1 -1
  21. package/lib/module/ui/screens/SendScreen.js +85 -16
  22. package/lib/module/ui/screens/SendScreen.js.map +1 -1
  23. package/lib/module/ui/screens/sub/billPayment/AirtimeScreen.js +257 -0
  24. package/lib/module/ui/screens/sub/billPayment/AirtimeScreen.js.map +1 -0
  25. package/lib/module/ui/screens/sub/billPayment/CableScreen.js +264 -0
  26. package/lib/module/ui/screens/sub/billPayment/CableScreen.js.map +1 -0
  27. package/lib/module/ui/screens/sub/billPayment/DataScreen.js +273 -0
  28. package/lib/module/ui/screens/sub/billPayment/DataScreen.js.map +1 -0
  29. package/lib/module/ui/screens/sub/billPayment/ElectricityScreen.js +337 -0
  30. package/lib/module/ui/screens/sub/billPayment/ElectricityScreen.js.map +1 -0
  31. package/lib/module/ui/screens/sub/sendPayment/TransferSubScreen.js +1 -1
  32. package/lib/module/ui/screens/sub/sendPayment/TransferSubScreen.js.map +1 -1
  33. package/lib/typescript/src/FountainPayProvider.d.ts.map +1 -1
  34. package/lib/typescript/src/core/api/index.d.ts +52 -63
  35. package/lib/typescript/src/core/api/index.d.ts.map +1 -1
  36. package/lib/typescript/src/core/types/index.d.ts +159 -6
  37. package/lib/typescript/src/core/types/index.d.ts.map +1 -1
  38. package/lib/typescript/src/engine/FPEngine.d.ts +4 -2
  39. package/lib/typescript/src/engine/FPEngine.d.ts.map +1 -1
  40. package/lib/typescript/src/hooks/useLocation.d.ts +12 -0
  41. package/lib/typescript/src/hooks/useLocation.d.ts.map +1 -0
  42. package/lib/typescript/src/index.d.ts +1 -1
  43. package/lib/typescript/src/index.d.ts.map +1 -1
  44. package/lib/typescript/src/ui/components/ConfirmScreen.d.ts +25 -4
  45. package/lib/typescript/src/ui/components/ConfirmScreen.d.ts.map +1 -1
  46. package/lib/typescript/src/ui/components/RecurringToggle.d.ts +7 -0
  47. package/lib/typescript/src/ui/components/RecurringToggle.d.ts.map +1 -0
  48. package/lib/typescript/src/ui/modals/FPShell.d.ts.map +1 -1
  49. package/lib/typescript/src/ui/screens/BillsScreen.d.ts +10 -0
  50. package/lib/typescript/src/ui/screens/BillsScreen.d.ts.map +1 -0
  51. package/lib/typescript/src/ui/screens/ResultScreen.d.ts +20 -3
  52. package/lib/typescript/src/ui/screens/ResultScreen.d.ts.map +1 -1
  53. package/lib/typescript/src/ui/screens/SendScreen.d.ts.map +1 -1
  54. package/lib/typescript/src/ui/screens/sub/billPayment/AirtimeScreen.d.ts +15 -0
  55. package/lib/typescript/src/ui/screens/sub/billPayment/AirtimeScreen.d.ts.map +1 -0
  56. package/lib/typescript/src/ui/screens/sub/billPayment/CableScreen.d.ts +14 -0
  57. package/lib/typescript/src/ui/screens/sub/billPayment/CableScreen.d.ts.map +1 -0
  58. package/lib/typescript/src/ui/screens/sub/billPayment/DataScreen.d.ts +14 -0
  59. package/lib/typescript/src/ui/screens/sub/billPayment/DataScreen.d.ts.map +1 -0
  60. package/lib/typescript/src/ui/screens/sub/billPayment/ElectricityScreen.d.ts +16 -0
  61. package/lib/typescript/src/ui/screens/sub/billPayment/ElectricityScreen.d.ts.map +1 -0
  62. package/package.json +2 -2
  63. package/src/FountainPayProvider.tsx +7 -0
  64. package/src/core/api/index.ts +149 -27
  65. package/src/core/types/index.ts +194 -11
  66. package/src/engine/FPEngine.ts +12 -1
  67. package/src/hooks/useLocation.ts +81 -0
  68. package/src/index.ts +9 -1
  69. package/src/ui/components/ConfirmScreen.tsx +47 -54
  70. package/src/ui/components/RecurringToggle.tsx +106 -0
  71. package/src/ui/modals/FPShell.tsx +26 -3
  72. package/src/ui/screens/BillsScreen.tsx +197 -0
  73. package/src/ui/screens/ResultScreen.tsx +129 -28
  74. package/src/ui/screens/SendScreen.tsx +124 -68
  75. package/src/ui/screens/sub/billPayment/AirtimeScreen.tsx +252 -0
  76. package/src/ui/screens/sub/billPayment/CableScreen.tsx +274 -0
  77. package/src/ui/screens/sub/billPayment/DataScreen.tsx +263 -0
  78. package/src/ui/screens/sub/billPayment/ElectricityScreen.tsx +344 -0
  79. package/src/ui/screens/sub/sendPayment/TransferSubScreen.tsx +1 -1
@@ -0,0 +1,264 @@
1
+ "use strict";
2
+
3
+ import { useEffect, useState } from 'react';
4
+ import { View, Text, TouchableOpacity, ScrollView, KeyboardAvoidingView, Platform, ActivityIndicator } from 'react-native';
5
+ import styled from 'styled-components/native';
6
+ import { C, F, R, S } from "../../../theme/index.js";
7
+ import { billsAPI } from "../../../../core/api/index.js";
8
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
9
+ const Container = styled(View)`
10
+ flex: 1;
11
+ background-color: ${C.white};
12
+ `;
13
+ const Body = styled(ScrollView)`
14
+ flex: 1;
15
+ padding: ${S.lg}px;
16
+ `;
17
+ const FieldLabel = styled(Text)`
18
+ font-size: ${F.sm}px;
19
+ font-weight: 600;
20
+ color: ${C.muted};
21
+ margin-bottom: ${S.xs}px;
22
+ `;
23
+ const InputBox = styled.View`
24
+ background-color: ${C.surface};
25
+ border-radius: ${R.lg}px;
26
+ padding: 0 ${S.md}px;
27
+ height: 52px;
28
+ flex-direction: row;
29
+ align-items: center;
30
+ margin-bottom: ${S.md}px;
31
+ `;
32
+ const StyledInput = styled.TextInput`
33
+ flex: 1;
34
+ font-size: ${F.md}px;
35
+ color: ${C.ink};
36
+ `;
37
+ const ProviderRow = styled(View)`
38
+ flex-direction: row;
39
+ gap: ${S.sm}px;
40
+ margin-bottom: ${S.md}px;
41
+ `;
42
+ const ProviderChip = styled(TouchableOpacity)`
43
+ flex: 1;
44
+ height: 44px;
45
+ border-radius: ${R.md}px;
46
+ align-items: center;
47
+ justify-content: center;
48
+ background-color: ${props => props.selected ? C.brand : C.surface};
49
+ `;
50
+ const ProviderChipText = styled(Text)`
51
+ font-size: ${F.sm}px;
52
+ font-weight: 700;
53
+ color: ${props => props.selected ? C.white : C.muted};
54
+ `;
55
+ const CustomerNameBox = styled(View)`
56
+ background-color: ${C.greenLight};
57
+ border-radius: ${R.md}px;
58
+ padding: ${S.sm}px ${S.md}px;
59
+ margin-bottom: ${S.md}px;
60
+ `;
61
+ const CustomerNameText = styled(Text)`
62
+ color: ${C.green};
63
+ font-weight: 700;
64
+ font-size: ${F.sm}px;
65
+ `;
66
+ const TariffCard = styled(TouchableOpacity)`
67
+ border-radius: ${R.lg}px;
68
+ padding: ${S.md}px;
69
+ margin-bottom: ${S.sm}px;
70
+ background-color: ${props => props.selected ? C.brandLight : C.surface};
71
+ border-width: 1.5px;
72
+ border-color: ${props => props.selected ? C.brand : 'transparent'};
73
+ opacity: ${props => props.disabled ? 0.45 : 1};
74
+ flex-direction: row;
75
+ justify-content: space-between;
76
+ align-items: center;
77
+ `;
78
+ const TariffLabel = styled(Text)`
79
+ font-size: ${F.md}px;
80
+ font-weight: 700;
81
+ color: ${C.ink};
82
+ `;
83
+ const TariffPrice = styled(Text)`
84
+ font-size: ${F.md}px;
85
+ font-weight: 800;
86
+ color: ${C.brand};
87
+ `;
88
+ const EmptyText = styled(Text)`
89
+ text-align: center;
90
+ color: ${C.muted};
91
+ margin-top: ${S.lg}px;
92
+ `;
93
+ const ContinueButton = styled(TouchableOpacity)`
94
+ background-color: ${props => props.disabled ? C.ghost : C.brand};
95
+ border-radius: ${R.full}px;
96
+ padding: ${S.md}px 0;
97
+ align-items: center;
98
+ margin-top: ${S.sm}px;
99
+ `;
100
+ const ContinueButtonText = styled(Text)`
101
+ color: ${C.white};
102
+ font-weight: 800;
103
+ font-size: ${F.md}px;
104
+ `;
105
+ export default function CableScreen({
106
+ onProcessTransaction,
107
+ onError
108
+ }) {
109
+ const [providers, setProviders] = useState([]);
110
+ const [provider, setProvider] = useState(null);
111
+ const [smartcardNumber, setSmartcardNumber] = useState('');
112
+ const [validating, setValidating] = useState(false);
113
+ const [customerName, setCustomerName] = useState(null);
114
+ const [tariffs, setTariffs] = useState([]);
115
+ const [tariffsLoading, setTariffsLoading] = useState(false);
116
+ const [selectedTariff, setSelectedTariff] = useState(null);
117
+ const [phone, setPhone] = useState('');
118
+ useEffect(() => {
119
+ billsAPI.getCableProviders().then(res => {
120
+ if (res.status) setProviders(res.payload.filter(p => p.isActive));
121
+ }).catch(() => onError?.({
122
+ code: 'PROVIDER_LOAD_FAILED',
123
+ message: 'Could not load cable providers'
124
+ }));
125
+ }, []);
126
+ useEffect(() => {
127
+ setCustomerName(null);
128
+ if (!provider || smartcardNumber.length < 10) return;
129
+ setValidating(true);
130
+ billsAPI.validateSmartcard(smartcardNumber, provider.code).then(res => {
131
+ if (res.status) {
132
+ setCustomerName(res.payload.customerName);
133
+ } else {
134
+ onError?.({
135
+ code: 'SMARTCARD_INVALID',
136
+ message: res.message
137
+ });
138
+ }
139
+ }).catch(() => onError?.({
140
+ code: 'SMARTCARD_VALIDATION_FAILED',
141
+ message: 'Could not validate smartcard number'
142
+ })).finally(() => setValidating(false));
143
+ }, [provider, smartcardNumber]);
144
+ useEffect(() => {
145
+ if (!provider) {
146
+ setTariffs([]);
147
+ setSelectedTariff(null);
148
+ return;
149
+ }
150
+ setTariffsLoading(true);
151
+ setSelectedTariff(null);
152
+ billsAPI.getCableTariffs(provider.code).then(res => {
153
+ if (res.status) setTariffs(res.payload);
154
+ }).catch(() => onError?.({
155
+ code: 'TARIFFS_LOAD_FAILED',
156
+ message: 'Could not load bouquets'
157
+ })).finally(() => setTariffsLoading(false));
158
+ }, [provider]);
159
+ const isValid = !!provider && smartcardNumber.length >= 10 && !!customerName && !!selectedTariff && /^0\d{10}$/.test(phone);
160
+ const handleContinue = () => {
161
+ if (!isValid || !provider || !selectedTariff) return;
162
+ onProcessTransaction({
163
+ category: 'CABLE',
164
+ smartcardNumber,
165
+ provider: provider.code,
166
+ tariffCode: selectedTariff.code,
167
+ amountInKobo: selectedTariff.priceInKobo,
168
+ phoneNumber: phone,
169
+ idempotencyKey: `cable_${Date.now()}_${Math.random().toString(36).slice(2, 8)}`
170
+ }, [{
171
+ label: 'Provider',
172
+ value: provider.displayName
173
+ }, {
174
+ label: 'Smartcard Number',
175
+ value: smartcardNumber
176
+ }, {
177
+ label: 'Customer',
178
+ value: customerName ?? ''
179
+ }, {
180
+ label: 'Bouquet',
181
+ value: selectedTariff.label
182
+ }]);
183
+ };
184
+ return /*#__PURE__*/_jsx(Container, {
185
+ children: /*#__PURE__*/_jsx(KeyboardAvoidingView, {
186
+ style: {
187
+ flex: 1
188
+ },
189
+ behavior: Platform.OS === 'ios' ? 'padding' : undefined,
190
+ children: /*#__PURE__*/_jsxs(Body, {
191
+ keyboardShouldPersistTaps: "handled",
192
+ showsVerticalScrollIndicator: false,
193
+ children: [/*#__PURE__*/_jsx(FieldLabel, {
194
+ children: "Provider"
195
+ }), /*#__PURE__*/_jsx(ProviderRow, {
196
+ children: providers.map(p => /*#__PURE__*/_jsx(ProviderChip, {
197
+ selected: provider?.code === p.code,
198
+ onPress: () => setProvider(p),
199
+ children: /*#__PURE__*/_jsx(ProviderChipText, {
200
+ selected: provider?.code === p.code,
201
+ children: p.displayName
202
+ })
203
+ }, p.code))
204
+ }), /*#__PURE__*/_jsx(FieldLabel, {
205
+ children: "Smartcard / IUC Number"
206
+ }), /*#__PURE__*/_jsx(InputBox, {
207
+ children: /*#__PURE__*/_jsx(StyledInput, {
208
+ placeholder: "Enter smartcard number",
209
+ placeholderTextColor: C.ghost,
210
+ keyboardType: "number-pad",
211
+ value: smartcardNumber,
212
+ onChangeText: setSmartcardNumber
213
+ })
214
+ }), validating && /*#__PURE__*/_jsx(ActivityIndicator, {
215
+ color: C.brand,
216
+ style: {
217
+ marginBottom: S.md
218
+ }
219
+ }), customerName && /*#__PURE__*/_jsx(CustomerNameBox, {
220
+ children: /*#__PURE__*/_jsx(CustomerNameText, {
221
+ children: customerName
222
+ })
223
+ }), /*#__PURE__*/_jsx(FieldLabel, {
224
+ children: "Phone Number"
225
+ }), /*#__PURE__*/_jsx(InputBox, {
226
+ children: /*#__PURE__*/_jsx(StyledInput, {
227
+ placeholder: "080XXXXXXXX",
228
+ placeholderTextColor: C.ghost,
229
+ keyboardType: "number-pad",
230
+ maxLength: 11,
231
+ value: phone,
232
+ onChangeText: setPhone
233
+ })
234
+ }), /*#__PURE__*/_jsx(FieldLabel, {
235
+ children: "Bouquet"
236
+ }), tariffsLoading && /*#__PURE__*/_jsx(ActivityIndicator, {
237
+ color: C.brand,
238
+ style: {
239
+ marginTop: S.md
240
+ }
241
+ }), !tariffsLoading && provider && tariffs.length === 0 && /*#__PURE__*/_jsxs(EmptyText, {
242
+ children: ["No bouquets available for ", provider.displayName, " right now."]
243
+ }), !tariffsLoading && tariffs.map(tariff => /*#__PURE__*/_jsxs(TariffCard, {
244
+ selected: selectedTariff?.code === tariff.code,
245
+ disabled: !tariff.isAvailable,
246
+ onPress: () => tariff.isAvailable && setSelectedTariff(tariff),
247
+ children: [/*#__PURE__*/_jsx(TariffLabel, {
248
+ children: tariff.label
249
+ }), /*#__PURE__*/_jsxs(TariffPrice, {
250
+ children: ["\u20A6", (tariff.priceInKobo / 100).toLocaleString()]
251
+ })]
252
+ }, tariff.code)), /*#__PURE__*/_jsx(ContinueButton, {
253
+ disabled: !isValid,
254
+ onPress: handleContinue,
255
+ activeOpacity: 0.85,
256
+ children: /*#__PURE__*/_jsx(ContinueButtonText, {
257
+ children: "Continue"
258
+ })
259
+ })]
260
+ })
261
+ })
262
+ });
263
+ }
264
+ //# sourceMappingURL=CableScreen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useEffect","useState","View","Text","TouchableOpacity","ScrollView","KeyboardAvoidingView","Platform","ActivityIndicator","styled","C","F","R","S","billsAPI","jsx","_jsx","jsxs","_jsxs","Container","white","Body","lg","FieldLabel","sm","muted","xs","InputBox","surface","md","StyledInput","TextInput","ink","ProviderRow","ProviderChip","props","selected","brand","ProviderChipText","CustomerNameBox","greenLight","CustomerNameText","green","TariffCard","brandLight","disabled","TariffLabel","TariffPrice","EmptyText","ContinueButton","ghost","full","ContinueButtonText","CableScreen","onProcessTransaction","onError","providers","setProviders","provider","setProvider","smartcardNumber","setSmartcardNumber","validating","setValidating","customerName","setCustomerName","tariffs","setTariffs","tariffsLoading","setTariffsLoading","selectedTariff","setSelectedTariff","phone","setPhone","getCableProviders","then","res","status","payload","filter","p","isActive","catch","code","message","length","validateSmartcard","finally","getCableTariffs","isValid","test","handleContinue","category","tariffCode","amountInKobo","priceInKobo","phoneNumber","idempotencyKey","Date","now","Math","random","toString","slice","label","value","displayName","children","style","flex","behavior","OS","undefined","keyboardShouldPersistTaps","showsVerticalScrollIndicator","map","onPress","placeholder","placeholderTextColor","keyboardType","onChangeText","color","marginBottom","maxLength","marginTop","tariff","isAvailable","toLocaleString","activeOpacity"],"sourceRoot":"../../../../../../src","sources":["ui/screens/sub/billPayment/CableScreen.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,273 @@
1
+ "use strict";
2
+
3
+ import { useEffect, useState } from 'react';
4
+ import { View, Text, TouchableOpacity, ScrollView, KeyboardAvoidingView, Platform, ActivityIndicator } from 'react-native';
5
+ import styled from 'styled-components/native';
6
+ import { C, F, R, S } from "../../../theme/index.js";
7
+ import { billsAPI } from "../../../../core/api/index.js";
8
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
9
+ const PREFIX_MAP = {
10
+ '0803': 'MTN',
11
+ '0806': 'MTN',
12
+ '0703': 'MTN',
13
+ '0706': 'MTN',
14
+ '0813': 'MTN',
15
+ '0816': 'MTN',
16
+ '0810': 'MTN',
17
+ '0814': 'MTN',
18
+ '0903': 'MTN',
19
+ '0906': 'MTN',
20
+ '0913': 'MTN',
21
+ '0916': 'MTN',
22
+ '0802': 'AIRTEL',
23
+ '0808': 'AIRTEL',
24
+ '0708': 'AIRTEL',
25
+ '0812': 'AIRTEL',
26
+ '0701': 'AIRTEL',
27
+ '0902': 'AIRTEL',
28
+ '0907': 'AIRTEL',
29
+ '0901': 'AIRTEL',
30
+ '0911': 'AIRTEL',
31
+ '0805': 'GLO',
32
+ '0807': 'GLO',
33
+ '0815': 'GLO',
34
+ '0811': 'GLO',
35
+ '0905': 'GLO',
36
+ '0915': 'GLO',
37
+ '0809': '9MOBILE',
38
+ '0817': '9MOBILE',
39
+ '0818': '9MOBILE',
40
+ '0908': '9MOBILE',
41
+ '0909': '9MOBILE'
42
+ };
43
+ function detectNetwork(phone) {
44
+ return PREFIX_MAP[phone.slice(0, 4)] ?? null;
45
+ }
46
+ const Container = styled(View)`
47
+ flex: 1;
48
+ background-color: ${C.white};
49
+ `;
50
+ const Body = styled(ScrollView)`
51
+ flex: 1;
52
+ padding: ${S.lg}px;
53
+ `;
54
+ const FieldLabel = styled(Text)`
55
+ font-size: ${F.sm}px;
56
+ font-weight: 600;
57
+ color: ${C.muted};
58
+ margin-bottom: ${S.xs}px;
59
+ `;
60
+ const InputBox = styled.View`
61
+ background-color: ${C.surface};
62
+ border-radius: ${R.lg}px;
63
+ padding: 0 ${S.md}px;
64
+ height: 52px;
65
+ flex-direction: row;
66
+ align-items: center;
67
+ margin-bottom: ${S.md}px;
68
+ `;
69
+ const StyledInput = styled.TextInput`
70
+ flex: 1;
71
+ font-size: ${F.md}px;
72
+ color: ${C.ink};
73
+ `;
74
+ const NetworkRow = styled(View)`
75
+ flex-direction: row;
76
+ gap: ${S.sm}px;
77
+ margin-bottom: ${S.lg}px;
78
+ `;
79
+ const NetworkChip = styled(TouchableOpacity)`
80
+ flex: 1;
81
+ height: 44px;
82
+ border-radius: ${R.full}px;
83
+ align-items: center;
84
+ justify-content: center;
85
+ background-color: ${props => props.selected ? props.brandColor ?? C.brand : C.surface};
86
+ `;
87
+ const NetworkChipText = styled(Text)`
88
+ font-size: ${F.sm}px;
89
+ font-weight: 700;
90
+ color: ${props => props.selected ? C.white : C.muted};
91
+ `;
92
+ const PlanCard = styled(TouchableOpacity)`
93
+ border-radius: ${R.lg}px;
94
+ padding: ${S.md}px;
95
+ margin-bottom: ${S.sm}px;
96
+ background-color: ${props => props.selected ? C.brandLight : C.surface};
97
+ border-width: 1.5px;
98
+ border-color: ${props => props.selected ? C.brand : 'transparent'};
99
+ opacity: ${props => props.disabled ? 0.45 : 1};
100
+ flex-direction: row;
101
+ justify-content: space-between;
102
+ align-items: center;
103
+ `;
104
+ const PlanLabel = styled(Text)`
105
+ font-size: ${F.md}px;
106
+ font-weight: 700;
107
+ color: ${C.ink};
108
+ `;
109
+ const PlanValidity = styled(Text)`
110
+ font-size: ${F.xs}px;
111
+ color: ${C.muted};
112
+ margin-top: 2px;
113
+ `;
114
+ const PlanPrice = styled(Text)`
115
+ font-size: ${F.md}px;
116
+ font-weight: 800;
117
+ color: ${C.brand};
118
+ `;
119
+ const EmptyText = styled(Text)`
120
+ text-align: center;
121
+ color: ${C.muted};
122
+ margin-top: ${S.lg}px;
123
+ `;
124
+ const ContinueButton = styled(TouchableOpacity)`
125
+ background-color: ${props => props.disabled ? C.ghost : C.brand};
126
+ border-radius: ${R.full}px;
127
+ padding: ${S.md}px 0;
128
+ align-items: center;
129
+ margin-top: ${S.md}px;
130
+ `;
131
+ const ContinueButtonText = styled(Text)`
132
+ color: ${C.white};
133
+ font-weight: 800;
134
+ font-size: ${F.md}px;
135
+ `;
136
+ export default function DataScreen({
137
+ onProcessTransaction,
138
+ onError
139
+ }) {
140
+ const [networks, setNetworks] = useState([]);
141
+ const [phone, setPhone] = useState('');
142
+ const [network, setNetwork] = useState(null);
143
+ const [networkTouched, setNetworkTouched] = useState(false);
144
+ const [plans, setPlans] = useState([]);
145
+ const [plansLoading, setPlansLoading] = useState(false);
146
+ const [selectedPlan, setSelectedPlan] = useState(null);
147
+ useEffect(() => {
148
+ billsAPI.getNetworks().then(res => {
149
+ if (res.status) setNetworks(res.payload.filter(n => n.isActive));
150
+ }).catch(() => {
151
+ onError?.({
152
+ code: 'NETWORK_LOAD_FAILED',
153
+ message: 'Could not load network list'
154
+ });
155
+ });
156
+ }, []);
157
+ useEffect(() => {
158
+ if (!networkTouched) {
159
+ const detected = detectNetwork(phone);
160
+ if (detected) setNetwork(detected);
161
+ }
162
+ }, [phone, networkTouched]);
163
+ useEffect(() => {
164
+ if (!network) {
165
+ setPlans([]);
166
+ setSelectedPlan(null);
167
+ return;
168
+ }
169
+ setPlansLoading(true);
170
+ setSelectedPlan(null);
171
+ billsAPI.getDataPlans(network).then(res => {
172
+ if (res.status) setPlans(res.payload);
173
+ }).catch(() => {
174
+ onError?.({
175
+ code: 'PLANS_LOAD_FAILED',
176
+ message: 'Could not load data plans'
177
+ });
178
+ }).finally(() => setPlansLoading(false));
179
+ }, [network]);
180
+ const isValid = /^0\d{10}$/.test(phone) && !!network && !!selectedPlan;
181
+ const handleContinue = () => {
182
+ if (!isValid || !network || !selectedPlan) return;
183
+ onProcessTransaction({
184
+ category: 'DATA',
185
+ phoneNumber: phone,
186
+ network,
187
+ planId: selectedPlan.id,
188
+ amountInKobo: selectedPlan.priceInKobo,
189
+ idempotencyKey: `data_${Date.now()}_${Math.random().toString(36).slice(2, 8)}`
190
+ }, [{
191
+ label: 'Phone Number',
192
+ value: phone
193
+ }, {
194
+ label: 'Network',
195
+ value: network
196
+ }, {
197
+ label: 'Plan',
198
+ value: `${selectedPlan.label} / ${selectedPlan.validity}`
199
+ }]);
200
+ };
201
+ return /*#__PURE__*/_jsx(Container, {
202
+ children: /*#__PURE__*/_jsx(KeyboardAvoidingView, {
203
+ style: {
204
+ flex: 1
205
+ },
206
+ behavior: Platform.OS === 'ios' ? 'padding' : undefined,
207
+ children: /*#__PURE__*/_jsxs(Body, {
208
+ keyboardShouldPersistTaps: "handled",
209
+ showsVerticalScrollIndicator: false,
210
+ children: [/*#__PURE__*/_jsx(FieldLabel, {
211
+ children: "Phone Number"
212
+ }), /*#__PURE__*/_jsx(InputBox, {
213
+ children: /*#__PURE__*/_jsx(StyledInput, {
214
+ placeholder: "080XXXXXXXX",
215
+ placeholderTextColor: C.ghost,
216
+ keyboardType: "number-pad",
217
+ maxLength: 11,
218
+ value: phone,
219
+ onChangeText: setPhone
220
+ })
221
+ }), /*#__PURE__*/_jsx(FieldLabel, {
222
+ children: "Network"
223
+ }), /*#__PURE__*/_jsx(NetworkRow, {
224
+ children: ['MTN', 'AIRTEL', 'GLO', '9MOBILE'].map(code => {
225
+ const op = networks.find(n => n.code === code);
226
+ return /*#__PURE__*/_jsx(NetworkChip, {
227
+ selected: network === code,
228
+ brandColor: op?.brandColor,
229
+ onPress: () => {
230
+ setNetworkTouched(true);
231
+ setNetwork(code);
232
+ },
233
+ children: /*#__PURE__*/_jsx(NetworkChipText, {
234
+ selected: network === code,
235
+ children: code
236
+ })
237
+ }, code);
238
+ })
239
+ }), /*#__PURE__*/_jsx(FieldLabel, {
240
+ children: "Select a Plan"
241
+ }), plansLoading && /*#__PURE__*/_jsx(ActivityIndicator, {
242
+ color: C.brand,
243
+ style: {
244
+ marginTop: S.md
245
+ }
246
+ }), !plansLoading && network && plans.length === 0 && /*#__PURE__*/_jsxs(EmptyText, {
247
+ children: ["No plans available for ", network, " right now."]
248
+ }), !plansLoading && plans.map(plan => /*#__PURE__*/_jsxs(PlanCard, {
249
+ selected: selectedPlan?.id === plan.id,
250
+ disabled: !plan.isAvailable,
251
+ onPress: () => plan.isAvailable && setSelectedPlan(plan),
252
+ children: [/*#__PURE__*/_jsxs(View, {
253
+ children: [/*#__PURE__*/_jsx(PlanLabel, {
254
+ children: plan.label
255
+ }), /*#__PURE__*/_jsx(PlanValidity, {
256
+ children: plan.validity
257
+ })]
258
+ }), /*#__PURE__*/_jsxs(PlanPrice, {
259
+ children: ["\u20A6", (plan.priceInKobo / 100).toLocaleString()]
260
+ })]
261
+ }, plan.id)), /*#__PURE__*/_jsx(ContinueButton, {
262
+ disabled: !isValid,
263
+ onPress: handleContinue,
264
+ activeOpacity: 0.85,
265
+ children: /*#__PURE__*/_jsx(ContinueButtonText, {
266
+ children: "Continue"
267
+ })
268
+ })]
269
+ })
270
+ })
271
+ });
272
+ }
273
+ //# sourceMappingURL=DataScreen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useEffect","useState","View","Text","TouchableOpacity","ScrollView","KeyboardAvoidingView","Platform","ActivityIndicator","styled","C","F","R","S","billsAPI","jsx","_jsx","jsxs","_jsxs","PREFIX_MAP","detectNetwork","phone","slice","Container","white","Body","lg","FieldLabel","sm","muted","xs","InputBox","surface","md","StyledInput","TextInput","ink","NetworkRow","NetworkChip","full","props","selected","brandColor","brand","NetworkChipText","PlanCard","brandLight","disabled","PlanLabel","PlanValidity","PlanPrice","EmptyText","ContinueButton","ghost","ContinueButtonText","DataScreen","onProcessTransaction","onError","networks","setNetworks","setPhone","network","setNetwork","networkTouched","setNetworkTouched","plans","setPlans","plansLoading","setPlansLoading","selectedPlan","setSelectedPlan","getNetworks","then","res","status","payload","filter","n","isActive","catch","code","message","detected","getDataPlans","finally","isValid","test","handleContinue","category","phoneNumber","planId","id","amountInKobo","priceInKobo","idempotencyKey","Date","now","Math","random","toString","label","value","validity","children","style","flex","behavior","OS","undefined","keyboardShouldPersistTaps","showsVerticalScrollIndicator","placeholder","placeholderTextColor","keyboardType","maxLength","onChangeText","map","op","find","onPress","color","marginTop","length","plan","isAvailable","toLocaleString","activeOpacity"],"sourceRoot":"../../../../../../src","sources":["ui/screens/sub/billPayment/DataScreen.tsx"],"mappings":"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","ignoreList":[]}