@@ -3,15 +3,45 @@ import { ChatSidebar } from '@/components/chat-sidebar';
3
3
import { AppContent } from '@/components/app-content' ;
4
4
import { ChatShell } from '@/components/chat-shell' ;
5
5
import ChatHeaderLayout from '@/layouts/chat/chat-header-layout' ;
6
+ import { useEffect , useState } from 'react' ;
6
7
7
8
const ChatSidebarLayout = ( { children, breadcrumbs = [ ] } ) => {
8
9
const page = usePage ( ) ;
9
10
const conversations = page . props . conversations ;
10
11
const selectedConversation = page . props . selectedConversation ;
12
+ const [ onlineUsers , setOnlineUsers ] = useState ( { } ) ;
11
13
12
14
console . log ( "conversations :" , conversations ) ;
13
15
console . log ( "selectedConversation " , selectedConversation ) ;
14
16
17
+ useEffect ( ( ) => {
18
+ Echo . join ( 'online' )
19
+ . here ( ( users ) => {
20
+ const onlineUsersObj = Object . fromEntries (
21
+ users . map ( ( user ) => [ user . id , user ] )
22
+ ) ;
23
+ setOnlineUsers ( ( prevOnlineUsers ) => {
24
+ return { ...prevOnlineUsers , ...onlineUsersObj }
25
+ } )
26
+ } )
27
+ . joining ( ( user ) => {
28
+ setOnlineUsers ( ( prevOnlineUsers ) => {
29
+ const updatedUsers = { ...prevOnlineUsers } ;
30
+ updatedUsers [ user . id ] = user ;
31
+ return updatedUsers ;
32
+ } )
33
+ } )
34
+ . leaving ( ( user ) => {
35
+ setOnlineUsers ( ( prevOnlineUsers ) => {
36
+ const updatedUsers = { ...prevOnlineUsers } ;
37
+ delete updatedUsers [ user . id ] ;
38
+ return updatedUsers ;
39
+ } )
40
+ } )
41
+ . error ( ( error ) => {
42
+ console . log ( "error" , error )
43
+ } )
44
+ } , [ ] )
15
45
return (
16
46
< ChatShell variant = "sidebar" >
17
47
< ChatSidebar />
0 commit comments