diff --git a/lstMobile/src/hooks/useDeviceCheck.tsx b/lstMobile/src/hooks/useDeviceCheck.tsx index 457e1c5..92b8cbe 100644 --- a/lstMobile/src/hooks/useDeviceCheck.tsx +++ b/lstMobile/src/hooks/useDeviceCheck.tsx @@ -19,7 +19,11 @@ export default function useDeviceLock() { nextAppState === "background" || nextAppState === "inactive"; if (wasActive && isNowInactive) { - useMobileAuthStore.getState().lock(); + const auth = useMobileAuthStore.getState(); + + if (auth.shouldLockForIdle()) { + auth.lock(); + } } appStateRef.current = nextAppState; diff --git a/lstMobile/src/lib/versionValidation.ts b/lstMobile/src/lib/versionValidation.ts index 294bd49..7e2ae57 100644 --- a/lstMobile/src/lib/versionValidation.ts +++ b/lstMobile/src/lib/versionValidation.ts @@ -1,43 +1,73 @@ - +import axios from "axios"; +import { useAppStore } from "../hooks/useAppStore"; +import { useServerStore } from "../hooks/useServerCheck"; export type ServerVersionInfo = { - packageName: string; - versionName: string; - versionCode: number; - minSupportedVersionCode: number; - fileName: string; + packageName: string; + versionName: string; + versionCode: number; + minSupportedVersionCode: number; + fileName: string; }; export type StartupStatus = - | { state: "checking" } - | { state: "needs-config" } - | { state: "offline" } - | { state: "blocked"; reason: string; server: ServerVersionInfo } - | { state: "warning"; message: string; server: ServerVersionInfo } - | { state: "ready"; server: ServerVersionInfo | null }; + | { state: "checking" } + | { state: "needs-config" } + | { state: "offline" } + | { state: "blocked"; reason: string; server: ServerVersionInfo } + | { state: "warning"; message: string; server: ServerVersionInfo } + | { state: "ready"; server: ServerVersionInfo | null }; export function evaluateVersion( - appBuildCode: number, - server: ServerVersionInfo + appBuildCode: number, + server: ServerVersionInfo, ): StartupStatus { - if (appBuildCode < server.minSupportedVersionCode) { - return { - state: "blocked", - reason: "This scanner app is too old and must be updated before use.", - server, - }; - } + if (appBuildCode < server.minSupportedVersionCode) { + return { + state: "blocked", + reason: "This scanner app is too old and must be updated before use.", + server, + }; + } - if (appBuildCode !== server.versionCode) { - return { - state: "warning", - message: `A newer version is available. Installed build: ${appBuildCode}, latest build: ${server.versionCode}.`, - server, - }; - } + if (appBuildCode !== server.versionCode) { + return { + state: "warning", + message: `A newer version is available. Installed build: ${appBuildCode}, latest build: ${server.versionCode}.`, + server, + }; + } - return { - state: "ready", - server, - }; -} \ No newline at end of file + return { + state: "ready", + server, + }; +} + +export const versionCheck = async () => { + const { setServerVersion } = useServerStore.getState(); + const { serverPort, serverIp } = useAppStore.getState(); + + const port = parseInt(serverPort || "0", 10) >= 50000 ? "3000" : serverPort; + + try { + const res = await axios.get( + `http://${serverIp}:${port}/lst/api/mobile/version`, + { timeout: 5000 }, + ); + + if (res.status === 200) { + setServerVersion(res.data); + } + + // const build = Constants.expoConfig?.android?.versionCode ?? 1; + + // if (build < res.data.minSupportedVersionCode) { + // setStartupRoute("/updateScreen"); + // setReady(true); + // return; + // } + } catch (error) { + console.log("Version check error:", error); + } +};