Skip to content

Commit 2cb42bd

Browse files
committed
feat: gravatar
1 parent c2acd7b commit 2cb42bd

File tree

5 files changed

+51
-3
lines changed

5 files changed

+51
-3
lines changed

components/dashboard/nav.tsx

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel,
1515
import { DashboardSideItems } from '@/components/dashboard/side';
1616
import { Separator } from '@/components/ui/separator';
1717

18+
import generateMD5Hash from '@/utils/app/generateMD5Hash';
19+
1820
const DashboardNav = ({ user }: { user: any }) => {
1921
const pathname = usePathname();
2022

@@ -29,6 +31,8 @@ const DashboardNav = ({ user }: { user: any }) => {
2931

3032
const description = DashboardSideItems.find((item) => item.base === breadcrumbs?.[0])?.children.find((child) => child.href === breadcrumbs?.[1])?.description;
3133

34+
const gravatarImage = 'https://www.gravatar.com/avatar/' + generateMD5Hash(user?.email);
35+
3236
return (
3337
<div>
3438
<div className='flex items-center justify-between'>
@@ -47,7 +51,7 @@ const DashboardNav = ({ user }: { user: any }) => {
4751
<DropdownMenu>
4852
<DropdownMenuTrigger asChild>
4953
<Avatar className='inline-flex items-center justify-center space-x-1 rounded-lg p-1 px-1 transition duration-200 ease-in-out hover:bg-gray-200 dark:hover:bg-stone-700'>
50-
{user.image ? <AvatarImage src={user?.image} /> : <RxAvatar className='text-2xl' />}
54+
<AvatarImage src={user.image || gravatarImage} />
5155
</Avatar>
5256
</DropdownMenuTrigger>
5357
<DropdownMenuContent>

components/landing/side/side.tsx

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,8 @@ import SideAppSettings from '@/components/landing/side/side-app-settings';
4444
import SideUserSettings from '@/components/landing/side/side-user-settings';
4545
import SideInfo from '@/components/landing/side/side-info';
4646

47+
import generateMD5Hash from '@/utils/app/generateMD5Hash';
48+
4749
const LandingSide = ({ className, user }: { className?: string; user: User | null }) => {
4850
const router = useRouter();
4951

@@ -61,6 +63,8 @@ const LandingSide = ({ className, user }: { className?: string; user: User | nul
6163

6264
if (isHiddenSide) return null;
6365

66+
const gravatarImage = 'https://www.gravatar.com/avatar/' + generateMD5Hash(user?.email as string);
67+
6468
return (
6569
<aside className={'bottom-1 left-0 top-1 z-10 h-full flex-col justify-between rounded-lg backdrop-blur md:fixed md:w-80 ' + className}>
6670
<div className='space-y-2 md:p-1'>
@@ -86,7 +90,9 @@ const LandingSide = ({ className, user }: { className?: string; user: User | nul
8690
<DropdownMenu>
8791
<DropdownMenuTrigger asChild>
8892
<div className='m-1 flex flex-grow flex-row items-center justify-start space-x-2 rounded-lg bg-white/90 py-1 shadow backdrop-blur transition-transform duration-500 dark:bg-[#202327]'>
89-
<Avatar className='inline-flex items-center justify-center'>{user?.image ? <AvatarImage src={user.image} /> : <RxAvatar className='text-2xl' />}</Avatar>
93+
<Avatar className='inline-flex items-center justify-center'>
94+
<AvatarImage src={user.image || gravatarImage} />
95+
</Avatar>
9096
<p>{user.name}</p>
9197
</div>
9298
</DropdownMenuTrigger>

package.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
"@radix-ui/react-switch": "^1.0.3",
3131
"@radix-ui/react-tabs": "^1.0.4",
3232
"@tippyjs/react": "^4.2.6",
33+
"@types/md5": "^2.3.2",
3334
"@vercel/analytics": "^1.0.1",
3435
"autoprefixer": "10.4.14",
3536
"axios": "^1.4.0",
@@ -43,6 +44,7 @@
4344
"formidable": "^3.5.0",
4445
"jotai": "^2.2.3",
4546
"lucide-react": "^0.263.1",
47+
"md5": "^2.3.0",
4648
"next": "13.4.9",
4749
"next-auth": "^4.22.3",
4850
"next-intl": "^2.19.1",
@@ -82,4 +84,4 @@
8284
"prisma": "^5.1.1",
8385
"webpack": "^5.88.2"
8486
}
85-
}
87+
}

utils/app/generateMD5Hash.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import md5 from 'md5';
2+
3+
const generateMD5Hash = (str: string) => {
4+
return md5(str);
5+
};
6+
7+
export default generateMD5Hash;

yarn.lock

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2002,6 +2002,11 @@
20022002
resolved "https://registry.npmjs.org/@types/katex/-/katex-0.16.0.tgz"
20032003
integrity sha512-hz+S3nV6Mym5xPbT9fnO8dDhBFQguMYpY0Ipxv06JMi1ORgnEM4M1ymWDUhUNer3ElLmT583opRo4RzxKmh9jw==
20042004

2005+
"@types/md5@^2.3.2":
2006+
version "2.3.2"
2007+
resolved "https://registry.yarnpkg.com/@types/md5/-/md5-2.3.2.tgz#529bb3f8a7e9e9f621094eb76a443f585d882528"
2008+
integrity sha512-v+JFDu96+UYJ3/UWzB0mEglIS//MZXgRaJ4ubUPwOM0gvLc/kcQ3TWNYwENEK7/EcXGQVrW8h/XqednSjBd/Og==
2009+
20052010
"@types/mdast@^3.0.0":
20062011
version "3.0.11"
20072012
resolved "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.11.tgz"
@@ -2706,6 +2711,11 @@ character-reference-invalid@^1.0.0:
27062711
resolved "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz"
27072712
integrity sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==
27082713

2714+
2715+
version "0.0.2"
2716+
resolved "https://registry.yarnpkg.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667"
2717+
integrity sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==
2718+
27092719
cheerio-select@^2.1.0:
27102720
version "2.1.0"
27112721
resolved "https://registry.yarnpkg.com/cheerio-select/-/cheerio-select-2.1.0.tgz#4d8673286b8126ca2a8e42740d5e3c4884ae21b4"
@@ -2885,6 +2895,11 @@ cross-spawn@^7.0.2, cross-spawn@^7.0.3:
28852895
shebang-command "^2.0.0"
28862896
which "^2.0.1"
28872897

2898+
2899+
version "0.0.2"
2900+
resolved "https://registry.yarnpkg.com/crypt/-/crypt-0.0.2.tgz#88d7ff7ec0dfb86f713dc87bbb42d044d3e6c41b"
2901+
integrity sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==
2902+
28882903
crypto-random-string@^2.0.0:
28892904
version "2.0.0"
28902905
resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5"
@@ -4138,6 +4153,11 @@ is-buffer@^2.0.0:
41384153
resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191"
41394154
integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==
41404155

4156+
is-buffer@~1.1.6:
4157+
version "1.1.6"
4158+
resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
4159+
integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==
4160+
41414161
is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7:
41424162
version "1.2.7"
41434163
resolved "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz"
@@ -4614,6 +4634,15 @@ markdown-table@^3.0.0:
46144634
resolved "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.3.tgz"
46154635
integrity sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==
46164636

4637+
md5@^2.3.0:
4638+
version "2.3.0"
4639+
resolved "https://registry.yarnpkg.com/md5/-/md5-2.3.0.tgz#c3da9a6aae3a30b46b7b0c349b87b110dc3bda4f"
4640+
integrity sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==
4641+
dependencies:
4642+
charenc "0.0.2"
4643+
crypt "0.0.2"
4644+
is-buffer "~1.1.6"
4645+
46174646
mdast-util-definitions@^5.0.0:
46184647
version "5.1.2"
46194648
resolved "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-5.1.2.tgz"

0 commit comments

Comments
 (0)