2025-07-02 19:43:44 +05:30
|
|
|
|
"use client";
|
|
|
|
|
|
|
|
|
|
|
|
import { observer } from "mobx-react";
|
|
|
|
|
|
// components
|
2025-08-11 18:46:23 +05:30
|
|
|
|
import { LogoSpinner } from "@/components/common/logo-spinner";
|
2025-07-02 19:43:44 +05:30
|
|
|
|
import { InstanceFailureView } from "@/components/instance/failure";
|
|
|
|
|
|
import { InstanceSetupForm } from "@/components/instance/setup-form";
|
|
|
|
|
|
// hooks
|
|
|
|
|
|
import { useInstance } from "@/hooks/store";
|
|
|
|
|
|
// components
|
2025-11-06 00:09:35 -08:00
|
|
|
|
import type { Route } from "./+types/page";
|
2025-07-02 19:43:44 +05:30
|
|
|
|
import { InstanceSignInForm } from "./sign-in-form";
|
|
|
|
|
|
|
|
|
|
|
|
const HomePage = () => {
|
|
|
|
|
|
// store hooks
|
|
|
|
|
|
const { instance, error } = useInstance();
|
|
|
|
|
|
|
|
|
|
|
|
// if instance is not fetched, show loading
|
|
|
|
|
|
if (!instance && !error) {
|
|
|
|
|
|
return (
|
2025-08-11 18:46:23 +05:30
|
|
|
|
<div className="flex items-center justify-center h-screen w-full">
|
|
|
|
|
|
<LogoSpinner />
|
2025-07-02 19:43:44 +05:30
|
|
|
|
</div>
|
|
|
|
|
|
);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// if instance fetch fails, show failure view
|
|
|
|
|
|
if (error) {
|
2025-08-11 18:46:23 +05:30
|
|
|
|
return <InstanceFailureView />;
|
2025-07-02 19:43:44 +05:30
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// if instance is fetched and setup is not done, show setup form
|
|
|
|
|
|
if (instance && !instance?.is_setup_done) {
|
2025-08-11 18:46:23 +05:30
|
|
|
|
return <InstanceSetupForm />;
|
2025-07-02 19:43:44 +05:30
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// if instance is fetched and setup is done, show sign in form
|
2025-08-11 18:46:23 +05:30
|
|
|
|
return <InstanceSignInForm />;
|
2025-07-02 19:43:44 +05:30
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
export default observer(HomePage);
|
2025-11-06 00:09:35 -08:00
|
|
|
|
|
|
|
|
|
|
export const meta: Route.MetaFunction = () => [
|
|
|
|
|
|
{ title: "Admin – Instance Setup & Sign-In" },
|
|
|
|
|
|
{ name: "description", content: "Configure your Plane instance or sign in to the admin portal." },
|
|
|
|
|
|
];
|