From 9031135797dd3cb721b2816543ec971abb896acd Mon Sep 17 00:00:00 2001 From: Mahdi Date: Wed, 14 Oct 2026 17:02:09 +0330 Subject: [PATCH] feat(get-user): emit brand_chrome for Hamkar brandManaged opt-in Expose brand_chrome so apps apply header/menu/body colors only after SuperAdmin color save. Co-authored-by: Cursor --- prisma/backfill-appearance-from-registry.ts | 2 ++ prisma/lib/appearance-builders.ts | 2 ++ prisma/seed-hamkar-default-snapshots.ts | 1 + src/get-user/get-user.service.ts | 6 ++++++ 4 files changed, 11 insertions(+) diff --git a/prisma/backfill-appearance-from-registry.ts b/prisma/backfill-appearance-from-registry.ts index 76d09c8..2359073 100644 --- a/prisma/backfill-appearance-from-registry.ts +++ b/prisma/backfill-appearance-from-registry.ts @@ -207,11 +207,13 @@ async function main() { if (tenant.product === 'hamkar') { const managed = existingUi?.kind === 'hamkar' && existingUi?.settingsManaged === true + const brandManaged = existingUi?.kind === 'hamkar' && existingUi?.brandManaged === true const built = buildHamkarUiFromBrand({ primaryColor: primary, secondaryColor: secondary, backgroundColor: background, settingsManaged: managed, + brandManaged, registryMode: registryMode || existingUi?.registryMode || 'dynamicMode', settings: managed ? existingUi.settings : undefined, }) diff --git a/prisma/lib/appearance-builders.ts b/prisma/lib/appearance-builders.ts index aac5b8e..dd490ed 100644 --- a/prisma/lib/appearance-builders.ts +++ b/prisma/lib/appearance-builders.ts @@ -34,6 +34,7 @@ export function buildHamkarUiFromBrand(input: { secondaryColor?: string | null backgroundColor?: string | null settingsManaged?: boolean + brandManaged?: boolean registryMode?: string | null settings?: { pricing_box_theme?: string @@ -57,6 +58,7 @@ export function buildHamkarUiFromBrand(input: { const base = { kind: 'hamkar' as const, settingsManaged: Boolean(input.settingsManaged), + brandManaged: Boolean(input.brandManaged), registryMode: input.registryMode || 'dynamicMode', brand: { // Keep nulls — do NOT invent #1d4ed8 (causes wrong accent vs live registry) diff --git a/prisma/seed-hamkar-default-snapshots.ts b/prisma/seed-hamkar-default-snapshots.ts index cdb7cbb..3165c97 100644 --- a/prisma/seed-hamkar-default-snapshots.ts +++ b/prisma/seed-hamkar-default-snapshots.ts @@ -171,6 +171,7 @@ async function main() { ? keepSnapshot.brand?.backgroundColor : existing?.brand?.backgroundColor ?? brandBackground, settingsManaged: Boolean(existing?.settingsManaged), + brandManaged: Boolean(existing?.brandManaged), registryMode: restore ? keepSnapshot.registryMode : existing?.registryMode || registryMode, diff --git a/src/get-user/get-user.service.ts b/src/get-user/get-user.service.ts index fd3facc..fd1d275 100644 --- a/src/get-user/get-user.service.ts +++ b/src/get-user/get-user.service.ts @@ -122,6 +122,12 @@ export class GetUserService { : undefined, /** Laravel-compatible overlay; Hamkar merges only when present */ ui_settings: uiSettings.length ? uiSettings : undefined, + /** + * Hamkar only: when true, apply brand colors to mobile header+menu and page body + * (including theme-two). Absent/false → keep factory chrome (no visual jump). + */ + brand_chrome: + isHamkarUi && ui?.brandManaged === true ? true : undefined, /** Admin expiry modals — near/expired server, plugin, support */ subscription_alerts, plugin_store_enabled: isKhanegi