@@ -36,6 +36,31 @@ def get_queryset(self):
3636 user = self .request .user
3737 return user .direct_chats .all ()
3838
39+ def get (self , request , * args , ** kwargs ):
40+ chats = self .get_queryset ()
41+ serialized_chats = []
42+ for chat in chats :
43+ # fixme: move to function like get_user() and get_opponent()
44+ chat_id = chat .id
45+ user1_id , user2_id = map (int , chat_id .split ("_" ))
46+
47+ try :
48+ user1 = User .objects .get (pk = user1_id )
49+ user2 = User .objects .get (pk = user2_id )
50+ except User .DoesNotExist :
51+ # fixme: show deleted profile
52+ continue
53+
54+ if user1 == request .user :
55+ opponent = user2
56+ else : # fixme: if user1 == user2
57+ opponent = user1
58+
59+ context = {"opponent" : opponent }
60+ serialized_chat = DirectChatListSerializer (chat , context = context ).data
61+ serialized_chats .append (serialized_chat )
62+ return Response (serialized_chats , status = status .HTTP_200_OK )
63+
3964
4065class ProjectChatList (ListAPIView ):
4166 serializer_class = ProjectChatListSerializer
@@ -70,16 +95,17 @@ def get(self, request, *args, **kwargs) -> Response:
7095 user1 = User .objects .get (pk = user1_id )
7196 user2 = User .objects .get (pk = user2_id )
7297
73- data = DirectChatDetailSerializer (DirectChat .get_chat (user1 , user2 )).data
74-
7598 if user1 == request .user :
76- # may be is better to use serializer or return dict -
77- # {"first_name": user2.first_name, "last_name": user2.last_name}
78- data ["name" ] = f"{ user2 .first_name } { user2 .last_name } "
79- data ["image_address" ] = user2 .avatar
99+ opponent = user2
80100 else :
81- data ["name" ] = f"{ user1 .first_name } { user1 .last_name } "
82- data ["image_address" ] = user1 .avatar
101+ opponent = user1
102+ context = {"opponent" : opponent }
103+ data = DirectChatDetailSerializer (
104+ DirectChat .get_chat (user1 , user2 ), context = context
105+ ).data
106+
107+ data ["name" ] = f"{ opponent .first_name } { opponent .last_name } "
108+ data ["image_address" ] = opponent .avatar
83109
84110 return Response (
85111 status = status .HTTP_200_OK ,
0 commit comments