From 58df77ae49595bb906bab404cc281186f43b005b Mon Sep 17 00:00:00 2001 From: harukin-expo-dev-env Date: Thu, 11 Sep 2025 16:55:05 +0000 Subject: [PATCH] =?UTF-8?q?tsx=E3=81=AEFC=E5=AE=A3=E8=A8=80=E3=82=92Provid?= =?UTF-8?q?er=E3=81=AB=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/initIcon.tsx | 33 ++++++---------------- ndView.tsx | 49 +++++++++++++++++++-------------- stateBox/useAllTrainDiagram.tsx | 8 ++++-- stateBox/useAreaInfo.tsx | 14 ++++++---- stateBox/useBusAndTrainData.tsx | 26 +++++++++++------ stateBox/useCurrentTrain.tsx | 7 +++-- stateBox/useTrainDelayData.tsx | 12 ++++---- stateBox/useTrainMenu.tsx | 47 ++++++++++++++++++------------- 8 files changed, 107 insertions(+), 89 deletions(-) diff --git a/lib/initIcon.tsx b/lib/initIcon.tsx index afc12fc..3dc8a82 100644 --- a/lib/initIcon.tsx +++ b/lib/initIcon.tsx @@ -9,30 +9,13 @@ export const initIcon = ( tabBarBadge: string, isInfo: boolean ) => { - switch (type) { - case "Ionicons": - return ({ focused, color, size }) => ( - <> - {!!tabBarBadge && } - - - ); - case "AntDesign": - return ({ focused, color, size }) => ( - <> - {!!tabBarBadge && } - - - ); - } + const IconComponent = type == "Ionicons" ? Ionicons : AntDesign; + return ({ focused, color, size }) => ( + <> + {!!tabBarBadge && } + + + ); }; type BadgeProps = { tabBarBadge: string; isInfo: boolean }; @@ -60,7 +43,7 @@ export const Badge: FC = ({ tabBarBadge, isInfo }) => { shadowOffset: { width: 0, height: 0 }, shadowOpacity: 0.5, shadowRadius: 4, - elevation: 2 + elevation: 2, }} > diff --git a/ndView.tsx b/ndView.tsx index bac2bc2..f7e91e8 100644 --- a/ndView.tsx +++ b/ndView.tsx @@ -1,12 +1,19 @@ -import React, { Ref, useRef, useState,useEffect } from "react"; -import { View, Platform, TouchableOpacity, StyleProp, ViewStyle,Linking } from "react-native"; +import React, { Ref, useRef, useState, useEffect } from "react"; +import { + View, + Platform, + TouchableOpacity, + StyleProp, + ViewStyle, + Linking, +} from "react-native"; import { WebView } from "react-native-webview"; import Constants from "expo-constants"; import { Ionicons } from "@expo/vector-icons"; import { useNavigation } from "@react-navigation/native"; export default function tndView() { const webview = useRef(null); - const { navigate, addListener, isFocused } = useNavigation(); + const { navigate, addListener, isFocused } = useNavigation(); const jsa = ` document.querySelector('.sitettl').style.display = 'none'; document.querySelector('.attention').style.display = 'none'; @@ -100,23 +107,23 @@ setInterval(() => { }); }, 1000); `; - const goToTrainMenu = () =>{ - if (Platform.OS === "web") { - Linking.openURL("https://www.jr-shikoku.co.jp/info/"); - setTimeout(() => { - // @ts-ignore - navigate("topMenu", { screen: "menu" }); - }, 100); - - return; - } - } - useEffect(() => { - // @ts-ignore - const unsubscribe = addListener("tabPress", goToTrainMenu); - return unsubscribe; - }, [addListener]); - + const goToTrainMenu = () => { + if (Platform.OS === "web") { + Linking.openURL("https://www.jr-shikoku.co.jp/info/"); + setTimeout(() => { + // @ts-ignore + navigate("topMenu", { screen: "menu" }); + }, 100); + + return; + } + }; + useEffect(() => { + // @ts-ignore + const unsubscribe = addListener("tabPress", goToTrainMenu); + return unsubscribe; + }, [addListener]); + return ( { } const ReloadButton = ({ onPress, top, LoadError = false }) => { - const styles:StyleProp = { + const styles: StyleProp = { position: "absolute", top, right: 10, diff --git a/stateBox/useAllTrainDiagram.tsx b/stateBox/useAllTrainDiagram.tsx index dcd6626..20134f3 100644 --- a/stateBox/useAllTrainDiagram.tsx +++ b/stateBox/useAllTrainDiagram.tsx @@ -1,7 +1,7 @@ import trainList from "@/assets/originData/trainList"; import useInterval from "@/lib/useInterval"; import { AS } from "@/storageControl"; -import React, { createContext, useContext, useEffect, useState } from "react"; +import React, { createContext, FC, useContext, useEffect, useState } from "react"; const initialState = { allTrainDiagram: {}, setAllTrainDiagram: (e) => {}, @@ -18,8 +18,10 @@ type initialStateType = { const AllTrainDiagramContext = createContext(initialState); export const useAllTrainDiagram = () => useContext(AllTrainDiagramContext); - -export const AllTrainDiagramProvider = ({ children }) => { +type Props = { + children: React.ReactNode; +}; +export const AllTrainDiagramProvider:FC = ({ children }) => { const [allTrainDiagram, setAllTrainDiagram] = useState(trainList); const [allCustomTrainData, setAllCustomTrainData] = useState([]); // カスタム列車データ const [keyList, setKeyList] = useState([]); // 第二要素 diff --git a/stateBox/useAreaInfo.tsx b/stateBox/useAreaInfo.tsx index 9521b65..56c062f 100644 --- a/stateBox/useAreaInfo.tsx +++ b/stateBox/useAreaInfo.tsx @@ -1,4 +1,10 @@ -import React, { createContext, useContext, useState, useEffect } from "react"; +import React, { + createContext, + useContext, + useState, + useEffect, + FC, +} from "react"; import useInterval from "../lib/useInterval"; const setoStationID = [ @@ -327,8 +333,6 @@ const areaStationPair = { yodo: { id: "G", stationID: yodoStationID }, }; - - const initialState = { areaInfo: "", setAreaInfo: () => {}, @@ -351,8 +355,8 @@ const AreaInfoContext = createContext(initialState); export const useAreaInfo = () => { return useContext(AreaInfoContext); }; - -export const AreaInfoProvider = ({ children }) => { +type props = { children: React.ReactNode }; +export const AreaInfoProvider: FC = ({ children }) => { const [areaInfo, setAreaInfo] = useState(""); const [areaIconBadgeText, setAreaIconBadgeText] = useState(""); const [areaStationID, setAreaStationID] = useState([]); diff --git a/stateBox/useBusAndTrainData.tsx b/stateBox/useBusAndTrainData.tsx index df6939b..4232843 100644 --- a/stateBox/useBusAndTrainData.tsx +++ b/stateBox/useBusAndTrainData.tsx @@ -1,4 +1,10 @@ -import React, { createContext, useContext, useState, useEffect } from "react"; +import React, { + createContext, + useContext, + useState, + useEffect, + FC, +} from "react"; import { AS } from "../storageControl"; import { useAllTrainDiagram } from "./useAllTrainDiagram"; const initialState = { @@ -15,14 +21,16 @@ const BusAndTrainDataContext = createContext(initialState); export const useBusAndTrainData = () => { return useContext(BusAndTrainDataContext); }; - -export const BusAndTrainDataProvider = ({ children }) => { +type props = { children: React.ReactNode }; +export const BusAndTrainDataProvider: FC = ({ children }) => { const { allTrainDiagram } = useAllTrainDiagram(); - const [busAndTrainData, setBusAndTrainData] = useState<{ - address: string; - name: string; - type: "station-data" | "bus-stop" | "train-info"; - }[]>([]); + const [busAndTrainData, setBusAndTrainData] = useState< + { + address: string; + name: string; + type: "station-data" | "bus-stop" | "train-info"; + }[] + >([]); const [trainPairData, setTrainPairData] = useState([]); useEffect(() => { AS.getItem("busAndTrain202403") @@ -57,7 +65,7 @@ export const BusAndTrainDataProvider = ({ children }) => { }); return trainPairList; }; - const getInfluencedTrainData = (trainNum:string) => { + const getInfluencedTrainData = (trainNum: string) => { const trainPairList = initializeTrainPairList(); // 9253M ラマル diff --git a/stateBox/useCurrentTrain.tsx b/stateBox/useCurrentTrain.tsx index cd290e5..29d14b5 100644 --- a/stateBox/useCurrentTrain.tsx +++ b/stateBox/useCurrentTrain.tsx @@ -4,6 +4,7 @@ import React, { useState, useEffect, useRef, + FC, } from "react"; import { HeaderConfig } from "../lib/HeaderConfig"; @@ -48,8 +49,10 @@ const CurrentTrainContext = createContext(initialState); export const useCurrentTrain = () => { return useContext(CurrentTrainContext); }; - -export const CurrentTrainProvider = ({ children }) => { +type props = { + children: React.ReactNode; +} +export const CurrentTrainProvider:FC = ({ children }) => { const [currentTrain, setCurrentTrain] = useState([]); //現在在線中の全列車 { num: 列車番号, delay: 遅延時分(状態), Pos: 位置情報 } const [currentTrainLoading, setCurrentTrainLoading] = useState("loading"); diff --git a/stateBox/useTrainDelayData.tsx b/stateBox/useTrainDelayData.tsx index 56087e3..ebf55d9 100644 --- a/stateBox/useTrainDelayData.tsx +++ b/stateBox/useTrainDelayData.tsx @@ -1,11 +1,11 @@ -import React, { createContext, useContext, useEffect, useState } from "react"; +import React, { createContext, FC, useContext, useEffect, useState } from "react"; const initialState = { getTime: new Date(), - setGetTime: () => {}, + setGetTime: (e) => {}, loadingDelayData: true, setLoadingDelayData: (loading) => {}, delayData: undefined, - setDelayData: () => {}, + setDelayData: (e) => {}, }; const TrainDelayDataContext = createContext(initialState); @@ -13,8 +13,10 @@ const TrainDelayDataContext = createContext(initialState); export const useTrainDelayData = () => { return useContext(TrainDelayDataContext); }; - -export const TrainDelayDataProvider = ({ children }) => { +type props = { + children: React.ReactNode; +}; +export const TrainDelayDataProvider:FC = ({ children }) => { const [delayData, setDelayData] = useState(undefined); const [getTime, setGetTime] = useState(new Date()); const [loadingDelayData, setLoadingDelayData] = useState(true); diff --git a/stateBox/useTrainMenu.tsx b/stateBox/useTrainMenu.tsx index a36f791..31aa404 100644 --- a/stateBox/useTrainMenu.tsx +++ b/stateBox/useTrainMenu.tsx @@ -1,4 +1,10 @@ -import React, { createContext, useContext, useState, useEffect } from "react"; +import React, { + createContext, + useContext, + useState, + useEffect, + FC, +} from "react"; import { ASCore } from "../storageControl"; @@ -30,8 +36,8 @@ const initialState = { setTrainInfo: (e) => {}, trainMenu: "true", setTrainMenu: (e) => {}, - updatePermission : false, - setUpdatePermission : (e) => {}, + updatePermission: false, + setUpdatePermission: (e) => {}, injectJavascript: "", }; @@ -40,33 +46,36 @@ const TrainMenuContext = createContext(initialState); export const useTrainMenu = () => { return useContext(TrainMenuContext); }; - -export const TrainMenuProvider = ({ children }) => { +type props = { children: React.ReactNode }; +export const TrainMenuProvider: FC = ({ children }) => { const { expoPushToken } = useNotification(); const [selectedLine, setSelectedLine] = useState(undefined); const [mapsStationData, setMapsStationData] = useState(undefined); useEffect(() => { getStationList2().then(setMapsStationData); }, []); - + type boolType = "true" | "false" | undefined; //画面表示関連 - const [iconSetting, setIconSetting] = useState<"true" | "false" | undefined>(undefined); - const [mapSwitch, setMapSwitch] = useState<"true" | "false" | undefined>(undefined); - const [stationMenu, setStationMenu] = useState<"true" | "false" | undefined>(undefined); + const [iconSetting, setIconSetting] = useState(undefined); + const [mapSwitch, setMapSwitch] = useState(undefined); + const [stationMenu, setStationMenu] = useState(undefined); const [LoadError, setLoadError] = useState(false); //更新権限所有確認 const [updatePermission, setUpdatePermission] = useState(false); - useEffect(()=>{ - fetch("https://n8n.haruk.in/webhook/data-edit-permission?token=" + expoPushToken).then((res)=>res.json()) - .then((res)=>{ - if(res.data == true){ - setUpdatePermission(true); - }else{ - setUpdatePermission(false); - } - }) - }, [expoPushToken]) + useEffect(() => { + fetch( + "https://n8n.haruk.in/webhook/data-edit-permission?token=" + expoPushToken + ) + .then((res) => res.json()) + .then((res) => { + if (res.data == true) { + setUpdatePermission(true); + } else { + setUpdatePermission(false); + } + }); + }, [expoPushToken]); //列車情報表示関連 const [trainInfo, setTrainInfo] = useState({