From 06eca9ed8ae405b2b0529fe8cfbc195af4eb4844 Mon Sep 17 00:00:00 2001 From: harukin-expo-dev-env Date: Fri, 23 Aug 2024 15:36:48 +0000 Subject: [PATCH] =?UTF-8?q?=E9=81=85=E5=BB=B6=E3=81=AE=E3=81=AA=E3=81=84?= =?UTF-8?q?=E3=82=A4=E3=83=B3=E3=83=95=E3=82=A9=E3=83=A1=E3=83=BC=E3=82=B7?= =?UTF-8?q?=E3=83=A7=E3=83=B3=E3=82=92=E5=88=A4=E5=AE=9A=E3=81=A7=E3=81=8D?= =?UTF-8?q?=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB=E8=AA=BF=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Apps.js | 11 ++++++++--- stateBox/useAreaInfo.js | 22 ++++++++++++++++++---- 2 files changed, 26 insertions(+), 7 deletions(-) diff --git a/Apps.js b/Apps.js index 984e4f2..cc526e0 100644 --- a/Apps.js +++ b/Apps.js @@ -11,9 +11,9 @@ import "./components/ActionSheetComponents/sheets"; export function AppContainer() { const Tab = createBottomTabNavigator(); - const { areaInfo, areaIconBadgeText } = useAreaInfo(); + const { areaInfo, areaIconBadgeText, isInfo } = useAreaInfo(); const navigationRef = React.useRef(); - const getTabProps = (name, label, icon, iconFamily, tabBarBadge) => ({ + const getTabProps = (name, label, icon, iconFamily, tabBarBadge, style) => ({ name, options: { tabBarLabel: label, @@ -21,6 +21,7 @@ export function AppContainer() { gestureEnabled: true, tabBarIcon: initIcon(icon, iconFamily), tabBarBadge, + tabBarBadgeStyle: style, }, }); return ( @@ -45,7 +46,11 @@ export function AppContainer() { "運行情報", "train", "Ionicons", - areaInfo ? areaIconBadgeText : undefined + areaInfo ? areaIconBadgeText : undefined, + isInfo && { + backgroundColor: "#00b8ff", + color: "white", + } )} children={(props) => } /> diff --git a/stateBox/useAreaInfo.js b/stateBox/useAreaInfo.js index a624cba..6b15c3e 100644 --- a/stateBox/useAreaInfo.js +++ b/stateBox/useAreaInfo.js @@ -316,6 +316,7 @@ export const AreaInfoProvider = ({ children }) => { const [areaInfo, setAreaInfo] = useState(""); const [areaIconBadgeText, setAreaIconBadgeText] = useState(""); const [areaStationID, setAreaStationID] = useState([]); + const [isInfo, setIsInfo] = useState(false); const getAreaData = () => { fetch( "https://script.google.com/macros/s/AKfycbz80LcaEUrhnlEsLkJy0LG2IRO3DBVQhfNmN1d_0f_HvtsujNQpxM90SrV9yKWH_JG1Ww/exec" @@ -326,28 +327,41 @@ export const AreaInfoProvider = ({ children }) => { .then((d) => d.json()) .then((d) => { if (!d.data) return; - const text = d.data + const lineInfo = d.data.filter((e) => e.area != "genelic"); + const genelicInfo = d.data.filter((e) => e.area == "genelic"); + const text = lineInfo .filter((e) => e.status) .map((e) => { return `${areaStationPair[e.area].id}`; }); let stationIDList = []; - d.data + lineInfo .filter((e) => e.status) .forEach((e) => { stationIDList = stationIDList.concat( areaStationPair[e.area].stationID ); }); + const info = genelicInfo[0].status.includes("nodelay") ? true : false; + setIsInfo(info); setAreaStationID(stationIDList); - setAreaIconBadgeText(text.length == 0 ? "!" : text.join(",")); + setAreaIconBadgeText( + text.length == 0 ? (info ? "i" : "!") : text.join(",") + ); }); }; useEffect(getAreaData, []); useInterval(getAreaData, 60000); //60秒毎に全在線列車取得 return ( {children}