/** * Ссылки на локальные файлы (превью до ответа сервера). `URL.createObjectURL` * есть не во всех окружениях (jsdom, урезанные webview) и может бросить * исключение, поэтому все вызовы идут через эти обёртки. */ export function safeObjectUrl(source: Blob): string | null { if (typeof URL.createObjectURL !== 'function') { return null; } try { return URL.createObjectURL(source); } catch { return null; } } export function revokeObjectUrl(url: string | null | undefined): void { if (url === null || url === undefined || typeof URL.revokeObjectURL !== 'function') { return; } try { URL.revokeObjectURL(url); } catch { // Ссылка уже недействительна — освобождать нечего. } }