From 9ac41bc907e6cd776e1c9000164ddb746cfa044a Mon Sep 17 00:00:00 2001 From: harukin-expo-dev-env Date: Tue, 20 Aug 2024 03:49:36 +0000 Subject: [PATCH 1/2] =?UTF-8?q?initIcon=E2=86=92tsx?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/{initIcon.js => initIcon.tsx} | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) rename lib/{initIcon.js => initIcon.tsx} (73%) diff --git a/lib/initIcon.js b/lib/initIcon.tsx similarity index 73% rename from lib/initIcon.js rename to lib/initIcon.tsx index fd74a08..ad49ea2 100644 --- a/lib/initIcon.js +++ b/lib/initIcon.tsx @@ -1,7 +1,8 @@ import React from "react"; import { Ionicons, AntDesign } from "@expo/vector-icons"; - -export const initIcon = (name, type) => { +type name = keyof typeof Ionicons.glyphMap & keyof typeof AntDesign.glyphMap; +type type = "Ionicons" | "AntDesign"; +export const initIcon = (name: name, type:type) => { switch (type) { case "Ionicons": return ({ focused, color, size }) => ( From 1a10bee3c8b55a740c9ac497f909b3e87353b131 Mon Sep 17 00:00:00 2001 From: harukin-expo-dev-env Date: Tue, 20 Aug 2024 07:34:59 +0000 Subject: [PATCH 2/2] =?UTF-8?q?=E9=83=A8=E5=88=86=E6=95=B4=E7=90=86?= =?UTF-8?q?=E3=81=A8ts=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- App.js | 22 +++++++++--------- Apps.js | 8 +++---- MenuPage.js | 8 +++---- Top.js | 12 +++++----- lib/{HeaderConfig.js => HeaderConfig.ts} | 0 ...nDelayStatus.js => getTrainDelayStatus.ts} | 15 ++++++++---- lib/{getTrainType.js => getTrainType.ts} | 23 ++++++++++++++++++- lib/objectIsEmpty.js | 3 --- lib/objectIsEmpty.ts | 3 +++ ...rainDiagram.js => parseAllTrainDiagram.ts} | 2 +- lib/{stackOption.js => stackOption.ts} | 0 lib/{useInterval.js => useInterval.ts} | 16 ++++++------- storageControl.js | 2 +- 13 files changed, 71 insertions(+), 43 deletions(-) rename lib/{HeaderConfig.js => HeaderConfig.ts} (100%) rename lib/{getTrainDelayStatus.js => getTrainDelayStatus.ts} (52%) rename lib/{getTrainType.js => getTrainType.ts} (51%) delete mode 100644 lib/objectIsEmpty.js create mode 100644 lib/objectIsEmpty.ts rename lib/{parseAllTrainDiagram.js => parseAllTrainDiagram.ts} (83%) rename lib/{stackOption.js => stackOption.ts} (100%) rename lib/{useInterval.js => useInterval.ts} (76%) diff --git a/App.js b/App.js index 44d2de1..66f6254 100644 --- a/App.js +++ b/App.js @@ -1,21 +1,21 @@ import React, { useEffect } from "react"; import { Platform, UIManager } from "react-native"; import { GestureHandlerRootView } from "react-native-gesture-handler"; -import { AppContainer } from "./Apps.js"; -import { UpdateAsync } from "./UpdateAsync.js"; +import { AppContainer } from "./Apps"; +import { UpdateAsync } from "./UpdateAsync"; import { LogBox } from "react-native"; import { FavoriteStationProvider } from "./stateBox/useFavoriteStation"; -import { CurrentTrainProvider } from "./stateBox/useCurrentTrain.js"; -import { AreaInfoProvider } from "./stateBox/useAreaInfo.js"; -import { BusAndTrainDataProvider } from "./stateBox/useBusAndTrainData.js"; -import { AllTrainDiagramProvider } from "./stateBox/useAllTrainDiagram.js"; +import { CurrentTrainProvider } from "./stateBox/useCurrentTrain"; +import { AreaInfoProvider } from "./stateBox/useAreaInfo"; +import { BusAndTrainDataProvider } from "./stateBox/useBusAndTrainData"; +import { AllTrainDiagramProvider } from "./stateBox/useAllTrainDiagram"; import { SheetProvider } from "react-native-actions-sheet"; -import "./components/ActionSheetComponents/sheets.js"; -import { TrainDelayDataProvider } from "./stateBox/useTrainDelayData.js"; +import "./components/ActionSheetComponents/sheets"; +import { TrainDelayDataProvider } from "./stateBox/useTrainDelayData"; import { SafeAreaProvider } from "react-native-safe-area-context"; -import { DeviceOrientationChangeProvider } from "./stateBox/useDeviceOrientationChange.js"; -import { TrainMenuProvider } from "./stateBox/useTrainMenu.js"; -import { buildProvidersTree } from "./lib/providerTreeProvider.js"; +import { DeviceOrientationChangeProvider } from "./stateBox/useDeviceOrientationChange"; +import { TrainMenuProvider } from "./stateBox/useTrainMenu"; +import { buildProvidersTree } from "./lib/providerTreeProvider"; LogBox.ignoreLogs([ "ViewPropTypes will be removed", diff --git a/Apps.js b/Apps.js index 9f4a261..984e4f2 100644 --- a/Apps.js +++ b/Apps.js @@ -4,10 +4,10 @@ import { createBottomTabNavigator } from "@react-navigation/bottom-tabs"; import { Platform } from "react-native"; import TNDView from "./ndView"; import { initIcon } from "./lib/initIcon"; -import { Top } from "./Top.js"; -import { MenuPage } from "./MenuPage.js"; -import { useAreaInfo } from "./stateBox/useAreaInfo.js"; -import "./components/ActionSheetComponents/sheets.js"; +import { Top } from "./Top"; +import { MenuPage } from "./MenuPage"; +import { useAreaInfo } from "./stateBox/useAreaInfo"; +import "./components/ActionSheetComponents/sheets"; export function AppContainer() { const Tab = createBottomTabNavigator(); diff --git a/MenuPage.js b/MenuPage.js index f258916..886860a 100644 --- a/MenuPage.js +++ b/MenuPage.js @@ -9,10 +9,10 @@ import HowTo from "./howto"; import Menu from "./menu"; import Setting from "./components/Settings/settings"; import { useFavoriteStation } from "./stateBox/useFavoriteStation"; -import { optionData } from "./lib/stackOption.js"; -import CurrentTrainListView from "./components/CurrentTrainListView.js"; -import AllTrainDiagramView from "./components/AllTrainDiagramView.js"; -import { useCurrentTrain } from "./stateBox/useCurrentTrain.js"; +import { optionData } from "./lib/stackOption"; +import CurrentTrainListView from "./components/CurrentTrainListView"; +import AllTrainDiagramView from "./components/AllTrainDiagramView"; +import { useCurrentTrain } from "./stateBox/useCurrentTrain"; import { useNavigation } from "@react-navigation/native"; const Stack = createStackNavigator(); diff --git a/Top.js b/Top.js index b2bd3bf..65d389a 100644 --- a/Top.js +++ b/Top.js @@ -7,13 +7,13 @@ import { getStationList2 } from "./lib/getStationList2"; import Apps from "./components/Apps"; import TrainBase from "./components/trainbaseview"; import HowTo from "./howto"; -import News from "./components/news.js"; -import TrainMenu from "./components/trainMenu.js"; -import FavoriteList from "./components/FavoriteList.js"; -import { optionData } from "./lib/stackOption.js"; +import News from "./components/news"; +import TrainMenu from "./components/trainMenu"; +import FavoriteList from "./components/FavoriteList"; +import { optionData } from "./lib/stackOption"; import { useNavigation } from "@react-navigation/native"; -import { useCurrentTrain } from "./stateBox/useCurrentTrain.js"; -import { ASCore } from "./storageControl.js"; +import { useCurrentTrain } from "./stateBox/useCurrentTrain"; +import { ASCore } from "./storageControl"; import { useTrainMenu } from "./stateBox/useTrainMenu"; const Stack = createStackNavigator(); export const Top = ({ navigationRef }) => { diff --git a/lib/HeaderConfig.js b/lib/HeaderConfig.ts similarity index 100% rename from lib/HeaderConfig.js rename to lib/HeaderConfig.ts diff --git a/lib/getTrainDelayStatus.js b/lib/getTrainDelayStatus.ts similarity index 52% rename from lib/getTrainDelayStatus.js rename to lib/getTrainDelayStatus.ts index 350c52e..5dd722f 100644 --- a/lib/getTrainDelayStatus.js +++ b/lib/getTrainDelayStatus.ts @@ -1,5 +1,12 @@ -export const getTrainDelayStatus = (current, Station_JP) => { - if (!current) return () => {}; +type getTrainDelayStatus = ( + current: { delay: string; Pos: string }, + Station_JP: string +) => string; +export const getTrainDelayStatus: getTrainDelayStatus = ( + current, + Station_JP +) => { + if (!current) return ""; const delay = current.delay; switch (true) { case delay === "入線": @@ -8,9 +15,9 @@ export const getTrainDelayStatus = (current, Station_JP) => { } else { return "発車前"; } - case isNaN(delay): + case Number.isNaN(delay): return delay; - case delay === 0: + case delay === "0": return "定刻通り"; default: return delay + "分遅れ"; diff --git a/lib/getTrainType.js b/lib/getTrainType.ts similarity index 51% rename from lib/getTrainType.js rename to lib/getTrainType.ts index dce1c42..e63cec2 100644 --- a/lib/getTrainType.js +++ b/lib/getTrainType.ts @@ -1,4 +1,25 @@ -export const getTrainType = (nameString) => { +type nameString = + | "Rapid" + | "LTDEXP" + | "NightLTDEXP" + | "SPCL" + | "Normal" + | string; +type colorString = "aqua" | "red" | "blue" | "white"; +type trainTypeString = + | "快速" + | "特急" + | "寝台特急" + | "臨時" + | "普通列車" + | "その他"; +type trainTypeDataString = "rapid" | "express" | "normal"; +type getTrainType = (d: nameString) => { + color: colorString; + name: trainTypeString; + data: trainTypeDataString; +}; +export const getTrainType: getTrainType = (nameString) => { switch (nameString) { case "Rapid": return { color: "aqua", name: "快速", data: "rapid" }; diff --git a/lib/objectIsEmpty.js b/lib/objectIsEmpty.js deleted file mode 100644 index 6b25d53..0000000 --- a/lib/objectIsEmpty.js +++ /dev/null @@ -1,3 +0,0 @@ -export const objectIsEmpty = (obj) => { - return !Object.keys(obj).length; -}; diff --git a/lib/objectIsEmpty.ts b/lib/objectIsEmpty.ts new file mode 100644 index 0000000..81b3da3 --- /dev/null +++ b/lib/objectIsEmpty.ts @@ -0,0 +1,3 @@ +export const objectIsEmpty = (obj:object) => { + return !Object.keys(obj).length; +}; diff --git a/lib/parseAllTrainDiagram.js b/lib/parseAllTrainDiagram.ts similarity index 83% rename from lib/parseAllTrainDiagram.js rename to lib/parseAllTrainDiagram.ts index 1aefeb6..4fe63a3 100644 --- a/lib/parseAllTrainDiagram.js +++ b/lib/parseAllTrainDiagram.ts @@ -1,4 +1,4 @@ -export const parseAllTrainDiagram = (text) => { +export const parseAllTrainDiagram = (text:string) => { const val = text.replace("[\r\n", "").split(",\r\n"); let trainDiagram = {}; val.forEach((element) => { diff --git a/lib/stackOption.js b/lib/stackOption.ts similarity index 100% rename from lib/stackOption.js rename to lib/stackOption.ts diff --git a/lib/useInterval.js b/lib/useInterval.ts similarity index 76% rename from lib/useInterval.js rename to lib/useInterval.ts index a646862..ff3b3b2 100644 --- a/lib/useInterval.js +++ b/lib/useInterval.ts @@ -1,16 +1,16 @@ import { useEffect, useRef, useState } from "react"; -// type Control = { -// start: () => void; -// stop: () => void; -// }; +type Control = { + start: () => void; + stop: () => void; +}; -// type State = 'RUNNING' | 'STOPPED'; +type State = "RUNNING" | "STOPPED"; -// type Fn = () => void; +type Fn = () => void; -export const useInterval = (fn, interval, autostart = true) => { - const onUpdateRef = useRef(); +export const useInterval = (fn: Fn, interval: number, autostart = true) => { + const onUpdateRef = useRef(); const [state, setState] = useState("RUNNING"); const start = () => { setState("RUNNING"); diff --git a/storageControl.js b/storageControl.js index 31feacb..294f926 100644 --- a/storageControl.js +++ b/storageControl.js @@ -1,4 +1,4 @@ -import storage from "./storageConfig.js"; +import storage from "./storageConfig"; import * as Updates from "expo-updates"; export const AS = {