diff --git a/apps/dokploy/components/dashboard/settings/profile/profile-form.tsx b/apps/dokploy/components/dashboard/settings/profile/profile-form.tsx index 49fdfd2dd..eaa48a2a6 100644 --- a/apps/dokploy/components/dashboard/settings/profile/profile-form.tsx +++ b/apps/dokploy/components/dashboard/settings/profile/profile-form.tsx @@ -1,3 +1,4 @@ +import { Avatar, AvatarFallback } from "@/components/ui/avatar"; import { AlertBlock } from "@/components/shared/alert-block"; import { Button } from "@/components/ui/button"; import { @@ -19,7 +20,7 @@ import { import { Input } from "@/components/ui/input"; import { RadioGroup, RadioGroupItem } from "@/components/ui/radio-group"; import { Switch } from "@/components/ui/switch"; -import { generateSHA256Hash } from "@/lib/utils"; +import { generateSHA256Hash, getFallbackAvatarInitials } from "@/lib/utils"; import { api } from "@/utils/api"; import { zodResolver } from "@hookform/resolvers/zod"; import { Loader2, User } from "lucide-react"; @@ -257,6 +258,20 @@ export const ProfileForm = () => { value={field.value} className="flex flex-row flex-wrap gap-2 max-xl:justify-center" > + + + + + + + + {getFallbackAvatarInitials(data?.user?.email)} + + + {availableAvatars.map((image) => ( diff --git a/apps/dokploy/components/layouts/user-nav.tsx b/apps/dokploy/components/layouts/user-nav.tsx index 05c601f6e..a339f05f4 100644 --- a/apps/dokploy/components/layouts/user-nav.tsx +++ b/apps/dokploy/components/layouts/user-nav.tsx @@ -17,6 +17,7 @@ import { } from "@/components/ui/select"; import { authClient } from "@/lib/auth-client"; import { Languages } from "@/lib/languages"; +import { getFallbackAvatarInitials } from "@/lib/utils"; import { api } from "@/utils/api"; import useLocale from "@/utils/hooks/use-locale"; import { ChevronsUpDown } from "lucide-react"; @@ -46,7 +47,7 @@ export const UserNav = () => { src={data?.user?.image || ""} alt={data?.user?.image || ""} /> - CN + {getFallbackAvatarInitials(data?.user?.email)}
Account diff --git a/apps/dokploy/lib/utils.ts b/apps/dokploy/lib/utils.ts index b763e9ee9..cf9f2cc94 100644 --- a/apps/dokploy/lib/utils.ts +++ b/apps/dokploy/lib/utils.ts @@ -27,3 +27,15 @@ export function formatTimestamp(timestamp: string | number) { return "Fecha inválida"; } } + +export function getFallbackAvatarInitials(email: string | undefined): string { + if (typeof email === "undefined") return "CN"; + + const [emailUsername = ""] = email.split('@'); + const parts = emailUsername.split(/[\._-]+/).filter(Boolean); + if (parts.length >= 2) { + // @ts-ignore we are sure parts[0] and parts[1] exist + return (parts[0]?.charAt(0) + parts[1].charAt(0)).toUpperCase(); + } + return emailUsername.slice(0, 2).toUpperCase(); +}