Merge pull request 'add extra user fields for chat' (#59) from behruz into main
All checks were successful
Deploy to Production / build-and-deploy (push) Successful in 1m55s
All checks were successful
Deploy to Production / build-and-deploy (push) Successful in 1m55s
Reviewed-on: #59
This commit is contained in:
@@ -4,6 +4,11 @@ from channels.db import database_sync_to_async
|
|||||||
from channels.generic.websocket import AsyncWebsocketConsumer
|
from channels.generic.websocket import AsyncWebsocketConsumer
|
||||||
from django.contrib.auth.models import AnonymousUser
|
from django.contrib.auth.models import AnonymousUser
|
||||||
|
|
||||||
|
def get_base_url(scope):
|
||||||
|
headers = dict(scope["headers"])
|
||||||
|
host = headers.get(b"host", b"").decode()
|
||||||
|
scheme = "https" if scope.get("scheme") == "https" else "http"
|
||||||
|
return f"{scheme}://{host}"
|
||||||
|
|
||||||
class ChatConsumer(AsyncWebsocketConsumer):
|
class ChatConsumer(AsyncWebsocketConsumer):
|
||||||
"""
|
"""
|
||||||
@@ -91,6 +96,12 @@ class ChatConsumer(AsyncWebsocketConsumer):
|
|||||||
text=text,
|
text=text,
|
||||||
)
|
)
|
||||||
full_name = user.get_full_name().strip() or str(user.phone)
|
full_name = user.get_full_name().strip() or str(user.phone)
|
||||||
|
base_url = get_base_url(self.scope)
|
||||||
|
|
||||||
|
avatar_url = (
|
||||||
|
base_url + user.avatar.url
|
||||||
|
if user.avatar else None
|
||||||
|
)
|
||||||
return {
|
return {
|
||||||
"id": msg.id,
|
"id": msg.id,
|
||||||
"message_type": msg.message_type,
|
"message_type": msg.message_type,
|
||||||
@@ -100,6 +111,8 @@ class ChatConsumer(AsyncWebsocketConsumer):
|
|||||||
"id": user.id,
|
"id": user.id,
|
||||||
"full_name": full_name,
|
"full_name": full_name,
|
||||||
"role": user.role,
|
"role": user.role,
|
||||||
|
"phone": user.phone,
|
||||||
|
"avatar": avatar_url,
|
||||||
},
|
},
|
||||||
"created_at": msg.created_at.isoformat(),
|
"created_at": msg.created_at.isoformat(),
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,10 +13,13 @@ class BaseChatmessageSerializer(serializers.ModelSerializer):
|
|||||||
full_name = obj.sender.get_full_name().strip()
|
full_name = obj.sender.get_full_name().strip()
|
||||||
if not full_name:
|
if not full_name:
|
||||||
full_name = str(obj.sender.phone)
|
full_name = str(obj.sender.phone)
|
||||||
|
request = self.context.get("request")
|
||||||
return {
|
return {
|
||||||
"id": obj.sender.id,
|
"id": obj.sender.id,
|
||||||
"full_name": full_name,
|
"full_name": full_name,
|
||||||
"role": obj.sender.role,
|
"role": obj.sender.role,
|
||||||
|
"phone": obj.sender.phone,
|
||||||
|
"avatar": request.build_absolute_uri(obj.sender.avatar.url) if obj.sender.avatar else None,
|
||||||
}
|
}
|
||||||
|
|
||||||
def get_file_url(self, obj):
|
def get_file_url(self, obj):
|
||||||
|
|||||||
Reference in New Issue
Block a user