Files
glchat/web/src/lib/objectUrl.ts
T
grendervill 4ea2965892 fix(web): баннер сервера из снапшота, приглашение, встроенные звуки
- READY-снапшот больше не теряет banner/splash/accent: шапка сервера
  показывает баннер сразу после подключения (AGENT.md 7.4)
- GUILD_UPDATE несёт всё оформление, клиент применяет его без перезагрузки
- кнопка приглашения в шапке сервера со ссылкой и копированием
- встроенные звуки интерфейса на Web Audio с разблокировкой по жесту
- object URL превью через безопасные обёртки (jsdom и урезанные webview)
2026-09-21 00:04:49 +03:00

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 {
// Ссылка уже недействительна — освобождать нечего.
}
}