From 019486f6656b27d67af8573731b758d6ee163c81 Mon Sep 17 00:00:00 2001 From: harukin-expo-dev-env Date: Thu, 8 Aug 2024 13:18:52 +0000 Subject: [PATCH] =?UTF-8?q?=E9=81=8B=E8=A1=8C=E6=83=85=E5=A0=B1=E3=83=90?= =?UTF-8?q?=E3=83=83=E3=82=B8=E3=81=AB=E5=AF=BE=E8=B1=A1=E8=B7=AF=E7=B7=9A?= =?UTF-8?q?=E8=A8=98=E5=8F=B7=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- App.js | 4 ++-- stateBox/useAreaInfo.js | 30 ++++++++++++++++++++++++++++-- 2 files changed, 30 insertions(+), 4 deletions(-) diff --git a/App.js b/App.js index aa15106..38e843f 100644 --- a/App.js +++ b/App.js @@ -60,7 +60,7 @@ export default function App() { ); } export function AppContainer() { - const { areaInfo } = useAreaInfo(); + const { areaInfo, areaIconBadgeText } = useAreaInfo(); const navigationRef = React.useRef(); return ( @@ -98,7 +98,7 @@ export function AppContainer() { headerTransparent: true, gestureEnabled: true, tabBarIcon: initIcon("train", "Ionicons"), - tabBarBadge: areaInfo ? "!" : undefined, + tabBarBadge: areaInfo ? areaIconBadgeText : undefined, }} > {(props) => } diff --git a/stateBox/useAreaInfo.js b/stateBox/useAreaInfo.js index a37df6f..1759139 100644 --- a/stateBox/useAreaInfo.js +++ b/stateBox/useAreaInfo.js @@ -3,6 +3,7 @@ import useInterval from "../lib/useInterval"; const initialState = { areaInfo: "", setAreainfo: () => {}, + areaIconBadgeText: "", }; const AreaInfoContext = createContext(initialState); @@ -11,18 +12,43 @@ export const useAreaInfo = () => { return useContext(AreaInfoContext); }; +const areaStationPair = { + seto: ["Y"], + yosan1: ["Y"], + yosan2: ["U"], + dosan1: ["D"], + dosan2: ["K"], + kotoku: ["T"], + mugi: ["M"], + tokushima: ["B"], + naruto: ["N"], + yodo: ["G"], +}; export const AreaInfoProvider = ({ children }) => { const [areaInfo, setAreaInfo] = useState(""); - const getAreaData = () => + const [areaIconBadgeText, setAreaIconBadgeText] = useState(""); + const getAreaData = () => { fetch( "https://script.google.com/macros/s/AKfycbz80LcaEUrhnlEsLkJy0LG2IRO3DBVQhfNmN1d_0f_HvtsujNQpxM90SrV9yKWH_JG1Ww/exec" ) .then((d) => d.text()) .then((d) => setAreaInfo(d)); + fetch("https://n8n.haruk.in/webhook/jr-shikoku-trainfo-flag") + .then((d) => d.json()) + .then((d) => { + if (!d.data) return; + const text = d.data + .filter((e) => e.status) + .map((e) => `${areaStationPair[e.area].join("")}`); + setAreaIconBadgeText(text.length == 0 ? "!" : text.join(",")); + }); + }; useEffect(getAreaData, []); useInterval(getAreaData, 60000); //60秒毎に全在線列車取得 return ( - + {children} );