38 lines
1.3 KiB
TypeScript
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;
|
|
}
|