diff --git a/MenuPage.js b/MenuPage.js index 6f00ec3..5102368 100644 --- a/MenuPage.js +++ b/MenuPage.js @@ -84,11 +84,15 @@ export function MenuPage() { setFavoriteStation(returnData); } }) - .catch((d) => console.log(d)); + .catch((error) => { + if (__DEV__) { + console.warn('お気に入り駅の読み込みに失敗しました:', error); + } + }); }); return unsubscribe; - }, [navigation, mapHeight]); + }, [navigation, mapHeight, favoriteStation, setFavoriteStation]); return ( { width: width / 2, }} > - {width / 2} {leftContent} { return ( setActionSheetHorizonalScroll(true)} - //onScrollEndDrag={() => setActionSheetHorizonalScroll(false)} - //onScrollBeginDrag={() => console.log("onScrollBeginDrag")} style={{ flexDirection: "row", - //width: widthPercentageToDP("200%"), - // minHeight: 200, - //height: heightPercentageToDP("20%"), }} horizontal pagingEnabled diff --git a/components/ActionSheetComponents/EachTrainInfo/ShortHeader.js b/components/ActionSheetComponents/EachTrainInfo/ShortHeader.js index 1f68b85..3c474ab 100644 --- a/components/ActionSheetComponents/EachTrainInfo/ShortHeader.js +++ b/components/ActionSheetComponents/EachTrainInfo/ShortHeader.js @@ -11,15 +11,9 @@ export const ShortHeader = ({ }) => { return ( setActionSheetHorizonalScroll(true)} - //onScrollEndDrag={() => setActionSheetHorizonalScroll(false)} - //onScrollBeginDrag={() => console.log("onScrollBeginDrag")} style={{ flexDirection: "row", flex: 1, - //width: widthPercentageToDP("200%"), - // minHeight: 200, - //height: heightPercentageToDP("20%"), }} horizontal pagingEnabled diff --git a/components/ActionSheetComponents/StationDeteilView.js b/components/ActionSheetComponents/StationDeteilView.js index 3cfffd2..222b728 100644 --- a/components/ActionSheetComponents/StationDeteilView.js +++ b/components/ActionSheetComponents/StationDeteilView.js @@ -36,7 +36,7 @@ export const StationDeteilView = (props) => { setTrainBus(); } setTrainBus(data[0]); - }, [currentStation]); + }, [currentStation, busAndTrainData]); const [usePDFView, setUsePDFView] = useState(undefined); useEffect(() => { diff --git a/components/Menu/Carousel/CarouselBox.tsx b/components/Menu/Carousel/CarouselBox.tsx index 0b048fc..240c215 100644 --- a/components/Menu/Carousel/CarouselBox.tsx +++ b/components/Menu/Carousel/CarouselBox.tsx @@ -104,7 +104,7 @@ export const CarouselBox = ({ }} > - {!!isSearchMode ? "路線検索モードです。上に並んでいる路線を選んでみましょう!" :stationListMode == "position" + {!!isSearchMode ? "路線検索モードです。入力欄に駅名やナンバリングを入力したり、上に並んでいる路線を選んでみましょう!" :stationListMode == "position" ? "現在地の近くに駅がありません。" : "お気に入りリストがありません。お気に入りの駅を追加しよう!"} diff --git a/components/Menu/Carousel/CarouselTypeChanger.tsx b/components/Menu/Carousel/CarouselTypeChanger.tsx index 57266ae..7ae5b7e 100644 --- a/components/Menu/Carousel/CarouselTypeChanger.tsx +++ b/components/Menu/Carousel/CarouselTypeChanger.tsx @@ -1,9 +1,6 @@ import { AS } from "@/storageControl"; -import { useBottomTabBarHeight } from "@react-navigation/bottom-tabs"; -import React, { useEffect, useRef } from "react"; -import { useWindowDimensions } from "react-native"; +import React from "react"; import { - View, TouchableOpacity, Text, LayoutAnimation, @@ -16,8 +13,6 @@ import { SearchUnitBox } from "@/components/Menu/RailScope/SearchUnitBox"; export const CarouselTypeChanger = ({ locationStatus, position, - mapsRef, - scrollRef, stationListMode, setStationListMode, setSelectedCurrentStation, @@ -25,9 +20,9 @@ export const CarouselTypeChanger = ({ setMapMode, isSearchMode, setisSearchMode, + input, + setInput, }) => { - const tabBarHeight = useBottomTabBarHeight(); - const { height, width } = useWindowDimensions(); const returnToDefaultMode = () => { LayoutAnimation.configureNext({ duration: 300, @@ -44,8 +39,9 @@ export const CarouselTypeChanger = ({ }; return ( { +export const SearchUnitBox = ({ + isSearchMode, + setisSearchMode, + input, + setInput, +}) => { const { height, width } = useWindowDimensions(); return ( <> @@ -39,16 +44,26 @@ export const SearchUnitBox = ({ isSearchMode, setisSearchMode }) => { > {!isSearchMode && } {!!isSearchMode && ( - - + - { - LayoutAnimation.configureNext({ - duration: 100, - update: { type: "easeInEaseOut", springDamping: 0.6 }, - }); - setisSearchMode(false); - }}> + { + LayoutAnimation.configureNext({ + duration: 100, + update: { type: "easeInEaseOut", springDamping: 0.6 }, + }); + setisSearchMode(false); + }} + > { style={{ marginRight: 10 }} /> - {Object.keys(lineList_LineWebID).map((d) => ( - { - const id = stationIDPair[lineList_LineWebID[d]]; - const s = isSearchMode == id ? undefined : id; - if (!s) return; - setisSearchMode(s); - }} - key={stationIDPair[lineList_LineWebID[d]]} - > - + {}} + onChange={(ret) => setInput(ret.nativeEvent.text)} + value={input} + style={{ flex: 1 }} + /> + {input && ( + setInput("") } + style={{ + padding: 3, + borderRadius: 15, + backgroundColor: "lightgray", + }} > - {stationIDPair[lineList_LineWebID[d]]} - - - ))} - {/* - setKeyBoardVisible(true)} - onEndEditing={() => {}} - //onChange={(ret) => setInput(ret.nativeEvent.text)} - //value={input} - style={{ flex: 1 }} - /> - */} + + + )} + + {!input && ( + + {Object.keys(lineList_LineWebID).map((d) => ( + { + const id = stationIDPair[lineList_LineWebID[d]]; + const s = isSearchMode == id ? undefined : id; + if (!s) return; + setisSearchMode(s); + }} + key={stationIDPair[lineList_LineWebID[d]]} + > + + {stationIDPair[lineList_LineWebID[d]]} + + + ))} + + )} )} diff --git a/components/Settings/SettingTopPage.js b/components/Settings/SettingTopPage.js index 52e40f7..dc9616d 100644 --- a/components/Settings/SettingTopPage.js +++ b/components/Settings/SettingTopPage.js @@ -17,7 +17,7 @@ import { SwitchArea } from "../atom/SwitchArea"; import { useNotification } from "../../stateBox/useNotifications"; import { SheetHeaderItem } from "@/components/atom/SheetHeaderItem"; -const versionCode = "6.1.0"; // Update this version code as needed +const versionCode = "6.1.1"; // Update this version code as needed export const SettingTopPage = ({ testNFC, diff --git a/components/Settings/settings.js b/components/Settings/settings.js index 7c8680e..e4c2b58 100644 --- a/components/Settings/settings.js +++ b/components/Settings/settings.js @@ -14,9 +14,7 @@ import { createStackNavigator } from "@react-navigation/stack"; import { TransitionPresets } from "@react-navigation/stack"; //import * as ExpoFelicaReader from "../../modules/expo-felica-reader/src"; import * as Updates from "expo-updates"; -import StatusbarDetect from "../../StatusbarDetect"; import { AS } from "../../storageControl"; -var Status = StatusbarDetect(); import { Switch } from "react-native-elements"; import AutoHeightImage from "react-native-auto-height-image"; import { SettingTopPage } from "./SettingTopPage"; diff --git a/components/trainbaseview.js b/components/trainbaseview.js index ca62447..39f7631 100644 --- a/components/trainbaseview.js +++ b/components/trainbaseview.js @@ -29,7 +29,9 @@ export default function TrainBase({ route }) { "https://train.jr-shikoku.co.jp", "https://train.jr-shikoku.co.jp/sp.html", ]} - onMessage={(event) => {}} + onMessage={() => { + // 必要に応じてメッセージ処理を実装 + }} mixedContentMode={"compatibility"} javaScriptEnabled injectedJavaScript={jss} diff --git a/index.js b/index.js index 00631d6..dc98efe 100644 --- a/index.js +++ b/index.js @@ -1,4 +1,3 @@ -import 'babel-polyfill'; import { registerRootComponent } from "expo"; import { registerWidgetTaskHandler } from "react-native-android-widget"; import { Platform } from "react-native"; diff --git a/lib/eachTrainInfoCoreLib/findReversalPoints.js b/lib/eachTrainInfoCoreLib/findReversalPoints.js index 5981d75..7e4b7f6 100644 --- a/lib/eachTrainInfoCoreLib/findReversalPoints.js +++ b/lib/eachTrainInfoCoreLib/findReversalPoints.js @@ -46,6 +46,6 @@ export const findReversalPoints = (array, stopStationIDList) => { return allThroughStation; } } catch (e) { - console.log(e); + // エラーが発生した場合は空の配列を返す } }; diff --git a/lib/webViewInjectjavascript.ts b/lib/webViewInjectjavascript.ts index c0484d7..088bd84 100644 --- a/lib/webViewInjectjavascript.ts +++ b/lib/webViewInjectjavascript.ts @@ -73,7 +73,8 @@ export const injectJavascriptData: InjectJavascriptData = ( const trainIcon = ` const setStationIcon = (setIconElem,img,hasProblem) =>{ const position = setIconElem.getAttribute("style").includes("left"); - setIconElem.insertAdjacentHTML('beforebegin', ""); + const marginData = ${uiSetting === "tokyo" ? `"5px"`: `"2px"`} + setIconElem.insertAdjacentHTML('beforebegin', ""); setIconElem.remove(); } @@ -1052,7 +1053,7 @@ export const injectJavascriptData: InjectJavascriptData = ( return undefined; } } - const nameReplace = (列車名データ,列番データ,行き先情報,hasProblem) =>{ + const nameReplace = (列車名データ,列番データ,行き先情報,hasProblem,isLeft) =>{ let isWanman = false; let trainName = ""; let trainType = ""; @@ -1344,14 +1345,9 @@ export const injectJavascriptData: InjectJavascriptData = ( } const gradient = getColors.length > 1 ? "linear-gradient(130deg, " + getColors[0] + " 0%, "+ getColors[0]+"50%, "+ getColors[1]+"50%, " + getColors[1] + " 100%)" : getColors[0]; - 行き先情報.insertAdjacentHTML('beforebegin', "

" + TrainNumber + (JRF ? "":"レ") + "

"); - 行き先情報.insertAdjacentHTML('beforebegin', "

" + (isWanman ? "ワンマン " : "") + "

"); - 行き先情報.insertAdjacentHTML('beforebegin', "

" + viaData + "

"); - 行き先情報.insertAdjacentHTML('beforebegin', "

" + trainName + "

"); - 行き先情報.insertAdjacentHTML('beforebegin', "

" + (ToData ? ToData + "行" : ToData) + "

"); - 行き先情報.insertAdjacentHTML('beforebegin', "

" + trainType + "

"); - 行き先情報.insertAdjacentHTML('beforebegin', "

" + (hasProblem ? "‼️停止中‼️" : "") + "

"); - `: ` + + 行き先情報.insertAdjacentHTML('beforebegin', "

" + TrainNumber + (JRF ? "":"レ") + "

" + (isWanman ? "ワンマン " : "") + "

" + viaData + "

" + trainName + "

" + (ToData ? ToData + "行" : ToData) + "

" + trainType + "

" + (hasProblem ? "‼️停止中‼️" : "") + "

"); +`: ` 行き先情報.insertAdjacentHTML('beforebegin', "

" + returnText1 + "

"); 行き先情報.insertAdjacentHTML('beforebegin', "

" + (ToData ? ToData + "行 " : ToData) + "

" + TrainNumber + (JRF ? "":"レ") + "

"); 行き先情報.insertAdjacentHTML('beforebegin', "

" + (hasProblem ? "‼️停止中‼️" : "") + "

"); @@ -1373,7 +1369,7 @@ const setNewTrainItem = (element,hasProblem)=>{ }else if(JRFTemp){ element.style.borderColor = 'rgba(0, 134, 158, 0.8)'; }else{ - element.style.borderColor = 'white'; + element.style.borderColor = 'black'; } element.style.borderWidth = '2px'; element.style.borderStyle = 'solid'; @@ -1410,12 +1406,12 @@ const setNewTrainItem = (element,hasProblem)=>{ element.addEventListener('touchend', () => element.style.transform = 'scale(1)'); if(element.getAttribute("style").includes("left")){ // borderを使って五角形を生成 下り - element.style.borderRadius = '10% 10% 40% 40%'; + element.style.borderRadius = '30px 30px 120px 120px'; element.style.flexDirection = 'column-reverse'; } else if(element.getAttribute("style").includes("right")){ // borderを使って五角形を生成 上り - element.style.borderRadius = '40% 40% 10% 10%'; + element.style.borderRadius = '120px 120px 30px 30px'; element.style.flexDirection = 'column'; } @@ -1425,57 +1421,70 @@ const setStrings = () =>{ try { const elements = document.querySelectorAll('#disp > div > div > div[onclick]'); const setNewTrainItemUI = ()=>{ - const elementBaseBase = document.querySelectorAll('[id^="stationBlock"]'); - elementBaseBase.forEach(e=>{ //それぞれの駅ブロック横一列 + const aaa = (x2,pos) => { + x2.style.display = 'flex'; + x2.style.flexDirection = 'row'; + if(pos == "right"){ + x2.style.alignItems = 'flex-start'; + x2.style.justifyContent = 'flex-start'; + }else if(pos == "left"){ + x2.style.alignItems = 'flex-end'; + x2.style.justifyContent = 'flex-end'; + } + x2.style.flexWrap = 'wrap'; + x2.style.width = '100%'; + x2.style.height = "100%"; + + } + const aaa2 = (x2) => { + x2.style.display = 'flex'; + x2.style.flexDirection = 'row'; + x2.style.alignItems = 'center'; + x2.style.justifyContent = 'center'; + x2.style.flexWrap = 'wrap'; + x2.style.width = '100%'; + x2.style.height = "unset"; + const x3 = x2.querySelectorAll(":scope > div"); + x3.forEach(i=>{ + i.style.position = "unset"; + i.style.display = "flex"; + i.style.flexDirection = "column"; + i.style.flex = "1"; + i.style.backgroundColor = "#00000000"; + i.querySelectorAll(":scope > *").forEach(j=>{ + j.style.width = "100%"; + j.style.textAlign = "center"; + j.style.margin = "5px"; + j.style.padding = "5px"; + }); + }); + } + const layoutBase = (e)=>{ e.style.display = 'flex'; e.style.height = "unset"; e.style.flexDirection = 'row'; - //e.style.alignItems = "left"; e.style.justifyContent = 'center'; - const x = e.querySelectorAll(':scope > div');//配下のdiv要素を選択 - //x[0] 登りブロック x[2] 下りブロック x[1] 駅ブロック - const aaa = (x2,pos) => { - x2.style.display = 'flex'; - x2.style.flexDirection = 'row'; - if(pos == "right"){ - x2.style.alignItems = 'flex-start'; - x2.style.justifyContent = 'flex-start'; - }else if(pos == "left"){ - x2.style.alignItems = 'flex-end'; - x2.style.justifyContent = 'flex-end'; - } - x2.style.flexWrap = 'wrap'; - x2.style.width = '100%'; - x2.style.height = "100%"; - - } - const aaa2 = (x2) => { - x2.style.display = 'flex'; - x2.style.flexDirection = 'row'; - x2.style.alignItems = 'center'; - x2.style.justifyContent = 'center'; - x2.style.flexWrap = 'wrap'; - x2.style.width = '100%'; - x2.style.height = "unset"; - const x3 = x2.querySelectorAll(":scope > div"); - x3.forEach(i=>{ - i.style.position = "unset"; - i.style.display = "flex"; - i.style.flexDirection = "column"; - i.style.flex = "1"; - i.style.backgroundColor = "#00000000"; - i.querySelectorAll(":scope > *").forEach(j=>{ - j.style.width = "100%"; - j.style.textAlign = "center"; - j.style.margin = "5px"; - j.style.padding = "5px"; - }); - }); - } + } + const elementBaseBase = document.querySelectorAll('[id^="stationBlock"]'); + const elementNotBase = document.querySelectorAll('#disp > [id*="~"]'); + elementNotBase.forEach(e=>{ + layoutBase(e); + const x = e.querySelectorAll(':scope > [id^="Up"], :scope > [id^="Id"], :scope > [id^="Down"]');//配下のdiv要素を選択 + aaa(x[0],"left"); + aaa2(x[1]); + aaa(x[2],"right"); + const upTrainCrossBarElement = e.querySelector(':scope > [id="upTrainCrossBar"]'); + if (upTrainCrossBarElement) { + upTrainCrossBarElement.style.left = '0px'; + } + }); + elementBaseBase.forEach(e=>{ //それぞれの駅ブロック横一列 + layoutBase(e); + const x = e.querySelectorAll(':scope > div');//配下のdiv要素を選択 + //x[0] 登りブロック x[2] 下りブロック x[1] 駅ブロック aaa(x[0],"left"); aaa2(x[1]); aaa(x[2],"right"); - }); } @@ -1485,6 +1494,31 @@ const setStrings = () =>{ element.setAttribute('offclick',element.getAttribute('onclick')) var 行き先情報 = element.getElementsByTagName("p")[0]; + ${uiSetting === "tokyo" ? ` + element.querySelector("img").insertAdjacentHTML('beforebegin',"
"); + element.querySelector("img").insertAdjacentHTML('afterend',"
"); + element.querySelector("img").style.padding = '5px'; + element.style.position = 'relative'; + if(element.getElementsByTagName("p")[1] != undefined){ + element.getElementsByTagName("p")[1].innerText = element.getElementsByTagName("p")[1].innerText.replace("(","").replace(")",""); + element.getElementsByTagName("p")[1].style.position = 'absolute'; + element.getElementsByTagName("p")[1].style.backgroundColor = 'red'; + element.getElementsByTagName("p")[1].style.color = 'white'; + element.getElementsByTagName("p")[1].style.fontSize = '10px'; + element.getElementsByTagName("p")[1].style.fontWeight = 'bold'; + element.getElementsByTagName("p")[1].style.padding = '2px'; + element.getElementsByTagName("p")[1].style.textAlign = 'center'; + element.getElementsByTagName("p")[1].style.borderRadius = '10px'; + if(element.getAttribute("style").includes("left")){ + element.getElementsByTagName("p")[1].style.bottom = '0px'; + element.getElementsByTagName("p")[1].style.left = '0px'; + } + else if(element.getAttribute("style").includes("right")){ + element.getElementsByTagName("p")[1].style.right = '0px'; + element.getElementsByTagName("p")[1].style.top = '0px'; + } + }`: ``} + const isLeft = element.getAttribute("style").includes("left"); var 列番データ = element.getAttribute('offclick').split('"')[1]; var 列車名データ = element.getAttribute('offclick').split('"')[3]; const trainData = trainPositionDatas.filter(e=>!(e.Pos && e.Pos.includes("予告窓"))).find(e => e.TrainNum == 列番データ); @@ -1509,7 +1543,7 @@ const setStrings = () =>{ } } ` : ""} - nameReplace(列車名データ,列番データ,行き先情報,hasProblem); + nameReplace(列車名データ,列番データ,行き先情報,hasProblem,isLeft); ${uiSetting === "tokyo" ? `setNewTrainItem(element,hasProblem);`: ``} } try{ diff --git a/menu.js b/menu.js index bc51c70..d8deea1 100644 --- a/menu.js +++ b/menu.js @@ -34,7 +34,6 @@ import { useUserPosition } from "./stateBox/useUserPosition"; import { AS } from "./storageControl"; import { lineList_LineWebID } from "./lib/getStationList"; import { Ionicons } from "@expo/vector-icons"; -import { SearchUnitBox } from "./components/Menu/RailScope/SearchUnitBox"; configureReanimatedLogger({ level: ReanimatedLogLevel.error, // Set the log level to error strict: true, // Reanimated runs in strict mode by default @@ -43,7 +42,7 @@ export default function Menu(props) { const { scrollRef, mapHeight, MapFullHeight, mapMode, setMapMode } = props; const { navigate, addListener, isFocused } = useNavigation(); const { favoriteStation } = useFavoriteStation(); - const { originalStationList } = useStationList(); + const { originalStationList, getStationDataFromNameBase } = useStationList(); const { height, width } = useWindowDimensions(); const { bottom, left, right, top } = useSafeAreaInsets(); const tabBarHeight = useBottomTabBarHeight(); @@ -173,24 +172,35 @@ export default function Menu(props) { const [listUpStation, setListUpStation] = useState([]); const [isSearchMode, setisSearchMode] = useState(false); + const [input, setInput] = React.useState(""); useLayoutEffect(() => { if (!!isSearchMode) { const returnData = []; - Object.keys(lineList_LineWebID).forEach((d, indexBase) => { - originalStationList[d].forEach((D, index) => { - if ( - isSearchMode && - isSearchMode != stationIDPair[lineList_LineWebID[d]] - ) - return; - const latlng = [D.lat, D.lng]; - if (latlng.length == 0) return null; - if (D.StationNumber == undefined) { - return null; - } - returnData.push([D]); + if (!input || input == "") { + Object.keys(lineList_LineWebID).forEach((d, indexBase) => { + originalStationList[d].forEach((D, index) => { + if ( + isSearchMode && + isSearchMode != stationIDPair[lineList_LineWebID[d]] + ) + return; + const latlng = [D.lat, D.lng]; + if (latlng.length == 0) return null; + if (D.StationNumber == undefined) { + return null; + } + returnData.push([D]); + }); }); - }); + } else { + const hoge = getStationDataFromNameBase(input); + hoge.forEach((d, index, array) => { + const stationName = d.Station_JP; + if (returnData.findIndex((d1) => d1[0].Station_JP == stationName) != -1) + return; + returnData.push(array.filter((d2) => d2.Station_JP == stationName)); + }); + } if (JSON.stringify(returnData) == JSON.stringify(listUpStation)) return; setListUpStation(returnData); } else if (stationListMode == "position") { @@ -275,9 +285,9 @@ export default function Menu(props) { snapToEnd={false} decelerationRate={"normal"} snapToOffsets={[mapHeight - 80]} - contentContainerStyle={{ - position: "relative", - }} + // contentContainerStyle={{ + // position: "relative", + // }} onScrollBeginDrag={onScrollBeginDrag} onScrollEndDrag={(e) => { if (e.nativeEvent.contentOffset.y < mapHeight - 80) { @@ -363,8 +373,6 @@ export default function Menu(props) { {...{ locationStatus, position, - mapsRef, - scrollRef, stationListMode, setStationListMode, setSelectedCurrentStation: setListIndex, @@ -372,6 +380,8 @@ export default function Menu(props) { setMapMode, isSearchMode, setisSearchMode, + input, + setInput, }} /> )} @@ -387,7 +397,7 @@ export default function Menu(props) { listIndex, navigate, stationListMode, - isSearchMode + isSearchMode, }} /> {listUpStation[listIndex] && ( @@ -409,7 +419,6 @@ export default function Menu(props) { {...{ locationStatus, position, - mapsRef, stationListMode, setStationListMode, setSelectedCurrentStation: setListIndex, @@ -417,6 +426,8 @@ export default function Menu(props) { setMapMode, isSearchMode, setisSearchMode, + input, + setInput, }} /> )} diff --git a/ndView.tsx b/ndView.tsx index ef2d1ad..fa2ac7e 100644 --- a/ndView.tsx +++ b/ndView.tsx @@ -119,8 +119,10 @@ setInterval(() => { javaScriptEnabled={true} injectedJavaScript={jsa} pullToRefreshEnabled - onError={() => this.webView?.reload()} - onMessage={()=>{}} + onError={() => webview.current?.reload()} + onMessage={() => { + // 必要に応じてメッセージ処理を実装 + }} /> webview.current.reload()} diff --git a/package.json b/package.json index a5f8cbb..a1145ee 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "android": "expo start --android", "ios": "expo start --ios", "eject": "expo eject", - "pushWeb":"npx expo export -p web && netlify deploy --dir dist --prod", + "pushWeb": "npx expo export -p web && netlify deploy --dir dist --prod", "checkDiagram": "bash ./check.sh" }, "dependencies": { diff --git a/stateBox/useCurrentTrain.js b/stateBox/useCurrentTrain.js index 15f6b44..fed4dc3 100644 --- a/stateBox/useCurrentTrain.js +++ b/stateBox/useCurrentTrain.js @@ -62,7 +62,7 @@ export const CurrentTrainProvider = ({ children }) => { setCurrentTrainLoading("success"); }) .catch(() => { - console.log("えらー"); + // エラー時の処理 setCurrentTrainLoading("error"); }); }); diff --git a/stateBox/useFavoriteStation.tsx b/stateBox/useFavoriteStation.tsx index d4f5893..9ec7668 100644 --- a/stateBox/useFavoriteStation.tsx +++ b/stateBox/useFavoriteStation.tsx @@ -42,7 +42,12 @@ export const FavoriteStationProvider:FC = ({ children }) => { const returnData = JSON.parse(d); setFavoriteStation(returnData); }) - .catch((d) => console.log(d)); + .catch((error) => { + // エラーログを記録(開発時のみ) + if (__DEV__) { + console.warn('お気に入り駅の読み込みに失敗しました:', error); + } + }); }, []); return ( = ({ children }) => { notificationListener.current = Notifications.addNotificationReceivedListener((notification) => { setNotification(notification); - }); - - responseListener.current = - Notifications.addNotificationResponseReceivedListener((response) => { - console.log(response); - }); + }); responseListener.current = + Notifications.addNotificationResponseReceivedListener((response) => { + // 通知レスポンスの処理 + }); return () => { notificationListener.current && diff --git a/stateBox/useStationList.tsx b/stateBox/useStationList.tsx index 7073735..73219b2 100644 --- a/stateBox/useStationList.tsx +++ b/stateBox/useStationList.tsx @@ -16,6 +16,7 @@ type initialStateType = { setOriginalStationList: React.Dispatch>; getStationDataFromName: (id: string) => any[]; getStationDataFromId: (id: string) => any[]; + getStationDataFromNameBase: (name: string) => any[]; stationList: any[]; getInjectJavascriptAddress: (StationNumber: string) => string; }; @@ -24,6 +25,7 @@ const initialState = { setOriginalStationList: () => {}, getStationDataFromName: () => [], getStationDataFromId: () => [], + getStationDataFromNameBase: () => [], stationList: [], getInjectJavascriptAddress: (StationNumber: string) => "", }; @@ -66,6 +68,23 @@ export const StationListProvider: FC = ({ children }) => { }); return returnArray; }; + + const getStationDataFromNameBase: (name: string) => any[] = (name) => { + const returnArray = []; + Object.keys(originalStationList).forEach((key) => { + originalStationList[key].forEach((station) => { + if (!station.StationNumber) return; + if (typeof station.StationNumber === "string" && station.StationNumber.includes(name)) { + if (!!station.jslodApi) returnArray.push(station); + } + else if (typeof station.Station_JP === "string" && station.Station_JP.includes(name)) { + if (!!station.jslodApi) returnArray.push(station); + } + }); + }); + return returnArray; + }; + const [stationList, setStationList] = useState([[]]); useEffect(() => { if (originalStationList.length === 0) return; @@ -113,6 +132,7 @@ export const StationListProvider: FC = ({ children }) => { setOriginalStationList, getStationDataFromName, getStationDataFromId, + getStationDataFromNameBase, stationList, getInjectJavascriptAddress, }} diff --git a/tsconfig.json b/tsconfig.json index 7c1a90a..7b12465 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -2,11 +2,11 @@ "compilerOptions": { "plugins": [ { - "@/*": ["./*"] //追加 + "@/*": ["./*"] } ], "paths": { - "@/*": ["./*"] //修正 + "@/*": ["./*"] } }, "extends": "expo/tsconfig.base"