26 lines
967 B
TypeScript
26 lines
967 B
TypeScript
import { Tenant, TenantUser } from "@toolctrl/db/prisma-browser";
|
|
import { useMatches } from "react-router";
|
|
import { getTranslations } from "~/locale/i18next.server";
|
|
import { getTenantWithUsers } from "../db/tenants.db.server";
|
|
import { adminPath } from "../app/CanonicalUrlUtils";
|
|
|
|
export type AdminTenantLoaderData = {
|
|
title: string;
|
|
tenant: (Tenant & { users: TenantUser[] }) | null;
|
|
};
|
|
|
|
export function useAdminTenantData(id?: string): AdminTenantLoaderData {
|
|
const canonicalPath = adminPath(`accounts/${id}`, { mode: "host-aware" });
|
|
return (useMatches().find((f) => f.pathname === canonicalPath)?.data ?? {}) as AdminTenantLoaderData;
|
|
}
|
|
|
|
export async function loadAdminTenantData(request: Request, id?: string) {
|
|
const { t } = await getTranslations(request);
|
|
const tenant = await getTenantWithUsers(id);
|
|
const data: AdminTenantLoaderData = {
|
|
title: `${t("models.tenant.object")} | ${process.env.APP_NAME}`,
|
|
tenant,
|
|
};
|
|
return data;
|
|
}
|