diff --git a/src/food-market.web/src/lib/useOrgSettings.ts b/src/food-market.web/src/lib/useOrgSettings.ts index eb2fe13..85a7d24 100644 --- a/src/food-market.web/src/lib/useOrgSettings.ts +++ b/src/food-market.web/src/lib/useOrgSettings.ts @@ -21,6 +21,12 @@ export function useOrgSettings() { return useQuery({ queryKey: ['/api/organization/settings'], queryFn: async () => (await api.get('/api/organization/settings')).data, - staleTime: 5 * 60 * 1000, + // Настройки меняются редко, но переключатели вроде AllowFractionalPrices + // должны применяться к открытым в других вкладках формам сразу. Поэтому + // staleTime=0 + refetchOnMount: 'always' — каждый монтирующийся компонент + // получает свежие настройки. Стоимость минимальная: один лёгкий GET. + staleTime: 0, + refetchOnMount: 'always', + refetchOnWindowFocus: true, }) } diff --git a/src/food-market.web/src/pages/OrganizationSettingsPage.tsx b/src/food-market.web/src/pages/OrganizationSettingsPage.tsx index 5038f70..6495173 100644 --- a/src/food-market.web/src/pages/OrganizationSettingsPage.tsx +++ b/src/food-market.web/src/pages/OrganizationSettingsPage.tsx @@ -14,7 +14,10 @@ export function OrganizationSettingsPage() { const countries = useCountries() const [form, setForm] = useState(null) - useEffect(() => { if (settings.data && !form) setForm(settings.data) }, [settings.data, form]) + // Синхронизируем форму с актуальным снимком настроек: первый раз — после + // загрузки; и каждый раз когда сервер вернул свежую версию (например после + // refetchOnMount или после save в другой вкладке). + useEffect(() => { if (settings.data) setForm(settings.data) }, [settings.data]) // При смене страны подтягиваем её валюту и ставку НДС (оба read-only, из справочника стран). const onCountryChange = (countryCode: string) => {