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, normalizeSettingRow,
resolveSettingFieldType, resolveSettingFieldType,
} from '@/config/khanegiSettingCatalog' } 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 type { KhanegiSettingRow } from '@/config/khanegiSettingRow'
import { useAuthStore } from '@/stores/auth' import { useAuthStore } from '@/stores/auth'
@@ -136,12 +136,15 @@ const filteredRows = computed(() => {
const q = search.value.trim().toLowerCase() const q = search.value.trim().toLowerCase()
return [...items.value] return [...items.value]
.filter((row) => { .filter((row) => {
if (!isSuperAdminSystemSettingKey(row.key)) return false const key = String(row.key || '').trim()
if (!isSettingVisible(row.key)) return false 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 (filterType.value && resolveSettingFieldType(row) !== filterType.value) return false
if (!q) return true if (!q) return true
return ( return (
(row.key || '').toLowerCase().includes(q) || key.toLowerCase().includes(q) ||
(row.title_fa || '').toLowerCase().includes(q) || (row.title_fa || '').toLowerCase().includes(q) ||
(row.value || '').toLowerCase().includes(q) || (row.value || '').toLowerCase().includes(q) ||
(row.description || '').toLowerCase().includes(q) (row.description || '').toLowerCase().includes(q)
@@ -309,13 +312,18 @@ function errText(e: any) {
} }
function mergeSystemCatalogRows(rows: KhanegiSettingRow[]): KhanegiSettingRow[] { function mergeSystemCatalogRows(rows: KhanegiSettingRow[]): KhanegiSettingRow[] {
const byKey = new Map(rows.map((row) => [rowKey(row), row])) const byKey = new Map<string, KhanegiSettingRow>()
return [...SUPERADMIN_SYSTEM_SETTING_KEYS] // اول پاسخ API — تا کلید جدید سوپرادمین (مثل enable_automation) قبل از آپدیت کاتالوگ فرانت هم دیده شود
.sort((a, b) => a.localeCompare(b)) for (const row of rows) {
.map((key) => { const key = rowKey(row)
const found = byKey.get(key) if (!key) continue
if (found) return normalizeSettingRow(found) byKey.set(key, normalizeSettingRow(row))
return normalizeSettingRow({ }
for (const key of SUPERADMIN_SYSTEM_SETTING_KEYS) {
if (byKey.has(key)) continue
byKey.set(
key,
normalizeSettingRow({
key, key,
value: '', value: '',
title_fa: '', title_fa: '',
@@ -323,8 +331,12 @@ function mergeSystemCatalogRows(rows: KhanegiSettingRow[]): KhanegiSettingRow[]
type: '', type: '',
is_active: 1, is_active: 1,
can_edit: 0, 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[]) { function applyItems(raw: unknown[]) {
@@ -674,7 +686,11 @@ onMounted(load)
</a-collapse> </a-collapse>
<a-empty <a-empty
v-else v-else
description="هنوز تنظیم سیستمی منتقل نشده — از فرم بالا با یوزر و پسورد ادمین خانگی بگیرید" :description="
search.trim() || filterType
? 'نتیجه‌ای برای این فیلتر پیدا نشد'
: 'هنوز تنظیم سیستمی منتقل نشده — از فرم بالا با یوزر و پسورد ادمین خانگی بگیرید'
"
/> />
</section> </section>
</div> </div>