データの整理と最適化ミスの修正

This commit is contained in:
harukin-expo-dev-env 2024-03-09 07:03:59 +00:00
parent 45b64f28cb
commit d4c9bdae75
4 changed files with 50 additions and 64 deletions

63
App.js
View File

@ -1,31 +1,18 @@
import React, { useEffect } from "react";
import { NavigationContainer } from "@react-navigation/native";
import { createStackNavigator } from "@react-navigation/stack";
import { createBottomTabNavigator } from "@react-navigation/bottom-tabs";
import { Platform, UIManager } from "react-native";
import { GestureHandlerRootView } from "react-native-gesture-handler";
import { UpdateAsync } from "./UpdateAsync.js";
import { AS } from "./storageControl";
import TNDView from "./ndView";
import { LogBox } from "react-native";
import useInterval from "./lib/useInterval";
import { HeaderConfig } from "./lib/HeaderConfig";
import { initIcon } from "./lib/initIcon";
import {
useFavoriteStation,
FavoriteStationProvider,
} from "./stateBox/useFavoriteStation";
import { FavoriteStationProvider } from "./stateBox/useFavoriteStation";
import { Top } from "./Top.js";
import { MenuPage } from "./MenuPage.js";
import {
useCurrentTrain,
CurrentTrainProvider,
} from "./stateBox/useCurrentTrain.js";
import { CurrentTrainProvider } from "./stateBox/useCurrentTrain.js";
import { useAreaInfo, AreaInfoProvider } from "./stateBox/useAreaInfo.js";
import {
useBusAndTrainData,
BusAndTrainDataProvider,
} from "./stateBox/useBusAndTrainData.js";
import { BusAndTrainDataProvider } from "./stateBox/useBusAndTrainData.js";
import { AllTrainDiagramProvider } from "./stateBox/useAllTrainDiagram.js";
import { SheetProvider } from "react-native-actions-sheet";
import "./components/ActionSheetComponents/sheets.js";
@ -67,51 +54,7 @@ export default function App() {
);
}
export function AppContainer() {
const { setBusAndTrainData, setTrainPairData } = useBusAndTrainData();
useEffect(() => {
AS.getItem("busAndTrain")
.then((d) => {
const returnData = JSON.parse(d);
setBusAndTrainData(returnData);
})
.catch(() => {
fetch(
"https://script.google.com/macros/s/AKfycbw0UW6ZeCDgUYFRP0zxpc_Oqfy-91dBdbWv-cM8n3narKp14IyCd2wy5HW7taXcW7E/exec"
)
.then((d) => d.json())
.then((d) => {
setBusAndTrainData(d);
AS.setItem("busAndTrain", JSON.stringify(d));
});
});
}, []);
useEffect(() => {
AS.getItem("trainPairData")
.then((d) => {
const returnData = JSON.parse(d);
setTrainPairData(returnData);
})
.catch(() => {
fetch(
"https://script.google.com/macros/s/AKfycbyoBH7_rBwzPmhU1ghRBNTAVuvGltIrZtWxE07gDdhGGlDL9Ip2qk3pFM5u2xtRBl8/exec"
)
.then((d) => d.json())
.then((d) => {
setTrainPairData(d);
AS.setItem("trainPairData", JSON.stringify(d));
});
});
}, []);
const { areaInfo, setAreaInfo } = useAreaInfo();
const getAreaData = () =>
fetch(
"https://script.google.com/macros/s/AKfycbz80LcaEUrhnlEsLkJy0LG2IRO3DBVQhfNmN1d_0f_HvtsujNQpxM90SrV9yKWH_JG1Ww/exec"
)
.then((d) => d.text())
.then((d) => setAreaInfo(d));
useEffect(getAreaData, []);
useInterval(getAreaData, 60000); //60秒毎に全在線列車取得
return (
<NavigationContainer name="Root" style={{ flex: 1 }}>

View File

@ -71,7 +71,7 @@ export function TraInfoEXWidget({ time, delayString }) {
>
<FlexText flex={15} text={data[0].replace("\n", "")} />
<FlexText flex={5} text={data[1]} />
<FlexText flex={6} text={data[2]} />
<FlexText flex={6} text={data[3]} />
</FlexWidget>
);
})

View File

@ -1,4 +1,5 @@
import React, { createContext, useContext, useState } from "react";
import React, { createContext, useContext, useState, useEffect } from "react";
import useInterval from "../lib/useInterval";
const initialState = {
areaInfo: "",
setAreainfo: () => {},
@ -12,7 +13,14 @@ export const useAreaInfo = () => {
export const AreaInfoProvider = ({ children }) => {
const [areaInfo, setAreaInfo] = useState("");
const getAreaData = () =>
fetch(
"https://script.google.com/macros/s/AKfycbz80LcaEUrhnlEsLkJy0LG2IRO3DBVQhfNmN1d_0f_HvtsujNQpxM90SrV9yKWH_JG1Ww/exec"
)
.then((d) => d.text())
.then((d) => setAreaInfo(d));
useEffect(getAreaData, []);
useInterval(getAreaData, 60000); //60秒毎に全在線列車取得
return (
<AreaInfoContext.Provider value={{ areaInfo, setAreaInfo }}>
{children}

View File

@ -1,5 +1,6 @@
import React, { createContext, useContext, useState } from "react";
import React, { createContext, useContext, useState, useEffect } from "react";
import trainList from "../assets/originData/trainList";
import { AS } from "../storageControl";
const initialState = {
busAndTrainData: [],
setBusAndTrainData: () => {},
@ -18,6 +19,40 @@ export const useBusAndTrainData = () => {
export const BusAndTrainDataProvider = ({ children }) => {
const [busAndTrainData, setBusAndTrainData] = useState([]);
const [trainPairData, setTrainPairData] = useState([]);
useEffect(() => {
AS.getItem("busAndTrain")
.then((d) => {
const returnData = JSON.parse(d);
setBusAndTrainData(returnData);
})
.catch(() => {
fetch(
"https://script.google.com/macros/s/AKfycbw0UW6ZeCDgUYFRP0zxpc_Oqfy-91dBdbWv-cM8n3narKp14IyCd2wy5HW7taXcW7E/exec"
)
.then((d) => d.json())
.then((d) => {
setBusAndTrainData(d);
AS.setItem("busAndTrain", JSON.stringify(d));
});
});
}, []);
useEffect(() => {
AS.getItem("trainPairData")
.then((d) => {
const returnData = JSON.parse(d);
setTrainPairData(returnData);
})
.catch(() => {
fetch(
"https://script.google.com/macros/s/AKfycbyoBH7_rBwzPmhU1ghRBNTAVuvGltIrZtWxE07gDdhGGlDL9Ip2qk3pFM5u2xtRBl8/exec"
)
.then((d) => d.json())
.then((d) => {
setTrainPairData(d);
AS.setItem("trainPairData", JSON.stringify(d));
});
});
}, []);
const initializeTrainPairList = () => {
const trainPairList = {};
trainPairData.forEach((d) => {