import axios from "axios"; import Constants from "expo-constants"; import { Redirect, useRouter } from "expo-router"; import { useEffect, useState } from "react"; import { ActivityIndicator, Text, View } from "react-native"; import { useAppStore } from "../hooks/useAppStore"; import { useMobileAuthStore } from "../hooks/useMobileAuth"; import { useServerStore } from "../hooks/useServerCheck"; import { devDelay } from "../lib/devMode"; export default function Index() { const router = useRouter(); const [message, setMessage] = useState(Starting app...); const [ready, setReady] = useState(false); const setServerVersion = useServerStore((s) => s.setServerVersion); //const { isUnlocked } = useMobileAuthStore(); const hasHydrated = useAppStore((s) => s.hasHydrated); const serverPort = useAppStore((s) => s.serverPort); const serverIp = useAppStore((s) => s.serverIp); const build = Constants.expoConfig?.android?.versionCode ?? 1; const hasValidSetup = useAppStore((s) => s.hasValidSetup); useEffect(() => { if (!hasHydrated) { setMessage(Loading app...); return; } const startup = async () => { try { await devDelay(1500); setMessage(Validating data...); await devDelay(1500); if (!hasValidSetup()) { router.replace("/setup"); return; } // checking for lst. console.log( `http://${serverIp}:${parseInt(serverPort || "0", 10) >= 50000 ? "3000" : serverPort}/lst/api/mobile/version`, ); try { const res = await axios.get( `http://${serverIp}:${parseInt(serverPort || "0", 10) >= 50000 ? "3000" : serverPort}/lst/api/mobile/version`, { timeout: 5000, }, ); console.log(res.data); // if the build version dose not match the latest server version force update if (res.status === 200) { setServerVersion(res.data); } // TODO: change the header to show orange and theres a new version // console.log(build < res.data.minSupportedVersionCode); // if (build < res.data.minSupportedVersionCode) { // router.replace("/updateScreen"); // return; // } } catch (error) { console.log("Error: ", error); } setMessage(Checking scanner mode...); await devDelay(1500); if (parseInt(serverPort || "0", 10) >= 50000) { setMessage( Starting normal alplaprod scanner that has no LST rules , ); await devDelay(1500); //router.replace("/scanner"); setReady(true); return; } setMessage(Checking for updates); await devDelay(1500); // TODO if theres an update go to update screen message :D setMessage(Opening LST scan app); await devDelay(3250); setReady(true); } catch (error) { console.log("Startup error", error); setMessage(Something went wrong during startup.); } }; startup(); }, [ hasHydrated, hasValidSetup, serverPort, serverIp, router, setServerVersion, ]); // if (ready && !isUnlocked) { // return ; // } if (ready) { return ; } return ( {message} ); }