vaulterm/frontend/app/index.tsx

44 lines
1.0 KiB
TypeScript

import React, { useEffect, useState } from "react";
import { Redirect } from "expo-router";
import { useTermSession } from "@/stores/terminal-sessions";
import { setLocalServer, useServer } from "@/stores/app";
import { GetLocalServer } from "@/lib/wailsjs/go/main/App";
import { Spinner, View } from "tamagui";
export default function index() {
const { sessions, curSession } = useTermSession();
const [isPending, setPending] = useState(true);
const curServer = useServer();
useEffect(() => {
// load local server
(async function () {
try {
const url = await GetLocalServer();
if (url) {
setLocalServer(url);
}
} catch (_) {}
setPending(false);
})();
}, []);
if (isPending) {
return (
<View flex={1} alignItems="center" justifyContent="center">
<Spinner />
</View>
);
}
if (!curServer) {
return <Redirect href="/server" />;
}
return (
<Redirect
href={sessions.length > 0 && curSession >= 0 ? "/terminal" : "/hosts"}
/>
);
}