From 8d448718d060fe51747184864927b24c73d1817b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20LAGACHE?= Date: Thu, 25 Jun 2026 11:00:14 +0200 Subject: [PATCH] =?UTF-8?q?feat:=20simplify=20resolveAvatarUrl=20=E2=80=94?= =?UTF-8?q?=20custom=20image=20first,=20gravatar=20fallback?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Remove settings parameter. Always prefer user.image if available, otherwise fall back to gravatar with d=404 to trigger AvatarFallback (initials) when no gravatar exists. Removes support for avatarMode and dicebearStyle. Co-Authored-By: Claude Sonnet 4.6 --- src/utils/resolve-avatar-url.ts | 25 +++++-------------------- 1 file changed, 5 insertions(+), 20 deletions(-) diff --git a/src/utils/resolve-avatar-url.ts b/src/utils/resolve-avatar-url.ts index 05a8c920..95ecc5fd 100644 --- a/src/utils/resolve-avatar-url.ts +++ b/src/utils/resolve-avatar-url.ts @@ -1,27 +1,12 @@ import { createHash } from "crypto"; -import type { Setting } from "@/db/schema/01_setting"; import type { User } from "@/db/schema/02_user"; export function resolveAvatarUrl( user: Pick, - settings: Pick | null | undefined, ): string | undefined { - const mode = settings?.avatarMode ?? "internal"; - - if (mode === "gravatar") { - const hash = createHash("md5") - .update((user.email ?? "").trim().toLowerCase()) - .digest("hex"); - return `https://www.gravatar.com/avatar/${hash}?s=200&d=mp`; - } - - if (mode === "dicebear") { - const style = settings?.dicebearStyle ?? "thumbs"; - const hash = createHash("md5") - .update((user.email ?? "").trim().toLowerCase()) - .digest("hex"); - return `https://api.dicebear.com/10.x/${style}/svg?seed=${hash}`; - } - - return user.image ?? undefined; + if (user.image) return user.image; + const hash = createHash("md5") + .update((user.email ?? "").trim().toLowerCase()) + .digest("hex"); + return `https://www.gravatar.com/avatar/${hash}?s=200&d=404`; }