Merge commit '7dc72ef433745388e6a31b06b1811e972896ae27' into develop

This commit is contained in:
harukin-DeskMini 2023-01-30 03:32:51 +09:00
commit f580e319cf
6 changed files with 124 additions and 47 deletions

105
App.js
View File

@ -9,11 +9,12 @@ import { AntDesign, Ionicons } from "@expo/vector-icons";
import { Platform, UIManager } from "react-native"; import { Platform, UIManager } from "react-native";
import { UpdateAsync } from "./UpdateAsync.js"; import { UpdateAsync } from "./UpdateAsync.js";
import { getStationList2 } from "./lib/getStationList2"; import { getStationList2 } from "./lib/getStationList2";
import { AS } from "./storageControl";
import Apps from "./Apps"; import Apps from "./Apps";
import tndView from "./ndView"; import TNDView from "./ndView";
import TrainBase from "./trainbaseview"; import TrainBase from "./trainbaseview";
import HowTo from "./howto"; import HowTo from "./howto";
import menu from "./menu"; import Menu from "./menu";
import News from "./components/news.js"; import News from "./components/news.js";
import Setting from "./components/settings.js"; import Setting from "./components/settings.js";
import TrainMenu from "./components/trainMenu.js"; import TrainMenu from "./components/trainMenu.js";
@ -29,52 +30,97 @@ export default function App() {
useEffect(() => { useEffect(() => {
UpdateAsync(); UpdateAsync();
}, []); }, []);
const [favoriteStation, setFavoriteStation] = useState([]);
useEffect(() => {
AS.getItem("favoriteStation")
.then((d) => {
const returnData = JSON.parse(d);
setFavoriteStation(returnData);
})
.catch((d) => console.log(d));
}, []);
return ( return (
<NavigationContainer name="Root" style={{ flex: 1 }}> <NavigationContainer name="Root" style={{ flex: 1 }}>
<Tab.Navigator> <Tab.Navigator>
<Tab.Screen <Tab.Screen
name="login" name="login"
component={top}
options={{ options={{
tabBarLabel: "位置情報", tabBarLabel: "位置情報",
headerTransparent: true, headerTransparent: true,
gestureEnabled: true, gestureEnabled: true,
tabBarIcon: () => <AntDesign name="barchart" size={32} />, tabBarIcon: initIcon("barchart", "AntDesign"),
}} }}
/> >
{(props) => (
<Top
{...props}
favoriteStation={favoriteStation}
setFavoriteStation={setFavoriteStation}
/>
)}
</Tab.Screen>
<Tab.Screen <Tab.Screen
name="menuPage" name="menuPage"
component={menuPage}
options={{ options={{
tabBarLabel: "リンク", tabBarLabel: "リンク",
headerTransparent: true, headerTransparent: true,
gestureEnabled: true, gestureEnabled: true,
tabBarIcon: () => <Ionicons name="ios-radio" size={32} />, tabBarIcon: initIcon("ios-radio", "Ionicons"),
}} }}
/> >
{(props) => (
<MenuPage
{...props}
favoriteStation={favoriteStation}
setFavoriteStation={setFavoriteStation}
/>
)}
</Tab.Screen>
<Tab.Screen <Tab.Screen
name="home" name="home"
component={tndView}
options={{ options={{
tabBarLabel: "運行情報", tabBarLabel: "運行情報",
headerTransparent: true, headerTransparent: true,
gestureEnabled: true, gestureEnabled: true,
tabBarIcon: () => <Ionicons name="md-train" size={32} />, tabBarIcon: initIcon("md-train", "Ionicons"),
}} }}
/> >
{(props) => <TNDView {...props} />}
</Tab.Screen>
</Tab.Navigator> </Tab.Navigator>
</NavigationContainer> </NavigationContainer>
); );
} }
const top = ({ navigation }) => {
const initIcon = (name, type) => {
switch (type) {
case "Ionicons":
return ({ focused, color, size }) => (
<Ionicons name={name} size={32} color={focused ? "#0099CC" : "black"} />
);
case "AntDesign":
return ({ focused, color, size }) => (
<AntDesign
name={name}
size={32}
color={focused ? "#0099CC" : "black"}
/>
);
}
};
const Top = ({ navigation, favoriteStation, setFavoriteStation }) => {
const webview = useRef(); const webview = useRef();
//地図用 //地図用
const [mapsStationData, setMapsStationData] = useState(undefined); const [mapsStationData, setMapsStationData] = useState(undefined);
useEffect(() => { useEffect(() => {
getStationList2().then(setMapsStationData); getStationList2().then(setMapsStationData);
}, []); }, []);
useEffect(() => { useEffect(() => {
const unsubscribe = navigation.addListener("tabLongPress", (e) => { const unsubscribe = navigation.addListener("tabLongPress", (e) => {
navigation.navigate("favoriteList"); navigation.navigate("favoriteList");
@ -93,7 +139,14 @@ const top = ({ navigation }) => {
headerTransparent: true, headerTransparent: true,
}} }}
> >
{(props) => <Apps {...props} webview={webview} />} {(props) => (
<Apps
{...props}
webview={webview}
favoriteStation={favoriteStation}
setFavoriteStation={setFavoriteStation}
/>
)}
</Stack.Screen> </Stack.Screen>
<Stack.Screen <Stack.Screen
name="trainbase" name="trainbase"
@ -103,7 +156,7 @@ const top = ({ navigation }) => {
...TransitionPresets.SlideFromRightIOS, ...TransitionPresets.SlideFromRightIOS,
}} }}
> >
{(props) => <TrainBase {...props} webview={webview} />} {(props) => <TrainBase {...props} />}
</Stack.Screen> </Stack.Screen>
<Stack.Screen <Stack.Screen
name="howto" name="howto"
@ -135,28 +188,38 @@ const top = ({ navigation }) => {
{...props} {...props}
webview={webview} webview={webview}
stationData={mapsStationData} stationData={mapsStationData}
favoriteStation={favoriteStation}
setFavoriteStation={setFavoriteStation}
/> />
)} )}
</Stack.Screen> </Stack.Screen>
</Stack.Navigator> </Stack.Navigator>
); );
}; };
function menuPage() { function MenuPage({ favoriteStation, setFavoriteStation }) {
return ( return (
<Stack.Navigator> <Stack.Navigator>
<Stack.Screen <Stack.Screen
name="menu" name="menu"
component={menu}
options={{ options={{
headerShown: false, headerShown: false,
gestureEnabled: true, gestureEnabled: true,
headerTransparent: true, headerTransparent: true,
}} }}
/> >
<Stack.Screen name="setting" component={Setting} options={optionData} /> {(props) => (
<Menu
{...props}
favoriteStation={favoriteStation}
setFavoriteStation={setFavoriteStation}
/>
)}
</Stack.Screen>
<Stack.Screen name="setting" options={optionData}>
{(props) => <Setting {...props} />}
</Stack.Screen>
<Stack.Screen <Stack.Screen
name="trainbase" name="trainbase"
component={TrainBase}
options={{ options={{
...TransitionPresets.ModalPresentationIOS, ...TransitionPresets.ModalPresentationIOS,
cardOverlayEnabled: true, cardOverlayEnabled: true,
@ -165,7 +228,9 @@ function menuPage() {
headerTransparent: true, headerTransparent: true,
gestureResponseDistance: { vertical: 300 }, gestureResponseDistance: { vertical: 300 },
}} }}
/> >
{(props) => <TrainBase {...props} />}
</Stack.Screen>
</Stack.Navigator> </Stack.Navigator>
); );
} }

View File

@ -19,7 +19,12 @@ import { getStationList2 } from "./lib/getStationList2";
import StatusbarDetect from './StatusbarDetect'; import StatusbarDetect from './StatusbarDetect';
var Status = StatusbarDetect(); */ var Status = StatusbarDetect(); */
export default function Apps({ navigation, webview }) { export default function Apps({
navigation,
webview,
favoriteStation,
setFavoriteStation,
}) {
const { navigate } = navigation; const { navigate } = navigation;
var urlcache = ""; var urlcache = "";
@ -192,6 +197,8 @@ export default function Apps({ navigation, webview }) {
StationBoardAcSR={StationBoardAcSR} StationBoardAcSR={StationBoardAcSR}
currentStation={stationBoardData} currentStation={stationBoardData}
originalStationList={originalStationList} originalStationList={originalStationList}
favoriteStation={favoriteStation}
setFavoriteStation={setFavoriteStation}
/> />
</View> </View>
); );

View File

@ -7,7 +7,13 @@ import Sign from "../../components/駅名表/Sign";
import { TicketBox } from "../atom/TicketBox"; import { TicketBox } from "../atom/TicketBox";
export const StationDeteilView = (props) => { export const StationDeteilView = (props) => {
const { StationBoardAcSR, currentStation, originalStationList } = props; const {
StationBoardAcSR,
currentStation,
originalStationList,
favoriteStation,
setFavoriteStation,
} = props;
return ( return (
<ActionSheet <ActionSheet
@ -41,6 +47,8 @@ export const StationDeteilView = (props) => {
<Sign <Sign
currentStation={currentStation} currentStation={currentStation}
originalStationList={originalStationList} originalStationList={originalStationList}
favoriteStation={favoriteStation}
setFavoriteStation={setFavoriteStation}
oP={() => Linking.openURL(currentStation[0].StationTimeTable)} oP={() => Linking.openURL(currentStation[0].StationTimeTable)}
/> />
)} )}

View File

@ -8,20 +8,14 @@ import { AS } from "../storageControl";
import { news } from "../config/newsUpdate"; import { news } from "../config/newsUpdate";
import { getStationList, lineList } from "../lib/getStationList"; import { getStationList, lineList } from "../lib/getStationList";
var Status = StatusbarDetect(); var Status = StatusbarDetect();
export default function FavoriteList({ navigation, webview, stationData }) { export default function FavoriteList({
navigation,
webview,
stationData,
favoriteStation,
setFavoriteStation,
}) {
const { navigate } = navigation; 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 ( return (
<View style={{ height: "100%", backgroundColor: "#0099CC" }}> <View style={{ height: "100%", backgroundColor: "#0099CC" }}>

View File

@ -17,24 +17,19 @@ import { useInterval } from "../../lib/useInterval";
import { AS } from "../../storageControl"; import { AS } from "../../storageControl";
export default function Sign(props) { export default function Sign(props) {
const { currentStation, originalStationList, oP } = props; const {
currentStation,
originalStationList,
oP,
favoriteStation,
setFavoriteStation,
} = props;
const [nexPrePosition, setNexPrePosition] = useState(0); const [nexPrePosition, setNexPrePosition] = useState(0);
const [preStation, setPreStation] = useState(); const [preStation, setPreStation] = useState();
const [nexStation, setNexStation] = useState(); const [nexStation, setNexStation] = useState();
const [testButtonStatus, setTestButtonStatus] = useState(false); 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(() => { useEffect(() => {
const isFavorite = favoriteStation.filter((d) => { const isFavorite = favoriteStation.filter((d) => {
const compare = JSON.stringify(d); const compare = JSON.stringify(d);
@ -116,12 +111,14 @@ export default function Sign(props) {
} }
}); });
AS.setItem("favoriteStation", JSON.stringify(otherData)); AS.setItem("favoriteStation", JSON.stringify(otherData));
setFavoriteStation(otherData);
} else { } else {
lottieRef.current.play(7, 35); lottieRef.current.play(7, 35);
let ret = favoriteStation; let ret = favoriteStation;
console.log(currentStation); console.log(currentStation);
ret.push(currentStation); ret.push(currentStation);
AS.setItem("favoriteStation", JSON.stringify(ret)); AS.setItem("favoriteStation", JSON.stringify(ret));
setFavoriteStation(ret);
} }
setTestButtonStatus(!testButtonStatus); setTestButtonStatus(!testButtonStatus);
}} }}

View File

@ -38,6 +38,8 @@ import useInterval from "./lib/useInterval";
export default function Menu(props) { export default function Menu(props) {
const { const {
navigation: { navigate }, navigation: { navigate },
favoriteStation,
setFavoriteStation,
} = props; } = props;
const JRSTraInfoEXAcSR = useRef(null); const JRSTraInfoEXAcSR = useRef(null);
const StationBoardAcSR = useRef(null); const StationBoardAcSR = useRef(null);
@ -162,6 +164,8 @@ export default function Menu(props) {
<Sign <Sign
currentStation={currentStation} currentStation={currentStation}
originalStationList={originalStationList} originalStationList={originalStationList}
favoriteStation={favoriteStation}
setFavoriteStation={setFavoriteStation}
oP={StationBoardAcSR.current?.setModalVisible} oP={StationBoardAcSR.current?.setModalVisible}
/> />
<LED_vision station={currentStation[0]} navigate={navigate} /> <LED_vision station={currentStation[0]} navigate={navigate} />
@ -458,6 +462,8 @@ export default function Menu(props) {
StationBoardAcSR={StationBoardAcSR} StationBoardAcSR={StationBoardAcSR}
currentStation={currentStation} currentStation={currentStation}
originalStationList={originalStationList} originalStationList={originalStationList}
favoriteStation={favoriteStation}
setFavoriteStation={setFavoriteStation}
/> />
<JRSTraInfo <JRSTraInfo
JRSTraInfoEXAcSR={JRSTraInfoEXAcSR} JRSTraInfoEXAcSR={JRSTraInfoEXAcSR}