diff --git a/App.js b/App.js
index 76d74dd..09ab333 100644
--- a/App.js
+++ b/App.js
@@ -80,30 +80,6 @@ export function AppContainer() {
});
}, []);
- const { setCurrentTrain, setCurrentTrainLoading } = useCurrentTrain();
-
- const getCurrentTrain = () =>
- fetch(
- "https://script.google.com/macros/s/AKfycby9Y2-Bm75J_WkbZimi7iS8v5r9wMa9wtzpdwES9sOGF4i6HIYEJOM60W6gM1gXzt1o/exec",
- HeaderConfig
- )
- .then((response) => response.json())
- .then((d) =>
- d.map((x) => ({ num: x.TrainNum, delay: x.delay, Pos: x.Pos }))
- )
- .then((d) => {
- setCurrentTrain(d);
- setCurrentTrainLoading("success");
- })
- .catch(() => {
- console.log("えらー");
- setCurrentTrainLoading("error");
- });
-
- useEffect(getCurrentTrain, []); //初回だけ現在の全在線列車取得
-
- useInterval(getCurrentTrain, 15000); //15秒毎に全在線列車取得
-
const { areaInfo, setAreaInfo } = useAreaInfo();
const getAreaData = () =>
fetch(
@@ -128,7 +104,7 @@ export function AppContainer() {
tabBarIcon: initIcon("barchart", "AntDesign"),
}}
>
- {(props) => }
+ {(props) => }
- {(props) => }
+ {(props) => }
a.num == trainNum)
- ),
},
navigate,
originalStationList,
diff --git a/MenuPage.js b/MenuPage.js
index 804f385..a7b01f0 100644
--- a/MenuPage.js
+++ b/MenuPage.js
@@ -12,10 +12,12 @@ import { useFavoriteStation } from "./stateBox/useFavoriteStation";
import { optionData } from "./lib/stackOption.js";
import CurrentTrainListView from "./components/CurrentTrainListView.js";
import AllTrainDiagramView from "./components/AllTrainDiagramView.js";
+import { useCurrentTrain } from "./stateBox/useCurrentTrain.js";
const Stack = createStackNavigator();
-export function MenuPage({ navigation, getCurrentTrain }) {
+export function MenuPage({ navigation }) {
const { favoriteStation, setFavoriteStation } = useFavoriteStation();
+ const { getCurrentTrain } = useCurrentTrain();
useEffect(() => {
const unsubscribe = navigation.addListener("tabPress", (e) => {
AS.getItem("favoriteStation")
diff --git a/Top.js b/Top.js
index 9120dc8..b320f59 100644
--- a/Top.js
+++ b/Top.js
@@ -12,10 +12,12 @@ import TrainMenu from "./components/trainMenu.js";
import FavoriteList from "./components/FavoriteList.js";
import { useFavoriteStation } from "./stateBox/useFavoriteStation";
import { optionData } from "./lib/stackOption.js";
+import { useCurrentTrain } from "./stateBox/useCurrentTrain.js";
const Stack = createStackNavigator();
-export const Top = ({ navigation, getCurrentTrain }) => {
+export const Top = ({ navigation }) => {
const webview = useRef();
const { favoriteStation, setFavoriteStation } = useFavoriteStation();
+ const { getCurrentTrain } = useCurrentTrain();
//地図用
const [mapsStationData, setMapsStationData] = useState(undefined);
diff --git a/components/ActionSheetComponents/EachTrainInfo.js b/components/ActionSheetComponents/EachTrainInfo.js
index ecaa412..8c906e8 100644
--- a/components/ActionSheetComponents/EachTrainInfo.js
+++ b/components/ActionSheetComponents/EachTrainInfo.js
@@ -24,6 +24,8 @@ import {
widthPercentageToDP,
} from "react-native-responsive-screen";
import lineColorList from "../../assets/originData/lineColorList";
+import { useCurrentTrain } from "../../stateBox/useCurrentTrain";
+import { checkDuplicateTrainData } from "../../lib/checkDuplicateTrainData";
export const EachTrainInfo = (props) => {
if (!props.payload) return <>>;
@@ -40,6 +42,18 @@ export const EachTrainInfo = (props) => {
const [trainPositionSwitch, setTrainPositionSwitch] = useState("false");
+ const { currentTrain } = useCurrentTrain();
+
+ const [currentTrainData, setCurrentTrainData] = useState([]);
+
+ useEffect(() => {
+ setCurrentTrainData(
+ checkDuplicateTrainData(
+ currentTrain.filter((d) => d.num == data.trainNum)
+ )
+ );
+ }, [currentTrain]);
+
useEffect(() => {
//列車現在地アイコン表示スイッチ
AS.getItem("trainPositionSwitch")
@@ -65,17 +79,17 @@ export const EachTrainInfo = (props) => {
return Station.map((d) => d.StationNumber)[0];
};
useEffect(() => {
- //data.trainData.Pos = "鴨川~端岡"; //test
- if (!data.trainData?.Pos) return;
- if (data.trainData?.Pos.match("~")) {
- const pos = data.trainData?.Pos.replace("(下り)", "")
+ //currentTrainData.Pos = "鴨川~端岡"; //test
+ if (!currentTrainData?.Pos) return;
+ if (currentTrainData?.Pos.match("~")) {
+ const pos = currentTrainData?.Pos.replace("(下り)", "")
.replace("(上り)", "")
.split("~");
setCurrentPosition([getStationData(pos[0]), getStationData(pos[1])]);
} else {
- setCurrentPosition([getStationData(data.trainData?.Pos)]);
+ setCurrentPosition([getStationData(currentTrainData?.Pos)]);
}
- }, [data.trainData]);
+ }, [currentTrainData]);
const stationList =
originalStationList &&
@@ -339,7 +353,7 @@ export const EachTrainInfo = (props) => {
現在地 {currentPosition.toString()}
- {data.trainData?.Pos && data.trainData?.Pos.match("~") ? (
+ {currentTrainData?.Pos && currentTrainData?.Pos.match("~") ? (
<>
{
}}
>
{
- data.trainData?.Pos.replace("(下り)", "")
+ currentTrainData?.Pos.replace("(下り)", "")
.replace("(上り)", "")
.split("~")[0]
}
@@ -365,7 +379,7 @@ export const EachTrainInfo = (props) => {
}}
>
{
- data.trainData?.Pos.replace("(下り)", "")
+ currentTrainData?.Pos.replace("(下り)", "")
.replace("(上り)", "")
.split("~")[1]
}
@@ -379,7 +393,7 @@ export const EachTrainInfo = (props) => {
textAlign: "right",
}}
>
- {data.trainData?.Pos}
+ {currentTrainData?.Pos}
)}
@@ -394,7 +408,7 @@ export const EachTrainInfo = (props) => {
}}
>
- {isNaN(data.trainData?.delay) ? "状態" : "遅延時分"}
+ {isNaN(currentTrainData?.delay) ? "状態" : "遅延時分"}
{
textAlign: "right",
}}
>
- {data.trainData?.delay}
- {isNaN(data.trainData?.delay) ? "" : "分"}
+ {currentTrainData?.delay}
+ {isNaN(currentTrainData?.delay) ? "" : "分"}
{
textAlign: "right",
}}
>
- {data.trainData?.num}
+ {currentTrainData?.num}
@@ -546,8 +560,8 @@ export const EachTrainInfo = (props) => {
停車駅
- {!isNaN(data.trainData?.delay) &&
- data.trainData?.delay != 0 && (
+ {!isNaN(currentTrainData?.delay) &&
+ currentTrainData?.delay != 0 && (
{
{
if (time) {
date.setHours(time.split(":")[0], time.split(":")[1]);
}
- if (!isNaN(data.trainData?.delay)) {
- date.setMinutes(date.getMinutes() + data.trainData?.delay);
+ if (!isNaN(currentTrainData?.delay)) {
+ date.setMinutes(date.getMinutes() + currentTrainData?.delay);
}
const timeString = date.toTimeString().split(" ")[0].split(":");
return (
@@ -685,8 +699,8 @@ export const EachTrainInfo = (props) => {
🚊
) : null}
- {!isNaN(data.trainData?.delay) &&
- data.trainData?.delay != 0 && (
+ {!isNaN(currentTrainData?.delay) &&
+ currentTrainData?.delay != 0 && (
{
a.num == d)
- ),
},
navigate,
originalStationList,
diff --git a/components/発車時刻表/LED_vidion.js b/components/発車時刻表/LED_vidion.js
index 33f078c..db4faf9 100644
--- a/components/発車時刻表/LED_vidion.js
+++ b/components/発車時刻表/LED_vidion.js
@@ -321,9 +321,6 @@ const EachData = ({
limited: `${getTrainType(train.type).data}:${
train.trainName
}${TrainNumber}`,
- trainData: checkDuplicateTrainData(
- currentTrain.filter((a) => a.num == d.train)
- ),
},
navigate,
originalStationList,
diff --git a/stateBox/useCurrentTrain.js b/stateBox/useCurrentTrain.js
index 241822e..944b37c 100644
--- a/stateBox/useCurrentTrain.js
+++ b/stateBox/useCurrentTrain.js
@@ -1,9 +1,13 @@
-import React, { createContext, useContext, useState } from "react";
+import React, { createContext, useContext, useState, useEffect } from "react";
+import { HeaderConfig } from "../lib/HeaderConfig";
+
+import useInterval from "../lib/useInterval";
const initialState = {
currentTrain: [],
setCurrentTrain: () => {},
currentTrainLoading: "loading",
setCurrentTrainLoading: () => {},
+ getCurrentTrain: () => {},
};
const CurrentTrainContext = createContext(initialState);
@@ -15,7 +19,27 @@ export const useCurrentTrain = () => {
export const CurrentTrainProvider = ({ children }) => {
const [currentTrain, setCurrentTrain] = useState([]); //現在在線中の全列車 { num: 列車番号, delay: 遅延時分(状態), Pos: 位置情報 }
const [currentTrainLoading, setCurrentTrainLoading] = useState("loading"); // success, error, loading
+ const getCurrentTrain = () =>
+ fetch(
+ "https://script.google.com/macros/s/AKfycby9Y2-Bm75J_WkbZimi7iS8v5r9wMa9wtzpdwES9sOGF4i6HIYEJOM60W6gM1gXzt1o/exec",
+ HeaderConfig
+ )
+ .then((response) => response.json())
+ .then((d) =>
+ d.map((x) => ({ num: x.TrainNum, delay: x.delay, Pos: x.Pos }))
+ )
+ .then((d) => {
+ setCurrentTrain(d);
+ setCurrentTrainLoading("success");
+ })
+ .catch(() => {
+ console.log("えらー");
+ setCurrentTrainLoading("error");
+ });
+ useEffect(getCurrentTrain, []); //初回だけ現在の全在線列車取得
+
+ useInterval(getCurrentTrain, 15000); //15秒毎に全在線列車取得
return (
{
setCurrentTrain,
currentTrainLoading,
setCurrentTrainLoading,
+ getCurrentTrain,
}}
>
{children}