48 lines
1.4 KiB
TypeScript
48 lines
1.4 KiB
TypeScript
import { useState, useEffect } from "react";
|
|
import { useStationList } from "@/stateBox/useStationList";
|
|
import { StationProps } from "@/lib/CommonTypes";
|
|
|
|
interface CustomData {
|
|
to_data?: string;
|
|
}
|
|
|
|
/**
|
|
* 行先駅データを管理するカスタムフック
|
|
* カスタムデータまたは列車データから行先を取得
|
|
*/
|
|
export const useDestinationStation = (
|
|
customData: CustomData,
|
|
trainDataWithThrough: string[]
|
|
) => {
|
|
const { getStationDataFromName } = useStationList();
|
|
|
|
const [toData, setToData] = useState("");
|
|
const [destinationStation, setDestinationStation] = useState<StationProps[]>([]);
|
|
|
|
// 行先駅名の設定
|
|
useEffect(() => {
|
|
if (customData.to_data && customData.to_data != "") {
|
|
setToData(customData.to_data);
|
|
} else {
|
|
if (trainDataWithThrough.length == 0) return;
|
|
// 最後から2番目の駅名を取得(最後は空文字の可能性があるため)
|
|
const lastStation = trainDataWithThrough[trainDataWithThrough.length - 2];
|
|
if (lastStation) {
|
|
setToData(lastStation.split(",")[0]);
|
|
}
|
|
}
|
|
}, [customData, trainDataWithThrough]);
|
|
|
|
// 行先駅データの取得
|
|
useEffect(() => {
|
|
if (!toData) return;
|
|
const data = getStationDataFromName(toData);
|
|
setDestinationStation(data);
|
|
}, [toData, getStationDataFromName]);
|
|
|
|
return {
|
|
toData,
|
|
destinationStation,
|
|
};
|
|
};
|