import { View, Text, ScrollView, StyleSheet, ActivityIndicator } 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'; const ChargingHurryUpPageComponent = ({ data = {} }) => { // *************************************************************** // 2 整個useEffect listen to data. 有新data就轉頁 // *************************************************************** const reservationData = Array.isArray(data) ? data[0] : data; const [stationInfo, setStationInfo] = useState(null); const [loading, setLoading] = useState(false); const plan = reservationData.book_time === reservationData.end_time ? '充滿停機' : '按每度電結算'; 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]); console.log(reservationData.car.car_brand.name); return ( 預約已經開始 請盡快前往充電站!逾時超過十五分鐘將當作放棄預約。已收取之費用並不會退還。 {loading ? ( ) : ( <> 你的預約為: 日期 {convertToHKTime(reservationData.book_time) .hkDate.split('/') .reverse() .slice(1) .join('月')} 時間 {convertToHKTime(reservationData.book_time).hkTime.slice(0, 5)} 充電地點 {loading ? ( ) : ( <> {stationInfo?.StationName || 'N/A'} {stationInfo?.Address || 'N/A'} )} 方案 {plan} {kwh} 車輛 {reservationData.car.car_brand.name} {reservationData.car.car_type.name} 返回主頁} onPress={() => router.push('mainPage')} /> )} ); }; const styles = StyleSheet.create({ grayColor: { color: '#888888' }, greenColor: { color: '#02677D' } }); export default ChargingHurryUpPageComponent;