fix(ios-reported-bug): app only displayed the splash screen after enabling access to location

This commit is contained in:
devthejo 2025-05-16 10:13:31 +02:00
parent 2ba8a37ed0
commit 2e35c41e0f
3 changed files with 19 additions and 3 deletions

View file

@ -2,7 +2,11 @@ import { useEffect, useRef, useState } from "react";
import { createLogger } from "~/lib/logger";
import { BACKGROUND_SCOPES } from "~/lib/logger/scopes";
import { usePermissionWizardState, usePermissionsState } from "~/stores";
import {
usePermissionWizardState,
usePermissionsState,
useTreeState,
} from "~/stores";
import trackLocation from "~/location/trackLocation";
@ -12,6 +16,8 @@ const locationLogger = createLogger({
});
export default function useTrackLocation() {
const { splashScreenHidden } = useTreeState(["splashScreenHidden"]);
const { currentStep, completed } = usePermissionWizardState([
"completed",
"currentStep",
@ -34,7 +40,8 @@ export default function useTrackLocation() {
if (
locationBackground &&
motion &&
(currentStep === "tracking" || currentStep === "success" || completed)
(currentStep === "tracking" || currentStep === "success" || completed) &&
splashScreenHidden
) {
locationLogger.info("Enabling location tracking", {
step: currentStep,
@ -48,7 +55,7 @@ export default function useTrackLocation() {
step: currentStep,
});
}
}, [locationBackground, motion, currentStep, completed]);
}, [locationBackground, motion, currentStep, completed, splashScreenHidden]);
useEffect(() => {
if (trackLocationEnabled) {

View file

@ -9,6 +9,8 @@ import LayoutProviders from "~/layout/LayoutProviders";
import loadRessources from "~/layout/loadRessources";
import useMount from "~/hooks/useMount";
import { treeActions } from "~/stores";
SplashScreen.preventAutoHideAsync();
export default function AppView() {
@ -30,6 +32,7 @@ export default function AppView() {
const onLayoutRootView = useCallback(async () => {
if (appIsReady) {
await SplashScreen.hideAsync();
treeActions.splashScreenHidden();
}
}, [appIsReady]);

View file

@ -49,15 +49,21 @@ export default createAtom(({ merge, getActions }) => {
merge({ suspend: true });
};
const splashScreenHidden = () => {
merge({ splashScreenHidden: true });
};
return {
default: {
triggerReload: false,
suspend: false,
splashScreenHidden: false,
},
actions: {
triggerReload,
suspendTree,
onReload,
splashScreenHidden,
},
};
});