Finish user modals and finish base website v1.0.0
This commit is contained in:
parent
9194e64223
commit
ff94b272ee
@ -2,11 +2,12 @@ const url = "https://task-api.fstropii.com";
|
|||||||
const localhostUrl = "http://localhost:8000";
|
const localhostUrl = "http://localhost:8000";
|
||||||
const logoutBtn = document.querySelector('.nav-logout');
|
const logoutBtn = document.querySelector('.nav-logout');
|
||||||
const changeEmailBtn = document.querySelector('#change-email-btn');
|
const changeEmailBtn = document.querySelector('#change-email-btn');
|
||||||
|
const changePasswordBtn = document.querySelector('#change-password-btn');
|
||||||
|
const changeUsernameBtn = document.querySelector('#change-username-btn');
|
||||||
const addTaskBtn = document.querySelector('.add-task-button');
|
const addTaskBtn = document.querySelector('.add-task-button');
|
||||||
|
|
||||||
logoutBtn.addEventListener("click", function() {
|
logoutBtn.addEventListener("click", function() {
|
||||||
document.cookie = 'token=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;';
|
logout();
|
||||||
window.location.href = '/';
|
|
||||||
});
|
});
|
||||||
|
|
||||||
// modals
|
// modals
|
||||||
@ -14,11 +15,99 @@ logoutBtn.addEventListener("click", function() {
|
|||||||
changeEmailBtn.addEventListener("click", function() {
|
changeEmailBtn.addEventListener("click", function() {
|
||||||
const emailModal = document.querySelector('.email-modal');
|
const emailModal = document.querySelector('.email-modal');
|
||||||
const closeEmailModalBtn = document.querySelector('.close-email-modal');
|
const closeEmailModalBtn = document.querySelector('.close-email-modal');
|
||||||
|
const emailSubmitBtn = document.querySelector('.submit-email-btn');
|
||||||
emailModal.classList.add('visible');
|
emailModal.classList.add('visible');
|
||||||
|
|
||||||
closeEmailModalBtn.addEventListener("click", function() {
|
closeEmailModalBtn.addEventListener("click", function() {
|
||||||
emailModal.classList.remove("visible");
|
emailModal.classList.remove("visible");
|
||||||
});
|
});
|
||||||
|
|
||||||
|
emailSubmitBtn.addEventListener('click', function(e) {
|
||||||
|
e.preventDefault();
|
||||||
|
const newEmail = document.querySelector('.modal-email-input').value;
|
||||||
|
|
||||||
|
if (newEmail == "") {
|
||||||
|
setModalTooltip("email", "error", "Email cannot be blank");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const updateUserEmailPromise = updateUserEmail(token, newEmail);
|
||||||
|
updateUserEmailPromise.then((res) => res.json()).then((json => {
|
||||||
|
const newUserEmail = json.email;
|
||||||
|
if (newEmail == newUserEmail) {
|
||||||
|
setModalTooltip("email", "success", "Updated email");
|
||||||
|
logout();
|
||||||
|
} else {
|
||||||
|
setModalTooltip("email", "error", "Something went wrong");
|
||||||
|
}
|
||||||
|
}));
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
changePasswordBtn.addEventListener('click', function() {
|
||||||
|
const passwordModal = document.querySelector('.password-modal');
|
||||||
|
const closePasswordModal = document.querySelector('.close-password-modal');
|
||||||
|
const passwordSubmitBtn = document.querySelector('.submit-password-btn');
|
||||||
|
passwordModal.classList.add("visible");
|
||||||
|
|
||||||
|
closePasswordModal.addEventListener('click', function() {
|
||||||
|
passwordModal.classList.remove('visible');
|
||||||
|
});
|
||||||
|
|
||||||
|
passwordSubmitBtn.addEventListener('click', function(e) {
|
||||||
|
e.preventDefault();
|
||||||
|
const newPassword = document.querySelector('.modal-password-input').value;
|
||||||
|
const verifyNewPassword = document.querySelector('.modal-verify-password-input').value;
|
||||||
|
|
||||||
|
if (newPassword == "") {
|
||||||
|
setModalTooltip('password', 'error', 'Password cannot be blank');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (newPassword != verifyNewPassword) {
|
||||||
|
setModalTooltip('password', 'error', 'Passwords must be the same');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const updateUserPasswordPromise = updateUserPassword(token, newPassword);
|
||||||
|
updateUserPasswordPromise.then((res) => res.json()).then((json => {
|
||||||
|
setModalTooltip('password', 'success', 'Password updated!');
|
||||||
|
logout();
|
||||||
|
}));
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
changeUsernameBtn.addEventListener('click', function() {
|
||||||
|
const usernameModal = document.querySelector('.username-modal');
|
||||||
|
const closeUsernameModal = document.querySelector('.close-username-modal');
|
||||||
|
const usernameSubmitBtn = document.querySelector('.submit-username-btn');
|
||||||
|
usernameModal.classList.add('visible');
|
||||||
|
|
||||||
|
closeUsernameModal.addEventListener('click', function() {
|
||||||
|
usernameModal.classList.remove('visible');
|
||||||
|
});
|
||||||
|
|
||||||
|
usernameSubmitBtn.addEventListener('click', function(e) {
|
||||||
|
e.preventDefault();
|
||||||
|
const newUsername = document.querySelector('.modal-username-input').value;
|
||||||
|
|
||||||
|
if (newUsername == "") {
|
||||||
|
setModalTooltip('username', 'error', 'Username cannot be blank');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const updateUserUsernamePromise = updateUserUsername(token, newUsername);
|
||||||
|
updateUserUsernamePromise.then((res) => res.json()).then((json => {
|
||||||
|
const newUserUsername = json.username;
|
||||||
|
|
||||||
|
if (newUsername == newUserUsername) {
|
||||||
|
setModalTooltip('username', 'success', 'Username updated');
|
||||||
|
logout();
|
||||||
|
} else {
|
||||||
|
setModalTooltip('username', 'error', 'Something went wrong');
|
||||||
|
}
|
||||||
|
}));
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
addTaskBtn.addEventListener("click", function() {
|
addTaskBtn.addEventListener("click", function() {
|
||||||
@ -36,7 +125,7 @@ addTaskBtn.addEventListener("click", function() {
|
|||||||
const taskName = document.querySelector('.add-task-modal-name-input').value;
|
const taskName = document.querySelector('.add-task-modal-name-input').value;
|
||||||
const taskDescription = document.querySelector('.add-task-modal-description-input').value;
|
const taskDescription = document.querySelector('.add-task-modal-description-input').value;
|
||||||
if (taskName == "" || taskName == undefined) {
|
if (taskName == "" || taskName == undefined) {
|
||||||
setTaskTooltip("add", "error", "Please enter a name");
|
setModalTooltip("add", "error", "Please enter a name");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const getUserTasksPromise = getUserTasks(token);
|
const getUserTasksPromise = getUserTasks(token);
|
||||||
@ -56,6 +145,7 @@ addTaskBtn.addEventListener("click", function() {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
// Check if the user is logged in
|
// Check if the user is logged in
|
||||||
const getCookie = (returnType) => {
|
const getCookie = (returnType) => {
|
||||||
let decodedCookie = decodeURIComponent(document.cookie);
|
let decodedCookie = decodeURIComponent(document.cookie);
|
||||||
@ -96,12 +186,12 @@ const setTooltip = (type, message) => {
|
|||||||
tooltip.style.display = "block";
|
tooltip.style.display = "block";
|
||||||
}
|
}
|
||||||
|
|
||||||
const setTaskTooltip = (taskType, type, message) => {
|
const setModalTooltip = (modalType, type, message) => {
|
||||||
const taskTooltip = document.querySelector(`.${taskType}-task-tooltip`);
|
const modalTooltip = document.querySelector(`.${modalType}-task-tooltip`);
|
||||||
taskTooltip.classList.add(type);
|
modalTooltip.classList.add(type);
|
||||||
taskTooltip.classList.add('visible');
|
modalTooltip.classList.add('visible');
|
||||||
taskTooltip.innerText = message
|
modalTooltip.innerText = message
|
||||||
taskTooltip.style.display = "block";
|
modalTooltip.style.display = "block";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -209,6 +299,11 @@ const createTaskItem = (title, isCompleted, index) => {
|
|||||||
userTasksDiv.appendChild(taskItemDiv);
|
userTasksDiv.appendChild(taskItemDiv);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const logout = () => {
|
||||||
|
document.cookie = 'token=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;';
|
||||||
|
window.location.href = '/';
|
||||||
|
}
|
||||||
|
|
||||||
const updateTask = (userToken, taskTitle, taskDescription, completedStatus, taskId) => {
|
const updateTask = (userToken, taskTitle, taskDescription, completedStatus, taskId) => {
|
||||||
|
|
||||||
const res = fetch(`${url}/user/update-tasks`, {
|
const res = fetch(`${url}/user/update-tasks`, {
|
||||||
@ -252,4 +347,40 @@ const deleteTask = (userToken, taskId) => {
|
|||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const updateUserEmail = (userToken, email) => {
|
||||||
|
const res = fetch(`${url}/user/update`, {
|
||||||
|
method: "PATCH",
|
||||||
|
headers: {Authorization: `Bearer ${userToken}`, "Content-Type": "application/json"},
|
||||||
|
body: JSON.stringify({
|
||||||
|
email: email
|
||||||
|
})
|
||||||
|
});
|
||||||
|
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
const updateUserPassword = (userToken, password) => {
|
||||||
|
const res = fetch(`${url}/user/update`, {
|
||||||
|
method: "PATCH",
|
||||||
|
headers: {Authorization: `Bearer ${userToken}`, "Content-Type": "application/json"},
|
||||||
|
body: JSON.stringify({
|
||||||
|
password: password
|
||||||
|
})
|
||||||
|
});
|
||||||
|
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
const updateUserUsername = (userToken, username) => {
|
||||||
|
const res = fetch(`${url}/user/update`, {
|
||||||
|
method: "PATCH",
|
||||||
|
headers: {Authorization: `Bearer ${userToken}`, "Content-Type": "application/json"},
|
||||||
|
body: JSON.stringify({
|
||||||
|
username: username
|
||||||
|
})
|
||||||
|
});
|
||||||
|
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
loadUserTasks();
|
loadUserTasks();
|
Loading…
Reference in New Issue
Block a user