async function updateCartIcon() { const cart = await getCarts(); const count = cart.length; const cartIcon = document.getElementById("cart-icon"); if (cartIcon) { cartIcon.innerHTML = ` Keranjang (${count}) `; } } document.addEventListener("DOMContentLoaded", async function () { setInterval(await updateCartIcon, 10000); }); async function promptQuantityAndAdd(productId) { checkUID("addToCart"); let [qtyStr, isCancel] = await prompt( "Masukkan jumlah produk yang ingin ditambahkan ke keranjang:", "number" ); console.log(qtyStr, isCancel); if (isCancel) { return; } if (!qtyStr) { alert("Jumlah tidak boleh kosong.", false); return; } let qty = parseInt(qtyStr); if (isNaN(qty) || qty <= 0) { alert("Masukkan jumlah produk yang valid.", false); return; } await addToCart(productId, qty); } async function addToCart(productId, quantity = 1) { checkUID("addToCart"); console.log(productId, quantity); const cart = await getCarts(); let userData = await getUserData(); for (let i = 0; i < quantity; i++) { cart.push(productId); } userData.cart = cart; localStorage.setItem("cart", JSON.stringify(cart)); await updateUserDataToGitHub(userData); await updateCartIcon(); alert( `Produk telah ditambahkan ke keranjang sebanyak ${quantity} item.`, false ); } function addToCartFromProduct(productId) { checkUID("addToCart"); const qtyInput = document.getElementById("quantity"); let quantity = parseInt(qtyInput.value); if (isNaN(quantity) || quantity <= 0) { alert("Masukkan jumlah produk yang valid.", false); return; } addToCart(productId, quantity); } async function loadCart() { do { const cart = await getCarts(); const params = new URLSearchParams(window.location.search); const message = params.get("message") || ""; if (message) alert(message, false); let cartCount = {}; cart.forEach((id) => { cartCount[id] = (cartCount[id] || 0) + 1; }); const cartItemsContainer = document.getElementById("cart-items"); cartItemsContainer.innerHTML = ""; let total = 0; if (Object.keys(cartCount).length === 0) { cartItemsContainer.innerHTML = "

Keranjang kosong.

"; } else { cartItemsContainer.innerHTML = `${message}`; let index = 1; for (let id in cartCount) { const product = products.find((p) => p.id === parseInt(id)); if (product) { const qty = cartCount[id]; const subtotal = product.price * qty; total += subtotal; cartItemsContainer.innerHTML += `
${product.name}

${formatRupiah(product.price)} x

`; index++; } } } const cartSummary = document.getElementById("cart-summary"); cartSummary.innerHTML = `

Total: ${formatRupiah(total)}

`; if (cartItemsContainer.innerHTML.trim() == "") { cartItemsContainer.innerHTML = ""; alert("Jika daftar keranjang tidak muncul, silahkan muat ulang halaman ini", false) } await new Promise((resolve) => setTimeout(resolve, 1000)); } while (cartItemsContainer.innerHTML.trim() == ""); } async function updateQuantity(productId, newQty) { newQty = parseInt(newQty); if (isNaN(newQty) || newQty <= 0) { alert("Masukkan jumlah produk yang valid.", false); return; } const cart = await getCarts(); const newCart = cart.filter((id) => id !== productId); for (let i = 0; i < newQty; i++) { newCart.push(productId); } localStorage.setItem("cart", JSON.stringify(newCart)); let userData = await getUserData(); userData.cart = newCart; await updateUserDataToGitHub(userData); await loadCart(); await updateCartIcon(); } async function removeFromCart(productId) { const cart = await getCarts(); const index = cart.indexOf(productId); if (index !== -1) { cart.splice(index, 1); localStorage.setItem("cart", JSON.stringify(cart)); let userData = await getUserData(); userData.cart = cart; await updateUserDataToGitHub(userData); await loadCart(); await updateCartIcon(); } } document.addEventListener("DOMContentLoaded", function () { AOS.init(); if (document.getElementById("cart-items")) { loadCart(); } });