Skip to content

Commit fcb93cd

Browse files
committed
optimized chat checking, if it will break
1 parent c82cfd2 commit fcb93cd

2 files changed

Lines changed: 26 additions & 2 deletions

File tree

chats/serializers.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
ProjectChatMessage,
88
)
99
from files.serializers import UserFileSerializer
10-
from users.serializers import UserListSerializer, UserDetailSerializer
10+
from users.serializers import UserListSerializer, UserDetailSerializer, UserChatSerializer
1111

1212

1313
class DirectChatListSerializer(serializers.ModelSerializer):
@@ -128,7 +128,8 @@ class Meta:
128128

129129

130130
class DirectChatMessageListSerializer(serializers.ModelSerializer):
131-
author = UserDetailSerializer()
131+
# author = UserDetailSerializer()
132+
author = UserChatSerializer()
132133
reply_to = DirectChatMessageSerializer(allow_null=True)
133134
files = serializers.SerializerMethodField()
134135

users/serializers.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -349,6 +349,29 @@ def update(self, instance, validated_data):
349349
return instance
350350

351351

352+
class UserChatSerializer(serializers.ModelSerializer[CustomUser]):
353+
is_online = serializers.SerializerMethodField()
354+
355+
def get_is_online(self, user: CustomUser):
356+
request = self.context.get("request")
357+
if request and request.user.is_authenticated and request.user.id == user.id:
358+
return True
359+
cache_key = get_user_online_cache_key(user)
360+
return cache.get(cache_key, False)
361+
362+
class Meta:
363+
model = CustomUser
364+
fields = [
365+
"id",
366+
"first_name",
367+
"last_name",
368+
"patronymic",
369+
"avatar",
370+
"is_active",
371+
"is_online",
372+
]
373+
374+
352375
class UserListSerializer(
353376
serializers.ModelSerializer[CustomUser], SkillsWriteSerializerMixin
354377
):

0 commit comments

Comments
 (0)