From 6a44da1f313bfc1fbbd829f395320230e4049fe5 Mon Sep 17 00:00:00 2001 From: 3252a8 <3252a8@proton.me> Date: Wed, 27 May 2026 07:52:20 +0300 Subject: [PATCH] fix: refresh trial settings in admin tariffs --- .../src/admin/sections/TariffsSection.svelte | 142 ++++++++++-------- frontend/src/lib/webapp/mockApi.js | 25 ++- frontend/src/lib/webapp/previewMock.js | 5 + 3 files changed, 106 insertions(+), 66 deletions(-) diff --git a/frontend/src/admin/sections/TariffsSection.svelte b/frontend/src/admin/sections/TariffsSection.svelte index 95fda92..48734be 100644 --- a/frontend/src/admin/sections/TariffsSection.svelte +++ b/frontend/src/admin/sections/TariffsSection.svelte @@ -107,40 +107,40 @@ .join(" · "); } - function fieldFor(key) { - return settingsFieldMap.get(key) || { key, value: "" }; + function fieldFor(key, fieldMap = settingsFieldMap) { + return fieldMap.get(key) || { key, value: "" }; } - function valueForKey(key) { - if (settingsDirty[key]?.deleted) return ""; - if (Object.prototype.hasOwnProperty.call(settingsDirty, key)) { - return settingsDirty[key].value; + function valueForKey(key, dirty = settingsDirty, fieldMap = settingsFieldMap) { + if (dirty[key]?.deleted) return ""; + if (Object.prototype.hasOwnProperty.call(dirty, key)) { + return dirty[key].value; } - return fieldFor(key).value ?? ""; + return fieldFor(key, fieldMap).value ?? ""; } - function boolValue(key) { - return Boolean(valueForKey(key)); + function boolValue(key, dirty = settingsDirty, fieldMap = settingsFieldMap) { + return Boolean(valueForKey(key, dirty, fieldMap)); } function setSetting(key, value) { settingsStore.markDirty(key, value); } - function isSettingDirty(key) { - return Boolean(settingsDirty[key]); + function isSettingDirty(key, dirty = settingsDirty) { + return Boolean(dirty[key]); } - function dirtyCount(keys) { - return (keys || []).filter((key) => isSettingDirty(key)).length; + function dirtyCount(keys, dirty = settingsDirty) { + return (keys || []).filter((key) => isSettingDirty(key, dirty)).length; } function resetSetting(key) { settingsStore.clearDirty(key); } - function csvList(key) { - return String(valueForKey(key) || "") + function csvList(key, dirty = settingsDirty, fieldMap = settingsFieldMap) { + return String(valueForKey(key, dirty, fieldMap) || "") .split(",") .map((item) => item.trim()) .filter(Boolean); @@ -230,8 +230,12 @@
- - {boolValue("TRIAL_ENABLED") + + {boolValue("TRIAL_ENABLED", settingsDirty, settingsFieldMap) ? at("enabled", {}, "Enabled") : at("disabled", {}, "Disabled")} @@ -253,7 +257,10 @@
-
+
{at("tariffs_trial_group_switch", {}, "Доступ")} @@ -265,12 +272,12 @@ )}
- {#if dirtyCount(TRIAL_SWITCH_KEYS)} + {#if dirtyCount(TRIAL_SWITCH_KEYS, settingsDirty)} {at( "settings_dirty_count", - { count: dirtyCount(TRIAL_SWITCH_KEYS) }, - `Изменений: ${dirtyCount(TRIAL_SWITCH_KEYS)}` + { count: dirtyCount(TRIAL_SWITCH_KEYS, settingsDirty) }, + `Изменений: ${dirtyCount(TRIAL_SWITCH_KEYS, settingsDirty)}` )} {/if} @@ -278,12 +285,12 @@
{at("tariffs_trial_enabled", {}, "Триал включён")} - {#if isSettingDirty("TRIAL_ENABLED")} + {#if isSettingDirty("TRIAL_ENABLED", settingsDirty)} {at("settings_badge_dirty", {}, "Изменено")} @@ -294,19 +301,19 @@
setSetting("TRIAL_ENABLED", checked)} class="admin-switch-root" > {boolValue("TRIAL_ENABLED") + >{boolValue("TRIAL_ENABLED", settingsDirty, settingsFieldMap) ? at("enabled", {}, "Включено") : at("disabled", {}, "Выключено")}
- {#if isSettingDirty("TRIAL_ENABLED")} + {#if isSettingDirty("TRIAL_ENABLED", settingsDirty)}
-
+
{at("tariffs_trial_group_general", {}, "Общие настройки")} @@ -333,12 +343,12 @@ )}
- {#if dirtyCount(TRIAL_GENERAL_KEYS)} + {#if dirtyCount(TRIAL_GENERAL_KEYS, settingsDirty)} {at( "settings_dirty_count", - { count: dirtyCount(TRIAL_GENERAL_KEYS) }, - `Изменений: ${dirtyCount(TRIAL_GENERAL_KEYS)}` + { count: dirtyCount(TRIAL_GENERAL_KEYS, settingsDirty) }, + `Изменений: ${dirtyCount(TRIAL_GENERAL_KEYS, settingsDirty)}` )} {/if} @@ -346,12 +356,12 @@
{at("tariffs_trial_days", {}, "Длительность, дней")} - {#if isSettingDirty("TRIAL_DURATION_DAYS")} + {#if isSettingDirty("TRIAL_DURATION_DAYS", settingsDirty)} {at("settings_badge_dirty", {}, "Изменено")} @@ -365,10 +375,10 @@ type="number" min="0" step="1" - value={valueForKey("TRIAL_DURATION_DAYS")} + value={valueForKey("TRIAL_DURATION_DAYS", settingsDirty, settingsFieldMap)} oninput={(event) => setSetting("TRIAL_DURATION_DAYS", event.currentTarget.value)} /> - {#if isSettingDirty("TRIAL_DURATION_DAYS")} + {#if isSettingDirty("TRIAL_DURATION_DAYS", settingsDirty)}
{at("tariffs_trial_traffic", {}, "Лимит трафика, GB")} - {#if isSettingDirty("TRIAL_TRAFFIC_LIMIT_GB")} + {#if isSettingDirty("TRIAL_TRAFFIC_LIMIT_GB", settingsDirty)} {at("settings_badge_dirty", {}, "Изменено")} @@ -401,11 +411,11 @@ type="number" min="0" step="0.1" - value={valueForKey("TRIAL_TRAFFIC_LIMIT_GB")} + value={valueForKey("TRIAL_TRAFFIC_LIMIT_GB", settingsDirty, settingsFieldMap)} oninput={(event) => setSetting("TRIAL_TRAFFIC_LIMIT_GB", event.currentTarget.value)} /> - {#if isSettingDirty("TRIAL_TRAFFIC_LIMIT_GB")} + {#if isSettingDirty("TRIAL_TRAFFIC_LIMIT_GB", settingsDirty)}
-
+
{at("tariffs_trial_group_reset", {}, "Сброс трафика")} @@ -432,12 +445,12 @@ )}
- {#if dirtyCount(TRIAL_RESET_KEYS)} + {#if dirtyCount(TRIAL_RESET_KEYS, settingsDirty)} {at( "settings_dirty_count", - { count: dirtyCount(TRIAL_RESET_KEYS) }, - `Изменений: ${dirtyCount(TRIAL_RESET_KEYS)}` + { count: dirtyCount(TRIAL_RESET_KEYS, settingsDirty) }, + `Изменений: ${dirtyCount(TRIAL_RESET_KEYS, settingsDirty)}` )} {/if} @@ -445,12 +458,12 @@
{at("tariffs_trial_strategy", {}, "Стратегия сброса трафика")} - {#if isSettingDirty("TRIAL_TRAFFIC_STRATEGY")} + {#if isSettingDirty("TRIAL_TRAFFIC_STRATEGY", settingsDirty)} {at("settings_badge_dirty", {}, "Изменено")} @@ -461,12 +474,15 @@
setSetting("TRIAL_TRAFFIC_STRATEGY", value)} /> - {#if isSettingDirty("TRIAL_TRAFFIC_STRATEGY")} + {#if isSettingDirty("TRIAL_TRAFFIC_STRATEGY", settingsDirty)}
-
+
{at("tariffs_trial_group_squads", {}, "Сквады")} @@ -493,12 +512,12 @@ )}
- {#if dirtyCount(TRIAL_SQUAD_KEYS)} + {#if dirtyCount(TRIAL_SQUAD_KEYS, settingsDirty)} {at( "settings_dirty_count", - { count: dirtyCount(TRIAL_SQUAD_KEYS) }, - `Изменений: ${dirtyCount(TRIAL_SQUAD_KEYS)}` + { count: dirtyCount(TRIAL_SQUAD_KEYS, settingsDirty) }, + `Изменений: ${dirtyCount(TRIAL_SQUAD_KEYS, settingsDirty)}` )} {/if} @@ -506,12 +525,12 @@
{at("tariffs_trial_squads", {}, "Internal Squads для триала")} - {#if isSettingDirty("TRIAL_SQUAD_UUIDS")} + {#if isSettingDirty("TRIAL_SQUAD_UUIDS", settingsDirty)} {at("settings_badge_dirty", {}, "Изменено")} @@ -542,11 +561,12 @@ setSetting("TRIAL_SQUAD_UUIDS", event.currentTarget.value)} /> - {#if isSettingDirty("TRIAL_SQUAD_UUIDS")} + {#if isSettingDirty("TRIAL_SQUAD_UUIDS", settingsDirty)} {/if}
- {#each csvList("TRIAL_SQUAD_UUIDS") as uuid} + {#each csvList("TRIAL_SQUAD_UUIDS", settingsDirty, settingsFieldMap) as uuid}