Files
HiveGrid-Wireframes/hivegrid-cloud/apps/web/app/utils/data/useRootData.ts
T

38 lines
1.3 KiB
TypeScript

import { useMatches } from "react-router";
import { AppConfiguration } from "../db/appConfiguration.db.server";
import { UserSession } from "../session.server";
import { MetaTagsDto } from "~/application/dtos/seo/MetaTagsDto";
import { ImpersonatingSessionDto } from "~/application/dtos/session/ImpersonatingSessionDto";
import { AnalyticsInfoDto } from "~/application/dtos/marketing/AnalyticsInfoDto";
import { UserWithoutPassword } from "../db/users.db.server";
import { TenantSimple } from "../db/tenants.db.server";
import type { PublicDomainRoutingConfig } from "~/utils/app/CrossHostUrls";
export type AppRootData = {
metatags: MetaTagsDto;
user: UserWithoutPassword | null;
currentTenant: TenantSimple | null;
theme: string;
locale: string;
serverUrl: string;
publicBaseUrl: string;
apiBaseUrl: string;
routing: PublicDomainRoutingConfig;
domainName: string;
userSession: UserSession;
authenticated: boolean;
debug: boolean;
isStripeTest: boolean;
chatWebsiteId?: string;
appConfiguration: AppConfiguration;
csrf?: string;
analytics?: AnalyticsInfoDto;
analyticsToken?: string;
featureFlags: string[];
impersonatingSession: ImpersonatingSessionDto | null;
};
export function useRootData(): AppRootData {
return (useMatches().find((f) => f.pathname === "/" || f.pathname === "")?.data ?? {}) as AppRootData;
}