diff --git a/docker-compose/requirements/djangoserver/Dockerfile b/docker-compose/requirements/djangoserver/Dockerfile index 2d69fa1..1145a09 100644 --- a/docker-compose/requirements/djangoserver/Dockerfile +++ b/docker-compose/requirements/djangoserver/Dockerfile @@ -34,6 +34,8 @@ RUN mkdir -p /var/www/djangoserver/ WORKDIR /var/www/djangoserver STOPSIGNAL SIGKILL RUN mkdir -p /var/www/djangoserver/static/ +RUN mkdir -p /var/www/djangoserver/pfp/ +RUN mkdir -p /var/www/djangoserver/banner/ COPY file/server /var/www/djangoserver/server RUN chmod 755 /var/www/djangoserver/ && chown -R www-data:www-data /var/www/djangoserver/ diff --git a/docker-compose/requirements/djangoserver/file/server/server/typeRequests/changeBanner.py b/docker-compose/requirements/djangoserver/file/server/server/typeRequests/changeBanner.py new file mode 100644 index 0000000..a6016c8 --- /dev/null +++ b/docker-compose/requirements/djangoserver/file/server/server/typeRequests/changeBanner.py @@ -0,0 +1,38 @@ +# **************************************************************************** # +# # +# ::: :::::::: # +# changeBanner.py :+: :+: :+: # +# +:+ +:+ +:+ # +# By: edbernar ", views.pfp, name='pfp'), + path("banner/", views.banner, name='banner'), ] handler404 = "server.views.handler404" diff --git a/docker-compose/requirements/djangoserver/file/server/server/views.py b/docker-compose/requirements/djangoserver/file/server/server/views.py index 062683d..19268e7 100644 --- a/docker-compose/requirements/djangoserver/file/server/server/views.py +++ b/docker-compose/requirements/djangoserver/file/server/server/views.py @@ -1,4 +1,4 @@ -from django.http import HttpResponse +from django.http import HttpResponse, FileResponse from django.shortcuts import render, redirect from .models import User, MailVerify from .data import UID42, SECRET42, SERVER_URL @@ -126,7 +126,15 @@ def logout(request): return redirect("/") def handler404(request, exception): - return(index(request)); + return(index(request)) def err404(request): return(render(request, "err404.html")) + +def pfp(request, str): + image_path = os.path.join('/var/www/djangoserver/pfp/', str) + return FileResponse(open(image_path, 'rb'), content_type='image/png') + +def banner(request, str): + image_path = os.path.join('/var/www/djangoserver/banner/', str) + return FileResponse(open(image_path, 'rb'), content_type='image/png') \ No newline at end of file diff --git a/docker-compose/requirements/djangoserver/file/server/server/websocket.py b/docker-compose/requirements/djangoserver/file/server/server/websocket.py index d8a6ee4..3696b7b 100644 --- a/docker-compose/requirements/djangoserver/file/server/server/websocket.py +++ b/docker-compose/requirements/djangoserver/file/server/server/websocket.py @@ -6,7 +6,7 @@ # By: edbernar ` - banner.innerHTML = `` + banner.innerHTML = `` editPenPfpBg = document.getElementById('editPenPfpBg'); inputPfp = document.getElementById('inputPfp'); editPenPfpBg.addEventListener('click', () => { + inputPfp.setAttribute('accept', '.png, .jpeg, .jpg, .gif'); inputPfp.click(); }); - inputPfp.setAttribute('accept', '.png, .jpeg, .jpg'); - inputPfp.addEventListener('change', (event) => { - const reader = new FileReader(); - const validTypes = ['image/png', 'image/jpeg']; - const file = event.target.files[0]; + inputPfp.setAttribute('accept', '.png, .jpeg, .jpg, .gif'); + inputPfp.addEventListener('change', () => inputChange(true)); - function arrayBufferToBase64(buffer) { - let binary = ''; - const bytes = new Uint8Array(buffer); - const len = bytes.byteLength; - for (let i = 0; i < len; i++) { - binary += String.fromCharCode(bytes[i]); - } - return window.btoa(binary); - } - if (validTypes.includes(file.type)) - { - reader.onload = (e) => { - const arrayBuffer = e.target.result; - - console.log(arrayBuffer); - sendRequest('change_pfp', {img: arrayBufferToBase64(arrayBuffer), type: file.type}) - } - reader.readAsArrayBuffer(file); - } - }); + editPenBanner = document.getElementsByClassName('editPen')[0]; + inputBanner = document.getElementById('inputBanner'); + editPenBanner.addEventListener('click', () => { + inputBanner.setAttribute('accept', '.png, .jpeg, .jpg, .gif'); + inputBanner.click(); + }); + inputBanner.setAttribute('accept', '.png, .jpeg, .jpg, .gif'); + inputBanner.addEventListener('change', () => inputChange(false)); } if (userInfo.id != userMeInfo.id) { @@ -140,4 +129,40 @@ function externButtons(userInfo) discordButton.remove(); } -export { ProfilPage }; \ No newline at end of file +function inputChange(isPfp) +{ + const reader = new FileReader(); + const validTypes = ['image/png', 'image/jpeg', 'image/webp'] + const file = event.target.files[0]; + + function arrayBufferToBase64(buffer) { + let binary = ''; + const bytes = new Uint8Array(buffer); + const len = bytes.byteLength; + for (let i = 0; i < len; i++) { + binary += String.fromCharCode(bytes[i]); + } + return window.btoa(binary); + } + if (validTypes.includes(file.type)) + { + reader.onload = (e) => { + const arrayBuffer = e.target.result; + + if (isPfp) + sendRequest('change_pfp', {img: arrayBufferToBase64(arrayBuffer), type: file.type}) + else + sendRequest('change_banner', {img: arrayBufferToBase64(arrayBuffer), type: file.type}) + waitForchangePfp().then((content) => { + if (isPfp) + document.getElementsByClassName('profile-image')[0].style.backgroundImage = `url("${content.pfp}")` + else + document.getElementsByClassName('background-card')[0].style.backgroundImage = `url("${content.banner}")` + }); + } + reader.readAsArrayBuffer(file); + } +} + + +export { ProfilPage }; diff --git a/docker-compose/requirements/nginx/static/javascript/typeResponse/typeChangePfp.js b/docker-compose/requirements/nginx/static/javascript/typeResponse/typeChangePfp.js new file mode 100644 index 0000000..f54620a --- /dev/null +++ b/docker-compose/requirements/nginx/static/javascript/typeResponse/typeChangePfp.js @@ -0,0 +1,42 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* typeChangePfp.js :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: edbernar { + if (changePfpAvailable) + { + changePfpAvailable = false; + resolve(changePfp); + } + else + changePfpResolve = resolve; + }); +} + +function typeChangePfp(list) +{ + changePfp = list; + changePfpAvailable = true; + if (changePfpResolve) + { + changePfpResolve(changePfp); + changePfpResolve = null; + changePfpAvailable = false; + } +} + +export { typeChangePfp, waitForchangePfp }; \ No newline at end of file diff --git a/docker-compose/requirements/nginx/static/javascript/websocket.js b/docker-compose/requirements/nginx/static/javascript/websocket.js index e3324dc..bec3f78 100644 --- a/docker-compose/requirements/nginx/static/javascript/websocket.js +++ b/docker-compose/requirements/nginx/static/javascript/websocket.js @@ -6,7 +6,7 @@ /* By: edbernar