34 lines
956 B
TypeScript
34 lines
956 B
TypeScript
import "server-only";
|
|
|
|
import { getSqliteConnection } from "../db/client";
|
|
import { BrandingService, DEFAULT_BRANDING, buildBrandingTokens, type PublicBranding } from "./service";
|
|
|
|
export function getBrandingService(): BrandingService {
|
|
return new BrandingService(getSqliteConnection().db);
|
|
}
|
|
|
|
export function getPublicBranding(): PublicBranding {
|
|
try {
|
|
return getBrandingService().getPublic();
|
|
} catch (error) {
|
|
if (isMissingBrandingTable(error)) {
|
|
return {
|
|
...DEFAULT_BRANDING,
|
|
lightLogoUrl: null,
|
|
darkLogoUrl: null,
|
|
iconUrl: null,
|
|
cssVariables: buildBrandingTokens(
|
|
DEFAULT_BRANDING.primaryColor,
|
|
DEFAULT_BRANDING.accentColor,
|
|
DEFAULT_BRANDING.radiusScale,
|
|
),
|
|
};
|
|
}
|
|
throw error;
|
|
}
|
|
}
|
|
|
|
function isMissingBrandingTable(error: unknown): boolean {
|
|
return error instanceof Error && error.message.includes("no such table: instance_branding");
|
|
}
|