1- import React from 'react'
1+ import { User } from 'firebase/auth'
2+ import React , { useEffect , useState } from 'react'
23import 'react-contexify/dist/ReactContexify.css'
34import { NavLink , Outlet } from 'react-router-dom'
5+ import toast from 'react-simple-toasts'
46import { auth } from 'src/features/auth'
57import './settings.css'
68
7- const UserInfo = ( ) => {
8- const userInfo = auth . currentUser
9+ interface UserInfoProps {
10+ userInfo : User // Define the type of userInfo
11+ }
12+
13+ const UserInfo = ( { userInfo } : UserInfoProps ) => {
14+ const logout = ( ) => {
15+ auth
16+ . signOut ( )
17+ . then ( ( result ) => {
18+ toast ( 'Account logged out successfuly' , { theme : 'defaultToast' } )
19+ } )
20+ . catch ( ( error ) => {
21+ toast ( 'Failed to logged out, please try later !!' , { theme : 'failure' } )
22+ } )
23+ }
924 return (
1025 < div className = "userCard" >
1126 { userInfo ?. photoURL && < img src = { userInfo . photoURL } className = "userImage" > </ img > }
1227 < div className = "userInfos" >
1328 < div className = "userName" > { userInfo ?. displayName } </ div >
1429 < div className = "userEmail" > { userInfo ?. email } </ div >
1530 </ div >
31+ < button className = "logoutBtn" onClick = { logout } >
32+ Logout
33+ </ button >
1634 </ div >
1735 )
1836}
1937
2038export const SettingsLayout = ( ) => {
39+ const [ user , setUser ] = useState < User | null > ( null )
40+ useEffect ( ( ) => {
41+ const unsubscribe = auth . onAuthStateChanged ( ( user ) => {
42+ setUser ( user )
43+ } )
44+ return ( ) => unsubscribe ( )
45+ } )
2146 const navigation = [
2247 {
2348 name : 'Topics' ,
@@ -42,7 +67,7 @@ export const SettingsLayout = () => {
4267 ]
4368 return (
4469 < div className = "settings" >
45- < UserInfo />
70+ { user != null && < UserInfo userInfo = { user } /> }
4671 < div className = "horizontalTabsLayout" >
4772 < nav className = "navigation" >
4873 { navigation . map ( ( item ) => {
0 commit comments