tsxのFC宣言をProviderに追加
This commit is contained in:
@@ -9,30 +9,13 @@ export const initIcon = (
|
|||||||
tabBarBadge: string,
|
tabBarBadge: string,
|
||||||
isInfo: boolean
|
isInfo: boolean
|
||||||
) => {
|
) => {
|
||||||
switch (type) {
|
const IconComponent = type == "Ionicons" ? Ionicons : AntDesign;
|
||||||
case "Ionicons":
|
return ({ focused, color, size }) => (
|
||||||
return ({ focused, color, size }) => (
|
<>
|
||||||
<>
|
{!!tabBarBadge && <Badge tabBarBadge={tabBarBadge} isInfo={isInfo} />}
|
||||||
{!!tabBarBadge && <Badge tabBarBadge={tabBarBadge} isInfo={isInfo} />}
|
<IconComponent name={name} size={30} color={focused ? "#0099CC" : "black"} />
|
||||||
<Ionicons
|
</>
|
||||||
name={name}
|
);
|
||||||
size={30}
|
|
||||||
color={focused ? "#0099CC" : "black"}
|
|
||||||
/>
|
|
||||||
</>
|
|
||||||
);
|
|
||||||
case "AntDesign":
|
|
||||||
return ({ focused, color, size }) => (
|
|
||||||
<>
|
|
||||||
{!!tabBarBadge && <Badge tabBarBadge={tabBarBadge} isInfo={isInfo} />}
|
|
||||||
<AntDesign
|
|
||||||
name={name}
|
|
||||||
size={30}
|
|
||||||
color={focused ? "#0099CC" : "black"}
|
|
||||||
/>
|
|
||||||
</>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
type BadgeProps = { tabBarBadge: string; isInfo: boolean };
|
type BadgeProps = { tabBarBadge: string; isInfo: boolean };
|
||||||
|
|
||||||
@@ -60,7 +43,7 @@ export const Badge: FC<BadgeProps> = ({ tabBarBadge, isInfo }) => {
|
|||||||
shadowOffset: { width: 0, height: 0 },
|
shadowOffset: { width: 0, height: 0 },
|
||||||
shadowOpacity: 0.5,
|
shadowOpacity: 0.5,
|
||||||
shadowRadius: 4,
|
shadowRadius: 4,
|
||||||
elevation: 2
|
elevation: 2,
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<Text style={{ color: "white", paddingHorizontal: 4 }}>
|
<Text style={{ color: "white", paddingHorizontal: 4 }}>
|
||||||
|
49
ndView.tsx
49
ndView.tsx
@@ -1,12 +1,19 @@
|
|||||||
import React, { Ref, useRef, useState,useEffect } from "react";
|
import React, { Ref, useRef, useState, useEffect } from "react";
|
||||||
import { View, Platform, TouchableOpacity, StyleProp, ViewStyle,Linking } from "react-native";
|
import {
|
||||||
|
View,
|
||||||
|
Platform,
|
||||||
|
TouchableOpacity,
|
||||||
|
StyleProp,
|
||||||
|
ViewStyle,
|
||||||
|
Linking,
|
||||||
|
} from "react-native";
|
||||||
import { WebView } from "react-native-webview";
|
import { WebView } from "react-native-webview";
|
||||||
import Constants from "expo-constants";
|
import Constants from "expo-constants";
|
||||||
import { Ionicons } from "@expo/vector-icons";
|
import { Ionicons } from "@expo/vector-icons";
|
||||||
import { useNavigation } from "@react-navigation/native";
|
import { useNavigation } from "@react-navigation/native";
|
||||||
export default function tndView() {
|
export default function tndView() {
|
||||||
const webview = useRef<WebView>(null);
|
const webview = useRef<WebView>(null);
|
||||||
const { navigate, addListener, isFocused } = useNavigation();
|
const { navigate, addListener, isFocused } = useNavigation();
|
||||||
const jsa = `
|
const jsa = `
|
||||||
document.querySelector('.sitettl').style.display = 'none';
|
document.querySelector('.sitettl').style.display = 'none';
|
||||||
document.querySelector('.attention').style.display = 'none';
|
document.querySelector('.attention').style.display = 'none';
|
||||||
@@ -100,23 +107,23 @@ setInterval(() => {
|
|||||||
});
|
});
|
||||||
}, 1000);
|
}, 1000);
|
||||||
`;
|
`;
|
||||||
const goToTrainMenu = () =>{
|
const goToTrainMenu = () => {
|
||||||
if (Platform.OS === "web") {
|
if (Platform.OS === "web") {
|
||||||
Linking.openURL("https://www.jr-shikoku.co.jp/info/");
|
Linking.openURL("https://www.jr-shikoku.co.jp/info/");
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
navigate("topMenu", { screen: "menu" });
|
navigate("topMenu", { screen: "menu" });
|
||||||
}, 100);
|
}, 100);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
const unsubscribe = addListener("tabPress", goToTrainMenu);
|
const unsubscribe = addListener("tabPress", goToTrainMenu);
|
||||||
return unsubscribe;
|
return unsubscribe;
|
||||||
}, [addListener]);
|
}, [addListener]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<View
|
<View
|
||||||
style={{
|
style={{
|
||||||
@@ -147,7 +154,7 @@ setInterval(() => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const ReloadButton = ({ onPress, top, LoadError = false }) => {
|
const ReloadButton = ({ onPress, top, LoadError = false }) => {
|
||||||
const styles:StyleProp<ViewStyle> = {
|
const styles: StyleProp<ViewStyle> = {
|
||||||
position: "absolute",
|
position: "absolute",
|
||||||
top,
|
top,
|
||||||
right: 10,
|
right: 10,
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
import trainList from "@/assets/originData/trainList";
|
import trainList from "@/assets/originData/trainList";
|
||||||
import useInterval from "@/lib/useInterval";
|
import useInterval from "@/lib/useInterval";
|
||||||
import { AS } from "@/storageControl";
|
import { AS } from "@/storageControl";
|
||||||
import React, { createContext, useContext, useEffect, useState } from "react";
|
import React, { createContext, FC, useContext, useEffect, useState } from "react";
|
||||||
const initialState = {
|
const initialState = {
|
||||||
allTrainDiagram: {},
|
allTrainDiagram: {},
|
||||||
setAllTrainDiagram: (e) => {},
|
setAllTrainDiagram: (e) => {},
|
||||||
@@ -18,8 +18,10 @@ type initialStateType = {
|
|||||||
const AllTrainDiagramContext = createContext<initialStateType>(initialState);
|
const AllTrainDiagramContext = createContext<initialStateType>(initialState);
|
||||||
|
|
||||||
export const useAllTrainDiagram = () => useContext(AllTrainDiagramContext);
|
export const useAllTrainDiagram = () => useContext(AllTrainDiagramContext);
|
||||||
|
type Props = {
|
||||||
export const AllTrainDiagramProvider = ({ children }) => {
|
children: React.ReactNode;
|
||||||
|
};
|
||||||
|
export const AllTrainDiagramProvider:FC<Props> = ({ children }) => {
|
||||||
const [allTrainDiagram, setAllTrainDiagram] = useState(trainList);
|
const [allTrainDiagram, setAllTrainDiagram] = useState(trainList);
|
||||||
const [allCustomTrainData, setAllCustomTrainData] = useState([]); // カスタム列車データ
|
const [allCustomTrainData, setAllCustomTrainData] = useState([]); // カスタム列車データ
|
||||||
const [keyList, setKeyList] = useState<string[]>([]); // 第二要素
|
const [keyList, setKeyList] = useState<string[]>([]); // 第二要素
|
||||||
|
@@ -1,4 +1,10 @@
|
|||||||
import React, { createContext, useContext, useState, useEffect } from "react";
|
import React, {
|
||||||
|
createContext,
|
||||||
|
useContext,
|
||||||
|
useState,
|
||||||
|
useEffect,
|
||||||
|
FC,
|
||||||
|
} from "react";
|
||||||
import useInterval from "../lib/useInterval";
|
import useInterval from "../lib/useInterval";
|
||||||
|
|
||||||
const setoStationID = [
|
const setoStationID = [
|
||||||
@@ -327,8 +333,6 @@ const areaStationPair = {
|
|||||||
yodo: { id: "G", stationID: yodoStationID },
|
yodo: { id: "G", stationID: yodoStationID },
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
const initialState = {
|
const initialState = {
|
||||||
areaInfo: "",
|
areaInfo: "",
|
||||||
setAreaInfo: () => {},
|
setAreaInfo: () => {},
|
||||||
@@ -351,8 +355,8 @@ const AreaInfoContext = createContext<initialStateType>(initialState);
|
|||||||
export const useAreaInfo = () => {
|
export const useAreaInfo = () => {
|
||||||
return useContext(AreaInfoContext);
|
return useContext(AreaInfoContext);
|
||||||
};
|
};
|
||||||
|
type props = { children: React.ReactNode };
|
||||||
export const AreaInfoProvider = ({ children }) => {
|
export const AreaInfoProvider: FC<props> = ({ children }) => {
|
||||||
const [areaInfo, setAreaInfo] = useState("");
|
const [areaInfo, setAreaInfo] = useState("");
|
||||||
const [areaIconBadgeText, setAreaIconBadgeText] = useState("");
|
const [areaIconBadgeText, setAreaIconBadgeText] = useState("");
|
||||||
const [areaStationID, setAreaStationID] = useState([]);
|
const [areaStationID, setAreaStationID] = useState([]);
|
||||||
|
@@ -1,4 +1,10 @@
|
|||||||
import React, { createContext, useContext, useState, useEffect } from "react";
|
import React, {
|
||||||
|
createContext,
|
||||||
|
useContext,
|
||||||
|
useState,
|
||||||
|
useEffect,
|
||||||
|
FC,
|
||||||
|
} from "react";
|
||||||
import { AS } from "../storageControl";
|
import { AS } from "../storageControl";
|
||||||
import { useAllTrainDiagram } from "./useAllTrainDiagram";
|
import { useAllTrainDiagram } from "./useAllTrainDiagram";
|
||||||
const initialState = {
|
const initialState = {
|
||||||
@@ -15,14 +21,16 @@ const BusAndTrainDataContext = createContext(initialState);
|
|||||||
export const useBusAndTrainData = () => {
|
export const useBusAndTrainData = () => {
|
||||||
return useContext(BusAndTrainDataContext);
|
return useContext(BusAndTrainDataContext);
|
||||||
};
|
};
|
||||||
|
type props = { children: React.ReactNode };
|
||||||
export const BusAndTrainDataProvider = ({ children }) => {
|
export const BusAndTrainDataProvider: FC<props> = ({ children }) => {
|
||||||
const { allTrainDiagram } = useAllTrainDiagram();
|
const { allTrainDiagram } = useAllTrainDiagram();
|
||||||
const [busAndTrainData, setBusAndTrainData] = useState<{
|
const [busAndTrainData, setBusAndTrainData] = useState<
|
||||||
address: string;
|
{
|
||||||
name: string;
|
address: string;
|
||||||
type: "station-data" | "bus-stop" | "train-info";
|
name: string;
|
||||||
}[]>([]);
|
type: "station-data" | "bus-stop" | "train-info";
|
||||||
|
}[]
|
||||||
|
>([]);
|
||||||
const [trainPairData, setTrainPairData] = useState<any[]>([]);
|
const [trainPairData, setTrainPairData] = useState<any[]>([]);
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
AS.getItem("busAndTrain202403")
|
AS.getItem("busAndTrain202403")
|
||||||
@@ -57,7 +65,7 @@ export const BusAndTrainDataProvider = ({ children }) => {
|
|||||||
});
|
});
|
||||||
return trainPairList;
|
return trainPairList;
|
||||||
};
|
};
|
||||||
const getInfluencedTrainData = (trainNum:string) => {
|
const getInfluencedTrainData = (trainNum: string) => {
|
||||||
const trainPairList = initializeTrainPairList();
|
const trainPairList = initializeTrainPairList();
|
||||||
|
|
||||||
// 9253M ラマル
|
// 9253M ラマル
|
||||||
|
@@ -4,6 +4,7 @@ import React, {
|
|||||||
useState,
|
useState,
|
||||||
useEffect,
|
useEffect,
|
||||||
useRef,
|
useRef,
|
||||||
|
FC,
|
||||||
} from "react";
|
} from "react";
|
||||||
import { HeaderConfig } from "../lib/HeaderConfig";
|
import { HeaderConfig } from "../lib/HeaderConfig";
|
||||||
|
|
||||||
@@ -48,8 +49,10 @@ const CurrentTrainContext = createContext<initialStateType>(initialState);
|
|||||||
export const useCurrentTrain = () => {
|
export const useCurrentTrain = () => {
|
||||||
return useContext(CurrentTrainContext);
|
return useContext(CurrentTrainContext);
|
||||||
};
|
};
|
||||||
|
type props = {
|
||||||
export const CurrentTrainProvider = ({ children }) => {
|
children: React.ReactNode;
|
||||||
|
}
|
||||||
|
export const CurrentTrainProvider:FC<props> = ({ children }) => {
|
||||||
const [currentTrain, setCurrentTrain] = useState<trainDataType[]>([]); //現在在線中の全列車 { num: 列車番号, delay: 遅延時分(状態), Pos: 位置情報 }
|
const [currentTrain, setCurrentTrain] = useState<trainDataType[]>([]); //現在在線中の全列車 { num: 列車番号, delay: 遅延時分(状態), Pos: 位置情報 }
|
||||||
const [currentTrainLoading, setCurrentTrainLoading] =
|
const [currentTrainLoading, setCurrentTrainLoading] =
|
||||||
useState<loading>("loading");
|
useState<loading>("loading");
|
||||||
|
@@ -1,11 +1,11 @@
|
|||||||
import React, { createContext, useContext, useEffect, useState } from "react";
|
import React, { createContext, FC, useContext, useEffect, useState } from "react";
|
||||||
const initialState = {
|
const initialState = {
|
||||||
getTime: new Date(),
|
getTime: new Date(),
|
||||||
setGetTime: () => {},
|
setGetTime: (e) => {},
|
||||||
loadingDelayData: true,
|
loadingDelayData: true,
|
||||||
setLoadingDelayData: (loading) => {},
|
setLoadingDelayData: (loading) => {},
|
||||||
delayData: undefined,
|
delayData: undefined,
|
||||||
setDelayData: () => {},
|
setDelayData: (e) => {},
|
||||||
};
|
};
|
||||||
|
|
||||||
const TrainDelayDataContext = createContext(initialState);
|
const TrainDelayDataContext = createContext(initialState);
|
||||||
@@ -13,8 +13,10 @@ const TrainDelayDataContext = createContext(initialState);
|
|||||||
export const useTrainDelayData = () => {
|
export const useTrainDelayData = () => {
|
||||||
return useContext(TrainDelayDataContext);
|
return useContext(TrainDelayDataContext);
|
||||||
};
|
};
|
||||||
|
type props = {
|
||||||
export const TrainDelayDataProvider = ({ children }) => {
|
children: React.ReactNode;
|
||||||
|
};
|
||||||
|
export const TrainDelayDataProvider:FC<props> = ({ children }) => {
|
||||||
const [delayData, setDelayData] = useState(undefined);
|
const [delayData, setDelayData] = useState(undefined);
|
||||||
const [getTime, setGetTime] = useState(new Date());
|
const [getTime, setGetTime] = useState(new Date());
|
||||||
const [loadingDelayData, setLoadingDelayData] = useState(true);
|
const [loadingDelayData, setLoadingDelayData] = useState(true);
|
||||||
|
@@ -1,4 +1,10 @@
|
|||||||
import React, { createContext, useContext, useState, useEffect } from "react";
|
import React, {
|
||||||
|
createContext,
|
||||||
|
useContext,
|
||||||
|
useState,
|
||||||
|
useEffect,
|
||||||
|
FC,
|
||||||
|
} from "react";
|
||||||
|
|
||||||
import { ASCore } from "../storageControl";
|
import { ASCore } from "../storageControl";
|
||||||
|
|
||||||
@@ -30,8 +36,8 @@ const initialState = {
|
|||||||
setTrainInfo: (e) => {},
|
setTrainInfo: (e) => {},
|
||||||
trainMenu: "true",
|
trainMenu: "true",
|
||||||
setTrainMenu: (e) => {},
|
setTrainMenu: (e) => {},
|
||||||
updatePermission : false,
|
updatePermission: false,
|
||||||
setUpdatePermission : (e) => {},
|
setUpdatePermission: (e) => {},
|
||||||
injectJavascript: "",
|
injectJavascript: "",
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -40,33 +46,36 @@ const TrainMenuContext = createContext(initialState);
|
|||||||
export const useTrainMenu = () => {
|
export const useTrainMenu = () => {
|
||||||
return useContext(TrainMenuContext);
|
return useContext(TrainMenuContext);
|
||||||
};
|
};
|
||||||
|
type props = { children: React.ReactNode };
|
||||||
export const TrainMenuProvider = ({ children }) => {
|
export const TrainMenuProvider: FC<props> = ({ children }) => {
|
||||||
const { expoPushToken } = useNotification();
|
const { expoPushToken } = useNotification();
|
||||||
const [selectedLine, setSelectedLine] = useState(undefined);
|
const [selectedLine, setSelectedLine] = useState(undefined);
|
||||||
const [mapsStationData, setMapsStationData] = useState(undefined);
|
const [mapsStationData, setMapsStationData] = useState(undefined);
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
getStationList2().then(setMapsStationData);
|
getStationList2().then(setMapsStationData);
|
||||||
}, []);
|
}, []);
|
||||||
|
type boolType = "true" | "false" | undefined;
|
||||||
//画面表示関連
|
//画面表示関連
|
||||||
const [iconSetting, setIconSetting] = useState<"true" | "false" | undefined>(undefined);
|
const [iconSetting, setIconSetting] = useState<boolType>(undefined);
|
||||||
const [mapSwitch, setMapSwitch] = useState<"true" | "false" | undefined>(undefined);
|
const [mapSwitch, setMapSwitch] = useState<boolType>(undefined);
|
||||||
const [stationMenu, setStationMenu] = useState<"true" | "false" | undefined>(undefined);
|
const [stationMenu, setStationMenu] = useState<boolType>(undefined);
|
||||||
const [LoadError, setLoadError] = useState(false);
|
const [LoadError, setLoadError] = useState(false);
|
||||||
|
|
||||||
//更新権限所有確認
|
//更新権限所有確認
|
||||||
const [updatePermission, setUpdatePermission] = useState(false);
|
const [updatePermission, setUpdatePermission] = useState(false);
|
||||||
useEffect(()=>{
|
useEffect(() => {
|
||||||
fetch("https://n8n.haruk.in/webhook/data-edit-permission?token=" + expoPushToken).then((res)=>res.json())
|
fetch(
|
||||||
.then((res)=>{
|
"https://n8n.haruk.in/webhook/data-edit-permission?token=" + expoPushToken
|
||||||
if(res.data == true){
|
)
|
||||||
setUpdatePermission(true);
|
.then((res) => res.json())
|
||||||
}else{
|
.then((res) => {
|
||||||
setUpdatePermission(false);
|
if (res.data == true) {
|
||||||
}
|
setUpdatePermission(true);
|
||||||
})
|
} else {
|
||||||
}, [expoPushToken])
|
setUpdatePermission(false);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}, [expoPushToken]);
|
||||||
|
|
||||||
//列車情報表示関連
|
//列車情報表示関連
|
||||||
const [trainInfo, setTrainInfo] = useState({
|
const [trainInfo, setTrainInfo] = useState({
|
||||||
|
Reference in New Issue
Block a user