From 1fa00c55097f024cec10e1cc7285df1fab21dd37 Mon Sep 17 00:00:00 2001 From: Githmi Hashara Date: Fri, 13 Sep 2024 20:19:44 +0530 Subject: [PATCH] Refactor UserMenu component to clean up code and improve imports --- app/components/navbar/UserMenu.tsx | 97 +++++++++++++++++++----------- 1 file changed, 62 insertions(+), 35 deletions(-) diff --git a/app/components/navbar/UserMenu.tsx b/app/components/navbar/UserMenu.tsx index 3794b5e..3b7291e 100644 --- a/app/components/navbar/UserMenu.tsx +++ b/app/components/navbar/UserMenu.tsx @@ -1,39 +1,41 @@ -'use client'; +'use client' -import { AiOutlineMenu } from "react-icons/ai"; -import Avatar from "../Avatar"; -import { useCallback, useState } from "react"; -import MenuItem from "./MenuItem"; -import useRegisterModal from "@/app/hooks/useRegisterModal"; -import useLoginModal from "@/app/hooks/useLoginModal"; -import { signOut } from "next-auth/react"; -import { SafeUser } from "@/app/types"; -import useRentModal from "@/app/hooks/useRentModal"; -import { useRouter } from "next/navigation"; +import { useState, useCallback } from 'react' +import { AiOutlineMenu } from 'react-icons/ai' +import { SafeUser } from '@/app/types' +import { signOut } from 'next-auth/react' +import { useRouter } from 'next/navigation' + +import useRegisterModal from '@/app/hooks/useRegisterModal' +import useLoginModal from '@/app/hooks/useLoginModal' +import useRentModal from '@/app/hooks/useRentModal' + +import Avatar from '../Avatar' +import MenuItem from './MenuItem' interface UserMenuProps { - currentUser?: SafeUser | null; + currentUser?: SafeUser | null } const UserMenu: React.FC = ({ currentUser }) => { - const router = useRouter(); - const registerModal = useRegisterModal(); - const loginModal = useLoginModal(); - const rentModal = useRentModal(); - const [isOpen, setIsOpen] = useState(false); + const router = useRouter() + const registerModal = useRegisterModal() + const loginModal = useLoginModal() + const rentModal = useRentModal() + + const [isOpen, setIsOpen] = useState(false) const toggleOpen = useCallback(() => { - setIsOpen((value) => !value); - }, []); + setIsOpen((value) => !value) + }, []) const onRent = useCallback(() => { if (!currentUser) { - return loginModal.onOpen(); + return loginModal.onOpen() } - // open rent modal - rentModal.onOpen(); - }, [currentUser, loginModal, rentModal]); + rentModal.onOpen() + }, [currentUser, loginModal, rentModal]) return (
@@ -42,7 +44,7 @@ const UserMenu: React.FC = ({ currentUser }) => { onClick={onRent} className="hidden md:block text-sm font-semibold py-3 px-4 rounded-full hover:bg-neutral-100 transition cursor-pointer" > - StayNest your home + Airbnb your home
= ({ currentUser }) => {
+ {isOpen && (
{currentUser ? ( <> - router.push("/trips")} label="My trips" /> - router.push("/favorites")} label="My favourites" /> - router.push("/reservations")} label="My reservations" /> - router.push("/properties")} label="My properties" /> - + router.push('/trips')} + label="My trips" + /> + router.push('/favorites')} + label="My favorites" + /> + router.push('/reservations')} + label="My reservations" + /> + router.push('/properties')} + label="My properties" + /> +
- signOut()} label="Logout" /> + signOut()} + label="Logout" + /> ) : ( <> - - + + )}
)} - ); -}; + ) +} -export default UserMenu; +export default UserMenu