import React, { createContext, useContext, useEffect, useState } from "react"; const initialState = { allTrainDiagram: undefined, setAllTrainDiagram: () => {}, }; const AllTrainDiagramContext = createContext(initialState); export const useAllTrainDiagram = () => useContext(AllTrainDiagramContext); export const AllTrainDiagramProvider = ({ children }) => { const [allTrainDiagram, setAllTrainDiagram] = useState(); const [keyList, setKeyList] = useState(); // 第二要素 useEffect( () => 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$" ) .then((res) => res.json()) .then((res) => res.data) .then((res) => { const data = {}; res.forEach((d) => { const keys = Object.keys(d); data[keys] = d[keys]; }); return data; }) .then((res) => { Object.assign(res, customData); setAllTrainDiagram(res); }) .catch((d) => { alert("allTrainDiagram取得エラー/再取得します"); alert(d); fetch( "https://script.google.com/macros/s/AKfycbx_s7RB-xTy-iAslFJg7LfplLV09-hjDXEjdi9kCP_JT45wq17Af_IPOKIOqIfaNDg/exec" ) .then((res) => res.json()) .then((res) => { const data = {}; res.forEach((d) => { const keys = Object.keys(d); data[keys] = d[keys]; }); return data; }) .then((res) => { Object.assign(res, customData); setAllTrainDiagram(res); }); }); }, []); return ( {children} ); };