wallos/scripts/registration.js
2024-04-26 17:41:19 +02:00

165 lines
4.6 KiB
JavaScript

function setCookie(name, value, days) {
var expires = "";
if (days) {
var date = new Date();
date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
expires = "; expires=" + date.toUTCString();
}
document.cookie = name + "=" + value + expires;
}
function storeFormFieldValue(fieldId) {
var fieldElement = document.getElementById(fieldId);
if (fieldElement) {
localStorage.setItem(fieldId, fieldElement.value);
}
}
function storeFormFields() {
storeFormFieldValue('username');
storeFormFieldValue('email');
storeFormFieldValue('password');
storeFormFieldValue('confirm_password');
storeFormFieldValue('currency');
}
function restoreFormFieldValue(fieldId) {
var fieldElement = document.getElementById(fieldId);
if (localStorage.getItem(fieldId)) {
fieldElement.value = localStorage.getItem(fieldId) || '';
}
}
function restoreFormFields() {
restoreFormFieldValue('username');
restoreFormFieldValue('email');
restoreFormFieldValue('password');
restoreFormFieldValue('confirm_password');
restoreFormFieldValue('currency');
}
function removeFromStorage() {
localStorage.removeItem('username');
localStorage.removeItem('email');
localStorage.removeItem('password');
localStorage.removeItem('confirm_password');
localStorage.removeItem('currency');
}
function changeLanguage(selectedLanguage) {
storeFormFields();
setCookie("language", selectedLanguage, 365);
location.reload();
}
function runDatabaseMigration() {
let url = "endpoints/db/migrate.php";
fetch(url)
.then(response => {
if (!response.ok) {
throw new Error(translate('network_response_error'));
}
});
}
function showErrorMessage(message) {
const toast = document.querySelector(".toast#errorToast");
(closeIcon = document.querySelector(".close-error")),
(errorMessage = document.querySelector(".errorMessage")),
(progress = document.querySelector(".progress.error"));
let timer1, timer2;
errorMessage.textContent = message;
toast.classList.add("active");
progress.classList.add("active");
timer1 = setTimeout(() => {
toast.classList.remove("active");
closeIcon.removeEventListener("click", () => {});
}, 5000);
timer2 = setTimeout(() => {
progress.classList.remove("active");
}, 5300);
closeIcon.addEventListener("click", () => {
toast.classList.remove("active");
setTimeout(() => {
progress.classList.remove("active");
}, 300);
clearTimeout(timer1);
clearTimeout(timer2);
closeIcon.removeEventListener("click", () => {});
});
}
function showSuccessMessage(message) {
const toast = document.querySelector(".toast#successToast");
(closeIcon = document.querySelector(".close-success")),
(successMessage = document.querySelector(".successMessage")),
(progress = document.querySelector(".progress.success"));
let timer1, timer2;
successMessage.textContent = message;
toast.classList.add("active");
progress.classList.add("active");
timer1 = setTimeout(() => {
toast.classList.remove("active");
closeIcon.removeEventListener("click", () => {});
}, 5000);
timer2 = setTimeout(() => {
progress.classList.remove("active");
}, 5300);
closeIcon.addEventListener("click", () => {
toast.classList.remove("active");
setTimeout(() => {
progress.classList.remove("active");
}, 300);
clearTimeout(timer1);
clearTimeout(timer2);
closeIcon.removeEventListener("click", () => {});
});
}
function openRestoreDBFileSelect() {
document.getElementById('restoreDBFile').click();
};
function restoreDB() {
const input = document.getElementById('restoreDBFile');
const file = input.files[0];
if (!file) {
console.error('No file selected');
return;
}
const formData = new FormData();
formData.append('file', file);
fetch('endpoints/db/import.php', {
method: 'POST',
body: formData
})
.then(response => response.json())
.then(data => {
if (data.success) {
showSuccessMessage(data.message)
window.location.href = 'logout.php';
} else {
showErrorMessage(data.message);
}
})
.catch(error => showErrorMessage('Error:', error));
}
window.onload = function () {
restoreFormFields();
removeFromStorage();
runDatabaseMigration();
};