1
0
Fork 0
forked from Simnation/Main
Main/resources/[qb]/qb-minigames/html/js/pinpad.js
2025-06-07 08:51:21 +02:00

97 lines
2.6 KiB
JavaScript

const pinContainer = document.querySelector(".pinpad-container"),
pinBox = document.getElementById("PINbox");
let pinValue = "";
let correctSequence = [];
const openPinpad = (pinNumber) => {
correctSequence = pinNumber.split("");
pinBox.value = "";
pinValue = "";
pinContainer.style.display = "block";
setTimeout(() => (pinContainer.style.opacity = 1), 300);
};
const closePinpad = async () => {
pinContainer.style.opacity = 0;
setTimeout(async () => {
pinContainer.style.display = "none";
try {
await fetch(`https://${GetParentResourceName()}/pinpadExit`, {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({ action: "closePinpad" }),
});
} catch (err) {}
}, 300);
};
const addNumber = (num) => {
pinValue += num;
pinBox.value += "*";
if (pinValue.length === correctSequence.length) {
checkSequence();
}
};
const checkSequence = async () => {
const isCorrect = pinValue === correctSequence.join("");
pinValue = "";
pinBox.value = "";
try {
if (isCorrect) {
await postData(`https://${GetParentResourceName()}/pinpadFinish`, { correct: true });
} else {
await postData(`https://${GetParentResourceName()}/pinpadFinish`, { correct: false });
}
} catch (err) {}
closePinpad();
};
const postData = async (url, data) => {
try {
await fetch(url, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify(data),
});
} catch (err) {}
};
const clearInput = () => {
pinValue = "";
pinBox.value = "";
};
document.addEventListener("DOMContentLoaded", () => {
const pinButtonsContainer = document.getElementById("PINcode");
const clearButton = document.getElementById("clearButton");
pinButtonsContainer.addEventListener("click", (event) => {
const button = event.target;
if (button.classList.contains("PINbutton") && button.id !== "clearButton") {
addNumber(button.value);
}
});
clearButton.addEventListener("click", clearInput);
});
document.addEventListener("keydown", function (event) {
const keyName = event.key;
if (keyName === "Escape") {
closePinpad();
}
});
window.addEventListener("message", (event) => {
if (event.data.action === "openPinpad") {
const pinNumber = event.data.numbers;
const pinAsString = pinNumber.toString();
openPinpad(pinAsString);
}
});