27 lines
898 B
TypeScript
27 lines
898 B
TypeScript
|
|
/**
|
||
|
|
* Ссылки на локальные файлы (превью до ответа сервера). `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 {
|
||
|
|
// Ссылка уже недействительна — освобождать нечего.
|
||
|
|
}
|
||
|
|
}
|