refactor(mobile): valildation of server after each scan
Some checks failed
Build and Push LST Docker Image / docker (push) Failing after 3m40s

This commit is contained in:
2026-05-06 12:10:14 -05:00
parent 12412536d1
commit 4ca74de279
2 changed files with 68 additions and 34 deletions

View File

@@ -19,7 +19,11 @@ export default function useDeviceLock() {
nextAppState === "background" || nextAppState === "inactive"; nextAppState === "background" || nextAppState === "inactive";
if (wasActive && isNowInactive) { if (wasActive && isNowInactive) {
useMobileAuthStore.getState().lock(); const auth = useMobileAuthStore.getState();
if (auth.shouldLockForIdle()) {
auth.lock();
}
} }
appStateRef.current = nextAppState; appStateRef.current = nextAppState;

View File

@@ -1,43 +1,73 @@
import axios from "axios";
import { useAppStore } from "../hooks/useAppStore";
import { useServerStore } from "../hooks/useServerCheck";
export type ServerVersionInfo = { export type ServerVersionInfo = {
packageName: string; packageName: string;
versionName: string; versionName: string;
versionCode: number; versionCode: number;
minSupportedVersionCode: number; minSupportedVersionCode: number;
fileName: string; fileName: string;
}; };
export type StartupStatus = export type StartupStatus =
| { state: "checking" } | { state: "checking" }
| { state: "needs-config" } | { state: "needs-config" }
| { state: "offline" } | { state: "offline" }
| { state: "blocked"; reason: string; server: ServerVersionInfo } | { state: "blocked"; reason: string; server: ServerVersionInfo }
| { state: "warning"; message: string; server: ServerVersionInfo } | { state: "warning"; message: string; server: ServerVersionInfo }
| { state: "ready"; server: ServerVersionInfo | null }; | { state: "ready"; server: ServerVersionInfo | null };
export function evaluateVersion( export function evaluateVersion(
appBuildCode: number, appBuildCode: number,
server: ServerVersionInfo server: ServerVersionInfo,
): StartupStatus { ): StartupStatus {
if (appBuildCode < server.minSupportedVersionCode) { if (appBuildCode < server.minSupportedVersionCode) {
return { return {
state: "blocked", state: "blocked",
reason: "This scanner app is too old and must be updated before use.", reason: "This scanner app is too old and must be updated before use.",
server, server,
}; };
} }
if (appBuildCode !== server.versionCode) { if (appBuildCode !== server.versionCode) {
return { return {
state: "warning", state: "warning",
message: `A newer version is available. Installed build: ${appBuildCode}, latest build: ${server.versionCode}.`, message: `A newer version is available. Installed build: ${appBuildCode}, latest build: ${server.versionCode}.`,
server, server,
}; };
} }
return { return {
state: "ready", state: "ready",
server, 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);
}
};