From 0900920426ce49f2ec9efadc9909cd73c324f23d Mon Sep 17 00:00:00 2001 From: Jennifer Lindgren <jennifer.lindgren93@gmail.com> Date: Sun, 12 May 2019 14:01:04 +0200 Subject: [PATCH] Backend: Added user rooms to be able to notify about added collaborators. --- backend/bootstrap.sh | 2 +- backend/db.sqlite | Bin 36864 -> 36864 bytes backend/socketio_helper.py | 94 +++++++++++++++++++++++++------------ 3 files changed, 65 insertions(+), 31 deletions(-) diff --git a/backend/bootstrap.sh b/backend/bootstrap.sh index 73e43f71..f81daafc 100755 --- a/backend/bootstrap.sh +++ b/backend/bootstrap.sh @@ -1,6 +1,6 @@ #!/bin/bash +source $(pipenv --venv)/bin/activate export PYTHONPATH=. export FLASK_APP=./app.py export SECRET="aSHOwmmH75H5s2Nnfdl23J09Shg" -source $(pipenv --venv)/bin/activate python3 app.py \ No newline at end of file diff --git a/backend/db.sqlite b/backend/db.sqlite index 0c812abca8441045f224e5dcbfc5525078f7b9a1..c260d6e6c5036f1638e03c679cde794f3c48127c 100644 GIT binary patch delta 286 zcmZozz|^pSX@WH4&WSS4j5{|bEcEB+d&I!PXUE9Dlh2OdkgspEpnx79s~;0PgYo42 zcrixB$*u89S%yXmhQ?N==2pg*dIqM(=9Z>`EbI*CjE;^RzLg4@dC5hoDVa$*sR{)} z`B|ySB}_&JhL*Yprn-g(3WkPOMwV8_7J8Ou<_3m_a2Z1d14}Ctb1OqrJwqciBXc8u z{wxOniH+Wq4dX3Y7#JYzo$=lrjQk%M_&@O9-YnQ~iGT9Fd?5usMs@~9Nlpe{Cb#^Y zl++?#{`U+_{AU>X@A9AF-^IUsv!K9Ceo_AS3_=XZ03<MZU%dfXR1jH)VNrts00<yN AA^-pY delta 164 zcmZozz|^pSX@WGP?nD`9M%|4G3;lT+7#NuO4H@`%@@MfIZWa_!=AUdBZz=7|#Li&I z>FCJeTd9zkn^={Zm#$Dyl%JKFTrxQ-PD#kXQo+dB%Fx)#z(mj7+}Og>X!6c@Zw>|l z1_u7y{I@p?HeBMLd@o;U;sgOch#hAb_}}s0<v+7oP+%Yb<TLe3LIRAe42+EOOiW>! OspY!)c{!Df8Uz3iP%Sk8 diff --git a/backend/socketio_helper.py b/backend/socketio_helper.py index 8073b7ee..da16e90b 100644 --- a/backend/socketio_helper.py +++ b/backend/socketio_helper.py @@ -6,6 +6,54 @@ from flask_socketio import SocketIO, send, emit, join_room, leave_room socketio = SocketIO(app) +## Join user room +@socketio.on('joinUserRoom') +def on_join_user_room(data): + data = json.loads(data) + user_id = data['userId'] + room = 'user' + str(user_id) + join_room(room) + emit('joinUserRoom', { + 'on': 'joinUserRoom', + 'userId': user_id + }, room=room) + +@socketio.on('leaveUserRoom') +def on_leave_user_room(data): + data = json.loads(data) + user_id = data['userId'] + room = 'user' + str(user_id) + join_room(room) + emit('leaveUserRoom', { + 'on': 'leaveUserRoom', + 'userId': user_id + }, room=room) + +## Join project room +@socketio.on('joinProjectRoom') +def on_join_project_room(data): + data = json.loads(data) + username = data['username'] + project_id = data['projectId'] + room = 'project' + str(project_id) + join_room(room) + emit('joinProjectRoom', { + 'on': 'joinProjectRoom', + 'username': username + }, room=room) + +@socketio.on('leaveProjectRoom') +def on_leave_project_room(data): + data = json.loads(data) + username = data['username'] + project_id = data['projectId'] + room = 'project' + str(project_id) + leave_room(room) + emit('leaveProjectRoom', { + 'on': 'leaveProjectRoom', + 'username': username + }, room=room) + ## Project handling ## @socketio.on('projectCreated') def handle_project_created(data): @@ -13,7 +61,7 @@ def handle_project_created(data): emit('projectCreated', { 'on': 'projectCreated', 'project': project - }, broadcast=True) + }, room = 'project' + str(project['id'])) @socketio.on('projectChanged') def handle_project_changed(data): @@ -21,7 +69,7 @@ def handle_project_changed(data): emit('projectChanged', { 'on': 'projectChanged', 'project': project - }, broadcast=True) + }, room = 'project' + str(project['id'])) @socketio.on('projectDeleted') def handle_project_deleted(data): @@ -29,7 +77,15 @@ def handle_project_deleted(data): emit('projectDeleted', { 'on': 'projectDeleted', 'projectId': projectId - }, broadcast=True) + }, room = 'project' + str(projectId)) + +@socketio.on('collaboratorAdded') +def handle_collaborator_added(data): + collaborator = json.loads(data) + emit('collaboratorAdded', { + 'on': 'collaboratorAdded', + 'collaborator': collaborator + }, room = 'user' + str(collaborator['userId'])) @socketio.on('collaboratorChanged') def handle_collaborator_changed(data): @@ -37,7 +93,7 @@ def handle_collaborator_changed(data): emit('collaboratorChanged', { 'on': 'collaboratorChanged', 'collaborator': collaborator - }, broadcast=True) + }, room = 'project' + str(collaborator['projectId'])) ## File handling ## @socketio.on('fileCreated') @@ -46,7 +102,7 @@ def handle_file_created(data): emit('fileCreated', { 'on': 'fileCreated', 'file': file - }, room=file['projectId']) + }, room = 'project' + str(file['projectId'])) @socketio.on('fileChanged') def handle_file_changed(data): @@ -54,7 +110,7 @@ def handle_file_changed(data): emit('fileChanged', { 'on': 'fileChanged', 'file': file - }, room=file['projectId']) + }, room = 'project' + str(file['projectId'])) @socketio.on('fileDeleted') def handle_file_deleted(data): @@ -62,7 +118,7 @@ def handle_file_deleted(data): emit('fileDeleted', { 'on': 'fileDeleted', 'file': file - }, room=file['projectId']) + }, room = 'project' + str(file['projectId'])) ## Chat ## @socketio.on('message') @@ -86,26 +142,4 @@ def handle_message(data): 'author': db.user_schema.dumps(author), 'time': new_message.time, 'message': message - }, room=projectId) - -@socketio.on('join') -def on_join(data): - data = json.loads(data) - username = data['username'] - room = data['projectId'] - join_room(room) - emit('join', { - 'on': 'join', - 'username': username - }, room=room) - -@socketio.on('leave') -def on_leave(data): - data = json.loads(data) - username = data['username'] - room = data['projectId'] - leave_room(room) - emit('leave', { - 'on': 'leave', - 'username': username - }, room=room) \ No newline at end of file + }, room = 'project' + str(projectId)) \ No newline at end of file -- GitLab