patch chat and game invite

This commit is contained in:
Xamora 2024-05-15 09:53:44 +02:00
parent f4b7a50269
commit 1ad9d0897b
8 changed files with 33 additions and 27 deletions

View File

@ -20,7 +20,7 @@ class AskView(APIView):
data: dict = request.data data: dict = request.data
asker_id = request.user.pk asker_id = request.user.pk
asked_id = data["asked"] asked_id = data.get("asked")
if (asked_id is None): if (asked_id is None):
return Response(status=status.HTTP_400_BAD_REQUEST) return Response(status=status.HTTP_400_BAD_REQUEST)
@ -38,7 +38,7 @@ class AskView(APIView):
def delete(self, request): def delete(self, request):
data: dict = request.data data: dict = request.data
asker_id = data["asker"] asker_id = data.get("asker")
asked_id = request.user.pk asked_id = request.user.pk
if (asker_id is None): if (asker_id is None):
@ -69,8 +69,6 @@ class AskView(APIView):
return Response(status=status.HTTP_204_NO_CONTENT) return Response(status=status.HTTP_204_NO_CONTENT)
return Response(status=status.HTTP_200_OK) return Response(status=status.HTTP_200_OK)
class AskAcceptView(APIView): class AskAcceptView(APIView):
permission_classes = (permissions.IsAuthenticated,) permission_classes = (permissions.IsAuthenticated,)
@ -80,7 +78,7 @@ class AskAcceptView(APIView):
data: dict = request.data data: dict = request.data
asker_id = data["asker"] asker_id = data.get("asker")
asked_id = request.user.pk asked_id = request.user.pk
if (asker_id is None): if (asker_id is None):
@ -92,7 +90,7 @@ class AskAcceptView(APIView):
asker = User.objects.get(pk=asker_id) asker = User.objects.get(pk=asker_id)
asked = request.user asked = request.user
id_game = GameModel().create({asker, asked}).pk id_game = GameModel(game_type="pong").create([asker, asked]).pk
notice_manager.accept_game(asker, request.user.username, id_game) notice_manager.accept_game(asker, request.user.username, id_game)

View File

@ -1,3 +1,7 @@
body {
overflow: hidden;
}
#gameCanvas { #gameCanvas {
display: block; display: block;
} }

View File

@ -24,6 +24,8 @@ export default class Notice {
this._socket.onmessage = async message => { this._socket.onmessage = async message => {
const data = JSON.parse(message.data); const data = JSON.parse(message.data);
console.log(data);
if (data.type === 'friend_request') { if (data.type === 'friend_request') {
this.friend_request(data.author); this.friend_request(data.author);
} else if (data.type === 'new_friend') { } else if (data.type === 'new_friend') {

View File

@ -24,7 +24,7 @@ class Channel {
this.messages.push(new Message( this.messages.push(new Message(
this.channel, this.channel,
data.author, data.author_id,
data.content, data.content,
data.time, data.time,
)); ));

View File

@ -16,7 +16,6 @@ export default class Channels {
return undefined; return undefined;
const data = await response.json(); const data = await response.json();
//console.log(data)
this.channel = new Channel(this.client, data.id, members_id, data.messages, reload); this.channel = new Channel(this.client, data.id, members_id, data.messages, reload);
} }

View File

@ -280,6 +280,7 @@ class Game {
PADDLESPEED: 3, PADDLESPEED: 3,
BALLRADIUS: 5, BALLRADIUS: 5,
BALLSPEED: 2, BALLSPEED: 2,
BALLMAXSPEED: 4,
BALLSPEEDINCR: 0.15, BALLSPEEDINCR: 0.15,
MAXBOUNCEANGLE: 10 * (Math.PI / 12), MAXBOUNCEANGLE: 10 * (Math.PI / 12),
MAXSCORE: 2 MAXSCORE: 2
@ -526,13 +527,13 @@ class Game {
let normRelIntersectY = relativeIntersectY / this.def.PADDLEHEIGHT / 2; let normRelIntersectY = relativeIntersectY / this.def.PADDLEHEIGHT / 2;
let bounceAngle = normRelIntersectY * this.def.MAXBOUNCEANGLE; let bounceAngle = normRelIntersectY * this.def.MAXBOUNCEANGLE;
ball.speed += this.def.BALLSPEEDINCR; ball.speed += ball.speed >= this.def.BALLMAXSPEED ? 0 : this.def.BALLSPEEDINCR;
ball.vx = ball.speed * side * Math.cos(bounceAngle); ball.vx = ball.speed * side * Math.cos(bounceAngle);
ball.vy = ball.speed * -Math.sin(bounceAngle); ball.vy = ball.speed * -Math.sin(bounceAngle);
} }
keyUpHandler(ev) { keyUpHandler(ev) {
let attributes = ev.originalTarget.attributes; let attributes = ev.target.attributes;
let key = ev.key === undefined ? `${attributes.direction.value}${attributes.user_id.value}` : ev.key; let key = ev.key === undefined ? `${attributes.direction.value}${attributes.user_id.value}` : ev.key;
@ -542,7 +543,7 @@ class Game {
} }
keyDownHandler(ev) { keyDownHandler(ev) {
let attributes = ev.originalTarget.attributes; let attributes = ev.target.attributes;
let key = ev.key === undefined ? `${attributes.direction.value}${attributes.user_id.value}` : ev.key; let key = ev.key === undefined ? `${attributes.direction.value}${attributes.user_id.value}` : ev.key;

View File

@ -155,7 +155,7 @@ export default class extends AbstractView {
let messages = await this.display_messages(chat); let messages = await this.display_messages(chat);
// Input pour rentrer un message // Input pour rentrer un message
let chat_input = document.getElementById("chat-input") || document.createElement("input"); let chat_input = document.getElementById("chat_input") || document.createElement("input");
chat_input.id="chat_input"; chat_input.id="chat_input";
chat_input.type="text"; chat_input.type="text";
chat_input.name="message"; chat_input.name="message";
@ -186,8 +186,7 @@ export default class extends AbstractView {
// Scroll to the bottom of messages // Scroll to the bottom of messages
messages.scrollTop = messages.scrollHeight; messages.scrollTop = messages.scrollHeight;
this.display_invite(); await this.display_invite();
} }
async display_messages(chat) { async display_messages(chat) {
@ -216,7 +215,13 @@ export default class extends AbstractView {
let i = 0; let i = 0;
this.channelManager.channel.messages.forEach((message) => { this.channelManager.channel.messages.forEach((message) => {
if (messages.children[i] == null || message.content != messages.children[i].innerText) { let content, child_inner;
if (messages.children[i] != null) {
child_inner = messages.children[i].innerText.toLowerCase().replace(/\s/g, '');
content = message.content.toLowerCase().replace(/\s/g, '');
}
if (messages.children[i] == null || content != child_inner) {
let text = document.createElement("p"); let text = document.createElement("p");
let date = new Date(message.time); let date = new Date(message.time);
text.title = date.toLocaleString("fr-FR"); text.title = date.toLocaleString("fr-FR");

View File

@ -108,11 +108,8 @@ WSGI_APPLICATION = 'transcendence.wsgi.application'
DATABASES = { DATABASES = {
'default': { 'default': {
'ENGINE': 'django.db.backends.postgresql', 'ENGINE': 'django.db.backends.sqlite3',
'HOST': 'django-db', 'NAME': BASE_DIR / 'db.sqlite3',
'NAME': os.environ['POSTGRES_DB'],
'USER': os.environ['POSTGRES_USER'],
'PASSWORD': os.environ['POSTGRES_PASSWORD'],
} }
} }