fixed navbar

This commit is contained in:
2026-07-24 16:10:40 +03:30
parent bd441a0e8e
commit ab83ba7e6a
2 changed files with 38 additions and 28 deletions
+31 -22
View File
@@ -460,15 +460,39 @@ function saveDebounceMs(row: Const): number {
return 800
}
function syncMenuFlagsFromSetting(key: string | undefined, value: string) {
if (key === 'price_provider') {
setPriceProviderFromSettings(value)
return
}
if (key === 'banner_enabled') {
setBannerEnabledFromSettings(isSwitchOn(value))
return
}
if (key === 'tracking_systems_enabled') {
setTrackingSystemsEnabledFromSettings(isSwitchOn(value))
return
}
if (key === 'enable_conditional_order') {
setConditionalOrderEnabledFromSettings(isSwitchOn(value))
return
}
if (key === 'has_page_price_trigger') {
setPriceTriggerEnabledFromSettings(isSwitchOn(value))
return
}
if (key === 'has_page_notification') {
setAppNotificationEnabledFromSettings(isSwitchOn(value))
}
}
function onValueChange(row: Const, value: string) {
if (row.id == null || isReadonly(row)) return
drafts.value[row.id] = value
// بلافاصله گروه Montzar را با انتخاب منبع قیمت همگام کن
if (row.key === 'price_provider') {
setPriceProviderFromSettings(value)
}
// منو و UI وابسته را همان لحظه با سوئیچ همگام کن
syncMenuFlagsFromSetting(row.key, value)
// longtext هم باید ذخیره شود، فقط با delay بیشتر
scheduleSave(row)
@@ -552,24 +576,7 @@ async function saveSettingRow(row: Const) {
setStoreModeFromSettings(isSwitchOn(value))
refreshMenuAfterStoreChange()
}
if (row.key === 'banner_enabled') {
setBannerEnabledFromSettings(isSwitchOn(value))
}
if (row.key === 'tracking_systems_enabled') {
setTrackingSystemsEnabledFromSettings(isSwitchOn(value))
}
if (row.key === 'enable_conditional_order') {
setConditionalOrderEnabledFromSettings(isSwitchOn(value))
}
if (row.key === 'has_page_price_trigger') {
setPriceTriggerEnabledFromSettings(isSwitchOn(value))
}
if (row.key === 'has_page_notification') {
setAppNotificationEnabledFromSettings(isSwitchOn(value))
}
if (row.key === 'price_provider') {
setPriceProviderFromSettings(value)
}
syncMenuFlagsFromSetting(row.key, value)
savedFlashIds.value.add(id)
if (saveTimers.has(id)) clearTimeout(saveTimers.get(id))
saveTimers.set(
@@ -584,6 +591,8 @@ async function saveSettingRow(row: Const) {
if ((drafts.value[id] ?? '') === draftSnapshot) {
drafts.value[id] = row.value ?? ''
}
// برگرداندن فلگ منو به مقدار ذخیره‌شده قبلی
syncMenuFlagsFromSetting(row.key, row.value ?? '')
message.error(`ذخیره «${row.title_fa || row.key}» ناموفق بود`)
} finally {
savingIds.value.delete(id)
+7 -6
View File
@@ -150,42 +150,43 @@ export function setPriceProviderFromSettings(value?: string | null): void {
priceProviderSetting.value = (value ?? '').trim().toLowerCase()
}
/** فقط وقتی کلید در rows باشد آپدیت می‌شود — پاسخ ناقص (editable/system) فلگ قبلی را پاک نکند */
export function applyBannerEnabledFromRows(rows: Array<{ key?: string; value?: string | null }>) {
const row = rows.find((item) => item.key === 'banner_enabled')
setBannerEnabledFromSettings(row ? isSwitchOn(row.value) : false)
if (row) setBannerEnabledFromSettings(isSwitchOn(row.value))
}
export function applyTrackingSystemsEnabledFromRows(
rows: Array<{ key?: string; value?: string | null }>
) {
const row = rows.find((item) => item.key === 'tracking_systems_enabled')
setTrackingSystemsEnabledFromSettings(row ? isSwitchOn(row.value) : false)
if (row) setTrackingSystemsEnabledFromSettings(isSwitchOn(row.value))
}
export function applyCustomerDirectSmsFromRows(rows: Array<{ key?: string; value?: string | null }>) {
const row = rows.find((item) => item.key === 'customer_direct_sms')
setCustomerDirectSmsEnabledFromSettings(row ? isSwitchOn(row.value) : false)
if (row) setCustomerDirectSmsEnabledFromSettings(isSwitchOn(row.value))
}
export function applyConditionalOrderEnabledFromRows(
rows: Array<{ key?: string; value?: string | null }>
) {
const row = rows.find((item) => item.key === 'enable_conditional_order')
setConditionalOrderEnabledFromSettings(row ? isSwitchOn(row.value) : false)
if (row) setConditionalOrderEnabledFromSettings(isSwitchOn(row.value))
}
export function applyPriceTriggerEnabledFromRows(
rows: Array<{ key?: string; value?: string | null }>
) {
const row = rows.find((item) => item.key === 'has_page_price_trigger')
setPriceTriggerEnabledFromSettings(row ? isSwitchOn(row.value) : false)
if (row) setPriceTriggerEnabledFromSettings(isSwitchOn(row.value))
}
export function applyAppNotificationEnabledFromRows(
rows: Array<{ key?: string; value?: string | null }>
) {
const row = rows.find((item) => item.key === 'has_page_notification')
setAppNotificationEnabledFromSettings(row ? isSwitchOn(row.value) : false)
if (row) setAppNotificationEnabledFromSettings(isSwitchOn(row.value))
}
export function applyPriceProviderFromRows(