In progress

This commit is contained in:
Xamora 2024-05-14 09:48:25 +02:00
parent da789b3306
commit 54c5943180
5 changed files with 41 additions and 26 deletions

View File

@ -38,4 +38,4 @@ class AskModel(Model):
# return if the asker ask the asked to play a game # return if the asker ask the asked to play a game
def is_asked(self, asker_id, asked_id): def is_asked(self, asker_id, asked_id):
return AskModel.objects.get(asker_id=asker_id, asked_id=asked_id) is not None return AskModel.objects.filter(asker_id=asker_id, asked_id=asked_id).first() is not None

View File

@ -1,10 +0,0 @@
from rest_framework import serializers
from django.utils.translation import gettext as _
from profiles.models import ProfileModel
from ..models import ChatChannelModel, ChatMessageModel
class AskSerializer(serializers.ModelSerializer):
members_id = serializers.ListField(child=serializers.IntegerField())

View File

@ -20,12 +20,13 @@ class AskView(APIView):
def post(self, request): def post(self, request):
data: dict = request.data data: dict = request.data
if (data["asked"] is None):
return
asker_id = request.user.pk asker_id = request.user.pk
asked_id = data["asked"] asked_id = data["asked"]
if (asked_id is None):
return Response(status=status.HTTP_400_BAD_REQUEST)
if AskModel().is_asked(asker_id, asked_id): if AskModel().is_asked(asker_id, asked_id):
return Response(status=status.HTTP_208_ALREADY_REPORTED) return Response(status=status.HTTP_208_ALREADY_REPORTED)
@ -34,16 +35,22 @@ class AskView(APIView):
def delete(self, request): def delete(self, request):
data: dict = request.data data: dict = request.data
if (data["asker"] is None):
return
asker_id = data["asker"] asker_id = data["asker"]
asked_id = request.user.pk asked_id = request.user.pk
if (asker_id is None):
asker_id = request.user.id
asked_id = data["asked"]
if (asked_id is None):
return Response(status=status.HTTP_400_BAD_REQUEST)
if not AskModel().is_asked(asker_id, asked_id): if not AskModel().is_asked(asker_id, asked_id):
return Response(status=status.HTTP_404_NOT_FOUND) return Response(status=status.HTTP_404_NOT_FOUND)
asker = User.objects.filter(pk=asked_id)[0] # Don't need more verification, just above is enough
asker = User.objects.get(pk=asker_id)
notice_manager.refuse_game(request.user, asker) notice_manager.refuse_game(request.user, asker)
AskModel(asker_id=asker_id, asked_id=asked_id).delete() AskModel(asker_id=asker_id, asked_id=asked_id).delete()
@ -59,16 +66,20 @@ class AskAcceptView(APIView):
def post(self, request): def post(self, request):
data: dict = request.data data: dict = request.data
if (data["asker"] is None):
return
asker_id = data["asker"] asker_id = data["asker"]
asked_id = request.user.pk asked_id = request.user.pk
if (asker_id is None):
return Response(status=status.HTTP_400_BAD_REQUEST)
if not AskModel().is_asked(asker_id, asked_id): if not AskModel().is_asked(asker_id, asked_id):
return Response(status=status.HTTP_404_NOT_FOUND) return Response(status=status.HTTP_404_NOT_FOUND)
notice_manager.accept_game(asker=User.objects.filter(pk=asker_id)[0], asked=User.objects.filter(pk=asked_id)[0]) asker = User.objects.get(pk=asker_id)
asked = User.objects.get(pk=asked_id)
notice_manager.accept_game(asker=asker, asked=asked)
AskModel(asker_id=asker_id, asked_id=asked_id).delete() AskModel(asker_id=asker_id, asked_id=asked_id).delete()
return Response(status=status.HTTP_200_OK) return Response(status=status.HTTP_200_OK)

View File

@ -23,7 +23,7 @@ export default class Notice {
this._socket.onclose = _ => this._socket = undefined; this._socket.onclose = _ => this._socket = undefined;
this._socket.onmessage = message => { this._socket.onmessage = message => {
const data = JSON.parse(message.data); const data = JSON.parse(message.data);
//console.log(data) console.log(data)
if (data.type === 'friend_request') { if (data.type === 'friend_request') {
this.friend_request(data.author); this.friend_request(data.author);
@ -37,7 +37,15 @@ export default class Notice {
this.online(data.user) this.online(data.user)
} else if (data.type === 'offline') { } else if (data.type === 'offline') {
this.offline(data.user) this.offline(data.user)
} } else if (data.type == 'game_asked') {
} else if (data.type == 'game_canceled') {
} else if (data.type == 'game_accepted') {
} else if (data.type == 'game_refused') {
}
}; };
} }

View File

@ -5,18 +5,24 @@ class Ask {
} }
async ask_game(asked) { async ask_game(asked) {
response = await this.client._post(`/api/chat/ask/`); response = await this.client._post(`/api/chat/ask/`, {
asked:asked,
});
} }
async ask_game_canceled() { async ask_game_canceled() {
} }
async ask_game_accepted() { async ask_game_accepted(asker) {
response = await this.client._post(`/api/chat/ask/accept`, {
asker:asker,
});
} }
async ask_game_refused() { async ask_game_refused(asker) {
response = await this.client._delete(`/api/chat/ask/`, {
asker:asker,
});
} }
} }