import { useState, useEffect } from "react"; import { useCurrentTrain } from "@/stateBox/useCurrentTrain"; import { useAllTrainDiagram } from "@/stateBox/useAllTrainDiagram"; import { trainDataType } from "@/lib/trainPositionTextArray"; import { CustomTrainData } from "@/lib/CommonTypes"; import { getCurrentTrainData } from "@/lib/getCurrentTrainData"; /** * 固定表示する列車のデータを管理するカスタムフック */ export const useFixedTrainData = (trainID: string) => { const { currentTrain, getCurrentStationData, setFixedPosition } = useCurrentTrain(); const { allCustomTrainData } = useAllTrainDiagram(); const [train, setTrain] = useState(null); const [customData, setCustomData] = useState( getCurrentTrainData(trainID, currentTrain, allCustomTrainData) ); // カスタムデータの更新 useEffect(() => { setCustomData( getCurrentTrainData(trainID, currentTrain, allCustomTrainData) ); }, [currentTrain, trainID, allCustomTrainData]); // 列車データの更新 useEffect(() => { const stationData = getCurrentStationData(trainID); if (stationData) { setTrain(stationData); } else { alert("追跡していた列車が消えました。追跡を終了します。"); setFixedPosition({ type: null, value: null }); } }, [trainID, currentTrain, getCurrentStationData, setFixedPosition]); return { train, customData, }; };