From 5947bb58b8ab316154ab3e1da52bab958fd5318e Mon Sep 17 00:00:00 2001 From: harukin-expo-dev-env Date: Tue, 3 Sep 2024 10:27:54 +0000 Subject: [PATCH] =?UTF-8?q?=E5=B7=AE=E5=88=86=E8=AA=BF=E6=95=B49?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Top.js | 11 +-- .../EachTrainInfoCore.js | 5 +- components/AllTrainDiagramView.js | 1 + components/Apps.js | 56 ++---------- components/Apps/MapsButton.tsx | 5 +- components/Apps/NewMenu.tsx | 4 +- components/Apps/ReloadButton.tsx | 5 +- components/Apps/WebView.jsx | 19 ++-- components/駅名表/Sign.js | 4 +- menu.js | 4 +- stateBox/useTrainMenu.js | 88 +++++++++++++++++++ 11 files changed, 122 insertions(+), 80 deletions(-) diff --git a/Top.js b/Top.js index bde8d8d..acbd5d8 100644 --- a/Top.js +++ b/Top.js @@ -13,7 +13,6 @@ import FavoriteList from "./components/FavoriteList"; import { optionData } from "./lib/stackOption"; import { useNavigation } from "@react-navigation/native"; import { useCurrentTrain } from "./stateBox/useCurrentTrain"; -import { ASCore } from "./storageControl"; import { useTrainMenu } from "./stateBox/useTrainMenu"; const Stack = createStackNavigator(); export const Top = ({ navigationRef }) => { @@ -21,14 +20,7 @@ export const Top = ({ navigationRef }) => { const { navigate, addListener } = useNavigation(); //地図用 - const { injectJavaScript, setInjectJavaScript } = useTrainMenu(); - - const [mapSwitch, setMapSwitch] = React.useState("false"); - - useEffect(() => { - //地図スイッチ - ASCore({ k: "mapSwitch", s: setMapSwitch, d: "false" }); - }, []); + const { injectJavaScript, setInjectJavaScript, mapSwitch } = useTrainMenu(); const goToFavoriteList = () => navigate("favoriteList"); @@ -37,6 +29,7 @@ export const Top = ({ navigationRef }) => { return unsubscribe; }, [{ navigate, addListener }]); + const goToTrainMenu = () => { if (navigationRef.current?.getCurrentRoute().name == "Apps") { if (mapSwitch == "true") { diff --git a/components/ActionSheetComponents/EachTrainInfoCore.js b/components/ActionSheetComponents/EachTrainInfoCore.js index f4c64ab..d6f9678 100644 --- a/components/ActionSheetComponents/EachTrainInfoCore.js +++ b/components/ActionSheetComponents/EachTrainInfoCore.js @@ -31,7 +31,7 @@ import { getType } from "../../lib/eachTrainInfoCoreLib/getType"; import { searchSpecialTrain } from "../../lib/eachTrainInfoCoreLib/searchSpecialTrain"; import { openBackTrainInfo } from "../../lib/eachTrainInfoCoreLib/openBackTrainInfo"; import { ShowSpecialTrain } from "./EachTrainInfo/ShowSpecialTrain"; -import { useStationList } from "../../stateBox/useStationList"; +import { useTrainMenu } from "../../stateBox/useTrainMenu"; import { HeaderText } from "./EachTrainInfoCore/HeaderText"; export const EachTrainInfoCore = ({ @@ -39,12 +39,11 @@ export const EachTrainInfoCore = ({ data, openStationACFromEachTrainInfo, from, - setTrainInfo, navigate, }) => { // const [actionSheetHorizonalScroll, setActionSheetHorizonalScroll] = useState(false); const { currentTrain } = useCurrentTrain(); - const { originalStationList } = useStationList(); + const { setTrainInfo, originalStationList } = useTrainMenu(); const [currentTrainData, setCurrentTrainData] = useState(); // const [actionSheetHorizonalScroll, setActionSheetHorizonalScroll] = useState(false); diff --git a/components/AllTrainDiagramView.js b/components/AllTrainDiagramView.js index 9c2bdf6..b948001 100644 --- a/components/AllTrainDiagramView.js +++ b/components/AllTrainDiagramView.js @@ -16,6 +16,7 @@ import { getStationList } from "../lib/getStationList"; import { getTrainType } from "../lib/getTrainType"; import { SheetManager } from "react-native-actions-sheet"; import { useNavigation } from "@react-navigation/native"; +import { useTrainMenu } from "../stateBox/useTrainMenu"; export default function AllTrainDiagramView() { const { navigate } = useNavigation(); const { allTrainDiagram } = useAllTrainDiagram(); diff --git a/components/Apps.js b/components/Apps.js index e48523a..0879530 100644 --- a/components/Apps.js +++ b/components/Apps.js @@ -41,52 +41,13 @@ export default function Apps() { const { navigate } = useNavigation(); const { isLandscape } = useDeviceOrientationChange(); const handleLayout = () => {}; - const { setInjectJavaScript, mapsStationData } = useTrainMenu(); - - //画面表示関連 - const [iconSetting, setIconSetting] = useState(undefined); - const [mapSwitch, setMapSwitch] = useState(undefined); - const [stationMenu, setStationMenu] = useState(undefined); - const [LoadError, setLoadError] = useState(false); - - //列車情報表示関連 - const [trainInfo, setTrainInfo] = useState({ - trainNum: undefined, - limited: undefined, - trainData: undefined, - }); - - //駅情報画面用 - const { originalStationList, setOriginalStationList } = useStationList(); - const [trainMenu, setTrainMenu] = useState("true"); - - //地図表示テキスト - const injectJavascript = injectJavascriptData( + const { + setInjectJavaScript, mapSwitch, - iconSetting, - stationMenu, - trainMenu - ); - - useEffect(() => { - //ニュース表示 - AS.getItem("status") - .then((d) => { - if (d != news) navigate("news"); - }) - .catch(() => navigate("news")); - }, []); - - useEffect(() => { - //列車アイコンスイッチ - ASCore({ k: "iconSwitch", s: setIconSetting, d: "true", u: true }); - //地図スイッチ - ASCore({ k: "mapSwitch", s: setMapSwitch, d: "false", u: true }); - //駅メニュースイッチ - ASCore({ k: "stationSwitch", s: setStationMenu, d: "true", u: true }); - //列車メニュースイッチ - ASCore({ k: "trainSwitch", s: setTrainMenu, d: "true", u: true }); - }, []); + trainInfo, + setTrainInfo, + originalStationList, + } = useTrainMenu(); const openStationACFromEachTrainInfo = async (stationName) => { await SheetManager.hide("EachTrainInfo"); @@ -151,7 +112,6 @@ export default function Apps() { data: trainInfo.trainNum ? trainInfo : undefined, openStationACFromEachTrainInfo, from: "Train", - setTrainInfo, navigate, }} /> @@ -163,7 +123,6 @@ export default function Apps() { setInjectJavaScript(""); navigate("trainMenu", { webview }); }} - mapSwitch={mapSwitch == "true" ? "flex" : "none"} /> )} {isLandscape && trainInfo.trainNum && ( @@ -182,10 +141,9 @@ export default function Apps() { Updates.reloadAsync()} right={isLandscape && trainInfo.trainNum ? (width / 100) * 40 : 0} - LoadError={LoadError} /> ) : ( - + )} ); diff --git a/components/Apps/MapsButton.tsx b/components/Apps/MapsButton.tsx index 62462a4..66e7501 100644 --- a/components/Apps/MapsButton.tsx +++ b/components/Apps/MapsButton.tsx @@ -8,18 +8,19 @@ import { TextStyle, } from "react-native"; import Constants from "expo-constants"; +import { useTrainMenu } from "../../stateBox/useTrainMenu"; const top = Platform.OS == "ios" ? Constants.statusBarHeight : 0; type MapsButtonProps = { onPress: () => void; - mapSwitch: string; }; type stylesType = { touch: TouchableOpacityProps["style"]; text: TextStyle; }; -export const MapsButton: FC = ({ onPress, mapSwitch }) => { +export const MapsButton: FC = ({ onPress }) => { + const { mapSwitch } = useTrainMenu(); const styles: stylesType = { touch: { position: "absolute", diff --git a/components/Apps/NewMenu.tsx b/components/Apps/NewMenu.tsx index d2e4a8f..ae8693e 100644 --- a/components/Apps/NewMenu.tsx +++ b/components/Apps/NewMenu.tsx @@ -4,11 +4,13 @@ import { Ionicons } from "@expo/vector-icons"; import * as Updates from "expo-updates"; import Constants from "expo-constants"; import { useCurrentTrain } from "../../stateBox/useCurrentTrain"; +import { useTrainMenu } from "../../stateBox/useTrainMenu"; const top = Platform.OS == "ios" ? Constants.statusBarHeight : 0; -export const NewMenu = ({ LoadError }) => { +export const NewMenu = () => { const { webview } = useCurrentTrain(); const { width } = useWindowDimensions(); + const { LoadError } = useTrainMenu(); return ( void; right: number; - mapSwitch: any; - LoadError?: boolean; } -export const ReloadButton:FC = ({ onPress, mapSwitch, LoadError = false, right }) => { +export const ReloadButton:FC = ({ onPress, right }) => { + const { mapSwitch, LoadError = false } = useTrainMenu(); const styles: stylesType = { touch: { position: "absolute", diff --git a/components/Apps/WebView.jsx b/components/Apps/WebView.jsx index 4bef929..cd80be9 100644 --- a/components/Apps/WebView.jsx +++ b/components/Apps/WebView.jsx @@ -12,19 +12,20 @@ import { SheetManager } from "react-native-actions-sheet"; import { useNavigation } from "@react-navigation/native"; import { useTrainMenu } from "../../stateBox/useTrainMenu"; import { stationNamePair } from "../../lib/getStationList2"; -import { useStationList } from "../../stateBox/useStationList"; -export const AppsWebView = ({ - setLoadError, - setTrainInfo, - openStationACFromEachTrainInfo, - injectJavascript, -}) => { - const { originalStationList } = useStationList(); +import { useTrainMenu } from "../../stateBox/useTrainMenu"; +export const AppsWebView = ({ openStationACFromEachTrainInfo }) => { const { webview, currentTrain } = useCurrentTrain(); const { navigate } = useNavigation(); const { favoriteStation } = useFavoriteStation(); const { isLandscape } = useDeviceOrientationChange(); - const { setSelectedLine, mapsStationData: stationData } = useTrainMenu(); + const { + setSelectedLine, + mapsStationData: stationData, + setLoadError, + setTrainInfo, + originalStationList, + injectJavascript, + } = useTrainMenu(); var urlcache = ""; let once = false; diff --git a/components/駅名表/Sign.js b/components/駅名表/Sign.js index e8d9ada..404e57c 100644 --- a/components/駅名表/Sign.js +++ b/components/駅名表/Sign.js @@ -12,13 +12,13 @@ import { StationNumberMaker } from "./StationNumberMaker"; import { NextPreStationLine } from "./NextPreStationLine"; import { LottieDelayView } from "./LottieDelayView"; import { AddressText } from "./AddressText"; -import { useStationList } from "../../stateBox/useStationList"; +import { useTrainMenu } from "../../stateBox/useTrainMenu"; export default function Sign(props) { const { currentStation, oP, oLP, isCurrentStation = false } = props; const { favoriteStation, setFavoriteStation } = useFavoriteStation(); const [nexPrePosition, setNexPrePosition] = useState(0); - const { originalStationList } = useStationList(); + const { originalStationList } = useTrainMenu(); const [preStation, setPreStation] = useState(); const [nexStation, setNexStation] = useState(); diff --git a/menu.js b/menu.js index a94faf8..318c26d 100644 --- a/menu.js +++ b/menu.js @@ -30,12 +30,12 @@ import { useFavoriteStation } from "./stateBox/useFavoriteStation"; import { SheetManager } from "react-native-actions-sheet"; import { useTrainDelayData } from "./stateBox/useTrainDelayData"; import { useNavigation } from "@react-navigation/native"; -import { useStationList } from "./stateBox/useStationList"; +import { useTrainMenu } from "./stateBox/useTrainMenu"; export default function Menu({ getCurrentTrain }) { const { navigate } = useNavigation(); const { favoriteStation } = useFavoriteStation(); - const { originalStationList } = useStationList(); + const { originalStationList } = useTrainMenu(); //位置情報 const [locationStatus, setLocationStatus] = useState(null); diff --git a/stateBox/useTrainMenu.js b/stateBox/useTrainMenu.js index ca42c26..bd3008d 100644 --- a/stateBox/useTrainMenu.js +++ b/stateBox/useTrainMenu.js @@ -1,5 +1,11 @@ import React, { createContext, useContext, useState, useEffect } from "react"; + +import { AS, ASCore } from "../storageControl"; + +import { getStationList } from "../lib/getStationList"; import { getStationList2 } from "../lib/getStationList2"; +import { injectJavascriptData } from "../lib/webViewInjectjavascript"; + const initialState = { selectedLine: undefined, setSelectedLine: () => {}, @@ -7,6 +13,25 @@ const initialState = { setMapsStationData: () => {}, injectJavaScript: "", setInjectJavaScript: () => {}, + iconSetting: undefined, + setIconSetting: () => {}, + mapSwitch: undefined, + setMapSwitch: () => {}, + stationMenu: undefined, + setStationMenu: () => {}, + LoadError: false, + setLoadError: () => {}, + trainInfo: { + trainNum: undefined, + limited: undefined, + trainData: undefined, + }, + setTrainInfo: () => {}, + originalStationList: [], + setOriginalStationList: () => {}, + trainMenu: "true", + setTrainMenu: () => {}, + injectJavascript: "", }; const TrainMenuContext = createContext(initialState); @@ -20,10 +45,58 @@ export const TrainMenuProvider = ({ children }) => { const [mapsStationData, setMapsStationData] = useState(undefined); const [injectJavaScript, setInjectJavaScript] = useState(); + useEffect(() => getStationList2().then(setMapsStationData), []); + + //画面表示関連 + const [iconSetting, setIconSetting] = useState(undefined); + const [mapSwitch, setMapSwitch] = useState(undefined); + const [stationMenu, setStationMenu] = useState(undefined); + const [LoadError, setLoadError] = useState(false); + + //列車情報表示関連 + const [trainInfo, setTrainInfo] = useState({ + trainNum: undefined, + limited: undefined, + trainData: undefined, + }); + + //駅情報画面用 + const [originalStationList, setOriginalStationList] = useState([]); + const [trainMenu, setTrainMenu] = useState("true"); + useEffect(() => getStationList().then(setOriginalStationList), []); + + //地図表示テキスト + const injectJavascript = injectJavascriptData( + mapSwitch, + iconSetting, + stationMenu, + trainMenu + ); + useEffect(() => { getStationList2().then(setMapsStationData); }, []); + useEffect(() => { + //ニュース表示 + AS.getItem("status") + .then((d) => { + if (d != news) navigate("news"); + }) + .catch(() => navigate("news")); + }, []); + + useEffect(() => { + //列車アイコンスイッチ + ASCore({ k: "iconSwitch", s: setIconSetting, d: "true", u: true }); + //地図スイッチ + ASCore({ k: "mapSwitch", s: setMapSwitch, d: "false", u: true }); + //駅メニュースイッチ + ASCore({ k: "stationSwitch", s: setStationMenu, d: "true", u: true }); + //列車メニュースイッチ + ASCore({ k: "trainSwitch", s: setTrainMenu, d: "true", u: true }); + }, []); + return ( { setMapsStationData, injectJavaScript, setInjectJavaScript, + iconSetting, + setIconSetting, + mapSwitch, + setMapSwitch, + stationMenu, + setStationMenu, + LoadError, + setLoadError, + trainInfo, + setTrainInfo, + originalStationList, + setOriginalStationList, + trainMenu, + setTrainMenu, + injectJavascript, }} > {children}