fix(settings): show API SuperAdmin keys even if frontend catalog lags

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-08-24 16:27:29 +03:30
co-authored by Cursor
parent a11136a605
commit a6dbc995c1
+30 -14
View File
@@ -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<string, KhanegiSettingRow>()
// اول پاسخ 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)
</a-collapse>
<a-empty
v-else
description="هنوز تنظیم سیستمی منتقل نشده — از فرم بالا با یوزر و پسورد ادمین خانگی بگیرید"
:description="
search.trim() || filterType
? 'نتیجه‌ای برای این فیلتر پیدا نشد'
: 'هنوز تنظیم سیستمی منتقل نشده — از فرم بالا با یوزر و پسورد ادمین خانگی بگیرید'
"
/>
</section>
</div>