Merge commit '9fdc717d7cf9e04c42843f838e3394438c991460' into feature/new-setting-system
This commit is contained in:
commit
5fc1c57806
8
App.js
8
App.js
@ -57,10 +57,10 @@ export default function App() {
|
||||
);
|
||||
}
|
||||
export function AppContainer() {
|
||||
const { areaInfo, setAreaInfo } = useAreaInfo();
|
||||
|
||||
const { areaInfo } = useAreaInfo();
|
||||
const navigationRef = React.useRef();
|
||||
return (
|
||||
<NavigationContainer name="Root" style={{ flex: 1 }}>
|
||||
<NavigationContainer name="Root" style={{ flex: 1 }} ref={navigationRef}>
|
||||
<Tab.Navigator
|
||||
tabBarOptions={{ keyboardHidesTabBar: Platform.OS === "android" }}
|
||||
>
|
||||
@ -73,7 +73,7 @@ export function AppContainer() {
|
||||
tabBarIcon: initIcon("barchart", "AntDesign"),
|
||||
}}
|
||||
>
|
||||
{(props) => <Top {...props} />}
|
||||
{(props) => <Top {...props} navigationRef={navigationRef} />}
|
||||
</Tab.Screen>
|
||||
<Tab.Screen
|
||||
name="menuPage"
|
||||
|
30
Top.js
30
Top.js
@ -13,9 +13,9 @@ import FavoriteList from "./components/FavoriteList.js";
|
||||
import { useFavoriteStation } from "./stateBox/useFavoriteStation";
|
||||
import { optionData } from "./lib/stackOption.js";
|
||||
import { useCurrentTrain } from "./stateBox/useCurrentTrain.js";
|
||||
import { AS } from "./storageControl.js";
|
||||
const Stack = createStackNavigator();
|
||||
export const Top = ({ navigation }) => {
|
||||
const { favoriteStation, setFavoriteStation } = useFavoriteStation();
|
||||
export const Top = ({ navigation, navigationRef }) => {
|
||||
const { webview, getCurrentTrain } = useCurrentTrain();
|
||||
|
||||
//地図用
|
||||
@ -24,14 +24,36 @@ export const Top = ({ navigation }) => {
|
||||
useEffect(() => {
|
||||
getStationList2().then(setMapsStationData);
|
||||
}, []);
|
||||
const [mapSwitch, setMapSwitch] = React.useState("false");
|
||||
const ASCore = ({ k, s, d }) =>
|
||||
AS.getItem(k)
|
||||
.then((d) => (d ? s(d) : AS.setItem(k, d)))
|
||||
.catch(() => AS.setItem(k, d));
|
||||
useEffect(() => {
|
||||
//地図スイッチ
|
||||
ASCore({ k: "mapSwitch", s: setMapSwitch, d: "false" });
|
||||
}, []);
|
||||
|
||||
useEffect(() => {
|
||||
const unsubscribe = navigation.addListener("tabLongPress", (e) => {
|
||||
const unsubscribe = navigation.addListener("tabLongPress", () => {
|
||||
navigation.navigate("favoriteList");
|
||||
});
|
||||
|
||||
return unsubscribe;
|
||||
}, [navigation]);
|
||||
useEffect(() => {
|
||||
const unsubscribe = navigation.addListener("tabPress", () => {
|
||||
if (navigationRef.current?.getCurrentRoute().name == "Apps") {
|
||||
if (mapSwitch == "true") {
|
||||
navigation.navigate("trainMenu");
|
||||
} else {
|
||||
webview.current?.injectJavaScript(`AccordionClassEvent()`);
|
||||
}
|
||||
} else {
|
||||
navigation.navigate("Apps");
|
||||
}
|
||||
});
|
||||
return unsubscribe;
|
||||
}, [navigation, mapSwitch]);
|
||||
|
||||
return (
|
||||
<Stack.Navigator>
|
||||
|
@ -43,12 +43,15 @@ export const TrainDataView = ({
|
||||
test.push({ line: d, station: x });
|
||||
});
|
||||
if (currentPosition[0] == "M12") {
|
||||
test.push({ line: "seto", station: {Station_JP: "児島", MyStation: "0"}});
|
||||
test.push({
|
||||
line: "seto",
|
||||
station: { Station_JP: "児島", MyStation: "0" },
|
||||
});
|
||||
}
|
||||
});
|
||||
if (!test.length) return;
|
||||
webview.current?.injectJavaScript(
|
||||
`MoveDisplayStation('${test[0].line}_${test[0].station.MyStation}_${test[0].station.Station_JP}')`
|
||||
`MoveDisplayStation('${test[0].line}_${test[0].station.MyStation}_${test[0].station.Station_JP}');setStrings();`
|
||||
);
|
||||
navigate("Apps");
|
||||
SheetManager.hide("EachTrainInfo");
|
||||
|
@ -39,7 +39,8 @@ export default function FavoriteList({ navigation, webview, stationData }) {
|
||||
const lineName = getStationLine(currentStation[0]);
|
||||
|
||||
webview.current?.injectJavaScript(
|
||||
`MoveDisplayStation('${lineName}_${currentStation[0].MyStation}_${currentStation[0].Station_JP}')`
|
||||
`MoveDisplayStation('${lineName}_${currentStation[0].MyStation}_${currentStation[0].Station_JP}');
|
||||
setStrings();`
|
||||
);
|
||||
navigate("Apps");
|
||||
}}
|
||||
|
@ -1,4 +1,4 @@
|
||||
import React, { useRef } from "react";
|
||||
import React, { useRef, useMemo } from "react";
|
||||
import { View, Text, TouchableOpacity, Linking } from "react-native";
|
||||
import MapView, { Marker } from "react-native-maps";
|
||||
import { MaterialCommunityIcons } from "@expo/vector-icons";
|
||||
@ -9,6 +9,36 @@ export default function TrainMenu({
|
||||
style,
|
||||
}) {
|
||||
const mapRef = useRef();
|
||||
const stationPin = useMemo(
|
||||
() =>
|
||||
Object.keys(stationData).map((d, indexBase) =>
|
||||
stationData[d].map((D, index) => {
|
||||
if (!D.StationMap) return null;
|
||||
const latlng = D.StationMap.replace(
|
||||
"https://www.google.co.jp/maps/place/",
|
||||
""
|
||||
).split(",");
|
||||
if (latlng.length == 0) return null;
|
||||
return (
|
||||
<Marker
|
||||
key={index + indexBase}
|
||||
coordinate={{
|
||||
latitude: parseFloat(latlng[0]),
|
||||
longitude: parseFloat(latlng[1]),
|
||||
}}
|
||||
onPress={() => {
|
||||
webview.current?.injectJavaScript(
|
||||
`MoveDisplayStation('${d}_${D.MyStation}_${D.Station_JP}');
|
||||
setStrings();`
|
||||
);
|
||||
if (navigate) navigate("Apps");
|
||||
}}
|
||||
></Marker>
|
||||
);
|
||||
})
|
||||
),
|
||||
[stationData]
|
||||
);
|
||||
return (
|
||||
<View style={{ height: "100%", backgroundColor: "#0099CC", ...style }}>
|
||||
<MapView
|
||||
@ -27,32 +57,7 @@ export default function TrainMenu({
|
||||
longitudeDelta: 1.8,
|
||||
}}
|
||||
>
|
||||
{stationData &&
|
||||
Object.keys(stationData).map((d) =>
|
||||
stationData[d].map((D, index) => {
|
||||
if (!D.StationMap) return null;
|
||||
const latlng = D.StationMap.replace(
|
||||
"https://www.google.co.jp/maps/place/",
|
||||
""
|
||||
).split(",");
|
||||
if (latlng.length == 0) return null;
|
||||
return (
|
||||
<Marker
|
||||
key={index}
|
||||
coordinate={{
|
||||
latitude: parseFloat(latlng[0]),
|
||||
longitude: parseFloat(latlng[1]),
|
||||
}}
|
||||
onPress={() => {
|
||||
webview.current?.injectJavaScript(
|
||||
`MoveDisplayStation('${d}_${D.MyStation}_${D.Station_JP}')`
|
||||
);
|
||||
if (navigate) navigate("Apps");
|
||||
}}
|
||||
></Marker>
|
||||
);
|
||||
})
|
||||
)}
|
||||
{stationPin}
|
||||
</MapView>
|
||||
{navigate && (
|
||||
<View style={{ flexDirection: "row" }}>
|
||||
|
Loading…
Reference in New Issue
Block a user