From d07c05e523870b78fa7eb47148d6b19b24b225cd Mon Sep 17 00:00:00 2001 From: harukin-expo-dev-env Date: Thu, 30 May 2024 13:09:08 +0000 Subject: [PATCH] =?UTF-8?q?=E4=BD=8D=E7=BD=AE=E6=83=85=E5=A0=B1=E3=81=A8?= =?UTF-8?q?=E5=9C=B0=E5=9B=B3=E3=83=95=E3=82=A3=E3=83=AB=E3=82=BF=E3=83=AA?= =?UTF-8?q?=E3=83=B3=E3=82=B0=E6=A9=9F=E8=83=BD=E3=81=AE=E5=8D=94=E8=AA=BF?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Apps.js | 7 +++++-- Top.js | 18 ++++++++++++++---- components/trainMenu.js | 30 ++++++++++++++++++++++++------ stateBox/useTrainMenu.js | 5 +++++ 4 files changed, 48 insertions(+), 12 deletions(-) diff --git a/Apps.js b/Apps.js index c7031f3..0e358f3 100644 --- a/Apps.js +++ b/Apps.js @@ -39,7 +39,7 @@ export default function Apps({ stationData }) { const { favoriteStation } = useFavoriteStation(); const { isLandscape, setIsLandscape } = useDeviceOrientationChange(); const handleLayout = () => {}; - const { setSelectedLine } = useTrainMenu(); + const { setSelectedLine, setInjectJavaScript } = useTrainMenu(); //画面表示関連 const [iconSetting, setIconSetting] = useState(undefined); @@ -332,7 +332,10 @@ export default function Apps({ stationData }) { )} {isLandscape || ( navigate("trainMenu", { webview })} + onPress={() => { + setInjectJavaScript(""); + navigate("trainMenu", { webview }); + }} top={Platform.OS == "ios" ? Constants.statusBarHeight : 0} mapSwitch={mapSwitch == "true" ? "flex" : "none"} /> diff --git a/Top.js b/Top.js index 5f3438d..02fc198 100644 --- a/Top.js +++ b/Top.js @@ -17,12 +17,17 @@ import { AS } from "./storageControl.js"; import { useTrainMenu } from "./stateBox/useTrainMenu"; const Stack = createStackNavigator(); export const Top = ({ navigationRef }) => { - const { webview, getCurrentTrain } = useCurrentTrain(); + const { webview } = useCurrentTrain(); const navigation = useNavigation(); const { navigate, addListener } = navigation; //地図用 - const { mapsStationData, setMapsStationData } = useTrainMenu(); + const { + mapsStationData, + setMapsStationData, + injectJavaScript, + setInjectJavaScript, + } = useTrainMenu(); useEffect(() => { getStationList2().then(setMapsStationData); @@ -48,15 +53,20 @@ export const Top = ({ navigationRef }) => { if (navigationRef.current?.getCurrentRoute().name == "Apps") { if (mapSwitch == "true") { navigation.navigate("trainMenu"); + setInjectJavaScript(""); } else { webview.current?.injectJavaScript(`AccordionClassEvent()`); } } else { + if (mapSwitch == "true") { + if (injectJavaScript) + webview.current?.injectJavaScript(injectJavaScript); + } navigation.navigate("Apps"); } }); return unsubscribe; - }, [navigation, mapSwitch]); + }, [navigation, mapSwitch, injectJavaScript]); return ( @@ -85,7 +95,7 @@ export const Top = ({ navigationRef }) => { } + children={() => } /> { const stationPinData = []; - Object.keys(stationData).map((d, indexBase) => + Object.keys(stationData).map((d, indexBase) => { stationData[d].map((D, index) => { if (!D.StationMap) return null; if (selectedLine && selectedLine != d) return; @@ -27,9 +33,14 @@ export default function TrainMenu({ stationData, style }) { "" ).split(","); if (latlng.length == 0) return null; + if (index == 0 && stationPin.length > 0) { + setInjectJavaScript( + `MoveDisplayStation('${d}_${D.MyStation}_${D.Station_JP}');` + ); + } stationPinData.push({ D, d, latlng, indexBase: 0, index }); - }) - ); + }); + }); setStationPin(stationPinData); }, [stationData, selectedLine]); useEffect(() => { @@ -185,7 +196,14 @@ export default function TrainMenu({ stationData, style }) { )} - navigate("Apps")} top={0} mapSwitch={"flex"} /> + { + navigate("Apps"); + webview.current?.injectJavaScript(injectJavaScript); + }} + top={0} + mapSwitch={"flex"} + /> ); } diff --git a/stateBox/useTrainMenu.js b/stateBox/useTrainMenu.js index da93ada..efbc979 100644 --- a/stateBox/useTrainMenu.js +++ b/stateBox/useTrainMenu.js @@ -4,6 +4,8 @@ const initialState = { setSelectedLine: () => {}, mapsStationData: undefined, setMapsStationData: () => {}, + injectJavaScript: "", + setInjectJavaScript: () => {}, }; const TrainMenuContext = createContext(initialState); @@ -15,6 +17,7 @@ export const useTrainMenu = () => { export const TrainMenuProvider = ({ children }) => { const [selectedLine, setSelectedLine] = useState(undefined); const [mapsStationData, setMapsStationData] = useState(undefined); + const [injectJavaScript, setInjectJavaScript] = useState(); return ( { setSelectedLine, mapsStationData, setMapsStationData, + injectJavaScript, + setInjectJavaScript, }} > {children}