現在地由来の表示に専用アイコンを付与

This commit is contained in:
harukin-expo-dev-env 2024-05-15 10:39:48 +00:00
parent 6a15decadd
commit 644c08f4c6
2 changed files with 53 additions and 34 deletions

View File

@ -1,6 +1,7 @@
import React, { useRef, useState, useEffect, useLayoutEffect } from "react"; import React, { useRef, useState, useEffect, useLayoutEffect } from "react";
import { View, Text, TouchableOpacity } from "react-native"; import { View, Text, TouchableOpacity } from "react-native";
import { widthPercentageToDP as wp } from "react-native-responsive-screen"; import { widthPercentageToDP as wp } from "react-native-responsive-screen";
import { MaterialCommunityIcons } from "@expo/vector-icons";
import LottieView from "lottie-react-native"; import LottieView from "lottie-react-native";
import { useInterval } from "../../lib/useInterval"; import { useInterval } from "../../lib/useInterval";
import { AS } from "../../storageControl"; import { AS } from "../../storageControl";
@ -9,7 +10,13 @@ import { useFavoriteStation } from "../../stateBox/useFavoriteStation";
import lineColorList from "../../assets/originData/lineColorList"; import lineColorList from "../../assets/originData/lineColorList";
export default function Sign(props) { export default function Sign(props) {
const { currentStation, originalStationList, oP, oLP } = props; const {
currentStation,
originalStationList,
oP,
oLP,
isCurrentStation = false,
} = props;
const { favoriteStation, setFavoriteStation } = useFavoriteStation(); const { favoriteStation, setFavoriteStation } = useFavoriteStation();
const [nexPrePosition, setNexPrePosition] = useState(0); const [nexPrePosition, setNexPrePosition] = useState(0);
@ -92,39 +99,50 @@ export default function Sign(props) {
<TouchableOpacity style={styleSheet.外枠} onPress={oP} onLongPress={oLP}> <TouchableOpacity style={styleSheet.外枠} onPress={oP} onLongPress={oLP}>
<StationNumberMaker currentStation={currentStation} /> <StationNumberMaker currentStation={currentStation} />
<StationNameArea currentStation={currentStation} /> <StationNameArea currentStation={currentStation} />
<TouchableOpacity {isCurrentStation ? (
style={{ position: "absolute", right: -15, top: -20 }} <TouchableOpacity style={{ position: "absolute", right: 0, top: 0 }}>
onPress={() => { <MaterialCommunityIcons
if (testButtonStatus) { name="crosshairs-gps"
const otherData = favoriteStation.filter((d) => { style={{ padding: 5 }}
const compare = JSON.stringify(d); color="#2E94BB"
const current = JSON.stringify(currentStation); size={30}
if (compare !== current) { />
return true; </TouchableOpacity>
} else { ) : (
return false; <TouchableOpacity
} style={{ position: "absolute", right: -15, top: -20 }}
}); onPress={() => {
AS.setItem("favoriteStation", JSON.stringify(otherData)); if (testButtonStatus) {
setFavoriteStation(otherData); const otherData = favoriteStation.filter((d) => {
} else { const compare = JSON.stringify(d);
let ret = favoriteStation; const current = JSON.stringify(currentStation);
ret.push(currentStation); if (compare !== current) {
AS.setItem("favoriteStation", JSON.stringify(ret)); return true;
setFavoriteStation(ret); } else {
} return false;
setTestButtonStatus(!testButtonStatus); }
}} });
> AS.setItem("favoriteStation", JSON.stringify(otherData));
<LottieDelayView setFavoriteStation(otherData);
progress={testButtonStatus ? 1 : 0} } else {
speed={1.4} let ret = favoriteStation;
style={{ width: 80, height: 80 }} ret.push(currentStation);
source={require("../../assets/939-star.json")} AS.setItem("favoriteStation", JSON.stringify(ret));
lottieRef={lottieRef} setFavoriteStation(ret);
loop={false} }
/> setTestButtonStatus(!testButtonStatus);
</TouchableOpacity> }}
>
<LottieDelayView
progress={testButtonStatus ? 1 : 0}
speed={1.4}
style={{ width: 80, height: 80 }}
source={require("../../assets/939-star.json")}
lottieRef={lottieRef}
loop={false}
/>
</TouchableOpacity>
)}
<Text style={styleSheet.JRStyle}>JR</Text> <Text style={styleSheet.JRStyle}>JR</Text>
<View style={styleSheet.下帯} /> <View style={styleSheet.下帯} />

View File

@ -172,6 +172,7 @@ export default function Menu({ getCurrentTrain }) {
<Sign <Sign
currentStation={item} currentStation={item}
originalStationList={originalStationList} originalStationList={originalStationList}
isCurrentStation={item == currentStation}
oP={() => { oP={() => {
const payload = { const payload = {
currentStation: currentStation: