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}