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; }