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'; 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 [isLoading, setIsLoading] = 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]); 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('啟動成功', '請稍後等待頁面自動跳轉至充電介面', [{ text: 'OK', onPress: () => {} }]); setTimeout(() => { router.push('chargingPage'); }, 15000); } else { setIsLoading(false); Alert.alert('啟動失敗'); } } catch (error) { setIsLoading(false); Alert.alert('發生錯誤', '請稍後再試'); } }; 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={() => handleStartCharge()} /> 返回主頁} onPress={() => router.push('mainPage')} /> )} {}}> 正在啟動充電... ); }; const styles = StyleSheet.create({ grayColor: { color: '#888888' }, greenColor: { color: '#02677D' } }); export default ChargingHurryUpPageComponent;