diff --git a/App.js b/App.js
index d728d30..eb21052 100644
--- a/App.js
+++ b/App.js
@@ -28,6 +28,7 @@ import {
import { AllTrainDiagramProvider } from "./stateBox/useAllTrainDiagram.js";
import { SheetProvider } from "react-native-actions-sheet";
import "./components/ActionSheetComponents/sheets.js";
+import { TrainDelayDataProvider } from "./stateBox/useTrainDelayData.js";
LogBox.ignoreLogs([
"ViewPropTypes will be removed",
"ColorPropType will be removed",
@@ -43,17 +44,19 @@ export default function App() {
useEffect(() => UpdateAsync(), []);
return (
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
);
}
diff --git a/components/ActionSheetComponents/JRSTraInfo.js b/components/ActionSheetComponents/JRSTraInfo.js
index eaf0e37..d31b53e 100644
--- a/components/ActionSheetComponents/JRSTraInfo.js
+++ b/components/ActionSheetComponents/JRSTraInfo.js
@@ -10,10 +10,10 @@ import {
import { Ionicons, MaterialCommunityIcons } from "@expo/vector-icons";
import ActionSheet from "react-native-actions-sheet";
import LottieView from "lottie-react-native";
-export const JRSTraInfo = (props) => {
- if (!props.payload) return <>>;
- const { getTime, loadingDelayData, setLoadingDelayData, delayData } =
- props.payload;
+import { useTrainDelayData } from "../../stateBox/useTrainDelayData";
+export const JRSTraInfo = () => {
+ const { getTime, delayData, loadingDelayData, setLoadingDelayData } =
+ useTrainDelayData();
return (
>}>
getStationList().then(setOriginalStationList), []);
- const [count, setCount] = useState(0);
- const [delayData, setDelayData] = useState(undefined);
- const [getTime, setGetTime] = useState(new Date());
- const [loadingDelayData, setLoadingDelayData] = useState(true);
const carouselRef = useRef();
const [selectedCurrentStation, setSelectedCurrentStation] = useState(0);
- useEffect(() => {
- fetch(
- "https://script.google.com/macros/s/AKfycbyKxch7z7l8e07LXulRHqxjVoIiB13kcgvoToLE-rqlxLmLSKdlmqz0FI1F2EuA7Zfg/exec"
- )
- .then((response) => response.text())
- .then((data) => setDelayData(data !== "" ? data.split("^") : null))
- .then(() => setGetTime(new Date()))
- .finally(() => setLoadingDelayData(false));
- }, [loadingDelayData]);
const [allStationData, setAllStationData] = useState([]);
useEffect(() => {
setAllStationData(
@@ -262,12 +247,7 @@ export default function Menu(props) {
openStationACFromEachTrainInfo={openStationACFromEachTrainInfo}
/>
)}
-
+
@@ -332,8 +312,15 @@ const TopMenuButton = () => {
);
};
-const JRSTraInfoBox = (props) => {
- const { getTime, setLoadingDelayData, loadingDelayData, delayData } = props;
+const JRSTraInfoBox = () => {
+ const {
+ getTime,
+ setGetTime,
+ delayData,
+ setDelayData,
+ loadingDelayData,
+ setLoadingDelayData,
+ } = useTrainDelayData();
const styles = {
touch: {
backgroundColor: "#0099CC",
@@ -365,17 +352,7 @@ const JRSTraInfoBox = (props) => {
};
return (
{
- const payload = {
- getTime,
- setLoadingDelayData,
- loadingDelayData,
- delayData,
- };
- SheetManager.show("JRSTraInfo", {
- payload,
- });
- }}
+ onPress={() => SheetManager.show("JRSTraInfo")}
style={styles.touch}
>
@@ -558,18 +535,18 @@ const FixedContentBottom = (props) => {
JR四国グループの施設をご案内
- {/* props.navigate("AllTrainIDList")}
>
- JR四国のお店・サービス
+ 列番検索
- JR四国グループの施設をご案内
+ 全列車のダイヤを確認できる機能です。
- */}
+
{},
+ loadingDelayData: true,
+ setLoadingDelayData: () => {},
+ delayData: undefined,
+ setDelayData: () => {},
+};
+
+const TrainDelayDataContext = createContext(initialState);
+
+export const useTrainDelayData = () => {
+ return useContext(TrainDelayDataContext);
+};
+
+export const TrainDelayDataProvider = ({ children }) => {
+ const [delayData, setDelayData] = useState(undefined);
+ const [getTime, setGetTime] = useState(new Date());
+ const [loadingDelayData, setLoadingDelayData] = useState(true);
+ useEffect(() => {
+ fetch(
+ "https://script.google.com/macros/s/AKfycbyKxch7z7l8e07LXulRHqxjVoIiB13kcgvoToLE-rqlxLmLSKdlmqz0FI1F2EuA7Zfg/exec"
+ )
+ .then((response) => response.text())
+ .then((data) => setDelayData(data !== "" ? data.split("^") : null))
+ .then(() => setGetTime(new Date()))
+ .finally(() => setLoadingDelayData(false));
+ }, [loadingDelayData]);
+
+ return (
+
+ {children}
+
+ );
+};