const container = document.querySelector(".container");
firebase.auth().onAuthStateChanged((user) => {
if (user) {
setUserOnlineStatus(user.uid, true); // Set status to online
Dashboard(user);
// Set status to offline when the window is closed or refreshed
window.addEventListener('beforeunload', () => {
setUserOnlineStatus(user.uid, false);
});
} else {
Landing();
}
});
function setUserOnlineStatus(uid, isOnline) {
const userRef = firebase.database().ref('pertuni/perpustakaan/pengguna/' + uid + '/status');
const lastOnline = new Date().toLocaleString();
userRef.set({
online: isOnline,
lastOnline: isOnline ? "Online" : lastOnline
});
}
const Landing = () => {
const element = document.createElement("div");
element.classList.add("Landing");
// Show register and login buttons initially
element.innerHTML = `
`;
container.innerHTML = "";
container.appendChild(element);
const registerBtn = element.querySelector(`[data-button="register"]`);
const loginBtn = element.querySelector(`[data-button="login"]`);
// Function to display register form
const showRegisterForm = () => {
element.querySelector(".inputan").innerHTML = `
`;
// Hide login button when register form is displayed
loginBtn.style.display = 'none';
const submitRegisterBtn = element.querySelector(`[data-button="submit-register"]`);
submitRegisterBtn.addEventListener('click', () => {
const nama = element.querySelector("#nama").value;
const alamat = element.querySelector("#alamat").value;
const nomorTelepon = element.querySelector("#nomor_telepon").value;
const email = element.querySelector("#email").value;
const password = element.querySelector("#password").value;
if (nama && alamat && nomorTelepon && email && password) { // Validate non-empty input
firebase.auth().createUserWithEmailAndPassword(email, password)
.then((cred) => {
const userData = {
nama,
alamat,
nomor_telepon: nomorTelepon,
email,
uid: cred.user.uid
};
const userRef = firebase.database().ref('pertuni/perpustakaan/pengguna/' + cred.user.uid);
return userRef.set(userData);
})
.then(() => {
alert(`Terimakasih, Anda Berhasil Membuat Akun`);
})
.catch((error) => {
alert("Error: " + error.message);
});
} else {
alert("Maaf, Semua Form harus diisi.");
}
});
};
// Function to display login form
const showLoginForm = () => {
element.querySelector(".inputan").innerHTML = `
`;
// Hide register button when login form is displayed
registerBtn.style.display = 'none';
const submitLoginBtn = element.querySelector(`[data-button="submit-login"]`);
const forgotPasswordBtn = element.querySelector(`[data-button="forgot-password"]`);
submitLoginBtn.addEventListener('click', () => {
const email = element.querySelector("#email").value;
const password = element.querySelector("#password").value;
if (email && password) {
firebase.auth().signInWithEmailAndPassword(email, password)
.then(() => {
alert(`Selamat Datang Akun: ${firebase.auth().currentUser.uid}`);
})
.catch((error) => {
alert("Error login: " + error.message);
});
} else {
alert("Email dan Password harus diisi.");
}
});
forgotPasswordBtn.addEventListener('click', () => {
const email = element.querySelector("#email").value;
if (email) {
firebase.auth().sendPasswordResetEmail(email)
.then(() => {
alert(`Password reset email sent to ${email}`);
})
.catch((error) => {
alert("Error sending reset email: " + error.message);
});
} else {
alert("Masukkan email untuk mereset password.");
}
});
};
// Event listener for register and login buttons
registerBtn.addEventListener('click', () => {
showRegisterForm();
loginBtn.style.display = 'none'; // Hide login button
});
loginBtn.addEventListener('click', () => {
showLoginForm();
registerBtn.style.display = 'none'; // Hide register button
});
};
const Dashboard = (user) => {
const userRef = firebase.database().ref('pertuni/perpustakaan/pengguna/' + user.uid);
userRef.once('value').then((snapshot) => {
const userData = snapshot.val();
const element = document.createElement("div");
element.classList.add("Dashboard");
element.innerHTML = `
Nama: ${userData.nama}
Email: ${userData.email}
UID: ${userData.uid}
`;
container.innerHTML = "";
container.appendChild(element);
const logout = element.querySelector(`[data-button="logout"]`);
logout.addEventListener('click', () => {
setUserOnlineStatus(user.uid, false);
firebase.auth().signOut().then(() => {
alert("Terimakasih, Anda Berhasil Logout");
Landing();
}).catch((err) => alert(err));
});
// Menu interactions
const menuItems = document.querySelectorAll('nav > ul > li');
menuItems.forEach(item => {
item.addEventListener('click', () => {
// Hide all submenus
menuItems.forEach(subItem => {
subItem.classList.remove('active');
});
// Toggle submenu of clicked menu
item.classList.toggle('active');
});
});
}).catch((error) => {
console.error("Error retrieving user data:", error);
alert("Gagal mengambil data pengguna: " + error.message);
});
};