diff --git a/src/api/superadminSettings.ts b/src/api/superadminSettings.ts index efd23de..da87eb0 100644 --- a/src/api/superadminSettings.ts +++ b/src/api/superadminSettings.ts @@ -37,6 +37,11 @@ function parseSettingsPayload(data: unknown): SuperAdminSettingRow[] { return [] } +/** کلید قفل‌شده در get_settings محلی — باید از سوپرادمین بیاید */ +export function isLockedCanEdit(canEdit: unknown): boolean { + return canEdit === 0 || canEdit === false || canEdit === '0' +} + async function fetchFromUrl(url: string, timeout = 5000): Promise { const controller = new AbortController() const timer = window.setTimeout(() => controller.abort(), timeout) @@ -73,6 +78,5 @@ export async function fetchSuperAdminProgramSettings(): Promise { try { const { getConfiguration } = await import('@/api/configuration') - const { fetchSuperAdminProgramSettings } = await import('@/api/superadminSettings') + const { fetchSuperAdminProgramSettings, isLockedCanEdit } = await import('@/api/superadminSettings') const { parseMainWalletProductIds } = await import('@/components/mobile/utils/wallet') - const [localRows, saRows] = await Promise.all([ - getConfiguration().catch(() => []), - fetchSuperAdminProgramSettings(), - ]) + const localRows = await getConfiguration().catch(() => []) + const saRows = await fetchSuperAdminProgramSettings() const local = Array.isArray(localRows) ? localRows : [] - const merged = [...local] - for (const item of saRows) { + const editable = local.filter((row) => !isLockedCanEdit(row?.can_edit)) + const merged = [...saRows] as typeof local + for (const item of editable) { if (!item?.key) continue const index = merged.findIndex((row) => row.key === item.key) if (index >= 0) { merged[index] = { ...merged[index], ...item } } else { - merged.push(item as (typeof merged)[number]) + merged.push(item) } } const list = merged