tsへファイル移動

This commit is contained in:
harukin-expo-dev-env
2025-09-11 15:05:32 +00:00
parent d419e90140
commit 9ab4c0a205
14 changed files with 120 additions and 66 deletions

View File

View File

@@ -95,7 +95,7 @@ export function MenuPage() {
return unsubscribe;
}, [navigation, mapHeight, favoriteStation, setFavoriteStation]);
return (
<Stack.Navigator>
<Stack.Navigator id={null}>
<Stack.Screen
name="menu"
options={{

View File

@@ -50,7 +50,7 @@ export const Top = () => {
}, [addListener, mapSwitch]);
return (
<Stack.Navigator detachInactiveScreens={false}>
<Stack.Navigator id={null} detachInactiveScreens={false}>
<Stack.Screen
name="Apps"
options={{
@@ -68,7 +68,7 @@ export const Top = () => {
/>
<Stack.Screen
name="stDiagram"
options={{ ...optionData, gestureEnabled: false }}
options={{ ...optionData, gestureEnabled: false }}
component={StationDiagramView}
/>
<Stack.Screen name="howto" options={optionData} component={HowTo} />

View File

@@ -189,7 +189,6 @@ export const FixedTrain: FC<props> = ({ trainID }) => {
searchCount < points.length;
searchCount++
) {
console.log(trainDataWidhThrough[searchCount]);
const nextPos = trainDataWidhThrough[searchCount];
if (nextPos) {
const [station, se, time] = nextPos.split(",");

View File

@@ -3,20 +3,26 @@ import useInterval from "@/lib/useInterval";
import { AS } from "@/storageControl";
import React, { createContext, useContext, useEffect, useState } from "react";
const initialState = {
allTrainDiagram: undefined,
setAllTrainDiagram: () => {},
allTrainDiagram: {},
setAllTrainDiagram: (e) => {},
allCustomTrainData: [],
keyList: [],
};
type initialStateType = {
allTrainDiagram: { [key: string]: string };
setAllTrainDiagram: (e) => void;
allCustomTrainData: any[];
keyList: string[];
};
const AllTrainDiagramContext = createContext(initialState);
const AllTrainDiagramContext = createContext<initialStateType>(initialState);
export const useAllTrainDiagram = () => useContext(AllTrainDiagramContext);
export const AllTrainDiagramProvider = ({ children }) => {
const [allTrainDiagram, setAllTrainDiagram] = useState(trainList);
const [allCustomTrainData, setAllCustomTrainData] = useState([]); // カスタム列車データ
const [keyList, setKeyList] = useState(); // 第二要素
const [keyList, setKeyList] = useState<string[]>([]); // 第二要素
useEffect(() => {
if (allTrainDiagram && Object.keys(allTrainDiagram).length > 0)
setKeyList(Object.keys(allTrainDiagram));
@@ -29,19 +35,19 @@ export const AllTrainDiagramProvider = ({ children }) => {
.then((res) => {
const data = {};
res.forEach((d) => {
const keys = Object.keys(d);
const keys = Object.keys(d)[0];
data[keys] = d[keys];
});
//dataのkeyで並び替え
const sortedData = Object.keys(data)
.sort((a, b) => a.replace(/[D,M]/, "") - b.replace(/[D,M]/, ""))
.sort((a, b) => parseInt(a.replace(/[D,M]/, "")) - parseInt(b.replace(/[D,M]/, "")))
.reduce((acc, key) => {
acc[key] = data[key];
return acc;
}, {});
return sortedData;
})
.then((res) => {
.then((res:any) => {
setAllTrainDiagram(res);
AS.setItem("allTrainDiagram", JSON.stringify(res));
})

View File

@@ -1,19 +1,6 @@
import React, { createContext, useContext, useState, useEffect } from "react";
import useInterval from "../lib/useInterval";
const initialState = {
areaInfo: "",
setAreainfo: () => {},
areaIconBadgeText: "",
areaStationID: [],
};
const AreaInfoContext = createContext(initialState);
export const useAreaInfo = () => {
return useContext(AreaInfoContext);
};
const setoStationID = [
"Y00",
"Y01",
@@ -340,6 +327,31 @@ const areaStationPair = {
yodo: { id: "G", stationID: yodoStationID },
};
const initialState = {
areaInfo: "",
setAreaInfo: () => {},
areaIconBadgeText: "",
areaStationID: [],
isInfo: false,
setIsInfo: () => {},
};
type initialStateType = {
areaInfo: string;
setAreaInfo: (e: string) => void;
areaIconBadgeText: string;
areaStationID: string[];
isInfo: boolean;
setIsInfo: (e: boolean) => void;
};
const AreaInfoContext = createContext<initialStateType>(initialState);
export const useAreaInfo = () => {
return useContext(AreaInfoContext);
};
export const AreaInfoProvider = ({ children }) => {
const [areaInfo, setAreaInfo] = useState("");
const [areaIconBadgeText, setAreaIconBadgeText] = useState("");

View File

@@ -3,11 +3,11 @@ import { AS } from "../storageControl";
import { useAllTrainDiagram } from "./useAllTrainDiagram";
const initialState = {
busAndTrainData: [],
setBusAndTrainData: () => {},
setBusAndTrainData: (e) => {},
trainPairData: [],
setTrainPairData: () => {},
initializeTrainPairList: () => {},
getInfluencedTrainData: () => {},
setTrainPairData: (e) => {},
initializeTrainPairList: (e) => {},
getInfluencedTrainData: (e) => {},
};
const BusAndTrainDataContext = createContext(initialState);
@@ -18,8 +18,12 @@ export const useBusAndTrainData = () => {
export const BusAndTrainDataProvider = ({ children }) => {
const { allTrainDiagram } = useAllTrainDiagram();
const [busAndTrainData, setBusAndTrainData] = useState([]);
const [trainPairData, setTrainPairData] = useState([]);
const [busAndTrainData, setBusAndTrainData] = useState<{
address: string;
name: string;
type: "station-data" | "bus-stop" | "train-info";
}[]>([]);
const [trainPairData, setTrainPairData] = useState<any[]>([]);
useEffect(() => {
AS.getItem("busAndTrain202403")
.then((d) => {
@@ -53,7 +57,7 @@ export const BusAndTrainDataProvider = ({ children }) => {
});
return trainPairList;
};
const getInfluencedTrainData = (trainNum) => {
const getInfluencedTrainData = (trainNum:string) => {
const trainPairList = initializeTrainPairList();
// 9253M ラマル

View File

@@ -11,35 +11,56 @@ import useInterval from "../lib/useInterval";
import { useStationList } from "./useStationList";
import { checkDuplicateTrainData } from "@/lib/checkDuplicateTrainData";
import { getStationID } from "@/lib/eachTrainInfoCoreLib/getStationData";
import { trainDataType } from "@/lib/trainPositionTextArray";
type loading = "loading" | "success" | "error";
const initialState = {
webview: {},
webview: undefined,
currentTrain: [],
setCurrentTrain: () => {},
currentTrainLoading: "loading",
setCurrentTrainLoading: () => {},
setCurrentTrain: (e) => {},
currentTrainLoading: "loading" as loading,
setCurrentTrainLoading: (e) => {},
getCurrentTrain: () => {},
inject: (i) => {},
fixedPosition: null,
setFixedPosition: (e) => {},
setInjectData: (e) => {},
getCurrentStationData: (e) => {},
getPosition: (e) => {},
getCurrentStationData: ((e) => {}) as (e: string) => trainDataType | undefined,
getPosition: ((e) => {}) as (e: trainDataType) => string[] | undefined,
};
const CurrentTrainContext = createContext(initialState);
type initialStateType = {
webview: React.MutableRefObject<any>;
currentTrain: trainDataType[];
setCurrentTrain: (e: trainDataType[]) => void;
currentTrainLoading: loading;
setCurrentTrainLoading: (e: loading) => void;
getCurrentTrain: () => void;
inject: (i: string) => void;
fixedPosition: { type: "station" | "train"; value: string } | null;
setFixedPosition: (e: { type: "station" | "train"; value: string } | null) => void;
setInjectData: (e: { type: "station" | "train"; value: string; fixed: boolean }) => void;
getCurrentStationData: (e: string) => trainDataType | undefined;
getPosition: (e: trainDataType) => string[] | undefined;
};
const CurrentTrainContext = createContext<initialStateType>(initialState);
export const useCurrentTrain = () => {
return useContext(CurrentTrainContext);
};
export const CurrentTrainProvider = ({ children }) => {
const [currentTrain, setCurrentTrain] = useState([]); //現在在線中の全列車 { num: 列車番号, delay: 遅延時分(状態), Pos: 位置情報 }
const [currentTrainLoading, setCurrentTrainLoading] = useState("loading"); // success, error, loading
const [currentTrain, setCurrentTrain] = useState<trainDataType[]>([]); //現在在線中の全列車 { num: 列車番号, delay: 遅延時分(状態), Pos: 位置情報 }
const [currentTrainLoading, setCurrentTrainLoading] =
useState<loading>("loading");
const { getInjectJavascriptAddress, stationList, originalStationList } =
useStationList();
const [fixedPosition, setFixedPosition] = useState({
const [fixedPosition, setFixedPosition] = useState<{
type: "station" | "train";
value: string;
}>({
type: null,
value: null,
});
@@ -75,7 +96,9 @@ export const CurrentTrainProvider = ({ children }) => {
setIntervalState.stop();
}
}, [fixedPosition]);
const getPosition = (currentTrainData) => {
type getPositionFuncType = (currentTrainData: trainDataType) => string[] | undefined;
const getPosition: getPositionFuncType = (currentTrainData) => {
//currentTrainData.Pos = "鴨川~端岡"; //test
if (!currentTrainData) return;
if (!currentTrainData?.Pos) return;
@@ -85,7 +108,7 @@ export const CurrentTrainProvider = ({ children }) => {
.replace("(徳島線)", "")
.replace("(高徳線)", "")
.split("");
const direction = parseInt(currentTrainData?.Direction) || 0;
const direction = currentTrainData?.Direction || 0;
if (pos[0] == "児島" && pos[1] == "宇多津") {
return ["M12", "Y09"];
} else if (pos[1] == "児島" && pos[0] == "宇多津") {
@@ -136,15 +159,25 @@ export const CurrentTrainProvider = ({ children }) => {
return [getStationID(currentTrainData?.Pos, stationList)];
}
};
const getCurrentStationData = (e) => {
const getCurrentStationData: (e: string) => trainDataType | undefined = (
e
) => {
//e:trainNumber
if (!currentTrain.length) return;
console.log(currentTrain);
return checkDuplicateTrainData(
currentTrain.filter((d) => d.num == e),
stationList
);
};
const setInjectData = ({ type, value, fixed }) => {
type injectDataType = {
type: "station" | "train";
value: string;
fixed: boolean;
};
type injectDataFuncType = (data: injectDataType) => void;
const setInjectData: injectDataFuncType = ({ type, value, fixed }) => {
if (type === "station") {
const script = getInjectJavascriptAddress(value);
inject(script);

View File

@@ -1,7 +1,7 @@
import React, { createContext, useContext, useState, useEffect } from "react";
import { useWindowDimensions } from "react-native";
import * as ScreenOrientation from "expo-screen-orientation";
const initialState = { isLandscape: false, setIsLandscape: () => {} };
const initialState = { isLandscape: false, setIsLandscape: (e) => {} };
const DeviceOrientationChange = createContext(initialState);

View File

@@ -7,7 +7,7 @@ import React, {
FC,
} from "react";
import { AS } from "../storageControl";
import { useStationList } from "./useStationList";
import { StationProps, useStationList } from "./useStationList";
const initialState = {
favoriteStation: [],
setFavoriteStation: () => {},
@@ -16,8 +16,8 @@ const initialState = {
type initialStateType = {
favoriteStation: any[];
setFavoriteStation: (d:any)=>void;
lodAddMigration: ()=>void;
setFavoriteStation: (d: any) => void;
lodAddMigration: () => void;
};
const FavoriteStationContext = createContext<initialStateType>(initialState);
@@ -27,8 +27,8 @@ export const useFavoriteStation = () => {
type Props = {
children: React.ReactNode;
};
export const FavoriteStationProvider:FC<Props> = ({ children }) => {
const [favoriteStation, setFavoriteStation] = useState([]);
export const FavoriteStationProvider: FC<Props> = ({ children }) => {
const [favoriteStation, setFavoriteStation] = useState<StationProps[][]>([]);
const { getStationDataFromName } = useStationList();
const lodAddMigration = () => {
const migration = favoriteStation.map((d) => {
@@ -39,13 +39,13 @@ export const FavoriteStationProvider:FC<Props> = ({ children }) => {
useEffect(() => {
AS.getItem("favoriteStation")
.then((d) => {
const returnData = JSON.parse(d);
const returnData: StationProps[][] = JSON.parse(d);
setFavoriteStation(returnData);
})
.catch((error) => {
// エラーログを記録(開発時のみ)
if (__DEV__) {
console.warn('お気に入り駅の読み込みに失敗しました:', error);
console.warn("お気に入り駅の読み込みに失敗しました:", error);
}
});
}, []);

View File

@@ -9,29 +9,29 @@ import { useNotification } from "../stateBox/useNotifications";
const initialState = {
selectedLine: undefined,
setSelectedLine: () => {},
setSelectedLine: (e) => {},
mapsStationData: undefined,
setMapsStationData: () => {},
setMapsStationData: (e) => {},
iconSetting: undefined,
setIconSetting: () => {},
setIconSetting: (e) => {},
mapSwitch: undefined,
setMapSwitch: () => {},
setMapSwitch: (e) => {},
stationMenu: undefined,
setStationMenu: () => {},
setStationMenu: (e) => {},
uiSetting: undefined,
setUiSetting: () => {},
setUiSetting: (e) => {},
LoadError: false,
setLoadError: () => {},
setLoadError: (e) => {},
trainInfo: {
trainNum: undefined,
limited: undefined,
trainData: undefined,
},
setTrainInfo: () => {},
setTrainInfo: (e) => {},
trainMenu: "true",
setTrainMenu: () => {},
setTrainMenu: (e) => {},
updatePermission : false,
setUpdatePermission : () => {},
setUpdatePermission : (e) => {},
injectJavascript: "",
};
@@ -50,9 +50,9 @@ export const TrainMenuProvider = ({ children }) => {
}, []);
//画面表示関連
const [iconSetting, setIconSetting] = useState(undefined);
const [mapSwitch, setMapSwitch] = useState(undefined);
const [stationMenu, setStationMenu] = useState(undefined);
const [iconSetting, setIconSetting] = useState<"true" | "false" | undefined>(undefined);
const [mapSwitch, setMapSwitch] = useState<"true" | "false" | undefined>(undefined);
const [stationMenu, setStationMenu] = useState<"true" | "false" | undefined>(undefined);
const [LoadError, setLoadError] = useState(false);
//更新権限所有確認