11'use client'
22
3- import {
4- BellIcon ,
5- CreditCardIcon ,
6- LogOutIcon ,
7- UserCircleIcon ,
8- } from 'lucide-react'
3+ import { BellIcon , LogOutIcon , UserCircleIcon } from 'lucide-react'
94
10- import { Avatar , AvatarFallback , AvatarImage } from '@/components/ui/avatar'
5+ import { Avatar , AvatarFallback } from '@/components/ui/avatar'
116import {
127 DropdownMenu ,
138 DropdownMenuContent ,
@@ -21,17 +16,17 @@ import { Button } from './ui/button'
2116import { useEffect } from 'react'
2217import { useToast } from './hooks/use-toast'
2318import { Notification } from '@/lib/types/notification'
24- import { streamNoti } from '@/lib/api/noti '
19+ import { streamNotification } from '@/lib/api/notification '
2520import { logoutAction } from '@/lib/actions/logout'
21+ import { User } from '@/lib/types/user'
22+ import { Badge } from './ui/badge'
23+ import Link from 'next/link'
2624
2725export function NavUser ( {
2826 user,
2927} : {
30- user : {
31- id : string
32- name : string
33- email : string
34- avatar : string
28+ user : User & {
29+ unread_notifications_count : number
3530 }
3631} ) {
3732 const { toast } = useToast ( )
@@ -52,7 +47,7 @@ export function NavUser({
5247 } )
5348 }
5449
55- const cleanup = streamNoti ( user . id , {
50+ const cleanup = streamNotification ( user . id , {
5651 onMessage : onMessage ,
5752 onError : onError ,
5853 onConnect : console . log ,
@@ -62,11 +57,13 @@ export function NavUser({
6257
6358 return (
6459 < DropdownMenu >
65- < DropdownMenuTrigger asChild >
60+ < DropdownMenuTrigger asChild className = "cursor-pointer" >
6661 < Button variant = "ghost" className = "relative h-8 w-8 rounded-full" >
6762 < Avatar className = "w-8 h-8" >
68- < AvatarImage src = { user . avatar } alt = { user . name } />
69- < AvatarFallback className = "rounded-lg" > AO</ AvatarFallback >
63+ { /* <AvatarImage src={user.avatar} alt={user.name} /> */ }
64+ < AvatarFallback className = "rounded-lg" >
65+ { user . name . slice ( 0 , 2 ) }
66+ </ AvatarFallback >
7067 </ Avatar >
7168 </ Button >
7269 </ DropdownMenuTrigger >
@@ -80,8 +77,9 @@ export function NavUser({
8077 < DropdownMenuLabel className = "p-0 font-normal" >
8178 < div className = "flex items-center gap-2 px-1 py-1.5 text-left text-sm" >
8279 < Avatar className = "h-8 w-8 rounded-lg" >
83- < AvatarImage src = { user . avatar } alt = { user . name } />
84- < AvatarFallback className = "rounded-lg" > AO</ AvatarFallback >
80+ < AvatarFallback className = "rounded-lg" >
81+ { user . name . slice ( 0 , 2 ) }
82+ </ AvatarFallback >
8583 </ Avatar >
8684 < div className = "grid flex-1 text-left text-sm leading-tight" >
8785 < span className = "truncate font-medium" > { user . name } </ span >
@@ -97,17 +95,20 @@ export function NavUser({
9795 < UserCircleIcon />
9896 Account
9997 </ DropdownMenuItem >
100- < DropdownMenuItem >
101- < CreditCardIcon />
102- Billing
103- </ DropdownMenuItem >
104- < DropdownMenuItem >
105- < BellIcon />
106- Notifications
98+ < DropdownMenuItem asChild >
99+ < Link href = "/notifications" >
100+ < BellIcon />
101+ Notifications
102+ { user . unread_notifications_count > 0 && (
103+ < Badge className = "" variant = "outline" >
104+ { user . unread_notifications_count }
105+ </ Badge >
106+ ) }
107+ </ Link >
107108 </ DropdownMenuItem >
108109 </ DropdownMenuGroup >
109110 < DropdownMenuSeparator />
110- < DropdownMenuItem onClick = { logoutAction } >
111+ < DropdownMenuItem onClick = { logoutAction } variant = "destructive" >
111112 < LogOutIcon />
112113 Log out
113114 </ DropdownMenuItem >
0 commit comments