* add some stripe stuff * more stripe stuff * more stripe things * more stripr stuff * more stripe stuff * more stripe stuff * add more stuff * add more stripe stuff * more stuff * fix types
43 lines
1.1 KiB
TypeScript
43 lines
1.1 KiB
TypeScript
"use client";
|
|
|
|
import { useSession } from "next-auth/react";
|
|
import { FullScreenLoading } from "~/components/FullScreenLoading";
|
|
import { AddSesSettings } from "~/components/settings/AddSesSettings";
|
|
import CreateTeam from "~/components/team/CreateTeam";
|
|
import { env } from "~/env";
|
|
import { api } from "~/trpc/react";
|
|
import { TeamProvider } from "./team-context";
|
|
|
|
export const DashboardProvider = ({
|
|
children,
|
|
}: {
|
|
children: React.ReactNode;
|
|
}) => {
|
|
const { data: session } = useSession();
|
|
const { data: teams, status } = api.team.getTeams.useQuery();
|
|
const { data: settings, status: settingsStatus } =
|
|
api.admin.getSesSettings.useQuery(undefined, {
|
|
enabled: !env.NEXT_PUBLIC_IS_CLOUD || session?.user.isAdmin,
|
|
});
|
|
|
|
if (
|
|
status === "pending" ||
|
|
(settingsStatus === "pending" && !env.NEXT_PUBLIC_IS_CLOUD)
|
|
) {
|
|
return <FullScreenLoading />;
|
|
}
|
|
|
|
if (
|
|
settings?.length === 0 &&
|
|
(!env.NEXT_PUBLIC_IS_CLOUD || session?.user.isAdmin)
|
|
) {
|
|
return <AddSesSettings />;
|
|
}
|
|
|
|
if (!teams || teams.length === 0) {
|
|
return <CreateTeam />;
|
|
}
|
|
|
|
return <TeamProvider>{children}</TeamProvider>;
|
|
};
|