brackt/app/lib/cloudinary-url.ts
2026-05-06 14:33:58 -07:00

19 lines
771 B
TypeScript

const CLOUDINARY_UPLOAD_SEGMENT = "/image/upload/";
function isCloudinaryUrl(url: string): boolean {
return url.includes("res.cloudinary.com") && url.includes(CLOUDINARY_UPLOAD_SEGMENT);
}
/**
* Returns a resized, format- and quality-optimized variant of a Cloudinary avatar URL.
* Doubles the requested pixel size for retina displays.
* Non-Cloudinary URLs are returned unchanged.
*/
export function cloudinaryAvatarUrl(url: string, displaySizePx: number): string {
if (!isCloudinaryUrl(url) || url.includes(",c_fill,")) return url;
const retinaSizePx = displaySizePx * 2;
const transform = `w_${retinaSizePx},h_${retinaSizePx},c_fill,g_face,f_auto,q_auto`;
return url.replace(CLOUDINARY_UPLOAD_SEGMENT, `${CLOUDINARY_UPLOAD_SEGMENT}${transform}/`);
}