11package com .connect .controller ;
22
3- import com .connect .dto .ChatUserDTO ;
43import com .connect .dto .MessageDTO ;
4+ import com .connect .dto .UserDTO ;
5+ import com .connect .model .Message ;
6+ import com .connect .model .User ;
57import com .connect .service .ChatUserService ;
68import lombok .extern .slf4j .Slf4j ;
79import org .springframework .beans .factory .annotation .Autowired ;
1113import org .springframework .messaging .simp .SimpMessagingTemplate ;
1214import org .springframework .web .bind .annotation .RestController ;
1315
14- import java .util .Map ;
15- import java .util .concurrent .ConcurrentHashMap ;
16+ import java .util .List ;
17+ import java .util .Optional ;
18+ import java .util .stream .Collectors ;
1619
1720// ChatUserController
1821// Controller for handling the websocket routes
@@ -28,44 +31,50 @@ public class ChatUserController {
2831 @ Autowired
2932 private SimpMessagingTemplate messagingTemplate ;
3033
31- // Temporary persistent (in memory) storage for saving the user.
32- // May remove it later just for testing purpose.
33- Map <String , ChatUserDTO > userData = new ConcurrentHashMap <>();
34-
3534 @ MessageMapping ("/greet" )
36- public void handleGreeting (@ Payload ChatUserDTO chatUser ) {
37- log .info ("Greeting Request from the user: {}" , chatUser .toString ());
38- chatUserService .greetingHandler (chatUser );
35+ public void handleGreeting (SimpMessageHeaderAccessor headerAccessor ) {
36+ log .info ("Greeting Request from the user" );
37+ String token = headerAccessor .getFirstNativeHeader ("Authorization" );
38+ chatUserService .greetingHandler (token );
3939 messagingTemplate .convertAndSend ("/topic/greet" , "websocket connection established" );
4040 }
4141
42- // Route for handling the joining message.
43- @ MessageMapping ("/chat.join" )
44- public void joinRoom (SimpMessageHeaderAccessor headerAccessor ) {
45- String user = headerAccessor .getFirstNativeHeader ("username" );
46- String roomID = headerAccessor .getFirstNativeHeader ("roomID" );
47- log .info ("Joining Request from user: {} and room: {}" , user , roomID );
48- chatUserService .joiningRequestHandler (user , roomID );
49- }
50-
5142 @ MessageMapping ("/chat.send" )
5243 public void handleMessage (@ Payload MessageDTO message , SimpMessageHeaderAccessor headerAccessor ) {
5344 // Fetching the RoomID from the header.
5445 String roomID = headerAccessor .getFirstNativeHeader ("roomId" );
5546 log .info ("Sending the message to the room: {}" , roomID );
56- chatUserService .addMessagetoRoom (message , roomID );
57- messagingTemplate .convertAndSend ("/topic/chat/" + roomID , message );
47+ Optional <Message > dbMessage = chatUserService .addMessagetoRoom (message , roomID );
48+ dbMessage .ifPresent (msg ->
49+ messagingTemplate .convertAndSend ("/topic/chat/" + roomID , msg ));
5850 }
5951
6052 // Route for handling the history.
6153 @ MessageMapping ("/chat.history" )
6254 public void handleHistory (SimpMessageHeaderAccessor headerAccessor ) {
63- String roomID = headerAccessor .getFirstNativeHeader ("roomId" );
64- log .info ("Handling the History of chats for the Room: {}" , roomID );
65- var messages = chatUserService .chatHistoryHandler (roomID );
66- if (!messages .isEmpty ()) {
67- messagingTemplate .convertAndSend ("/topic/history/" + roomID , messages );
68- }
55+ String roomId = headerAccessor .getFirstNativeHeader ("roomId" );
56+ log .info ("Handling the History of chats for the Room: {}" , roomId );
57+ Optional <List <Message >> messages = chatUserService .chatHistoryHandler (roomId );
58+ messages .ifPresent (msgs -> {
59+ List <MessageDTO > dtoList = msgs .stream ()
60+ .map (MessageDTO ::new )
61+ .collect (Collectors .toList ());
62+
63+ messagingTemplate .convertAndSend ("/topic/history/" +roomId , dtoList );
64+ });
65+ }
66+
67+ @ MessageMapping ("/users" )
68+ public void fetchUsers () {
69+ Optional <List <User >> users = chatUserService .fetchUser ();
70+ users .ifPresent (users1 -> {
71+ List <UserDTO > modifiedUsers = users1
72+ .stream ()
73+ .map (UserDTO ::new )
74+ .collect (Collectors .toList ());
75+ System .out .println ("working dude" );
76+ messagingTemplate .convertAndSend ("/topic/users" , modifiedUsers );
77+ });
6978 }
7079
7180}
0 commit comments