fix(autocall): disarm the stored preference, not just the loop
Withdrawing auto-call added a runtime guard and removed every control. The stored preference was left alone, so 'enabled: true' still sits in localStorage on the machines that had it on -- and any build without the guard reads it and keys the transmitter for a feature that no longer has a switch anywhere in the interface. loadAutoCall now switches it off and writes it back the first time it reads it, so the disarming survives a downgrade or a reinstall. Also drops the dead auto-call state left behind in the settings modal. A withdrawn feature that keys a radio has to be disarmed where it is remembered, not only where it runs.
This commit is contained in:
@@ -80,7 +80,6 @@ import {
|
||||
} from '@/components/ui/select';
|
||||
import { cn } from '@/lib/utils';
|
||||
import { writeUiPref } from '@/lib/uiPref';
|
||||
import { loadAutoCall, autoCallKey, type AutoCallSettings, type AutoCallCriteria } from '@/lib/autocall';
|
||||
import { getDateFormat, setDateFormat, type DateFormat } from '@/lib/dateFormat';
|
||||
import { useI18n, FlagGB, FlagFR, type Lang } from '@/lib/i18n';
|
||||
import { useTheme, CONCRETE_THEMES, type ThemeChoice } from '@/lib/theme';
|
||||
@@ -1933,7 +1932,6 @@ export function SettingsModal({ onClose, onSaved, initialSection, onMainPaneChan
|
||||
// feed up or down — so the write has to go where those live.
|
||||
const [bandOpen, setBandOpen] = useState<any>({ enabled: false, bands: [], available: [] });
|
||||
// How a worked square is matched, and what counts as still wanted.
|
||||
const [autoCall, setAutoCall] = useState<AutoCallSettings>(loadAutoCall);
|
||||
const [gridScope, setGridScope] = useState<any>({ scope: 'mix_digi', hunt: 'new', scopes: [] });
|
||||
useEffect(() => { GetGridScopeSettings().then((g) => setGridScope(g as any)).catch(() => {}); }, []);
|
||||
const saveGridScope = async (next: any) => {
|
||||
|
||||
Reference in New Issue
Block a user