diff --git a/backend/bootstrap.sh b/backend/bootstrap.sh index 73e43f7146e2b9b0d82013139bac82e4e4a5ce18..f81daafcd73bcc954e6ada53cc83472cc7c2e2e5 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 Binary files a/backend/db.sqlite and b/backend/db.sqlite differ diff --git a/backend/socketio_helper.py b/backend/socketio_helper.py index 8073b7ee2df1e52a70d1c7dd00c0dd1f08284312..da16e90b2cbb53ae69c8cfdf96e5ae2fc03d1859 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