* feat: setup onboarding and select plan page * feat: add workspace details step * refactor: optimize board rendering in workspace details * feat: tweak padding in boards mockup * fix: validate/convert slug input * refactor: tweak onboarding steps UX * feat: add team to workspace plans * feat: allow setting description when creating a workspace * feat: add logging to next api routes * feat: create worspace on checkout.session.completed * chore: update types * refactor: improve webhook logs * feat: create workspace on successful activation * feat: set slug on workspace name change * feat: add returnUrl params
32 lines
806 B
TypeScript
32 lines
806 B
TypeScript
import { useRouter } from "next/navigation";
|
|
import { useEffect } from "react";
|
|
import { env } from "next-runtime-env";
|
|
|
|
import { authClient } from "@kan/auth/client";
|
|
|
|
import { PageHead } from "~/components/PageHead";
|
|
import SelectPlanView from "~/views/onboarding/select-plan";
|
|
|
|
export default function SelectPlanPage() {
|
|
const router = useRouter();
|
|
const { data: session, isPending } = authClient.useSession();
|
|
|
|
useEffect(() => {
|
|
if (!isPending && !session?.user) {
|
|
router.push("/login");
|
|
}
|
|
if (!isPending && env("NEXT_PUBLIC_KAN_ENV") !== "cloud") {
|
|
router.push("/boards");
|
|
}
|
|
}, [session, isPending, router]);
|
|
|
|
if (isPending || !session?.user) return null;
|
|
|
|
return (
|
|
<>
|
|
<PageHead title="Select plan | kan.bn" />
|
|
<SelectPlanView />
|
|
</>
|
|
);
|
|
}
|