4f26ca1a7b
* feat: Base implementation of v2 of avatars * Make avatarUrl and logoUrl entirely optional * Made necessary backwards compat changes * fix: type errors * Fix: OG image * fix types * Consistency with other behaviour, ux tweak --------- Co-authored-by: Peer Richelsen <peeroke@gmail.com>
34 lines
1.0 KiB
TypeScript
34 lines
1.0 KiB
TypeScript
import { WEBAPP_URL } from "@calcom/lib/constants";
|
|
import { AVATAR_FALLBACK } from "@calcom/lib/constants";
|
|
import type { User, Team } from "@calcom/prisma/client";
|
|
|
|
/**
|
|
* Gives an organization aware avatar url for a user
|
|
* It ensures that the wrong avatar isn't fetched by ensuring that organizationId is always passed
|
|
*/
|
|
export const getUserAvatarUrl = (
|
|
user: (Pick<User, "username" | "organizationId"> & { avatarUrl?: string | null }) | undefined
|
|
) => {
|
|
if (user?.avatarUrl) {
|
|
return user.avatarUrl;
|
|
}
|
|
if (!user?.username) return AVATAR_FALLBACK;
|
|
// avatar.png automatically redirects to fallback avatar if user doesn't have one
|
|
return `${WEBAPP_URL}/${user.username}/avatar.png${
|
|
user.organizationId ? `?orgId=${user.organizationId}` : ""
|
|
}`;
|
|
};
|
|
|
|
export const getOrgAvatarUrl = (
|
|
org: Pick<Team, "id" | "slug"> & {
|
|
logoUrl?: string | null;
|
|
requestedSlug: string | null;
|
|
}
|
|
) => {
|
|
if (org.logoUrl) {
|
|
return org.logoUrl;
|
|
}
|
|
const slug = org.slug ?? org.requestedSlug;
|
|
return `${WEBAPP_URL}/org/${slug}/avatar.png`;
|
|
};
|