fix: バックグラウンドでのデータ取得を継続し、列車追跡の終了条件をフォアグラウンドに依存させるよう修正
This commit is contained in:
2
.gitignore
vendored
2
.gitignore
vendored
@@ -58,3 +58,5 @@ android/
|
||||
ios/
|
||||
!modules/**/ios/
|
||||
*.ipa
|
||||
*.apk
|
||||
*.aab
|
||||
@@ -13,6 +13,7 @@ import {
|
||||
ScrollView,
|
||||
Platform,
|
||||
PermissionsAndroid,
|
||||
AppState,
|
||||
} from "react-native";
|
||||
import { getTrainType } from "@/lib/getTrainType";
|
||||
import { trainDataType, trainPosition } from "@/lib/trainPositionTextArray";
|
||||
@@ -70,8 +71,11 @@ export const FixedTrain: FC<props> = ({ trainID }) => {
|
||||
if (stationData) {
|
||||
setTrain(stationData);
|
||||
} else {
|
||||
alert("追跡していた列車が消えました。追跡を終了します。");
|
||||
setFixedPosition({ type: null, value: null });
|
||||
// バックグラウンドでは一時的にデータが消えることがある→フォアグラウンド時のみ終了
|
||||
if (AppState.currentState === "active") {
|
||||
alert("追跡していた列車が消えました。追跡を終了します。");
|
||||
setFixedPosition({ type: null, value: null });
|
||||
}
|
||||
}
|
||||
}, [trainID, currentTrain]);
|
||||
|
||||
@@ -212,8 +216,15 @@ export const FixedTrain: FC<props> = ({ trainID }) => {
|
||||
|
||||
const delayTime = train?.delay == "入線" ? 0 : train?.delay;
|
||||
let additionalSkipCount = 0;
|
||||
// 2駅間走行中の場合はposition[1](向かっている駅)をstopStationIDListから直接探してサーチ開始
|
||||
const searchStart = currentPosition.length === 2
|
||||
? (() => {
|
||||
const toIdx = stopStationIDList.findIndex(d => d.includes(currentPosition[1]));
|
||||
return toIdx >= 0 ? toIdx : searchCountFirst;
|
||||
})()
|
||||
: searchCountFirst;
|
||||
for (
|
||||
let searchCount = searchCountFirst;
|
||||
let searchCount = searchStart;
|
||||
searchCount < points.length;
|
||||
searchCount++
|
||||
) {
|
||||
|
||||
@@ -83,7 +83,7 @@ export const AllTrainDiagramProvider: FC<Props> = ({ children }) => {
|
||||
useEffect(() => {
|
||||
getTrainDiagram();
|
||||
}, []);
|
||||
useInterval(getTrainDiagram, 30000); //30秒毎に全在線列車取得
|
||||
useInterval(getTrainDiagram, 30000, true, true); //30秒毎に全在線列車取得(バックグラウンドでも継続)
|
||||
|
||||
const getCustomTrainData = () => {
|
||||
fetch("https://jr-shikoku-backend-api-v1.haruk.in/train-data")
|
||||
@@ -100,7 +100,7 @@ export const AllTrainDiagramProvider: FC<Props> = ({ children }) => {
|
||||
// カスタム列車データの取得
|
||||
getCustomTrainData();
|
||||
}, []);
|
||||
useInterval(getCustomTrainData, 30000); // 30秒毎にカスタム列車データ取得
|
||||
useInterval(getCustomTrainData, 30000, true, true); // 30秒毎にカスタム列車データ取得(バックグラウンドでも継続)
|
||||
|
||||
const [todayOperation, setTodayOperation] = useState<OperationLogs[]>([]); // 本日の運行情報
|
||||
const getTodayOperation = () => {
|
||||
@@ -122,7 +122,7 @@ export const AllTrainDiagramProvider: FC<Props> = ({ children }) => {
|
||||
// カスタム列車データの取得
|
||||
getTodayOperation();
|
||||
}, []);
|
||||
useInterval(getTodayOperation, 30000); // 30秒毎にカスタム列車データ取得
|
||||
useInterval(getTodayOperation, 30000, true, true); // 30秒毎にカスタム列車データ取得(バックグラウンドでも継続)
|
||||
|
||||
const getTodayOperationByTrainId = (train_id: string) => {
|
||||
const returnData: OperationLogs[] = [];
|
||||
|
||||
Reference in New Issue
Block a user