diff --git a/Lab_3/Twidder/server.py b/Lab_3/Twidder/server.py index d8b132cbeecff3417d820e9a1b25d4e9a0ba1be1..23fe8bb13353b4a7930818aad9e7a8beee445e8f 100644 --- a/Lab_3/Twidder/server.py +++ b/Lab_3/Twidder/server.py @@ -1,3 +1,4 @@ + """Server""" from flask import Flask, jsonify, request, make_response from gevent.pywsgi import WSGIServer @@ -7,8 +8,6 @@ import json from flask_sock import Sock from gevent import monkey monkey.patch_all() - - #Remember: #PUT for updating data, POST for adding new data #save token on client and server (lab 3) @@ -17,28 +16,18 @@ monkey.patch_all() # python3 server.py # http://127.0.0.1:5000/myServer # sqlite3 database.db ".read schema.sql" - #Questions: #Why does localhost in URL not work? - - - app = Flask(__name__, static_url_path = '/static')#in case flask does not recognize folder sock = Sock(app) - app.debug = True session = {'token': ("email", "wsObj")} - - - @app.route('/') def root(): return app.send_static_file('client.html') - @app.route('/myServer') def myServer(): return app.send_static_file('client.html') - def token_has_error(token): """All token standard error checks""" if token is None: @@ -51,7 +40,6 @@ def token_has_error(token): #"User not signed in or invalid access token" return True, 401 return False, 0 - def input_has_error(input): """All standard input error checks""" try: @@ -63,16 +51,12 @@ def input_has_error(input): if len(str) > 50: # "Server received too long " + str return True, 400, "" return False, 0, str - - @sock.route('/myServer/api') def echo(socket): while True: - # Making sure we have a valid socket if not socket: return - # Making sure message format is OK and store email & token in string data = socket.receive() try: @@ -83,24 +67,54 @@ def echo(socket): myToken = json.loads(data)["token"] except: return - - # sign out if I am logged in somewhere else - print(session) - for token in list(session.keys()): - if session[token][0] == myEmail and token != myToken: - if session[token][1] != "": - session[token][1].send(json.dumps({"action" : "signOut"})) - session[token][1].close() - print("You got kicked out") - session.pop(token) - print(session) - - # Put socket in global dict so server knows my connection is open - session[myToken] = (myEmail, socket) - print(session) - socket.send(json.dumps({"action" : "signIn"})) + try: + mode = json.loads(data)["mode"] + except: + return + + #When sign_in is called + if mode == 0: + print("/n") + print("Inside mode 0") + print("/n") + # sign out if I am logged in somewhere else + print("/n") + print(session) + print("/n") + for token in list(session.keys()): + if session[token][0] == myEmail and token != myToken: + print("after first if") + if session[token][1] != "": + print("after second if") + session[token][1].send(json.dumps({"action" : "signOut"})) + session[token][1].close() + print("You got kicked out") + session.pop(token) + print("/n") + print(session) + print("/n") + print("-------------------------------") + # Put socket in global dict so server knows my connection is open + session[myToken] = (myEmail, socket) + print(session) + socket.send(json.dumps({"action" : "signIn"})) + #When sign_out is called + else: + # Close my socket + print("/n") + print("Inside mode 1") + print("/n") + print(session) + print("/n") + session[token][1].send(json.dumps({"action" : "signOut"})) + session[token][1].close() + session.pop(token) + print("/n") + print(session) + print("/n") + + #set user to not logged in - @app.route("/myServer/sign_in", methods=['POST']) def sign_in(): """Sign in user""" @@ -110,21 +124,17 @@ def sign_in(): if tmp[0]: return jsonify({}), tmp[1] email = tmp[2] - # Validate Password tmp = input_has_error('password') if tmp[0]: return jsonify({}), tmp[1] password = tmp[2] - # Do the user have an account? rows = database_helper.find_user(email) if rows is None or rows == []: return jsonify({}), 404 #"No user found by your email" - if password != rows[1]: return jsonify({}), 401 #"Incorrect password") - # Generate a random token token = str(uuid.uuid4()) session[token] = (email, "") @@ -134,18 +144,14 @@ def sign_in(): response.headers.add("Access-Control-Allow-Origin", "*") response.headers["Authorization"] = token return response, 204 - - @app.route("/myServer/sign_up", methods=['POST']) def sign_up(): """Sign up a user""" - tmp = input_has_error('email') if tmp[0]: - print(tmp[1]) + # print(tmp[1]) return jsonify({}), tmp[1] email = tmp[2] - # Checking that the user does not already exist if database_helper.find_user(email) is not None: return jsonify({}), 409 #"Error: User already exists" @@ -176,14 +182,11 @@ def sign_up(): if tmp[0]: return jsonify({}), tmp[1] country = tmp[2] - # Attempts to insert the user data to the database if database_helper.create_user(email, password, firstname, familyname, gender, city, country): return jsonify({}), 204 #"Server inserted user data into database" else: return jsonify({}), 500 #"General Error: Server failed to insert user data into database" - - @app.route("/myServer/sign_out", methods=['POST']) def sign_out(): """Sign out user""" @@ -194,118 +197,97 @@ def sign_out(): if tmp[0]: return jsonify({}), tmp[1] - # Close my socket - print(session) - try: - session[token][1].close() - except: - pass # samma sak som ingenting - print(session) - - # set user to not logged in - session.pop(token) - + #-------------------------------------- + # # Close my socket + # print(session) + # try: + # session[token][1].close() + # except: + # pass # samma sak som ingenting + # print(session) + + + # #set user to not logged in + # session.pop(token) + #-------------------------------------- return jsonify({}), 204 # "Successfully signed out") - - @app.route("/myServer/change_password", methods=['PUT']) def change_password(): """Change password for the current user""" token = request.headers["Authorization"] - # Validate Token tmp = token_has_error(token) if tmp[0]: - print("validate token") + #print("validate token") return jsonify({}), tmp[1] - # Validate Old Password tmp = input_has_error('old_password') if tmp[0]: - print("validate old password") + #print("validate old password") return jsonify({}), tmp[1] old_password = tmp[2] - # Validate New Password tmp = input_has_error('new_password') if tmp[0]: - print("validate new password") + #print("validate new password") return jsonify({}), tmp[1] new_password = tmp[2] - # Extracting theemail of the current user email = session[token][0] - # Validation of the old password and attemption to change it to the new one if old_password == database_helper.find_user(email)[1]: #checks if old_password is correct status = database_helper.update_user(new_password, email) if status: - print("Password changed") + # print("Password changed") return jsonify({}), 204 # "Password has been changed!" else: return jsonify({}), 500 # "Password has not been changed" else: return jsonify({}), 400 # "Old password is incorrect" - - @app.route("/myServer/getDataByToken", methods=['GET']) def get_user_data_by_token(): """Verify current user through token and attemp to return the data of the user""" token = request.headers["Authorization"] - # Validate token if token not in session: return jsonify({}), 401 # "User not signed in or invalid access token" - # Extracting the email of the current user email = session[token][0] return get_user_data_by_email(email) - - @app.route("/myServer/getDataByEmail/<email>", methods=['GET']) def get_user_data_by_email(email): """Get user data by email""" token = request.headers["Authorization"] - # Validate Token tmp = token_has_error(token) if tmp[0]: return jsonify({}), tmp[1] - # Validate email if email is None: return True, 400 if len(email) > 50: return True, 400 - # Attempting to find the data of the current user in the database data = database_helper.find_user(email) if data is None or data == []: return jsonify({}), 404 #"No user found by your destination email" - formated_data = {"email": data[0], "firstname": data[2], "familyname": data[3], "gender": data[4], "city": data[5], "country": data[6]} return jsonify({"data" : formated_data}), 200 # "Data successfully sent to you!" - - @app.route("/myServer/getUserMessageByToken", methods=['GET']) def get_user_messages_by_token(): """Get user's message wall thought the token of the user""" token = request.headers["Authorization"] - # Validate Token tmp = token_has_error(token) if tmp[0]: return jsonify({}), tmp[1] - # Extracting the email of the current user email = session[token][0] return get_user_messages_by_email(email) - @app.route("/myServer/getMessagesByEmail/<req_email>", methods=['GET']) def get_user_messages_by_email(req_email): """Get user's message wall thought the email of the user""" token = request.headers["Authorization"] - # Validate Token tmp = token_has_error(token) if tmp[0]: @@ -316,36 +298,28 @@ def get_user_messages_by_email(req_email): return True, 400 if len(req_email) > 50: return True, 400 - # Find requested user in the data base rows = database_helper.find_user(req_email) - # Error check if rows is None or rows == []: return jsonify({}), 404 #"No user found by your destination email" - # Insert post-info into array rows = database_helper.get_post(req_email) result = [] for row in rows: result.append({"email": row[0], "person_who_posted": row[1], "message": row[2]}) - # Notify user if the wall is empty or not, and if not, return the all messages if result == []: return jsonify({}), 204 #"user's wall had no messages to collect" return jsonify({"data" : result}), 200 # User posts has been displayed" - - @app.route("/myServer/post", methods=['POST']) def post_message(): """Post a message on sombody's wall""" - # Find out sender's email token = request.headers["Authorization"] tmp = token_has_error(token) if tmp[0]: return jsonify({}), tmp[1] - # Extracting the email of the current user my_email = session[token][0] @@ -354,24 +328,19 @@ def post_message(): if tmp[0]: return jsonify({}), tmp[1] destination_email = tmp[2] - # Finding out if the user exist, who we wanna write a message to rows = database_helper.find_user(destination_email) if rows is None or rows == []: return jsonify({}), 404 #"No user found by your destination email" - # Verify message that we want to post tmp = input_has_error('message') if tmp[0]: return jsonify({}), tmp[1] message = tmp[2] - # Calling and error checking function if not database_helper.create_post(my_email, destination_email, message): return jsonify({}), 500 #"Server failed to post message to database" return jsonify({}), 204 #"Succeeded to post message") - - if __name__ == '__main__': # app.run(port=5000, debug=True) app.debug = True diff --git a/Lab_3/Twidder/static/client.js b/Lab_3/Twidder/static/client.js index a4995c8c8e36ea8091923a9d74a35ceb0cb90c13..e4000ec28e63d95551b59a3815e210ffda7ce0b3 100644 --- a/Lab_3/Twidder/static/client.js +++ b/Lab_3/Twidder/static/client.js @@ -1,3 +1,4 @@ + // Global variables var minPassLength = 2; var windowDiv; @@ -6,45 +7,62 @@ var profileDiv; var url = 'http://' + document.domain + ':5000/myServer/'; var curr_page = ""; var socket; - // source "/Users/lorenzo/OneDrive - Linköpings universitet/Skola/DI3B/TDDD97/virtualenv/bin/activate" - - -function connectWithSocket() { +function allowDrop(event) { + event.preventDefault(); +} +function drag(event) { + event.dataTransfer.setData("text/plain", event.target.innerHTML); +} +function dropHome(event) { + event.preventDefault(); + let data = event.dataTransfer.getData("text/plain"); + // Replaces parts of the string. "g" gör att alla accurences av substringen byts ut + let newStr = data.replace(/<br>/g, "\n"); + // newStr = tmp.replace(/ /g, ''); + document.getElementById("homeTextarea").innerHTML = newStr; +} +function dropBrowse(event) { + event.preventDefault(); + let data = event.dataTransfer.getData("text/plain"); + // Replaces parts of the string. "g" gör att alla accurences av substringen byts ut + let newStr = data.replace(/<br>/g, "\n"); + // newStr = tmp.replace(/ /g, ''); + document.getElementById("browseTextarea").innerHTML = newStr; +} +// Socket +function connectWithSocket(mode) { let token = localStorage.getItem("currentUser"); - // Changes the view to profile view and loads user info displayView(); setUserDetails("home"); - - // Establish web socket socket = new WebSocket('ws://' + document.domain + ':5000/myServer/api'); - socket.onopen = function (event) { let myEmail = localStorage.getItem("homeEmail"); - + if (mode == 0) {//Once sign_in is called + console.log("Inside connectWithSocket mode 0") + this.send(JSON.stringify({ token: token, email: myEmail, mode: mode })); + } + else {//Once sign_out is called + console.log("Inside connectWithSocket mode 1") + this.send(JSON.stringify({ token: token, email: myEmail, mode: mode })); + } // Todo - ändra så att token skickas i header istället - this.send(JSON.stringify({token: token, email: myEmail})); console.log("Nu har jag skickat"); } - socket.onmessage = function (event) { let response = JSON.parse(event.data); - - console.log("Nu fick jag svar"); + console.log("Nu fick jag svar"); switch (response["action"]) { case "signOut": - // If old socket open, close it. socket.close(); console.log(response); - // Reset token in the localStorage localStorage.setItem("currentUser", ""); localStorage.setItem("homeEmail", ""); localStorage.setItem("browseEmail", ""); - // Changes the view to welcome view displayView(); document.getElementById("error").innerHTML = "Signed Out, you signed in elsewhere"; @@ -53,50 +71,46 @@ function connectWithSocket() { console.log(response); console.log("ja är signed in"); break; - } + } } } - - // - - - - - Init Request Objects - - - - - // - // Sign In Request Object var signInRequest = new XMLHttpRequest(); -signInRequest.onreadystatechange = function() { +signInRequest.onreadystatechange = function () { if (this.readyState == 4) { - let errorMessage = document.getElementById("error"); if (this.status == 204) { - let token = this.getResponseHeader("Authorization") + let token = this.getResponseHeader("Authorization"); localStorage.setItem("currentUser", token); - connectWithSocket(); + console.log("Inside SignInRequest") + connectWithSocket(0); } else if (this.status == 400) { - errorMessage.innerHTML = "Error 400: Incorrect format"; + errorMessage.innerHTML = "Error 400: Incorrect format"; } else if (this.status == 404) { - errorMessage.innerHTML = "Error 404: No user with that email exists"; + errorMessage.innerHTML = "Error 404: No user with that email exists"; } else if (this.status == 401) { - errorMessage.innerHTML = "Error 401: Incorrect password"; + errorMessage.innerHTML = "Error 401: Incorrect password"; } else { - errorMessage.innerHTML = "Unknown error"; - } + errorMessage.innerHTML = "Unknown error"; + } } }; - // Sign Out Request Object var signOutRequest = new XMLHttpRequest(); -signOutRequest.onreadystatechange = function() { +signOutRequest.onreadystatechange = function () { if (this.readyState == 4) { + // Reset token in the localStorage + localStorage.setItem("currentUser", ""); + localStorage.setItem("homeEmail", ""); + localStorage.setItem("browseEmail", ""); + console.log("Inside signOutRequest") if (this.status == 204) { - - // Reset token in the localStorage - localStorage.setItem("currentUser", ""); - localStorage.setItem("homeEmail", ""); - localStorage.setItem("browseEmail", ""); - + connectWithSocket(1); // Changes the view to welcome view displayView(); } @@ -107,15 +121,13 @@ signOutRequest.onreadystatechange = function() { else { console.log("Unknown error"); displayView(); - } + } } }; - // Sign Up Request Object var signUpRequest = new XMLHttpRequest(); signUpRequest.onreadystatechange = function () { if (this.readyState == 4) { - let errorMessage = document.getElementById("error"); if (this.status == 204) { errorMessage.innerHTML = "You have signed up"; @@ -128,18 +140,16 @@ signUpRequest.onreadystatechange = function () { } else if (this.status == 500) { errorMessage.innerHTML = "Error 500: Error at server side"; - } + } else { errorMessage.innerHTML = "Unknown error"; } } }; - // Change Password Request Object var ChangePassRequest = new XMLHttpRequest(); ChangePassRequest.onreadystatechange = function () { if (this.readyState == 4) { - let errorMessage = document.getElementById("match_error"); if (this.status == 204) { errorMessage.innerHTML = "Password has been changed!"; @@ -148,26 +158,23 @@ ChangePassRequest.onreadystatechange = function () { errorMessage.innerHTML = "Error 400: Old password is incorrect or Old/New password has wrong format" } else if (this.status == 401) { - errorMessage.innerHTML = "Error 401: You are not logged in" + errorMessage.innerHTML = "Error 401: You are not logged in"; } else if (this.status == 500) { errorMessage.innerHTML = "Error 500: Error at server side"; } else { - errorMessage.innerHTML = "Unknown error" + errorMessage.innerHTML = "Unknown error"; } errorMessage.style.display = "block"; } }; - // Get user data by token Request Object var dataByTokenRequest = new XMLHttpRequest(); -dataByTokenRequest.onreadystatechange = function() { +dataByTokenRequest.onreadystatechange = function () { if (this.readyState == 4) { if (this.status == 200) { - let userDataArray = JSON.parse(this.responseText); - // Putting the user data we retrieved from server to the corresponding html table let userTable = document.getElementById("homeUserInfo"); userTable.rows[0].cells[1].innerHTML = userDataArray["data"].email; @@ -176,7 +183,6 @@ dataByTokenRequest.onreadystatechange = function() { userTable.rows[3].cells[1].innerHTML = userDataArray["data"].gender; userTable.rows[4].cells[1].innerHTML = userDataArray["data"].city; userTable.rows[5].cells[1].innerHTML = userDataArray["data"].country; - localStorage.setItem("homeEmail", userDataArray["data"].email); reloadWall("home"); } @@ -194,17 +200,13 @@ dataByTokenRequest.onreadystatechange = function() { } } }; - // Get user data by email Request Object var dataByEmailRequest = new XMLHttpRequest(); -dataByEmailRequest.onreadystatechange = function() { +dataByEmailRequest.onreadystatechange = function () { if (this.readyState == 4) { - let errorMessage = document.getElementById("searchMessage"); if (this.status == 200) { - let userDataArray = JSON.parse(this.responseText); - // Putting the user data we retrieved from server to the corresponding html table let userTable = document.getElementById("browseUserInfo"); userTable.rows[0].cells[1].innerHTML = userDataArray["data"].email; @@ -213,38 +215,33 @@ dataByEmailRequest.onreadystatechange = function() { userTable.rows[3].cells[1].innerHTML = userDataArray["data"].gender; userTable.rows[4].cells[1].innerHTML = userDataArray["data"].city; userTable.rows[5].cells[1].innerHTML = userDataArray["data"].country; - localStorage.setItem("browseEmail", userDataArray["data"].email); errorMessage.iinnerHTML = "" reloadWall("browse"); } else { if (this.status == 401) { - errorMessage.innerHTML = "Error 401: You are not loged in"; + errorMessage.innerHTML = "Error 401: You are not loged in"; } else if (this.status == 400) { - errorMessage.innerHTML = "Error 400: Incorrect format"; + errorMessage.innerHTML = "Error 400: Incorrect format"; } else if (this.status == 404) { - errorMessage.innerHTML = "Error 404: No user with that email exists"; + errorMessage.innerHTML = "Error 404: No user with that email exists"; } else { - errorMessage.innerHTML = "Unknown error"; - } + errorMessage.innerHTML = "Unknown error"; + } localStorage.setItem("browseEmail", ""); } } }; - // Get Messages By Token Request Object var messagesByTokenRequest = new XMLHttpRequest(); -messagesByTokenRequest.onreadystatechange = function() { +messagesByTokenRequest.onreadystatechange = function () { if (this.readyState == 4) { - if (this.status == 200) { - let currentWall = JSON.parse(this.responseText); - // Formating the text before putting to wall let complete = ""; for (let i = 0; i < currentWall.data.length; i++) { @@ -266,26 +263,21 @@ messagesByTokenRequest.onreadystatechange = function() { } else { console.log("Unknown error"); - } + } } }; - // Get Messages By Email Request Object var messagesByEmailRequest = new XMLHttpRequest(); -messagesByEmailRequest.onreadystatechange = function() { +messagesByEmailRequest.onreadystatechange = function () { if (this.readyState == 4) { - if (this.status == 200) { - let currentWall = JSON.parse(this.responseText); - // Fromating the text before putting to wall let complete = ""; for (let i = 0; i < currentWall.data.length; i++) { complete += currentWall.data[i].person_who_posted + ': ' + currentWall.data[i].message + "</br>"; } document.getElementById('browsePostedMessagesDiv').innerHTML = complete; - } else if (this.status == 204) { console.log("Success, but no messages to receive"); @@ -301,17 +293,15 @@ messagesByEmailRequest.onreadystatechange = function() { } else { console.log("Unknown error"); - } + } } }; - // Post Message Request Object var postMessageRequest = new XMLHttpRequest(); postMessageRequest.onreadystatechange = function () { if (this.readyState == 4) { - let errorMessage = document.getElementById('searchMessage'); - if (this.status == 204) { + if (this.status == 204) { console.log('Message posted!') errorMessage.innerHTML = ""; if (curr_page != null && curr_page != "") @@ -334,28 +324,20 @@ postMessageRequest.onreadystatechange = function () { } } }; - - // - - - - - Init functions - - - - - // - // Function for displaying the right view -displayView = function(){ +displayView = function () { if (localStorage.getItem("currentUser") == "") windowDiv.innerHTML = welcomeDiv.innerHTML; else windowDiv.innerHTML = profileDiv.innerHTML; }; - - // - - - - - The function when page loads - - - - - // - window.onload = function () { - // Delete when done - används för att hoppa tillbaka till rtt view under utveckling // localStorage.setItem("currentUser", ""); // localStorage.setItem("homeEmail", ""); // localStorage.setItem("browseEmail", ""); - // All key/value pairs stored in out localStorage // If first time? check this: if (localStorage.getItem("homeEmail") == null) @@ -364,56 +346,46 @@ window.onload = function () { localStorage.setItem("browseEmail", ""); if (localStorage.getItem("currentUser") == null) localStorage.setItem("currentUser", ""); - // Initialize div objects (global variables) welcomeDiv = document.getElementById("welcomeview"); profileDiv = document.getElementById("profileview"); windowDiv = document.getElementById("windowDiv"); - if (localStorage.getItem("currentUser") != "") {//if logged in - connectWithSocket(); + connectWithSocket(0); } else { // Set correct view depending on if someone is signed in or not displayView(); } }; - - // Function for setting user details, either for yourself or for some other user function setUserDetails(who) { - // "who" could be either home or browse, this way know which info we are displaying and where let token = localStorage.getItem("currentUser"); - if (token != null && token != "" ){ + if (token != null && token != "") { let userTable = document.getElementById(who + "UserInfo"); let email = localStorage.getItem(who + "Email"); - // Display my own info if (who == 'home') { // Send request to server about receiving the info dataByTokenRequest.open("GET", url + "getDataByToken", true); dataByTokenRequest.setRequestHeader("Content-Type", "application/json;charset=UTF-8"); - dataByTokenRequest.setRequestHeader("Authorization", token) + dataByTokenRequest.setRequestHeader("Authorization", token); dataByTokenRequest.send(); } - // Display the info about the searched user else if (who == 'browse' && email != null && email != "") { // Send request to server about receiving the info dataByEmailRequest.open("GET", url + "getDataByEmail/" + email, true); dataByEmailRequest.setRequestHeader("Content-Type", "application/json;charset=UTF-8"); - dataByEmailRequest.setRequestHeader("Authorization", token) + dataByEmailRequest.setRequestHeader("Authorization", token); dataByEmailRequest.send(); } } return false; } - // - - - - - Sign Up/In/Out - - - - - // - function sign_up() { - let form = document.getElementById("signup_form"); let errorMess = document.getElementById("signUpError"); let user = { @@ -426,15 +398,12 @@ function sign_up() { password: form[6].value, repeat_password: form[7].value }; - - // Error checks if (user.password.length < minPassLength) errorMess.innerHTML = "Password's length is too short"; else if (user.password != user.repeat_password) errorMess.innerHTML = "Passwords does not match"; else { - // Sending sign_ou request to "server" signUpRequest.open("POST", url + "sign_up", true); signUpRequest.setRequestHeader("Content-Type", "application/json;charset=UTF-8"); @@ -442,44 +411,33 @@ function sign_up() { } return false; } - function sign_in() { let form = document.getElementById("sign_in_form"); let email = form[0].value; let password = form[1].value; let errorMess = document.getElementById("error"); - // Error checks if (password.length < minPassLength) errorMess.innerHTML = "Password's length is too short"; else { - // Sending sign_in request to "server" signInRequest.open("POST", url + "sign_in", true); signInRequest.setRequestHeader("Content-Type", "application/json;charset=UTF-8"); - signInRequest.send(JSON.stringify({email: email,password: password})); + signInRequest.send(JSON.stringify({ email: email, password: password })); } return false; } - -function sign_out(){ +function sign_out() { let token = localStorage.getItem("currentUser"); - // Sending sign_out request to "server" signOutRequest.open("POST", url + "sign_out", true); signOutRequest.setRequestHeader("Content-Type", "application/json;charset=UTF-8"); - signOutRequest.setRequestHeader("Authorization", token) + signOutRequest.setRequestHeader("Authorization", token); signOutRequest.send(); - return false; } - - - // - - - - - Changing tabs - - - - - // - function showPage(ourEvent, name) { - // - - Fixing the tabs - - // // Unselect all let tabcontent = document.getElementById("tabDiv"); @@ -489,8 +447,6 @@ function showPage(ourEvent, name) { // Select only the one we want let div = ourEvent.target; div.style.backgroundColor = "lightgreen"; - - // - - Fixing the content - - // // Unselect all let allPages = document.getElementsByClassName("tabcontent"); @@ -500,22 +456,16 @@ function showPage(ourEvent, name) { // Select only the one we want let selected_tab = document.getElementById(name); selected_tab.style.display = "block"; - return false; } - - - // - - - - - Changing Password - - - - - // - //Function for changing password -function change_password(ourEvent){ +function change_password(ourEvent) { let old_pass = document.getElementById("old_password").value; let new_pass = document.getElementById("new_password").value; let confirm_pass = document.getElementById("confirm_pass").value; let token = localStorage.getItem("currentUser"); let error_text = document.getElementById("match_error"); - // New password have to be entered twice, otherwise throw error if (new_pass.length < minPassLength) { error_text.innerHTML = "New password too short"; @@ -526,82 +476,68 @@ function change_password(ourEvent){ else { ChangePassRequest.open("PUT", url + "change_password", true); ChangePassRequest.setRequestHeader("Content-Type", "application/json;charset=UTF-8"); - ChangePassRequest.setRequestHeader("Authorization", token) - ChangePassRequest.send(JSON.stringify({old_password:old_pass, new_password:new_pass})); + ChangePassRequest.setRequestHeader("Authorization", token); + ChangePassRequest.send(JSON.stringify({ old_password: old_pass, new_password: new_pass })); } return false; } - // - - - - - Changing the wall - - - - - // - // Submit text button -function updateWall(who){ +function updateWall(who) { // "who" could be either home or browse, this way know which wall to write on let messageToWall = document.getElementById(who + 'Textarea').value; let errorMessage = document.getElementById('searchMessage'); let token = localStorage.getItem("currentUser"); let email = localStorage.getItem(who + "Email"); curr_page = who; - if (email != null && email != "" && token != null && token != "") { - // Send user's message to the server postMessageRequest.open("POST", url + "post", true); postMessageRequest.setRequestHeader("Content-Type", "application/json;charset=UTF-8"); - postMessageRequest.setRequestHeader("Authorization", token) + postMessageRequest.setRequestHeader("Authorization", token); postMessageRequest.send(JSON.stringify({ email: email, message: messageToWall })); - errorMessage.innerHTML = ""; } - else{ + else { errorMessage.innerHTML = "No user selected to write to"; } - // Clear the text area the user just wrote in document.getElementById(who + 'Textarea').value = ""; return false; } - // Reload button function reloadWall(who) { // "who" could be either home or browse, this way know which wall to load to let token = localStorage.getItem("currentUser"); let email = localStorage.getItem(who + "Email"); - // If wanting messages from my own wall if (who == 'home') { // Send request to server about receiving the info messagesByTokenRequest.open("GET", url + "getUserMessageByToken", true); messagesByTokenRequest.setRequestHeader("Content-Type", "application/json;charset=UTF-8"); - messagesByTokenRequest.setRequestHeader("Authorization", token) + messagesByTokenRequest.setRequestHeader("Authorization", token); messagesByTokenRequest.send(); } - // If wanting messages from another's wall else if (who == 'browse' && email != null && email != "") { // Send request to server about receiving the info messagesByEmailRequest.open("GET", url + "getMessagesByEmail/" + email, true); messagesByEmailRequest.setRequestHeader("Content-Type", "application/json;charset=UTF-8"); - messagesByEmailRequest.setRequestHeader("Authorization", token) + messagesByEmailRequest.setRequestHeader("Authorization", token); messagesByEmailRequest.send(); - } - + } return false; } - // Changing another's wall -function searchAnotherUser(event){ +function searchAnotherUser(event) { let token = localStorage.getItem("currentUser"); - // Reseting the error messages document.getElementById('searchMessage').innerHTML = ""; - - if(token != "") { - + if (token != "") { // Store the searched email in localStorage so that it can be reached in "setUserDetails()" let email = event.target["searchInput"].value; localStorage.setItem("browseEmail", email); setUserDetails("browse"); } return false; -} \ No newline at end of file +}