From 4e2a99829feee1daccfcfeccf8525922b806e06f Mon Sep 17 00:00:00 2001 From: KansaiGaijin <83641841+KansaiGaijin@users.noreply.github.com> Date: Tue, 21 Jul 2026 18:35:28 +1200 Subject: [PATCH] fix: DB values override env vars in campaign settings, Settings page resets on campaign switch --- backend/app/config.py | 8 ++++---- frontend/src/pages/Settings.tsx | 7 +++++-- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/backend/app/config.py b/backend/app/config.py index 7d80ff6..1f260fe 100644 --- a/backend/app/config.py +++ b/backend/app/config.py @@ -85,13 +85,13 @@ CAMPAIGN_ENV_OVERRIDES = { def merge_campaign_settings_with_env(raw: dict) -> dict: - """Priority: env var > DB value > CAMPAIGN_SETTINGS default.""" + """Priority: DB value > env var > CAMPAIGN_SETTINGS default.""" merged = {**CAMPAIGN_SETTINGS} - for key, val in raw.items(): - if val and val.strip(): - merged[key] = val.strip() for key, env_name in CAMPAIGN_ENV_OVERRIDES.items(): val = os.environ.get(env_name) if val is not None: merged[key] = val + for key, val in raw.items(): + if val and val.strip(): + merged[key] = val.strip() return merged diff --git a/frontend/src/pages/Settings.tsx b/frontend/src/pages/Settings.tsx index 0c9f853..ab27f25 100644 --- a/frontend/src/pages/Settings.tsx +++ b/frontend/src/pages/Settings.tsx @@ -6,15 +6,18 @@ export default function Settings() { const { currentCampaign } = useCampaign(); const [settings, setSettings] = useState(null); const [saved, setSaved] = useState(false); + const [loading, setLoading] = useState(false); const campaignId = currentCampaign?.id; useEffect(() => { if (!campaignId) return; - api.getCampaignSettings(campaignId).then(setSettings); + setSettings(null); + setLoading(true); + api.getCampaignSettings(campaignId).then(s => { setSettings(s); setLoading(false); }); }, [campaignId]); - if (!settings || !campaignId) return null; + if (!settings || !campaignId) return loading ?

Loading...

: null; const set = (k: string, v: any) => setSettings({ ...settings, [k]: v });