Ian Fung hai 10 meses
pai
achega
d522a4660b

+ 2 - 2
android/app/build.gradle

@@ -114,8 +114,8 @@ android {
         applicationId 'hk.com.crazycharge'
         minSdkVersion rootProject.ext.minSdkVersion
         targetSdkVersion rootProject.ext.targetSdkVersion
-        versionCode 28
-        versionName "1.3.1"
+        versionCode 29
+        versionName "1.3.2"
     }
     signingConfigs {
         debug {

+ 2 - 2
app/(auth)/(tabs)/(charging)/chargingPage.tsx

@@ -139,7 +139,7 @@ const ChargingPage = () => {
             const now = new Date();
             const response = await chargeStationService.fetchReservationHistories();
             lastUpdateTimeRef.current = Date.now();
-
+            console.log('hello i am response', response);
             if (Object.keys(response).length === 0) {
                 console.log('no reservation data');
                 setCurrentStatus('noReservation');
@@ -234,7 +234,7 @@ const ChargingPage = () => {
         if (timeSinceLastUpdate > 60000) {
             // If more than a minute has passed
             fetchReservationData();
-        } 
+        }
     }, [fetchReservationData]);
 
     useEffect(() => {

+ 0 - 0
app/(auth)/(tabs)/(charging)/sss.tsx


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 56 - 0
app/(auth)/(tabs)/(home)/sdfsdf.tsx


+ 3 - 0
app/(auth)/(tabs)/(home)/totalPayment.tsx

@@ -379,7 +379,9 @@ const TotalPayment = () => {
                         payloadForPay.is_ic_call
                     );
 
+                    console.log('response in new submit payyment in total payment', response);
                     if (response.error) {
+                        console.log('bbbbbb');
                         // Handle error response from the service
                         Alert.alert('掃描失敗 請稍後再試。', response.message || '未知錯誤', [
                             {
@@ -401,6 +403,7 @@ const TotalPayment = () => {
                             }
                         ]);
                     } else {
+                        console.log('avvvvvvvvvvvvva');
                         Alert.alert('掃描失敗 請稍後再試。', response.error_msg || '未知錯誤', [
                             {
                                 text: '返回主頁',

+ 5 - 269
component/accountPages/couponPageComponent.tsx

@@ -1,143 +1,20 @@
-import {
-    Image,
-    View,
-    Text,
-    Pressable,
-    Dimensions,
-    StyleSheet,
-    Modal,
-    Animated,
-    ScrollView,
-    Button,
-    BackHandler,
-    Alert
-} from 'react-native';
+import { View, Text, Pressable, Dimensions, StyleSheet } from 'react-native';
 
 import { SafeAreaView } from 'react-native-safe-area-context';
-import { router, useFocusEffect } from 'expo-router';
+import { router } from 'expo-router';
 import { CrossLogoSvg } from '../global/SVG';
 import CouponTabViewComponent from '../global/couponTabView';
-import { useCallback, useEffect, useState } from 'react';
-import { useChargingStore } from '../../providers/scan_qr_payload_store';
-import { ArrowRightSvg } from '../global/SVG';
-import { useRef } from 'react';
-import NormalButton from '../global/normal_button';
-import axios from 'axios';
-import { chargeStationService } from '../../service/chargeStationService';
+import DisplayedOnlyCouponTabView from '../global/displayedOnlyCouponTabView';
+
 const CouponPageComponent = () => {
     const screenHeight = Dimensions.get('window').height;
-    const {
-        promotion_code,
-        coupon_detail,
-        stationID,
-
-        setSumOfCoupon,
-        setCurrentPriceStore,
-        current_price_store,
-        setProcessedCouponStore,
-        setPromotionCode,
-        setCouponDetail,
-        setTotalPower
-    } = useChargingStore();
-    const [scaleValue, setScaleValue] = useState(1);
-    const [isBottomSheetVisible, setIsBottomSheetVisible] = useState(false);
-    const [processedCoupons, setProcessedCoupons] = useState([]);
-    const translateY = useRef(new Animated.Value(300)).current;
-    const showBottomSheet = () => {
-        setIsBottomSheetVisible(true);
-        Animated.timing(translateY, {
-            toValue: 0,
-            duration: 300,
-            useNativeDriver: true
-        }).start();
-    };
-    const hideBottomSheet = () => {
-        Animated.timing(translateY, {
-            toValue: 0,
-            duration: 0,
-            useNativeDriver: true
-        }).start(() => setIsBottomSheetVisible(false));
-    };
-    //process coupon so that coupons with same expire date and amount are grouped together to show abcoupon x 2
-    useEffect(() => {
-        if (Array.isArray(coupon_detail) && coupon_detail.length > 0) {
-            const processed = processCoupons(coupon_detail);
-            setProcessedCoupons(processed);
-            setProcessedCouponStore(processed);
-            console.log('processed', processed);
-        }
-    }, [coupon_detail]);
-
-    //fetch original price for coupon valid calculation
-
-    const processCoupons = (coupon_details_array: any) => {
-        //coupon_details_array contains all information. i skim it down here.
-        if (!coupon_details_array || coupon_details_array.length === 0) {
-            return [];
-        }
-        const skimmedDownArray = coupon_details_array?.map((couponDetailObj: any) => ({
-            amount: couponDetailObj.coupon.amount,
-            id: couponDetailObj.id,
-            expire_date: couponDetailObj.expire_date || '永久'
-        }));
-
-        const totalCouponAmount = skimmedDownArray.reduce((acc: number, coupon: any) => acc + coupon.amount, 0);
-        setSumOfCoupon(totalCouponAmount);
-        //process the skimmed array by combining coupons with same expire_date and amount
-        const processedArray = (skimmedDownArray: { amount: number; id: string; expire_date: string }[]) => {
-            const groupedCoupons: { [key: string]: any } = {};
-
-            for (const coupon of skimmedDownArray) {
-                const key = `${coupon.amount}-${coupon.expire_date}`;
-                if (!groupedCoupons[key]) {
-                    groupedCoupons[key] = {
-                        coupon_detail: {
-                            amount: coupon.amount,
-                            expire_date: coupon.expire_date
-                        },
-                        frequency: 1
-                    };
-                } else {
-                    groupedCoupons[key].frequency++;
-                }
-            }
-            return Object.values(groupedCoupons);
-        };
-        return processedArray(skimmedDownArray);
-    };
-    const cleanupData = () => {
-        setPromotionCode([]);
-        setCouponDetail([]);
-        setProcessedCouponStore([]);
-        setSumOfCoupon(0);
-        setTotalPower(null);
-    };
-
-    // Add this effect to handle Android back button
-    useFocusEffect(
-        useCallback(() => {
-            const onBackPress = () => {
-                cleanupData();
-                if (router.canGoBack()) {
-                    router.back();
-                } else {
-                    router.replace('/scanQrPage');
-                }
-                return true;
-            };
 
-            BackHandler.addEventListener('hardwareBackPress', onBackPress);
-
-            return () => BackHandler.removeEventListener('hardwareBackPress', onBackPress);
-        }, [])
-    );
     return (
         <SafeAreaView className="flex-1 bg-white" edges={['top', 'right', 'left']}>
             <View style={{ minHeight: screenHeight, flex: 1 }} className="mx-[5%]">
                 <View style={{ marginTop: 25 }}>
                     <Pressable
                         onPress={() => {
-                            cleanupData();
                             if (router.canGoBack()) {
                                 router.back();
                             } else {
@@ -150,150 +27,9 @@ const CouponPageComponent = () => {
                     <Text style={{ fontSize: 45, marginVertical: 25 }}>優惠券</Text>
                 </View>
                 <View className="flex-1">
-                    <CouponTabViewComponent titles={['可用優惠券', '已使用/失效']} />
-                    {promotion_code.length > 0 && (
-                        <View
-                            style={{
-                                position: 'absolute',
-                                alignItems: 'center',
-                                left: 0,
-                                right: 0,
-                                padding: 20,
-                                height: '100%',
-                                top: '65%'
-                            }}
-                        >
-                            <Pressable
-                                className="bg-white rounded-full items-center justify-center w-full flex flex-row"
-                                style={[styles.floatingButton, { transform: [{ scale: scaleValue }] }]}
-                                onPressIn={() => setScaleValue(0.96)}
-                                onPressOut={() => setScaleValue(1)}
-                                onPress={showBottomSheet}
-                            >
-                                <Text className="text-[#02677D] text-2xl lg:text-4xl text-center py-1  pr-4 lg:pr-6 font-[600] lg:py-4">
-                                    馬上使用
-                                </Text>
-                                <View className="flex mb-2 bg-[#02677D] rounded-full items-center justify-center w-10 h-10 relative">
-                                    <ArrowRightSvg />
-                                    <View className="rounded-full bg-[#02677D] h-5 w-5 absolute bottom-7 left-7 z-10 border border-white flex items-center justify-center">
-                                        <Text className="text-white text-xs text-center">{promotion_code.length}</Text>
-                                    </View>
-                                </View>
-                            </Pressable>
-                        </View>
-                    )}
+                    <DisplayedOnlyCouponTabView titles={['可用優惠券', '已使用/失效']} />
                 </View>
             </View>
-            <Modal transparent={true} visible={isBottomSheetVisible} animationType="none">
-                <View style={{ flex: 1 }}>
-                    <Pressable style={{ flex: 1 }} onPress={hideBottomSheet}>
-                        <View className="flex-1 bg-black/50" />
-                    </Pressable>
-                    <Animated.View
-                        style={{
-                            position: 'absolute',
-                            bottom: 0,
-                            left: 0,
-                            right: 0,
-                            height: '80%',
-                            backgroundColor: 'white',
-                            transform: [{ translateY }],
-                            borderTopLeftRadius: 30,
-                            borderTopRightRadius: 30,
-                            overflow: 'hidden'
-                        }}
-                    >
-                        <ScrollView
-                            className="flex-1 flex-col bg-white p-8 "
-                            contentContainerStyle={{ paddingBottom: 100 }}
-                        >
-                            <Text className="text-lg md:text-xl lg:text-2xl">優惠劵細節</Text>
-                            <View style={{ height: 1, backgroundColor: '#ccc', marginVertical: 24 }} />
-                            {/* coupon row */}
-                            {processedCoupons &&
-                                processedCoupons?.map((couponObj: any) => (
-                                    <View
-                                        key={`${couponObj.coupon_detail.amount}-${couponObj.coupon_detail.expire_date}`}
-                                        className="flex flex-row items-center justify-between"
-                                    >
-                                        <View className="flex flex-row items-start ">
-                                            <Image
-                                                className="w-6 lg:w-8 xl:w-10 h-6 lg:h-8 xl:h-10"
-                                                source={require('../../assets/couponlogo.png')}
-                                            />
-                                            <View
-                                                key={couponObj.coupon_detail.id}
-                                                className="flex flex-col ml-2 lg:ml-4 "
-                                            >
-                                                <Text className="text-base lg:text-xl ">
-                                                    ${couponObj.coupon_detail.amount} 現金劵
-                                                </Text>
-                                                <Text className=" text-sm lg:text-base my-1 lg:mt-2 lg:mb-4 ">
-                                                    有效期{'  '}
-                                                    <Text className="font-[500] text-[#02677D]">
-                                                        至 {couponObj.coupon_detail.expire_date.slice(0, 10)}
-                                                    </Text>
-                                                </Text>
-                                            </View>
-                                        </View>
-
-                                        {/* x 1 */}
-                                        <View className="flex flex-row items-center">
-                                            <Text>X </Text>
-                                            <View className="w-8 h-8 rounded-full bg-[#02677D] flex items-center justify-center">
-                                                <Text className="text-white text-center text-lg">
-                                                    {couponObj.frequency}
-                                                </Text>
-                                            </View>
-                                        </View>
-                                    </View>
-                                ))}
-                            <View style={{ height: 1, backgroundColor: '#ccc', marginVertical: 12 }} />
-                            {/* 服務條款 */}
-                            <NormalButton
-                                title={<Text className="text-white text-sm lg:text-lg">立即使用</Text>}
-                                onPress={() => {
-                                    setIsBottomSheetVisible(false);
-                                    router.push('/totalPayment');
-                                }}
-                                extendedStyle={{ marginTop: 12, marginBottom: 24 }}
-                            />
-                            <View>
-                                <View className="">
-                                    <Text className="text-base md:text-lg lg:text-xl pb-2 lg:pb-3 xl:pb-4">
-                                        服務條款與細則
-                                    </Text>
-                                    <View className="flex flex-col items-center space-y-2">
-                                        <Text className="text-xs md:text-sm font-[300]">
-                                            ・ 此券持有人可在本券有效期內於任何位於Crazy Charge
-                                            之香港分店換取同等價值充電服務,逾期無效。
-                                        </Text>
-                                        <Text className="text-xs lg:text-sm  font-[300]">
-                                            ・
-                                            此優惠券使用時,電費將以正常價格$3.5元/每度電計算,不適用於貓頭鷹時段或其他折扣時段的電力價格計算。
-                                        </Text>
-                                        <Text className="text-xs lg:text-sm  font-[300]">
-                                            ・ 此券不能用以套换現金或其他面值之現金券,持有人不獲現金或其他形式之找贖。
-                                        </Text>
-                                        <Text className="text-xs lg:text-sm  font-[300]">
-                                            ・ 使用者一旦在本 APP
-                                            內確認使用電子優惠券,即視為同意依優惠券規則進行消費抵扣,相關優惠券將立即從帳戶中扣除,且扣除後不得退還。
-                                        </Text>
-                                        <Text className="text-xs lg:text-sm  font-[300]">
-                                            ・
-                                            即便實際充電消費金額未達到電子優惠券的面額,亦不會就差額部分進行退款。優惠券的使用旨在為用戶提供充電優惠,而非現金兌換或退款工具。
-                                        </Text>
-                                        <Text className="text-xs lg:text-sm  font-[300]">
-                                            ・如有任何爭議,Crazy Charge
-                                            保留更改有關使用此現金券之條款及細則,而毋須另行通知。
-                                        </Text>
-                                    </View>
-                                </View>
-                            </View>
-                        </ScrollView>
-                    </Animated.View>
-                </View>
-            </Modal>
         </SafeAreaView>
     );
 };

+ 3 - 0
component/accountPages/paymentRecordPageComponent.tsx

@@ -120,6 +120,9 @@ const PaymentRecordPageComponent = () => {
                                 case 'Walk In':
                                     description = '充電費用';
                                     break;
+                                case 'manual_refund':
+                                    description = '系統退款';
+                                    break;
                                 default:
                                     description = '充電';
                             }

+ 6 - 3
component/accountPages/walletPageComponent.tsx

@@ -611,7 +611,8 @@ export const IndividualCouponComponent = ({
     date,
     setOpacity,
     redeem_code,
-    onCouponClick
+    onCouponClick,
+    noCircle
 }: {
     title: string;
     price: string;
@@ -620,8 +621,9 @@ export const IndividualCouponComponent = ({
     date: string;
     setOpacity?: boolean;
     redeem_code?: string;
+    noCircle?: boolean;
 }) => {
-    const { promotion_code, setPromotionCode } = useChargingStore();
+    const { promotion_code } = useChargingStore();
 
     return (
         <ImageBackground
@@ -649,7 +651,8 @@ export const IndividualCouponComponent = ({
                         <Text className="text-base lg:text-lg xl:text-xl">{title}</Text>
 
                         {/* if opacity is true=used coupon= no circle */}
-                        {setOpacity ? (
+
+                        {noCircle ? (
                             <></>
                         ) : (
                             <View

+ 234 - 0
component/global/displayedOnlyCouponTabView.tsx

@@ -0,0 +1,234 @@
+//the size of the TabView will follow its parent-container's size.
+
+import * as React from 'react';
+import {
+    View,
+    Text,
+    useWindowDimensions,
+    StyleSheet,
+    ImageSourcePropType,
+    ScrollView,
+    ActivityIndicator,
+    Pressable,
+    Alert
+} from 'react-native';
+import { TabView, SceneMap, TabBar } from 'react-native-tab-view';
+
+import { IndividualCouponComponent } from '../accountPages/walletPageComponent';
+import { formatCouponDate } from '../../util/lib';
+import { useCallback, useEffect, useRef, useState } from 'react';
+import { walletService } from '../../service/walletService';
+import { useChargingStore } from '../../providers/scan_qr_payload_store';
+import { chargeStationService } from '../../service/chargeStationService';
+import { router } from 'expo-router';
+import axios from 'axios';
+
+export interface TabItem {
+    imgURL: ImageSourcePropType;
+    date: string;
+    time: string;
+    chargeStationName: string;
+    chargeStationAddress: string;
+    distance: string;
+}
+
+interface TabViewComponentProps {
+    titles: string[];
+}
+
+const FirstRoute = ({
+    coupons,
+    loading,
+    handleCouponClick
+}: {
+    coupons: any;
+    loading: boolean;
+    handleCouponClick: any;
+}) => {
+    return (
+        <View className="flex-1">
+            <ScrollView
+                style={{ flex: 1, backgroundColor: 'white', marginTop: 14 }}
+                contentContainerStyle={{ paddingBottom: 120 }}
+            >
+                <View className="flex-1 flex-col">
+                    {loading ? (
+                        <View className="items-center justify-center">
+                            <ActivityIndicator />
+                        </View>
+                    ) : (
+                        <View className="">
+                            <View>
+                                {coupons.filter(
+                                    (coupon: any) =>
+                                        coupon.is_consumed === false && new Date(coupon.expire_date) > new Date()
+                                ).length === 0 ? (
+                                    <Text className="pl-4">暫時戶口沒有優惠券。</Text>
+                                ) : (
+                                    coupons
+                                        .filter(
+                                            (coupon: any) =>
+                                                coupon.is_consumed === false &&
+                                                new Date(coupon.expire_date) > new Date()
+                                        )
+                                        .sort(
+                                            (a: any, b: any) =>
+                                                new Date(a.expire_date).getTime() - new Date(b.expire_date).getTime()
+                                        )
+                                        .slice(0, 30)
+                                        .map((coupon: any, index: any) => (
+                                            <IndividualCouponComponent
+                                                onCouponClick={handleCouponClick}
+                                                // key={coupon.redeem_code}
+                                                key={`${coupon.id}-${index}`}
+                                                title={coupon.coupon.name}
+                                                price={coupon.coupon.amount}
+                                                detail={coupon.coupon.description}
+                                                date={formatCouponDate(coupon.expire_date)}
+                                                setOpacity={false}
+                                                noCircle={true}
+                                                redeem_code={coupon.id}
+                                            />
+                                        ))
+                                )}
+                            </View>
+                        </View>
+                    )}
+                </View>
+            </ScrollView>
+        </View>
+    );
+};
+
+const SecondRoute = ({ coupons }: { coupons: any }) => (
+    <ScrollView style={{ flex: 1, backgroundColor: 'white', marginTop: 14 }}>
+        <View className="flex-1 flex-col">
+            {coupons
+                .filter((coupon: any) => coupon.is_consumed === true || new Date(coupon.expire_date) < new Date())
+                .slice(0, 30)
+                .map((coupon: any, index: any) => (
+                    <IndividualCouponComponent
+                        key={`${coupon.id}-${index}`}
+                        title={coupon.coupon.name}
+                        price={coupon.coupon.amount}
+                        detail={coupon.coupon.description}
+                        date={formatCouponDate(coupon.expire_date)}
+                        setOpacity={true}
+                        noCircle={true}
+                    />
+                ))}
+        </View>
+    </ScrollView>
+);
+
+const DisplayedOnlyCouponTabView: React.FC<TabViewComponentProps> = ({ titles }) => {
+    const layout = useWindowDimensions();
+    const [loading, setLoading] = useState(false);
+    const [coupons, setCoupons] = useState([]);
+    const [userID, setUserID] = useState('');
+    const [modalVisible, setModalVisible] = useState(false);
+
+    useEffect(() => {
+        const fetchData = async () => {
+            try {
+                setLoading(true);
+                const info = await walletService.getCustomerInfo();
+                const coupon = await walletService.getCouponForSpecificUser(info.id);
+                setUserID(info.id);
+                setCoupons(coupon);
+            } catch (error) {
+                console.log(error);
+            } finally {
+                setLoading(false);
+            }
+        };
+        fetchData();
+    }, []);
+
+    const handleCouponClick = async (clickedCoupon: string) => {
+        Alert.alert(
+            '立即使用優惠券', // Title
+            '按確認打開相機,掃描充電站上的二維碼以使用優惠券', // Message
+            [
+                {
+                    text: '取消',
+                    style: 'cancel'
+                },
+                {
+                    text: '確認',
+                    onPress: () => router.push('scanQrPage')
+                }
+            ]
+        );
+    };
+
+    const renderScene = useCallback(
+        ({ route }: { route: any }) => {
+            switch (route.key) {
+                case 'firstRoute':
+                    return <FirstRoute coupons={coupons} loading={loading} handleCouponClick={handleCouponClick} />;
+                case 'secondRoute':
+                    return <SecondRoute coupons={coupons} />;
+                default:
+                    return null;
+            }
+        },
+        [coupons, loading, handleCouponClick]
+    );
+
+    const [routes] = React.useState([
+        { key: 'firstRoute', title: titles[0] },
+        { key: 'secondRoute', title: titles[1] }
+    ]);
+    const [index, setIndex] = React.useState(0);
+
+    const renderTabBar = (props: any) => (
+        <TabBar
+            {...props}
+            renderLabel={({ route, focused }) => (
+                <Text
+                    style={{
+                        color: focused ? '#025c72' : '#888888',
+                        fontWeight: focused ? '900' : 'thin',
+                        fontSize: 20
+                    }}
+                >
+                    {route.title}
+                </Text>
+            )}
+            indicatorStyle={{
+                backgroundColor: '#025c72'
+            }}
+            style={{
+                backgroundColor: 'white',
+                borderColor: '#DBE4E8',
+                elevation: 0,
+                marginHorizontal: 15,
+                borderBottomWidth: 0.5
+            }}
+        />
+    );
+    return (
+        <TabView
+            navigationState={{ index, routes }}
+            renderScene={renderScene}
+            onIndexChange={setIndex}
+            initialLayout={{ width: layout.width }}
+            renderTabBar={renderTabBar}
+        />
+    );
+};
+export default DisplayedOnlyCouponTabView;
+
+const styles = StyleSheet.create({
+    container: { flexDirection: 'row' },
+    image: { width: 100, height: 100, margin: 15, borderRadius: 10 },
+    textContainer: { flexDirection: 'column', gap: 8, marginTop: 20 },
+    floatingButton: {
+        elevation: 5,
+        shadowColor: '#000',
+        shadowOffset: { width: 0, height: 2 },
+        shadowOpacity: 0.25,
+        shadowRadius: 3.84
+    }
+});

+ 4 - 4
ios/Crazycharge.xcodeproj/project.pbxproj

@@ -367,11 +367,11 @@
 				);
 				OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_DEBUG";
 				PRODUCT_BUNDLE_IDENTIFIER = hk.com.crazycharge;
-				PRODUCT_NAME = Crazycharge;
+				PRODUCT_NAME = "Crazycharge";
 				SWIFT_OBJC_BRIDGING_HEADER = "Crazycharge/Crazycharge-Bridging-Header.h";
 				SWIFT_OPTIMIZATION_LEVEL = "-Onone";
 				SWIFT_VERSION = 5.0;
-				TARGETED_DEVICE_FAMILY = 1;
+				TARGETED_DEVICE_FAMILY = "1";
 				VERSIONING_SYSTEM = "apple-generic";
 			};
 			name = Debug;
@@ -395,10 +395,10 @@
 				);
 				OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE";
 				PRODUCT_BUNDLE_IDENTIFIER = hk.com.crazycharge;
-				PRODUCT_NAME = Crazycharge;
+				PRODUCT_NAME = "Crazycharge";
 				SWIFT_OBJC_BRIDGING_HEADER = "Crazycharge/Crazycharge-Bridging-Header.h";
 				SWIFT_VERSION = 5.0;
-				TARGETED_DEVICE_FAMILY = 1;
+				TARGETED_DEVICE_FAMILY = "1";
 				VERSIONING_SYSTEM = "apple-generic";
 			};
 			name = Release;

+ 2 - 1
ios/Crazycharge/Info.plist

@@ -19,7 +19,7 @@
     <key>CFBundlePackageType</key>
     <string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string>
     <key>CFBundleShortVersionString</key>
-    <string>1.3.1</string>
+    <string>1.3.2</string>
     <key>CFBundleSignature</key>
     <string>????</string>
     <key>CFBundleURLTypes</key>
@@ -70,6 +70,7 @@
     <key>NSUserActivityTypes</key>
     <array>
       <string>$(PRODUCT_BUNDLE_IDENTIFIER).expo.index_route</string>
+      <string>$(PRODUCT_BUNDLE_IDENTIFIER).expo.index_route</string>
     </array>
     <key>UIBackgroundModes</key>
     <array>

+ 4 - 1
service/walletService.tsx

@@ -213,10 +213,13 @@ class WalletService {
                     Authorization: `Bearer ${await SecureStore.getItemAsync('accessToken')}`
                 }
             });
-            console.log('response.data', response.data);
+            console.log('back end new submit paymentresponse.data', response.data);
+            console.log('back end new submit payment response.data.status', response.data.status);
             if (response.data.status === 200 || response.data.status === 201) {
+                console.log('i am true');
                 return response.data.status;
             } else {
+                console.log('i am false');
                 return response.data;
             }
         } catch (error) {

Algúns arquivos non se mostraron porque demasiados arquivos cambiaron neste cambio