Files
Desktop/ts/util/gifCdnUrls.dom.ts
2026-01-27 12:13:47 -06:00

45 lines
1.1 KiB
TypeScript

// Copyright 2026 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
import * as RemoteConfig from '../RemoteConfig.dom.js';
const GIPHY_CDN_ORIGINS = new Set([
'https://media0.giphy.com',
'https://media1.giphy.com',
'https://media2.giphy.com',
'https://media3.giphy.com',
'https://media4.giphy.com',
]);
const TENOR_CDN_ORIGINS = new Set(['https://media.tenor.com']);
export function getGifCdnUrlOrigin(input: string): string | null {
try {
const url = new URL(input);
return url.origin;
} catch {
return null;
}
}
export function isGiphyCdnUrlOrigin(origin: string): boolean {
return GIPHY_CDN_ORIGINS.has(origin);
}
export function isTenorCdnUrlOrigin(origin: string): boolean {
return TENOR_CDN_ORIGINS.has(origin);
}
export function isTenorCdnUrlOriginAllowed(): boolean {
return RemoteConfig.isEnabled('desktop.recentGifs.allowLegacyTenorCdnUrls');
}
export function isGifCdnUrlOriginAllowed(origin: string): boolean {
if (isGiphyCdnUrlOrigin(origin)) {
return true;
}
if (isTenorCdnUrlOrigin(origin)) {
return isTenorCdnUrlOriginAllowed();
}
return false;
}