diff --git a/menu.js b/menu.js index 25f9ef7..09ac4dd 100644 --- a/menu.js +++ b/menu.js @@ -47,7 +47,7 @@ export default function Menu(props) { const StationBoardAcSR = useRef(null); const navigation = useNavigation(); - //位置情報 + //ここから位置情報 const [location, setLocation] = useState(null); const [locationStatus, setLocationStatus] = useState(null); useEffect(() => { @@ -70,29 +70,16 @@ export default function Menu(props) { if (locationStatus !== "granted") return () => {}; getCurrentPosition(); }, 5000); + //ここまで位置情報 + //基礎駅情報取得 const [originalStationList, setOriginalStationList] = useState(); useEffect(() => { getStationList().then(setOriginalStationList); }, []); - const [locationAndFavorite, setLocationAndFavorite] = useState([]); //Favoriteから現在地を排除したバージョン - useEffect(() => { - if (!favoriteStation) return () => {}; - const data = favoriteStation.filter((d) => - JSON.stringify(d) === JSON.stringify(currentStation) ? false : true - ); - setLocationAndFavorite(data); - }, [currentStation, favoriteStation]); - - useEffect(() => { - if (!(selectedCurrentStation < favoriteStation.length)) { - setSelectedCurrentStation(favoriteStation.length - 1); - carouselRef.current.snapToItem(favoriteStation.length - 1); - } - }, [favoriteStation]); - - const [currentStation, setCurrentStation] = useState([]); + //ここから現在地付近の駅情報整理 + const [currentAreaStation, setCurrentAreaStation] = useState([]); useEffect(() => { if (!location) return () => {}; if (!originalStationList) return () => {}; @@ -122,14 +109,31 @@ export default function Menu(props) { }, []); LayoutAnimation.easeInEaseOut(); if (returnDataBase.length) { - if (currentStation.toString() != returnDataBase.toString()) { - setCurrentStation(returnDataBase); + if (currentAreaStation.toString() != returnDataBase.toString()) { + setCurrentAreaStation(returnDataBase); } } else { - setCurrentStation([]); + setCurrentAreaStation([]); } }, [location, originalStationList]); + //Favoriteから現在地を排除し現在地を最初に持ってくるバージョン + const [locationAndFavorite, setLocationAndFavorite] = useState([]); + useEffect(() => { + if (!favoriteStation) return () => {}; + const data = favoriteStation.filter((d) => + JSON.stringify(d) === JSON.stringify(currentAreaStation) ? false : true + ); + setLocationAndFavorite([...currentAreaStation, ...data]); + }, [currentAreaStation, favoriteStation]); + + useEffect(() => { + if (!(selectedCurrentStation < favoriteStation.length)) { + setSelectedCurrentStation(favoriteStation.length - 1); + carouselRef.current.snapToItem(favoriteStation.length - 1); + } + }, [favoriteStation]); + const [count, setCount] = useState(0); const [delayData, setDelayData] = useState(undefined); const [getTime, setGetTime] = useState(new Date()); @@ -168,9 +172,7 @@ export default function Menu(props) { - {[...currentStation, ...locationAndFavorite].length != 0 && - originalStationList && ( - - )} + {locationAndFavorite.length != 0 && originalStationList && ( + + )}