diff --git a/App.js b/App.js index 04675dc..bfa3ca2 100644 --- a/App.js +++ b/App.js @@ -9,11 +9,12 @@ import { AntDesign, Ionicons } from "@expo/vector-icons"; import { Platform, UIManager } from "react-native"; import { UpdateAsync } from "./UpdateAsync.js"; import { getStationList2 } from "./lib/getStationList2"; +import { AS } from "./storageControl"; import Apps from "./Apps"; -import tndView from "./ndView"; +import TNDView from "./ndView"; import TrainBase from "./trainbaseview"; import HowTo from "./howto"; -import menu from "./menu"; +import Menu from "./menu"; import News from "./components/news.js"; import Setting from "./components/settings.js"; import TrainMenu from "./components/trainMenu.js"; @@ -29,52 +30,97 @@ export default function App() { useEffect(() => { UpdateAsync(); }, []); + const [favoriteStation, setFavoriteStation] = useState([]); + + useEffect(() => { + AS.getItem("favoriteStation") + .then((d) => { + const returnData = JSON.parse(d); + setFavoriteStation(returnData); + }) + .catch((d) => console.log(d)); + }, []); return ( , + tabBarIcon: initIcon("barchart", "AntDesign"), }} - /> + > + {(props) => ( + + )} + , + tabBarIcon: initIcon("ios-radio", "Ionicons"), }} - /> + > + {(props) => ( + + )} + , + tabBarIcon: initIcon("md-train", "Ionicons"), }} - /> + > + {(props) => } + ); } -const top = ({ navigation }) => { + +const initIcon = (name, type) => { + switch (type) { + case "Ionicons": + return ({ focused, color, size }) => ( + + ); + case "AntDesign": + return ({ focused, color, size }) => ( + + ); + } +}; + +const Top = ({ navigation, favoriteStation, setFavoriteStation }) => { const webview = useRef(); //地図用 const [mapsStationData, setMapsStationData] = useState(undefined); + useEffect(() => { getStationList2().then(setMapsStationData); }, []); + useEffect(() => { const unsubscribe = navigation.addListener("tabLongPress", (e) => { navigation.navigate("favoriteList"); @@ -93,7 +139,14 @@ const top = ({ navigation }) => { headerTransparent: true, }} > - {(props) => } + {(props) => ( + + )} { ...TransitionPresets.SlideFromRightIOS, }} > - {(props) => } + {(props) => } { {...props} webview={webview} stationData={mapsStationData} + favoriteStation={favoriteStation} + setFavoriteStation={setFavoriteStation} /> )} ); }; -function menuPage() { +function MenuPage({ favoriteStation, setFavoriteStation }) { return ( - + > + {(props) => ( + + )} + + + {(props) => } + + > + {(props) => } + ); } diff --git a/Apps.js b/Apps.js index 25d1446..5f7ed77 100644 --- a/Apps.js +++ b/Apps.js @@ -19,7 +19,12 @@ import { getStationList2 } from "./lib/getStationList2"; import StatusbarDetect from './StatusbarDetect'; var Status = StatusbarDetect(); */ -export default function Apps({ navigation, webview }) { +export default function Apps({ + navigation, + webview, + favoriteStation, + setFavoriteStation, +}) { const { navigate } = navigation; var urlcache = ""; @@ -192,6 +197,8 @@ export default function Apps({ navigation, webview }) { StationBoardAcSR={StationBoardAcSR} currentStation={stationBoardData} originalStationList={originalStationList} + favoriteStation={favoriteStation} + setFavoriteStation={setFavoriteStation} /> ); diff --git a/components/ActionSheetComponents/StationDeteilView.js b/components/ActionSheetComponents/StationDeteilView.js index 6d1ccd0..bc0fafa 100644 --- a/components/ActionSheetComponents/StationDeteilView.js +++ b/components/ActionSheetComponents/StationDeteilView.js @@ -7,7 +7,13 @@ import Sign from "../../components/駅名表/Sign"; import { TicketBox } from "../atom/TicketBox"; export const StationDeteilView = (props) => { - const { StationBoardAcSR, currentStation, originalStationList } = props; + const { + StationBoardAcSR, + currentStation, + originalStationList, + favoriteStation, + setFavoriteStation, + } = props; return ( { Linking.openURL(currentStation[0].StationTimeTable)} /> )} diff --git a/components/FavoriteList.js b/components/FavoriteList.js index daf7d5d..3b946a2 100644 --- a/components/FavoriteList.js +++ b/components/FavoriteList.js @@ -8,20 +8,14 @@ import { AS } from "../storageControl"; import { news } from "../config/newsUpdate"; import { getStationList, lineList } from "../lib/getStationList"; var Status = StatusbarDetect(); -export default function FavoriteList({ navigation, webview, stationData }) { +export default function FavoriteList({ + navigation, + webview, + stationData, + favoriteStation, + setFavoriteStation, +}) { const { navigate } = navigation; - const [favoriteStation, setFavoriteStation] = useState([]); - - useEffect(() => { - AS.getItem("favoriteStation") - .then((d) => { - console.log(d); - const returnData = JSON.parse(d); - console.log(returnData); - setFavoriteStation(returnData); - }) - .catch((d) => console.log(d)); - }, []); return ( diff --git a/components/駅名表/Sign.js b/components/駅名表/Sign.js index 0e5a5c3..8c1fc1f 100644 --- a/components/駅名表/Sign.js +++ b/components/駅名表/Sign.js @@ -17,24 +17,19 @@ import { useInterval } from "../../lib/useInterval"; import { AS } from "../../storageControl"; export default function Sign(props) { - const { currentStation, originalStationList, oP } = props; + const { + currentStation, + originalStationList, + oP, + favoriteStation, + setFavoriteStation, + } = props; const [nexPrePosition, setNexPrePosition] = useState(0); const [preStation, setPreStation] = useState(); const [nexStation, setNexStation] = useState(); const [testButtonStatus, setTestButtonStatus] = useState(false); - const [favoriteStation, setFavoriteStation] = useState([]); - useEffect(() => { - AS.getItem("favoriteStation") - .then((d) => { - console.log(d); - const returnData = JSON.parse(d); - console.log(returnData); - setFavoriteStation(returnData); - }) - .catch((d) => console.log(d)); - }, []); useEffect(() => { const isFavorite = favoriteStation.filter((d) => { const compare = JSON.stringify(d); @@ -116,12 +111,14 @@ export default function Sign(props) { } }); AS.setItem("favoriteStation", JSON.stringify(otherData)); + setFavoriteStation(otherData); } else { lottieRef.current.play(7, 35); let ret = favoriteStation; console.log(currentStation); ret.push(currentStation); AS.setItem("favoriteStation", JSON.stringify(ret)); + setFavoriteStation(ret); } setTestButtonStatus(!testButtonStatus); }} diff --git a/menu.js b/menu.js index fe31a17..6deeb0a 100644 --- a/menu.js +++ b/menu.js @@ -38,6 +38,8 @@ import useInterval from "./lib/useInterval"; export default function Menu(props) { const { navigation: { navigate }, + favoriteStation, + setFavoriteStation, } = props; const JRSTraInfoEXAcSR = useRef(null); const StationBoardAcSR = useRef(null); @@ -162,6 +164,8 @@ export default function Menu(props) { @@ -458,6 +462,8 @@ export default function Menu(props) { StationBoardAcSR={StationBoardAcSR} currentStation={currentStation} originalStationList={originalStationList} + favoriteStation={favoriteStation} + setFavoriteStation={setFavoriteStation} />