// component/chargingPage/chargingHurryUpPageComponent.tsx import { View, Text, ScrollView, StyleSheet, ActivityIndicator, Alert, Modal } from 'react-native'; import React, { useEffect, useState } from 'react'; import { SafeAreaView } from 'react-native-safe-area-context'; import NormalButton from '../global/normal_button'; import { router } from 'expo-router'; import { chargeStationService } from '../../service/chargeStationService'; import { format, addHours } from 'date-fns'; import { toZonedTime } from 'date-fns-tz'; import { convertToHKTime } from '../../util/lib'; import { useTranslation } from '../../util/hooks/useTranslation'; const ChargingHurryUpPageComponent = ({ data = {} }) => { const { t } = useTranslation(); const reservationData = Array.isArray(data) ? data[0] : data; const [stationInfo, setStationInfo] = useState(null); const [loading, setLoading] = useState(false); const [isLoading, setIsLoading] = useState(false); const plan = reservationData.book_time === reservationData.end_time ? t('charging_hurry_up.full_charge') : t('charging_hurry_up.per_kwh'); const kwh = reservationData.total_power === null ? '' : `${reservationData.total_power} kWh`; useEffect(() => { setLoading(true); if ( reservationData && reservationData.connector && reservationData.connector.EquipmentID && reservationData.connector.EquipmentID.StationID ) { try { const parsedSnapshot = JSON.parse(reservationData.connector.EquipmentID.StationID.snapshot); setStationInfo(parsedSnapshot); } catch (error) { console.error('Error parsing station snapshot:', error); } } setLoading(false); }, [reservationData]); const startPayload = { StartChargeSeq: reservationData.format_order_id, ConnectorID: reservationData.connector.ConnectorID, StopBy: 2, StopValue: 120, StartBalance: 400.99 }; const handleStartCharge = async () => { setIsLoading(true); try { const response = await chargeStationService.startCharging(startPayload); if (response) { setIsLoading(false); Alert.alert(t('charging_hurry_up.start_success_title'), t('charging_hurry_up.start_success_message'), [{ text: t('common.ok'), onPress: () => {} }]); setTimeout(() => { router.push('chargingPage'); }, 15000); } else { setIsLoading(false); Alert.alert(t('charging_hurry_up.start_failed')); } } catch (error) { setIsLoading(false); Alert.alert(t('common.error'), t('charging_hurry_up.try_again_later')); } }; return ( {t('charging_hurry_up.reservation_started')} {t('charging_hurry_up.arrive_and_start')} {loading ? ( ) : ( <> {t('charging_hurry_up.your_reservation')} {t('charging_hurry_up.date')} {convertToHKTime(reservationData.book_time) .hkDate.split('/') .reverse() .slice(1) .join(t('charging_hurry_up.month'))} {t('charging_hurry_up.time')} {convertToHKTime(reservationData.book_time).hkTime.slice(0, 5)} {t('charging_hurry_up.charging_location')} {loading ? ( ) : ( <> {stationInfo?.StationName || 'N/A'} {stationInfo?.Address || 'N/A'} )} {t('charging_hurry_up.plan')} {plan} {kwh} {t('charging_hurry_up.vehicle')} {reservationData.car.car_brand.name} {reservationData.car.car_type.name} {t('charging_hurry_up.start_charging')}} onPress={() => handleStartCharge()} /> {t('charging_hurry_up.return_home')}} onPress={() => router.push('mainPage')} /> )} {}}> {t('charging_hurry_up.starting_charging')} ); }; const styles = StyleSheet.create({ grayColor: { color: '#888888' }, greenColor: { color: '#02677D' } }); export default ChargingHurryUpPageComponent;