Skip to content

Commit 21cbb0c

Browse files
authored
Merge pull request #1290 from GW2Treasures/feature/gravatar
Add experimental gravatar image in admin user list
2 parents 01c0fba + b9eb6d8 commit 21cbb0c

File tree

2 files changed

+21
-1
lines changed

2 files changed

+21
-1
lines changed

apps/web/app/admin/users/page.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import { ensureUserIsAdmin } from '../admin';
1111
import { Tip } from '@gw2treasures/ui/components/Tip/Tip';
1212
import { ProviderIcon } from '@/components/Provider/Provider';
1313
import { FlexRow } from '@gw2treasures/ui/components/Layout/FlexRow';
14+
import { Gravatar } from '@/components/User/Gravatar';
1415

1516
function getUsers() {
1617
return db.user.findMany({
@@ -35,7 +36,7 @@ export default async function AdminUserPage() {
3536

3637
<Users.Table>
3738
<Users.Column id="id" title="Id" hidden>{({ id }) => <Code inline borderless>{id}</Code>}</Users.Column>
38-
<Users.Column id="name" title="Username" sortBy="name">{({ name }) => name}</Users.Column>
39+
<Users.Column id="name" title="Username" sortBy="name">{({ name, defaultEmail }) => <FlexRow><Gravatar email={defaultEmail?.email}/>{name}</FlexRow>}</Users.Column>
3940
<Users.Column id="providers" title="Providers" sortBy="name">
4041
{({ providers }) => (
4142
<FlexRow wrap>

apps/web/components/User/Gravatar.tsx

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
/* eslint-disable @next/next/no-img-element */
2+
import { createHash } from 'node:crypto';
3+
import { FC } from 'react';
4+
5+
interface GravatarProps {
6+
email?: string
7+
}
8+
9+
export const Gravatar: FC<GravatarProps> = ({ email }) => {
10+
if(!email) {
11+
return null;
12+
}
13+
14+
const hash = createHash('sha256').update(email.trim().toLocaleLowerCase()).digest('hex');
15+
16+
return (
17+
<img src={`https://gravatar.com/avatar/${hash}?s=48`} alt="" width={24} height={24} style={{ borderRadius: 2 }}/>
18+
);
19+
};

0 commit comments

Comments
 (0)