fix(uploads): keep absolute nerkh logo URLs intact

Only resolve relative /uploads/ paths; rewriting legacy hosts to SuperAdmin broke logos that still live on nerkh.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-09-07 20:10:07 +03:30
co-authored by Cursor
parent 0c4f88debf
commit a7747366f9
+5 -23
View File
@@ -26,15 +26,10 @@ export function publicApiBaseFromEnv(): string {
return fromEnv || 'https://adm.montzar.ir';
}
const LEGACY_UPLOAD_HOSTS = new Set([
'nerkh.gold',
'www.nerkh.gold',
'tablo.talasevin.ir',
'ah.aygingold.ir',
'abshode-service.montgit.ir',
]);
/** nerkh.gold/uploads/... → PUBLIC_API_URL/uploads/... (فایل روی سوپرادمین است) */
/**
* فقط مسیر نسبی /uploads/ را به PUBLIC_API_URL می‌چسباند.
* URL مطلق (مثل nerkh.gold) دست نخورده می‌ماند — فایل هنوز همان‌جاست.
*/
export function rewriteLegacyUploadUrl(
raw: unknown,
publicBase = publicApiBaseFromEnv(),
@@ -42,21 +37,8 @@ export function rewriteLegacyUploadUrl(
const value = String(raw || '').trim();
if (!value) return '';
const base = String(publicBase || '').replace(/\/$/, '');
if (!base) return value;
if (value.startsWith('/uploads/')) {
if (value.startsWith('/uploads/') && base) {
return `${base}${value}`;
}
if (!/^https?:\/\//i.test(value)) return value;
try {
const parsed = new URL(value);
const host = parsed.hostname.toLowerCase();
if (!LEGACY_UPLOAD_HOSTS.has(host)) return value;
if (!/\/uploads\//i.test(parsed.pathname)) return value;
return `${base}${parsed.pathname}`;
} catch {
return value;
}
}