diff --git a/App.js b/App.js index ddd4afe..ded91f4 100644 --- a/App.js +++ b/App.js @@ -34,13 +34,13 @@ export default function App() { useEffect(() => UpdateAsync(), []); const ProviderTree = buildProvidersTree([ + AllTrainDiagramProvider, NotificationProvider, StationListProvider, FavoriteStationProvider, TrainDelayDataProvider, CurrentTrainProvider, AreaInfoProvider, - AllTrainDiagramProvider, BusAndTrainDataProvider, TrainMenuProvider, SheetProvider, diff --git a/components/ActionSheetComponents/EachTrainInfoCore.js b/components/ActionSheetComponents/EachTrainInfoCore.js index d837113..6057e95 100644 --- a/components/ActionSheetComponents/EachTrainInfoCore.js +++ b/components/ActionSheetComponents/EachTrainInfoCore.js @@ -12,7 +12,6 @@ import { import { SheetManager } from "react-native-actions-sheet"; import { useScrollHandlers } from "react-native-actions-sheet"; import { AS } from "../../storageControl"; -import trainList from "../../assets/originData/trainList"; import { lineListPair } from "../../lib/getStationList"; import { useCurrentTrain } from "../../stateBox/useCurrentTrain"; import { checkDuplicateTrainData } from "../../lib/checkDuplicateTrainData"; @@ -35,6 +34,7 @@ import { useTrainMenu } from "../../stateBox/useTrainMenu"; import { HeaderText } from "./EachTrainInfoCore/HeaderText"; import { useStationList } from "../../stateBox/useStationList"; import { stationIDPair } from "../../lib/getStationList2"; +import { useAllTrainDiagram } from "@/stateBox/useAllTrainDiagram"; export const EachTrainInfoCore = ({ actionSheetRef, @@ -45,6 +45,7 @@ export const EachTrainInfoCore = ({ }) => { const { currentTrain } = useCurrentTrain(); const { originalStationList, stationList } = useStationList(); + const { allTrainDiagram: trainList } = useAllTrainDiagram(); const { setTrainInfo } = useTrainMenu(); const [currentTrainData, setCurrentTrainData] = useState(); diff --git a/menu.js b/menu.js index 6a7a888..42a8592 100644 --- a/menu.js +++ b/menu.js @@ -17,7 +17,6 @@ import { widthPercentageToDP as wp } from "react-native-responsive-screen"; import { Ionicons } from "@expo/vector-icons"; import LottieView from "lottie-react-native"; import { parseAllTrainDiagram } from "./lib/parseAllTrainDiagram"; -import trainList from "./assets/originData/trainList"; import LED_vision from "./components/発車時刻表/LED_vidion"; import Sign from "./components/駅名表/Sign"; @@ -37,6 +36,7 @@ import { StationNumber } from "./components/Menu/StationPagination"; import lineColorList from "./assets/originData/lineColorList"; import { AS } from "./storageControl"; import { SimpleDot } from "./components/Menu/SimpleDot"; +import { useAllTrainDiagram } from "./stateBox/useAllTrainDiagram"; export default function Menu({ getCurrentTrain }) { const { navigate } = useNavigation(); @@ -131,11 +131,7 @@ export default function Menu({ getCurrentTrain }) { }, [selectedCurrentStation]); //全列車ダイヤリストを作成するuseEffect - const [trainDiagram, setTrainDiagram] = useState(null); // 全列車のダイヤを列番ベースで整理 - useEffect(() => { - //全列車リストを生成する副作用[無条件初回実行] - setTrainDiagram(trainList); - }, []); + const { allTrainDiagram:trainDiagram} = useAllTrainDiagram(); const oPSign = () => { const payload = { diff --git a/stateBox/useAllTrainDiagram.js b/stateBox/useAllTrainDiagram.js index fd00af2..b978429 100644 --- a/stateBox/useAllTrainDiagram.js +++ b/stateBox/useAllTrainDiagram.js @@ -15,17 +15,9 @@ export const AllTrainDiagramProvider = ({ children }) => { () => allTrainDiagram && setKeyList(Object.keys(allTrainDiagram)), [allTrainDiagram] ); - const customData = { - "9395D":"臨時列車,提,https://www.jr-shikoku.co.jp/03_news/pdf/20250314_20250413_tomorrow_together_worldtour.pdf#高松,発,22:10#昭和町,発,22:13#栗林公園北口,発,22:16#栗林,発,22:19#木太町,発,22:23#屋島,発,22:36#古高松南,発,22:39#八栗口,発,22:43#讃岐牟礼,発,22:45#志度,発,22:49#オレンジタウン,発,22:53#造田,発,22:57#神前,発,23:00#讃岐津田,発,23:06#鶴羽,発,23:10#丹生,発,23:15#三本松,着,23:18#", - "9174M":"臨時列車,提,https://www.jr-shikoku.co.jp/03_news/pdf/20250314_20250413_tomorrow_together_worldtour.pdf#高松,発,22:00#坂出,発,22:16#児島,発,22:39#茶屋町,発,22:48#早島,発,22:55#妹尾,発,22:59#岡山,着,23:06#", - "9662D":"宇和れんげまつり臨時列車,提,https://www.jr-shikoku.co.jp/03_news/pdf/20250124_20250629_rinji_spring.pdf#宇和島,発,10:00#北宇和島,発,10:03#高光,発,10:07#伊予吉田,発,10:21#立間,発,10:50#下宇和,発,10:36#卯之町,発,10:39#上宇和,発,10:42#伊予石城,発,10:46#双岩,発,10:53#八幡浜,着,10:58#", - "9664D":"宇和れんげまつり臨時列車,提,https://www.jr-shikoku.co.jp/03_news/pdf/20250124_20250629_rinji_spring.pdf#卯之町,発,11:18#上宇和,発,11:21#伊予石城,発,11:25#双岩,発,11:34#八幡浜,着,11:39#", - "9663D":"宇和れんげまつり臨時列車,提,https://www.jr-shikoku.co.jp/03_news/pdf/20250124_20250629_rinji_spring.pdf#八幡浜,発,10:07#双岩,発,10:16#伊予石城,発,10:23#上宇和,発,10:27#卯之町,着,10:30#", - "9665D":"宇和れんげまつり臨時列車,提,https://www.jr-shikoku.co.jp/03_news/pdf/20250124_20250629_rinji_spring.pdf#八幡浜,発,13:38#双岩,発,13:45#伊予石城,発,13:52#上宇和,発,13:56#卯之町,発,14:07#下宇和,発,14:10#立間,発,14:18#伊予吉田,発,14:25#高光,発,14:31#北宇和島,発,14:35#宇和島,着,14:37#", - }; useEffect(() => { fetch( - "https://n8n.haruk.in/webhook/CrowdTh%E2%82%AC71m3Ra7!ngLead%E2%82%ACr$" + "https://n8n.haruk.in/webhook/JR-shikoku-diagram-migrate-original" ) .then((res) => res.json()) .then((res) => res.data) @@ -37,10 +29,7 @@ export const AllTrainDiagramProvider = ({ children }) => { }); return data; }) - .then((res) => { - Object.assign(res, customData); - setAllTrainDiagram(res); - }) + .then((res) => setAllTrainDiagram(res)) .catch((d) => { alert("allTrainDiagram取得エラー/再取得します"); alert(d); @@ -57,7 +46,6 @@ export const AllTrainDiagramProvider = ({ children }) => { return data; }) .then((res) => { - Object.assign(res, customData); setAllTrainDiagram(res); }); }); diff --git a/stateBox/useBusAndTrainData.js b/stateBox/useBusAndTrainData.js index e29d3f6..9b8ed8e 100644 --- a/stateBox/useBusAndTrainData.js +++ b/stateBox/useBusAndTrainData.js @@ -1,6 +1,6 @@ import React, { createContext, useContext, useState, useEffect } from "react"; -import trainList from "../assets/originData/trainList"; import { AS } from "../storageControl"; +import { useAllTrainDiagram } from "./useAllTrainDiagram"; const initialState = { busAndTrainData: [], setBusAndTrainData: () => {}, @@ -17,6 +17,7 @@ export const useBusAndTrainData = () => { }; export const BusAndTrainDataProvider = ({ children }) => { + const { allTrainDiagram: trainList } = useAllTrainDiagram(); const [busAndTrainData, setBusAndTrainData] = useState([]); const [trainPairData, setTrainPairData] = useState([]); useEffect(() => { @@ -79,7 +80,7 @@ export const BusAndTrainDataProvider = ({ children }) => { case "139M": returnArray.push("143M"); break; - // 土讃線琴平界隈 + // 土讃線琴平界隈 case "1263M": returnArray.push("4263M"); break; @@ -130,7 +131,7 @@ export const BusAndTrainDataProvider = ({ children }) => { case "484D": returnArray.push("583D"); break; - // reverse. + // reverse. case "525D": returnArray.push("4430D"); break; @@ -173,7 +174,7 @@ export const BusAndTrainDataProvider = ({ children }) => { case "583D": returnArray.push("484D"); break; - //上り + //上り case "4520D": returnArray.push("4314D"); break; @@ -215,7 +216,7 @@ export const BusAndTrainDataProvider = ({ children }) => { break; case "564D": returnArray.push("475D"); - break; + break; case "568D": returnArray.push("5479D"); break; @@ -225,7 +226,7 @@ export const BusAndTrainDataProvider = ({ children }) => { case "576D": returnArray.push("4368D"); break; - // reverse. + // reverse. case "4314D": returnArray.push("4520D"); break; @@ -278,11 +279,11 @@ export const BusAndTrainDataProvider = ({ children }) => { returnArray.push("576D"); break; } - if(new RegExp(/^4[1-9]\d\d[DM]$/).test(trainNum)){ + if (new RegExp(/^4[1-9]\d\d[DM]$/).test(trainNum)) { if (trainList["5" + trainNum.substring(1)]) returnArray.push("5" + trainNum.substring(1)); } - if(new RegExp(/^5[1-7]\d\d[DM]$/).test(trainNum)){ + if (new RegExp(/^5[1-7]\d\d[DM]$/).test(trainNum)) { if (trainList["4" + trainNum.substring(1)]) returnArray.push("4" + trainNum.substring(1)); } @@ -302,11 +303,13 @@ export const BusAndTrainDataProvider = ({ children }) => { } if (!returnArray.length) return []; - const TDArray = returnArray.filter(d => trainList.hasOwnProperty(d)).map((d) => { - const TD = trainList[d]; - if (!TD) return; - return { id: d, TrainData: TD.split("#").filter((d) => d != "") }; - }); + const TDArray = returnArray + .filter((d) => trainList.hasOwnProperty(d)) + .map((d) => { + const TD = trainList[d]; + if (!TD) return; + return { id: d, TrainData: TD.split("#").filter((d) => d != "") }; + }); return TDArray; }; return (