Skip to content

Commit cad0637

Browse files
committed
feat: integrate EditUsernameModal into UserMenu for username editing
1 parent a1a26f0 commit cad0637

File tree

1 file changed

+28
-6
lines changed

1 file changed

+28
-6
lines changed

web/src/modules/shared/components/layout/UserMenu.tsx

Lines changed: 28 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,34 @@
1-
import { faMusic, faSignOutAlt } from '@fortawesome/free-solid-svg-icons';
1+
'use client';
2+
import {
3+
faMusic,
4+
faPen,
5+
faSignOutAlt,
6+
} from '@fortawesome/free-solid-svg-icons';
27
import Image from 'next/image';
38

49
import { LoggedUserData } from '@web/src/modules/auth/types/User';
510

11+
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
12+
import { useState } from 'react';
13+
import { UserMenuButton } from '../client/UserMenuButton';
14+
import { EditUsernameModal } from './EditUsernameModal';
15+
import { UserMenuLink, UserMenuSplitLine } from './UserMenuLink';
616
import {
717
Popover,
818
PopoverArrow,
919
PopoverContent,
1020
PopoverTrigger,
1121
} from './popover';
12-
import { UserMenuLink, UserMenuSplitLine } from './UserMenuLink';
13-
import { UserMenuButton } from '../client/UserMenuButton';
1422

15-
export function UserMenu({ userData }: { userData: LoggedUserData }) {
23+
export const UserMenu = ({ userData }: { userData: LoggedUserData }) => {
24+
const [isEditingUsername, setIsEditingUsername] = useState(false);
1625
return (
1726
<Popover>
27+
<EditUsernameModal
28+
isOpen={isEditingUsername}
29+
setIsOpen={setIsEditingUsername}
30+
userData={userData}
31+
/>
1832
<PopoverTrigger>
1933
<UserMenuButton userData={userData} />
2034
</PopoverTrigger>
@@ -40,7 +54,15 @@ export function UserMenu({ userData }: { userData: LoggedUserData }) {
4054
/>
4155
</div>
4256
<div className='flex-shrink min-w-0 flex flex-col leading-tight'>
43-
<h4 className='truncate font-semibold'>{userData.username}</h4>
57+
<h4 className='truncate font-semibold'>
58+
{userData.username}
59+
<button
60+
className='ml-1 text-zinc-300 hover:text-white'
61+
onClick={() => setIsEditingUsername(true)}
62+
>
63+
<FontAwesomeIcon icon={faPen} />
64+
</button>
65+
</h4>
4466
<p className='text-zinc-300 text-xs truncate'>{userData.email}</p>
4567
</div>
4668
</div>
@@ -57,4 +79,4 @@ export function UserMenu({ userData }: { userData: LoggedUserData }) {
5779
</PopoverContent>
5880
</Popover>
5981
);
60-
}
82+
};

0 commit comments

Comments
 (0)