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.
- package/lib/module/FountainPayProvider.js +5 -0
- package/lib/module/FountainPayProvider.js.map +1 -1
- package/lib/module/core/api/index.js +59 -0
- package/lib/module/core/api/index.js.map +1 -1
- package/lib/module/core/types/index.js +32 -0
- package/lib/module/core/types/index.js.map +1 -1
- package/lib/module/engine/FPEngine.js +9 -0
- package/lib/module/engine/FPEngine.js.map +1 -1
- package/lib/module/hooks/useLocation.js +66 -0
- package/lib/module/hooks/useLocation.js.map +1 -0
- package/lib/module/ui/components/ConfirmScreen.js +43 -51
- package/lib/module/ui/components/ConfirmScreen.js.map +1 -1
- package/lib/module/ui/components/RecurringToggle.js +94 -0
- package/lib/module/ui/components/RecurringToggle.js.map +1 -0
- package/lib/module/ui/modals/FPShell.js +19 -0
- package/lib/module/ui/modals/FPShell.js.map +1 -1
- package/lib/module/ui/screens/BillsScreen.js +186 -0
- package/lib/module/ui/screens/BillsScreen.js.map +1 -0
- package/lib/module/ui/screens/ResultScreen.js +113 -28
- package/lib/module/ui/screens/ResultScreen.js.map +1 -1
- package/lib/module/ui/screens/SendScreen.js +85 -16
- package/lib/module/ui/screens/SendScreen.js.map +1 -1
- package/lib/module/ui/screens/sub/billPayment/AirtimeScreen.js +257 -0
- package/lib/module/ui/screens/sub/billPayment/AirtimeScreen.js.map +1 -0
- package/lib/module/ui/screens/sub/billPayment/CableScreen.js +264 -0
- package/lib/module/ui/screens/sub/billPayment/CableScreen.js.map +1 -0
- package/lib/module/ui/screens/sub/billPayment/DataScreen.js +273 -0
- package/lib/module/ui/screens/sub/billPayment/DataScreen.js.map +1 -0
- package/lib/module/ui/screens/sub/billPayment/ElectricityScreen.js +337 -0
- package/lib/module/ui/screens/sub/billPayment/ElectricityScreen.js.map +1 -0
- package/lib/module/ui/screens/sub/sendPayment/TransferSubScreen.js +1 -1
- package/lib/module/ui/screens/sub/sendPayment/TransferSubScreen.js.map +1 -1
- package/lib/typescript/src/FountainPayProvider.d.ts.map +1 -1
- package/lib/typescript/src/core/api/index.d.ts +52 -63
- package/lib/typescript/src/core/api/index.d.ts.map +1 -1
- package/lib/typescript/src/core/types/index.d.ts +159 -6
- package/lib/typescript/src/core/types/index.d.ts.map +1 -1
- package/lib/typescript/src/engine/FPEngine.d.ts +4 -2
- package/lib/typescript/src/engine/FPEngine.d.ts.map +1 -1
- package/lib/typescript/src/hooks/useLocation.d.ts +12 -0
- package/lib/typescript/src/hooks/useLocation.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +1 -1
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/ui/components/ConfirmScreen.d.ts +25 -4
- package/lib/typescript/src/ui/components/ConfirmScreen.d.ts.map +1 -1
- package/lib/typescript/src/ui/components/RecurringToggle.d.ts +7 -0
- package/lib/typescript/src/ui/components/RecurringToggle.d.ts.map +1 -0
- package/lib/typescript/src/ui/modals/FPShell.d.ts.map +1 -1
- package/lib/typescript/src/ui/screens/BillsScreen.d.ts +10 -0
- package/lib/typescript/src/ui/screens/BillsScreen.d.ts.map +1 -0
- package/lib/typescript/src/ui/screens/ResultScreen.d.ts +20 -3
- package/lib/typescript/src/ui/screens/ResultScreen.d.ts.map +1 -1
- package/lib/typescript/src/ui/screens/SendScreen.d.ts.map +1 -1
- package/lib/typescript/src/ui/screens/sub/billPayment/AirtimeScreen.d.ts +15 -0
- package/lib/typescript/src/ui/screens/sub/billPayment/AirtimeScreen.d.ts.map +1 -0
- package/lib/typescript/src/ui/screens/sub/billPayment/CableScreen.d.ts +14 -0
- package/lib/typescript/src/ui/screens/sub/billPayment/CableScreen.d.ts.map +1 -0
- package/lib/typescript/src/ui/screens/sub/billPayment/DataScreen.d.ts +14 -0
- package/lib/typescript/src/ui/screens/sub/billPayment/DataScreen.d.ts.map +1 -0
- package/lib/typescript/src/ui/screens/sub/billPayment/ElectricityScreen.d.ts +16 -0
- package/lib/typescript/src/ui/screens/sub/billPayment/ElectricityScreen.d.ts.map +1 -0
- package/package.json +2 -2
- package/src/FountainPayProvider.tsx +7 -0
- package/src/core/api/index.ts +149 -27
- package/src/core/types/index.ts +194 -11
- package/src/engine/FPEngine.ts +12 -1
- package/src/hooks/useLocation.ts +81 -0
- package/src/index.ts +9 -1
- package/src/ui/components/ConfirmScreen.tsx +47 -54
- package/src/ui/components/RecurringToggle.tsx +106 -0
- package/src/ui/modals/FPShell.tsx +26 -3
- package/src/ui/screens/BillsScreen.tsx +197 -0
- package/src/ui/screens/ResultScreen.tsx +129 -28
- package/src/ui/screens/SendScreen.tsx +124 -68
- package/src/ui/screens/sub/billPayment/AirtimeScreen.tsx +252 -0
- package/src/ui/screens/sub/billPayment/CableScreen.tsx +274 -0
- package/src/ui/screens/sub/billPayment/DataScreen.tsx +263 -0
- package/src/ui/screens/sub/billPayment/ElectricityScreen.tsx +344 -0
- 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":[]}
|