4ea2965892
- READY-снапшот больше не теряет banner/splash/accent: шапка сервера показывает баннер сразу после подключения (AGENT.md 7.4) - GUILD_UPDATE несёт всё оформление, клиент применяет его без перезагрузки - кнопка приглашения в шапке сервера со ссылкой и копированием - встроенные звуки интерфейса на Web Audio с разблокировкой по жесту - object URL превью через безопасные обёртки (jsdom и урезанные webview)
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 {
|
|
// Ссылка уже недействительна — освобождать нечего.
|
|
}
|
|
}
|