diff --git a/src/pages/ProgramSettingsPage.vue b/src/pages/ProgramSettingsPage.vue index 6922c4e..57ccf80 100644 --- a/src/pages/ProgramSettingsPage.vue +++ b/src/pages/ProgramSettingsPage.vue @@ -39,7 +39,7 @@ import { normalizeSettingRow, resolveSettingFieldType, } from '@/config/khanegiSettingCatalog' -import { isSuperAdminSystemSettingKey, SUPERADMIN_SYSTEM_SETTING_KEYS } from '@/config/superAdminSettingKeys' +import { SUPERADMIN_EDITABLE_SETTING_KEYS, SUPERADMIN_SYSTEM_SETTING_KEYS } from '@/config/superAdminSettingKeys' import type { KhanegiSettingRow } from '@/config/khanegiSettingRow' import { useAuthStore } from '@/stores/auth' @@ -136,12 +136,15 @@ const filteredRows = computed(() => { const q = search.value.trim().toLowerCase() return [...items.value] .filter((row) => { - if (!isSuperAdminSystemSettingKey(row.key)) return false - if (!isSettingVisible(row.key)) return false + const key = String(row.key || '').trim() + if (!key) return false + // کلیدهای مالک نصب را نشان نده؛ بقیه (از API یا کاتالوگ SA) بمانند + if (SUPERADMIN_EDITABLE_SETTING_KEYS.has(key)) return false + if (!isSettingVisible(key)) return false if (filterType.value && resolveSettingFieldType(row) !== filterType.value) return false if (!q) return true return ( - (row.key || '').toLowerCase().includes(q) || + key.toLowerCase().includes(q) || (row.title_fa || '').toLowerCase().includes(q) || (row.value || '').toLowerCase().includes(q) || (row.description || '').toLowerCase().includes(q) @@ -309,13 +312,18 @@ function errText(e: any) { } function mergeSystemCatalogRows(rows: KhanegiSettingRow[]): KhanegiSettingRow[] { - const byKey = new Map(rows.map((row) => [rowKey(row), row])) - return [...SUPERADMIN_SYSTEM_SETTING_KEYS] - .sort((a, b) => a.localeCompare(b)) - .map((key) => { - const found = byKey.get(key) - if (found) return normalizeSettingRow(found) - return normalizeSettingRow({ + const byKey = new Map() + // اول پاسخ API — تا کلید جدید سوپرادمین (مثل enable_automation) قبل از آپدیت کاتالوگ فرانت هم دیده شود + for (const row of rows) { + const key = rowKey(row) + if (!key) continue + byKey.set(key, normalizeSettingRow(row)) + } + for (const key of SUPERADMIN_SYSTEM_SETTING_KEYS) { + if (byKey.has(key)) continue + byKey.set( + key, + normalizeSettingRow({ key, value: '', title_fa: '', @@ -323,8 +331,12 @@ function mergeSystemCatalogRows(rows: KhanegiSettingRow[]): KhanegiSettingRow[] type: '', is_active: 1, can_edit: 0, - }) - }) + }), + ) + } + return [...byKey.values()].sort((a, b) => + (a.title_fa || a.key || '').localeCompare(b.title_fa || b.key || '', 'fa'), + ) } function applyItems(raw: unknown[]) { @@ -674,7 +686,11 @@ onMounted(load)