-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathLoggedInNav.jsx
111 lines (106 loc) · 3.2 KB
/
LoggedInNav.jsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
import React, { useState } from 'react';
import styles from '../css/loggedInNav.module.css';
import Image from 'next/image';
import logo from '../images/Logo.svg';
import Link from 'next/link';
import defaultAvatar from '../images/default-avatar.svg';
import { AiOutlineMail } from 'react-icons/ai';
import { useLogout } from '../hooks/useLogout';
import { useRouter } from 'next/router';
import { useAuthContext } from '../hooks/useAuthContext';
import Button from './Button';
import { GiHamburgerMenu } from 'react-icons/gi';
import Modal from './Modal';
export default function LoggedInNav() {
//calls logout hook to logout
const router = useRouter();
const { logout } = useLogout();
const { user } = useAuthContext();
const [showModal, setShowModal] = useState(false);
const modal = (
<Modal setShowModal={setShowModal} showModal={showModal}>
{user.photoURL ? (
/* eslint-disable-next-line @next/next/no-img-element */
<img
src={user.photoURL}
alt="profile "
className={styles.avatarImage}
onClick={() => {
router.push(`/users/${user?.displayName}`);
}}
/>
) : (
<Image
src={defaultAvatar}
alt="profile"
className={styles.avatarImage}
/>
)}
<div>Logged in {user.displayName}</div>
<Link href="/conversations" className={styles.message_container}>
<AiOutlineMail size={28} className={styles.messages} />{' '}
<span className={styles.messages}>Messages</span>
</Link>
<Button
label="Logout"
onClick={(e) => {
handleLogout(e);
}}
className={styles.logoutButton}
/>
</Modal>
);
const handleLogout = (e) => {
e.preventDefault();
logout().then(() => {
router.push('/');
});
};
return (
<nav>
<div className={styles.navContainer}>
<Link href={'/home'}>
<Image className={styles.logoStyle} alt="logo" src={logo} />
</Link>
{modal}
<GiHamburgerMenu
onClick={() => {
setShowModal(!showModal);
}}
className={styles.hamburgerMenuStyle}
/>
<div className={styles.buttonContainerStyle}>
<div className={styles.userInfoStyles}>
{user.photoURL ? (
/* eslint-disable-next-line @next/next/no-img-element */
<img
src={user.photoURL}
alt="profile "
className={styles.avatarImage}
onClick={() => {
router.push(`/users/${user?.displayName}`);
}}
/>
) : (
<Image
src={defaultAvatar}
alt="profile"
className={styles.avatarImage}
/>
)}
<Link href={'/conversations'}>
<AiOutlineMail size={28} style={{ color: 'white' }} />{' '}
</Link>
<div className={styles.username}>{user.displayName}</div>
</div>
<Button
label="Logout"
onClick={(e) => {
handleLogout(e);
}}
/>
</div>
</div>
</nav>
);
}