window.addEventListener("load", () => {
//GET ALL THE FIAT CURRENCY TO DOM
const getAllFiatHandler = async () => {
let swapFromFiatHtml = "";
let swapToFiatHtml = "";
const data = async () => {
const fetchCurrency = await getCurrencies();
fetchCurrency.forEach((data) => {
swapFromFiatHtml += `
${data.currency_init}
${data.currency_name}
`;
swapToFiatHtml += `
${data.currency_init}
${data.currency_name}
`;
});
app.query(".swap-from-bdy-fiat").innerHTML = swapFromFiatHtml;
app.query(".swap-to-bdy-fiat").innerHTML = swapToFiatHtml;
};
data().then(() => {
swapFromHandler();
swapToHandler();
});
};
//GET INITIAL FIAT CURRENCY TO BUTTON
const getInitialFiatHandler = async () => {
const fetchedCurrency = await getSingleCurrency("usd");
fetchedCurrency.forEach((data) => {
app.query("#swapFromBtn").innerHTML = `
${data.currency_name}
`;
app.query(".swapFromLabel").textContent = data.currency_name;
app.query("#swapFromBtn").dataset.id = data.currency_name;
app.query("#swapFromBtn").dataset.type = "fiat";
});
};
//GET ALL THE COINS TO DOM
const getAllCoinsHandler = async () => {
let fetchedData = [];
const data = async () => {
//GETTING ALL THE COIN
const fetchedCoins = await getCoins();
const swapFromCoinSerch = app.query("#swapFromCoinSerch");
const swapToCoinSerch = app.query("#swapToCoinSerch");
searchOnlyPattern = new RegExp("^[a-zA-Z ]+$");
let previousValue = "";
for (const [key, value] of Object.entries(fetchedCoins)) {
fetchedData.push({ key, ...value });
}
//FILTER ARRAY WITH SEARCH INPUT
swapFromCoinSerch.addEventListener("input", (e) => {
const sortInput = async () => {
let currentValue = swapFromCoinSerch.value;
if (
e.inputType.includes("delete") ||
searchOnlyPattern.test(currentValue)
) {
previousValue = currentValue;
}
swapFromCoinSerch.value = previousValue;
const searchString = swapFromCoinSerch.value.toLowerCase();
const filteredCoins = fetchedData.filter((data) => {
return data.key.toLowerCase().includes(searchString);
});
analyseData(filteredCoins);
};
sortInput().then(() => swapFromHandler());
});
swapToCoinSerch.addEventListener("input", (e) => {
const sortInput = async () => {
let currentValue = swapToCoinSerch.value;
if (
e.inputType.includes("delete") ||
searchOnlyPattern.test(currentValue)
) {
previousValue = currentValue;
}
swapToCoinSerch.value = previousValue;
const searchString = swapToCoinSerch.value.toLowerCase();
const filteredCoins = fetchedData.filter((data) => {
return data.key.toLowerCase().includes(searchString);
});
analyseData(filteredCoins);
};
sortInput().then(() => swapToHandler());
});
//LOOPING DATA INTO HTML DOM
const analyseData = (dataArr) => {
if (dataArr.length > 0) {
let swapFromCoinHtml = "";
let swapToCoinHtml = "";
//LOOPING THROUGH ARRAY AND INPUTING VALUES INTO HTML
dataArr.forEach((data) => {
swapFromCoinHtml += `
${data.key}
${data.abbrv}
`;
swapToCoinHtml += `
${data.key}
${data.abbrv}
`;
});
app.query(".swap-from-bdy-coin").innerHTML = swapFromCoinHtml;
app.query(".swap-to-bdy-coin").innerHTML = swapToCoinHtml;
} else {
app.query(
".swap-from-bdy-coin"
).innerHTML = `
No match found
`;
app.query(".swap-to-bdy-coin").innerHTML = `
No match found
`;
}
};
analyseData(fetchedData);
};
data().then(() => {
swapFromHandler();
swapToHandler();
});
};
//GET INITIAL COINS TO BUTTON
const getInitialCoinHandler = async () => {
let swapFromCoinHtml = "";
const fetchedCoin = await getSingleCoin("bitcoin");
for (const [key, value] of Object.entries(fetchedCoin)) {
swapFromCoinHtml += swapToBtn(value.img, key, value.abbrv);
app.query("#swapToBtn").dataset.id = key;
app.query("#swapToBtn").dataset.type = "coin";
app.query("#swapToBtn").dataset.asset = "btc";
app.query(".swapToLabel").textContent = value.abbrv;
app.query(".btnSpan").textContent = value.abbrv;
}
app.query("#swapToBtn").innerHTML = swapFromCoinHtml;
function swapToBtn(img, key, abbrv) {
return `
${abbrv}
`;
}
};
app.query(".form-btn").disabled = true;
getAllFiatHandler();
getInitialFiatHandler();
getAllCoinsHandler();
getInitialCoinHandler();
inputHandler();
});
const swapFromHandler = () => {
const swapFromBtn = app.query("#swapFromBtn");
const swapFromMain = app.query(".swapFrom");
const swapFromX = app.query(".swapFromX");
const swapFromInnerCoinBtn = app.query(".swapFromInnerCoinBtn");
const swapFromInnerFiatBtn = app.query(".swapFromInnerFiatBtn");
const swapFromBdyCoin = app.query(".swap-from-bdy-coin-cover");
const swapFromBdyFiat = app.query(".swap-from-bdy-fiat-cover");
const swapFromCoinEch = app.queryAll(".swapFromCoinEch");
const swapFromLabel = app.query(".swapFromLabel");
const swapFromFiatEch = app.queryAll(".swapFromFiatEch");
const swapToBtn = app.query("#swapToBtn");
swapFromBtn.addEventListener("click", (e) => {
e.preventDefault();
swapFromMain.classList.add("active");
});
swapFromX.addEventListener("click", () => {
swapFromMain.classList.remove("active");
resetSwapModal();
});
swapFromInnerCoinBtn.addEventListener("click", () => {
resetSwapDetails();
swapFromBdyCoin.classList.add("active");
swapFromInnerCoinBtn.classList.add("active");
});
swapFromInnerFiatBtn.addEventListener("click", () => {
resetSwapDetails();
swapFromBdyFiat.classList.add("active");
swapFromInnerFiatBtn.classList.add("active");
});
const resetSwapDetails = () => {
swapFromBdyCoin.classList.remove("active");
swapFromBdyFiat.classList.remove("active");
swapFromInnerCoinBtn.classList.remove("active");
swapFromInnerFiatBtn.classList.remove("active");
};
const resetSwapModal = () => {
swapFromInnerCoinBtn.classList.add("active");
swapFromInnerFiatBtn.classList.remove("active");
swapFromBdyCoin.classList.add("active");
swapFromBdyFiat.classList.remove("active");
};
swapFromCoinEch.forEach((swapFromCoinEch) => {
swapFromCoinEch.addEventListener("click", () => {
if (swapFromCoinEch.dataset.id === swapToBtn.dataset.id) {
let img = swapFromBtn.children[0].children[0].getAttribute("src");
let det = swapFromBtn.children[1].textContent;
swapToBtn.innerHTML = `
${det}
`;
swapToBtn.dataset.id = swapFromBtn.dataset.id;
swapToBtn.dataset.type = swapFromBtn.dataset.type;
swapToBtn.dataset.asset = swapFromBtn.dataset.asset;
app.query(".btnSpan").textContent = det;
app.query(".swapToLabel").textContent = det;
}
let img;
let det;
let id;
img = swapFromCoinEch.children[0].children[0].getAttribute("src");
det = swapFromCoinEch.children[1].children[1].textContent;
id = swapFromCoinEch.children[1].children[0].textContent;
swapFromBtn.innerHTML = swapFromBtnSetter(img, det);
swapFromBtn.dataset.id = id;
swapFromBtn.dataset.type = "coin";
swapFromBtn.dataset.asset = swapFromCoinEch.dataset.asset;
swapFromLabel.textContent = det;
swapFromMain.classList.remove("active");
app.query("#swapFromInput").value = "";
app.query("#swapToInput").value = "";
resetSwapModal();
});
});
swapFromFiatEch.forEach((swapFromFiatEch) => {
swapFromFiatEch.addEventListener("click", () => {
if (swapFromFiatEch.dataset.id == swapToBtn.dataset.id) {
let img = swapFromBtn.children[0].children[0].getAttribute("src");
let det = swapFromBtn.children[1].textContent;
swapToBtn.innerHTML = `
${det}
`;
swapToBtn.dataset.id = swapFromBtn.dataset.id;
swapToBtn.dataset.type = swapFromBtn.dataset.type;
app.query(".btnSpan").textContent = det;
app.query(".swapToLabel").textContent = det;
console.log(det);
}
let img;
let det;
let id;
img = swapFromFiatEch.children[0].children[0].getAttribute("src");
det = swapFromFiatEch.children[1].children[1].textContent;
id = swapFromFiatEch.children[1].children[0].textContent;
swapFromBtn.innerHTML = swapFromBtnSetter(img, det);
swapFromBtn.dataset.id = det;
swapFromBtn.dataset.type = "fiat";
swapFromLabel.textContent = det;
swapFromMain.classList.remove("active");
app.query("#swapFromInput").value = "";
app.query("#swapToInput").value = "";
resetSwapModal();
});
});
function swapFromBtnSetter(img, det) {
return `
${det}
`;
}
};
const swapToHandler = () => {
const swapToBtn = app.query("#swapToBtn");
const swapToMain = app.query(".swapTo");
const swapToX = app.query(".swapToX");
const swapToInnerCoinBtn = app.query(".swapToInnerCoinBtn");
const swapToInnerFiatBtn = app.query(".swapToInnerFiatBtn");
const swapToBdyCoin = app.query(".swap-to-bdy-coin-cover");
const swapToBdyFiat = app.query(".swap-to-bdy-fiat-cover");
const swapToCoinEch = app.queryAll(".swapToCoinEch");
const swapToLabel = app.query(".swapToLabel");
const swapToFiatEch = app.queryAll(".swapToFiatEch");
const swapFromBtn = app.query("#swapFromBtn");
swapToBtn.addEventListener("click", (e) => {
e.preventDefault();
swapToMain.classList.add("active");
});
swapToX.addEventListener("click", () => {
swapToMain.classList.remove("active");
resetSwapModal();
});
swapToInnerCoinBtn.addEventListener("click", () => {
resetSwapDetails();
swapToBdyCoin.classList.add("active");
swapToInnerCoinBtn.classList.add("active");
});
swapToInnerFiatBtn.addEventListener("click", () => {
resetSwapDetails();
swapToBdyFiat.classList.add("active");
swapToInnerFiatBtn.classList.add("active");
});
const resetSwapDetails = () => {
swapToBdyCoin.classList.remove("active");
swapToBdyFiat.classList.remove("active");
swapToInnerCoinBtn.classList.remove("active");
swapToInnerFiatBtn.classList.remove("active");
};
const resetSwapModal = () => {
swapToInnerCoinBtn.classList.add("active");
swapToInnerFiatBtn.classList.remove("active");
swapToBdyCoin.classList.add("active");
swapToBdyFiat.classList.remove("active");
};
swapToCoinEch.forEach((swapToCoinEch) => {
swapToCoinEch.addEventListener("click", () => {
if (swapToCoinEch.dataset.id === swapFromBtn.dataset.id) {
let img = swapToBtn.children[0].children[0].getAttribute("src");
swapFromBtn.children[0].children[0].classList.remove("class");
swapFromBtn.children[0].children[0].classList.add("swapFromImg");
let det = swapToBtn.children[1].textContent;
let id = swapToCoinEch.children[1].children[0].textContent;
swapFromBtn.innerHTML = swapToBtnSetter(img, det);
swapFromBtn.dataset.id = swapToBtn.dataset.id;
swapFromBtn.dataset.asset = swapToBtn.dataset.asset;
swapFromBtn.dataset.type = swapToBtn.dataset.type;
}
let img;
let det;
let id;
img = swapToCoinEch.children[0].children[0].getAttribute("src");
det = swapToCoinEch.children[1].children[1].textContent;
id = swapToCoinEch.children[1].children[0].textContent;
swapToBtn.innerHTML = `
${det}
`;
swapToBtn.dataset.id = id;
swapToBtn.dataset.type = "coin";
swapToBtn.dataset.asset = swapToCoinEch.dataset.asset;
swapToLabel.textContent = det;
swapToMain.classList.remove("active");
app.query(".btnSpan").textContent = det;
app.query("#swapFromInput").value = "";
app.query("#swapToInput").value = "";
app.query(".btnSpan").textContent = det;
resetSwapModal();
});
});
swapToFiatEch.forEach((swapToFiatEch) => {
swapToFiatEch.addEventListener("click", () => {
if (swapToFiatEch.dataset.id == swapFromBtn.dataset.id) {
let img = swapToBtn.children[0].children[0].getAttribute("src");
let det = swapToBtn.children[1].textContent;
swapFromBtn.innerHTML = `
${det}
`;
swapFromBtn.dataset.id = swapToBtn.dataset.id;
swapFromBtn.dataset.type = swapToBtn.dataset.type;
}
let img;
let det;
let id;
img = swapToFiatEch.children[0].children[0].getAttribute("src");
det = swapToFiatEch.children[1].children[1].textContent;
id = swapToFiatEch.children[1].children[0].textContent;
swapToBtn.innerHTML = swapToBtnSetter(img, det);
swapToBtn.dataset.id = det;
swapToBtn.dataset.type = "fiat";
swapToLabel.textContent = det;
swapToMain.classList.remove("active");
app.query("#swapFromInput").value = "";
app.query("#swapToInput").value = "";
app.query(".btnSpan").textContent = det;
resetSwapModal();
});
});
function swapToBtnSetter(img, det) {
return `
${det}
`;
}
};
const inputHandler = () => {
const swapFromInput = app.query("#swapFromInput");
const swapToInput = app.query("#swapToInput");
const swapFromBtn = app.query("#swapFromBtn");
const swapToBtn = app.query("#swapToBtn");
const limitVal = app.query(".limitVal");
const limitAbb = app.query(".limitAbb");
const buyIntErr = app.query(".buy-int-err");
const formBtn = app.query(".form-btn");
currInputPattern = new RegExp("^[0-9.]+$");
let currPreviousValue = "";
//Handling SwapFrom input
swapFromInput.addEventListener("input", (e) => {
if (!swapFromInput.value == "") {
//Sorting only numeric values in input
let currentValue = swapFromInput.value;
if (
e.inputType.includes("delete") ||
currInputPattern.test(currentValue)
) {
currPreviousValue = currentValue;
}
swapFromInput.value = currPreviousValue;
swapToInput.value = swapFromInput.value;
const displayCoinHandler = () => {
//Handling Fiat to coins
if (
swapFromBtn.dataset.type === "fiat" &&
swapToBtn.dataset.type === "coin"
) {
const getAssetHandlers = async () => {
coinVal = 0;
coinArr = [];
let otherVal = 0;
// Getting single currency array
const fetchedCurrency = await getSingleCurrency(
swapFromBtn.dataset.id
);
// Getting single coin object
const fetchedCoin = await getSingleCoin(swapToBtn.dataset.id);
fetchedCurrency.forEach((data) => {
otherVal = data.currency_rate_ngn;
limitAbb.innerHTML = data.currency_name.toUpperCase();
});
for (const key of Object.keys(fetchedCoin)) {
coinArr.push({ key: key, ...fetchedCoin[key] });
}
coinArr.forEach((data) => {
coinVal = data.usd;
});
swapToInput.value = (
swapFromInput.value /
(otherVal * coinVal)
).toFixed(8);
if (swapFromInput.value < otherVal * 1) {
buyIntErr.classList.add("active");
limitVal.innerHTML = otherVal * 1;
formBtn.disabled = true;
} else {
buyIntErr.classList.remove("active");
// buyValTrue = true;
formBtn.disabled = false;
}
};
getAssetHandlers();
}
//Handling coins to coins
if (
swapFromBtn.dataset.type === "coin" &&
swapToBtn.dataset.type === "coin"
) {
const getAssethandler = async () => {
const coinArr1 = [];
const coinArr2 = [];
let coinFrom = 0;
let coinTo = 0;
let coinFromInUsd = 0;
let result = 0;
let otherVal = 0;
// Getting single coin1 object
const fetchedCoin1 = await getSingleCoin(swapFromBtn.dataset.id);
for (const key of Object.keys(fetchedCoin1)) {
coinArr1.push({ key: key, ...fetchedCoin1[key] });
}
coinArr1.forEach((data) => {
coinFrom = data.usd;
limitAbb.innerHTML = data.abbrv.toUpperCase();
});
// Getting single coin1 object
const fetchedCoin2 = await getSingleCoin(swapToBtn.dataset.id);
for (const key of Object.keys(fetchedCoin2)) {
coinArr2.push({ key: key, ...fetchedCoin2[key] });
}
coinArr2.forEach((data) => {
coinTo = data.usd;
});
// Getting single usd value for evaluation
const fetchedCurrency = await getSingleCurrency("usd");
fetchedCurrency.forEach((data) => {
otherVal = data.currency_rate_ngn;
});
//Getting value of entered asset in usd
coinFromInUsd = swapFromInput.value * coinFrom;
//Getting value of entered asset in selected asset
result = (coinFromInUsd / coinTo).toFixed(8);
swapToInput.value = result;
let coinChecker = (otherVal * 1) / coinFrom;
if (swapFromInput.value < coinChecker) {
buyIntErr.classList.add("active");
limitVal.innerHTML = coinChecker.toFixed(8);
formBtn.disabled = true;
} else {
buyIntErr.classList.remove("active");
formBtn.disabled = false;
}
};
getAssethandler();
}
//Handling coins to fiat
if (
swapFromBtn.dataset.type === "coin" &&
swapToBtn.dataset.type === "fiat"
) {
const getAssetHandlers = async () => {
const swapFromBtn = app.query("#swapFromBtn");
const swapToBtn = app.query("#swapToBtn");
coinVal = 0;
coinArr = [];
let otherVal = 0;
// Getting single currency array
const fetchedCurrency = await getSingleCurrency(
swapToBtn.dataset.id
);
// Getting single coin object
const fetchedCoin = await getSingleCoin(swapFromBtn.dataset.id);
fetchedCurrency.forEach((data) => {
otherVal = data.currency_rate_ngn;
});
for (const key of Object.keys(fetchedCoin)) {
coinArr.push({ key: key, ...fetchedCoin[key] });
}
coinArr.forEach((data) => {
coinVal = data.usd;
limitAbb.innerHTML = data.abbrv.toUpperCase();
});
// Getting single currency for evaluation
const evalCurrency = await getSingleCurrency("usd");
evalCurrency.forEach((data) => {
evalVal = data.currency_rate_ngn;
});
swapToInput.value = swapFromInput.value * (otherVal * coinVal);
const coinChecker = (evalVal * 1) / coinVal;
if (swapFromInput.value < coinChecker) {
buyIntErr.classList.add("active");
limitVal.innerHTML = coinChecker.toFixed(8);
formBtn.disabled = true;
} else {
buyIntErr.classList.remove("active");
// buyValTrue = true;
formBtn.disabled = false;
}
};
getAssetHandlers();
}
//Handling Fiat to fiat
if (
swapFromBtn.dataset.type === "fiat" &&
swapToBtn.dataset.type === "fiat"
) {
const getAssethandler = async () => {
let otherVal = 0;
let otherVal2 = 0;
// Getting single currency array
const fetchedCurrency1 = await getSingleCurrency(
swapFromBtn.dataset.id
);
fetchedCurrency1.forEach((data) => {
otherVal = data.currency_rate_ngn;
});
// Getting single currency2 array
const fetchedCurrency2 = await getSingleCurrency(
swapToBtn.dataset.id
);
fetchedCurrency2.forEach((data) => {
otherVal2 = data.currency_rate_ngn;
});
let result = swapFromInput.value / otherVal;
swapToInput.value = (result * otherVal2).toLocaleString();
};
getAssethandler();
}
};
displayCoinHandler();
} else {
swapToInput.value = "";
buyIntErr.classList.remove("active");
formBtn.disabled = true;
}
});
//Handling SwapTo input
swapToInput.addEventListener("input", (e) => {
if (!swapToInput.value == "") {
//Sorting only numeric values in input
let currentValue = swapToInput.value;
if (
e.inputType.includes("delete") ||
currInputPattern.test(currentValue)
) {
currPreviousValue = currentValue;
}
swapToInput.value = currPreviousValue;
swapToInput.value = swapToInput.value;
const displayCoinHandler = () => {
//Handling Fiat to coins
if (
swapToBtn.dataset.type === "fiat" &&
swapFromBtn.dataset.type === "coin"
) {
const getAssetHandlers = async () => {
coinVal = 0;
coinArr = [];
let otherVal = 0;
// Getting single currency array
const fetchedCurrency = await getSingleCurrency(
swapToBtn.dataset.id
);
// Getting single coin object
const fetchedCoin = await getSingleCoin(swapFromBtn.dataset.id);
fetchedCurrency.forEach((data) => {
otherVal = data.currency_rate_ngn;
});
for (const key of Object.keys(fetchedCoin)) {
coinArr.push({ key: key, ...fetchedCoin[key] });
}
coinArr.forEach((data) => {
coinVal = data.usd;
});
swapFromInput.value = (
swapToInput.value /
(otherVal * coinVal)
).toFixed(8);
let coinChecker = (otherVal * 1) / coinVal;
if (swapFromInput.value < coinChecker) {
buyIntErr.classList.add("active");
limitVal.innerHTML = coinChecker.toFixed(8);
formBtn.disabled = true;
} else {
buyIntErr.classList.remove("active");
formBtn.disabled = false;
// formBtn.removeAttributes("disabled");
}
};
getAssetHandlers();
}
//Handling coins to coins
if (
swapToBtn.dataset.type === "coin" &&
swapFromBtn.dataset.type === "coin"
) {
const getAssethandler = async () => {
const coinArr1 = [];
const coinArr2 = [];
let coinFrom = 0;
let coinTo = 0;
let coinFromInUsd = 0;
let result = 0;
let otherVal = 0;
// Getting single coin1 object
const fetchedCoin1 = await getSingleCoin(swapToBtn.dataset.id);
for (const key of Object.keys(fetchedCoin1)) {
coinArr1.push({ key: key, ...fetchedCoin1[key] });
}
coinArr1.forEach((data) => {
coinFrom = data.usd;
limitAbb.innerHTML = data.abbrv.toUpperCase();
});
// Getting single coin1 object
const fetchedCoin2 = await getSingleCoin(swapFromBtn.dataset.id);
for (const key of Object.keys(fetchedCoin2)) {
coinArr2.push({ key: key, ...fetchedCoin2[key] });
}
coinArr2.forEach((data) => {
coinTo = data.usd;
});
// Getting single usd value for evaluation
const fetchedCurrency = await getSingleCurrency("usd");
fetchedCurrency.forEach((data) => {
otherVal = data.currency_rate_ngn;
});
//Getting value of entered asset in usd
coinFromInUsd = swapToInput.value * coinFrom;
//Getting value of entered asset in selected asset
result = (coinFromInUsd / coinTo).toFixed(8);
swapFromInput.value = result;
let coinChecker = (otherVal * 1) / coinFrom;
if (swapFromInput.value < coinChecker) {
buyIntErr.classList.add("active");
limitVal.innerHTML = coinChecker.toFixed(8);
formBtn.disabled = true;
} else {
buyIntErr.classList.remove("active");
formBtn.disabled = true;
// buyBtn.removeAttribute("disabled");
}
};
getAssethandler();
}
//Handling coins to fiat
if (
swapToBtn.dataset.type === "coin" &&
swapFromBtn.dataset.type === "fiat"
) {
const getAssetHandlers = async () => {
const swapFromBtn = app.query("#swapFromBtn");
const swapToBtn = app.query("#swapToBtn");
coinVal = 0;
coinArr = [];
let otherVal = 0;
// Getting single currency array
const fetchedCurrency = await getSingleCurrency(
swapFromBtn.dataset.id
);
// Getting single coin object
const fetchedCoin = await getSingleCoin(swapToBtn.dataset.id);
fetchedCurrency.forEach((data) => {
otherVal = data.currency_rate_ngn;
limitAbb.innerHTML = data.currency_name.toUpperCase();
});
for (const key of Object.keys(fetchedCoin)) {
coinArr.push({ key: key, ...fetchedCoin[key] });
}
coinArr.forEach((data) => {
coinVal = data.usd;
});
// Getting single currency for evaluation
const evalCurrency = await getSingleCurrency("usd");
evalCurrency.forEach((data) => {
evalVal = data.currency_rate_ngn;
});
swapFromInput.value = swapToInput.value * (otherVal * coinVal);
const coinChecker = (evalVal * 1) / coinVal;
if (swapFromInput.value < coinChecker) {
buyIntErr.classList.add("active");
limitVal.innerHTML = otherVal * 1;
formBtn.disabled = true;
} else {
buyIntErr.classList.remove("active");
formBtn.disabled = false;
// buyBtn.removeAttribute("disabled");
}
};
getAssetHandlers();
}
//Handling Fiat to fiat
if (
swapToBtn.dataset.type === "fiat" &&
swapFromBtn.dataset.type === "fiat"
) {
const getAssethandler = async () => {
let otherVal = 0;
let otherVal2 = 0;
// Getting single currency array
const fetchedCurrency1 = await getSingleCurrency(
swapToBtn.dataset.id
);
fetchedCurrency1.forEach((data) => {
otherVal = data.currency_rate_ngn;
});
// Getting single currency2 array
const fetchedCurrency2 = await getSingleCurrency(
swapFromBtn.dataset.id
);
fetchedCurrency2.forEach((data) => {
otherVal2 = data.currency_rate_ngn;
});
let result = swapToInput.value / otherVal;
swapFromInput.value = (result * otherVal2).toLocaleString();
};
getAssethandler();
}
};
displayCoinHandler();
} else {
swapFromInput.value = "";
buyIntErr.classList.remove("active");
formBtn.disabled = true;
}
});
};
const formBtn = app.query(".form-btn");
formBtn.addEventListener("click", (e) => {
e.preventDefault();
const swapFromInput = app.query("#swapFromInput");
const swapToInput = app.query("#swapToInput");
const swapFromInputVal = app.query("#swapFromInput").value;
const swapToInputVal = app.query("#swapToInput").value;
const swapFromBtn = app.query("#swapFromBtn");
const sellValidate = app.query(".sell-validate");
const sellValidateCnt = app.query(".sell-validate-cnt");
const selVldCls = app.query(".selVldCls");
const swapFromImg = app.query(".swapFromImg").src;
const swapToImg = app.query(".swapToImg").src;
const swapFromAbbv = app.query(".swapFromAbbv").textContent;
const swapToAbbv = app.query(".swapToAbbv").textContent;
let coinValUsd = 0;
let coinValue = 0;
let revCoinVal = 0;
//Handling Coin to Fiat Transactions
if (
swapFromBtn.dataset.type === "coin" &&
swapToBtn.dataset.type === "fiat"
) {
app.getCookie("azer_token", (e, r) => {
if (e) {
formBtn.innerHTML = "Initating Transaction...";
app.client
.fetch(`../../user/wallet/${swapFromBtn.dataset.asset}`, "POST", {
token: r,
})
.then((dx) => {
let coinerDataId =
swapFromBtn.dataset.id === "tether"
? "usdt"
: swapFromBtn.dataset.id === "binancecoin"
? "bnb"
: swapFromBtn.dataset.id;
if (swapFromInputVal > dx[coinerDataId].totalAvailableBalance) {
app.client.sweetAlertE(
"error",
"You do not have enough asset to complete transaction"
);
formBtn.innerHTML = "Initate Payment";
return;
} else {
formBtn.innerHTML = "Initate Payment";
sellValidate.classList.add("active");
selVldCls.addEventListener("click", () => {
swapFromInput.value = "";
swapToInput.value = "";
sellValidate.classList.remove("active");
formBtn.disabled = true;
});
app.getCookie("azer_token", (e, r) => {
app.query(
".sell-vald-bdy"
).innerHTML = ` ${app.loading()}`;
app.query(".sellValBtn").disabled = true;
if (e) {
app.client
.fetch(
`/user/wallet/${swapFromBtn.dataset.asset}`,
"POST",
{
token: r,
}
)
.then(async (dx) => {
let coinerDataId =
swapFromBtn.dataset.id === "tether"
? "usdt"
: swapFromBtn.dataset.id === "binancecoin"
? "bnb"
: swapFromBtn.dataset.id;
coinValUsd = dx[coinerDataId].coinPrice;
// Getting single currency array
const fetchedCurrency = await getSingleCurrency(
swapToBtn.dataset.id
);
fetchedCurrency.forEach((data) => {
coinValue = data.currency_rate_ngn * coinValUsd;
revCoinVal = 1 / coinValue;
});
})
.then(() => {
app.query(".sellValBtn").disabled = false;
app.query(".sell-vald-bdy").innerHTML = `
To receive
${Number(
swapToInputVal
).toLocaleString()}
${swapToAbbv}
Rate
1 ${swapFromAbbv} = ${coinValue.toFixed(
2
)} ${swapToAbbv}
Inverse Rate
1 ${swapToAbbv} = ${revCoinVal.toFixed(
8
)} ${swapFromAbbv}
Payment Method
Azer Wallet
What you receive
${Number(
swapToInputVal
).toLocaleString()} ${swapToAbbv}
`;
});
}
});
//OBJECT TO POST
// app.query(".sellValBtn").addEventListener("submit", (e) => {
// e.preventDefault();
// console.log("hello");
// });
// {
// coin_sold: coinSellBtn.dataset.id,
// coin_val: sellCoinVal,
// curr_val: sellCurrVal,
// curr_purchase: currSellBtn.dataset.id,
// }
// sellOrder.push({
// coin_sold: coinSellBtn.dataset.id,
// coin_val: sellCoinVal,
// curr_val: sellCurrVal,
// curr_purchase: currSellBtn.dataset.id,
// });
}
});
}
});
}
//Handling Coin to Coin Transactions
if (
swapFromBtn.dataset.type === "coin" &&
swapToBtn.dataset.type === "coin"
) {
app.getCookie("azer_token", (e, r) => {
if (e) {
formBtn.innerHTML = "Initating Transaction...";
app.client
.fetch(`../../user/wallet/${swapFromBtn.dataset.asset}`, "POST", {
token: r,
})
.then((dx) => {
let coinerDataId =
swapFromBtn.dataset.id === "tether"
? "usdt"
: swapFromBtn.dataset.id === "binancecoin"
? "bnb"
: swapFromBtn.dataset.id;
if (swapFromInputVal > dx[coinerDataId].totalAvailableBalance) {
app.client.sweetAlertE(
"error",
"You do not have enough asset to complete transaction"
);
formBtn.innerHTML = "Initate Payment";
return;
} else {
formBtn.innerHTML = "Initate Payment";
sellValidate.classList.add("active");
selVldCls.addEventListener("click", () => {
swapFromInput.value = "";
swapToInput.value = "";
sellValidate.classList.remove("active");
formBtn.disabled = true;
});
app.getCookie("azer_token", (e, r) => {
app.query(
".sell-vald-bdy"
).innerHTML = ` ${app.loading()}`;
app.query(".sellValBtn").disabled = true;
if (e) {
app.client
.fetch(
`/user/wallet/${swapFromBtn.dataset.asset}`,
"POST",
{
token: r,
}
)
.then(async (dx) => {
let coinerDataId =
swapFromBtn.dataset.id === "tether"
? "usdt"
: swapFromBtn.dataset.id === "binancecoin"
? "bnb"
: swapFromBtn.dataset.id;
coinValUsd = dx[coinerDataId].coinPrice;
app.client
.fetch(
`../../user/wallet/${swapToBtn.dataset.asset}`,
"POST",
{
token: r,
}
)
.then((dx) => {
let coinerDataId =
swapToBtn.dataset.id === "tether"
? "usdt"
: swapToBtn.dataset.id === "binancecoin"
? "bnb"
: swapToBtn.dataset.id;
let swapFromVal = dx[coinerDataId].coinPrice;
coinValue = coinValUsd / swapFromVal;
revCoinVal = swapFromVal / coinValUsd;
})
.then(() => {
app.query(".sellValBtn").disabled = false;
app.query(".sell-vald-bdy").innerHTML = `
To receive
${Number(
swapToInputVal
).toLocaleString()}
${swapToAbbv}
Rate
1 ${swapFromAbbv} = ${coinValue.toFixed(
8
)} ${swapToAbbv}
Inverse Rate
1 ${swapToAbbv} = ${revCoinVal.toFixed(
8
)} ${swapFromAbbv}
Payment Method
Azer Wallet
What you receive
${Number(
swapToInputVal
).toLocaleString()} ${swapToAbbv}
`;
});
});
}
});
//OBJECT TO POST
// app.query(".sellValBtn").addEventListener("submit", (e) => {
// e.preventDefault();
// console.log("hello");
// });
// {
// coin_sold: coinSellBtn.dataset.id,
// coin_val: sellCoinVal,
// curr_val: sellCurrVal,
// curr_purchase: currSellBtn.dataset.id,
// }
// sellOrder.push({
// coin_sold: coinSellBtn.dataset.id,
// coin_val: sellCoinVal,
// curr_val: sellCurrVal,
// curr_purchase: currSellBtn.dataset.id,
// });
}
});
}
});
}
//Handling Fiat to Coin Transactions
if (
swapFromBtn.dataset.type === "fiat" &&
swapToBtn.dataset.type === "coin"
) {
app.getCookie("azer_token", (e, r) => {
if (e) {
formBtn.innerHTML = "Initating Transaction...";
app.client
.fetch(`../../user/wallet/fiat`, "POST", {
token: r,
})
.then((dx) => {
withdrawableBalance = dx.AvailableBalance;
if (swapFromInputVal > withdrawableBalance) {
app.client.sweetAlertE(
"error",
"You do not have enough asset to complete transaction"
);
formBtn.innerHTML = "Initate Payment";
return;
} else {
formBtn.innerHTML = "Initate Payment";
sellValidate.classList.add("active");
selVldCls.addEventListener("click", () => {
swapFromInput.value = "";
swapToInput.value = "";
sellValidate.classList.remove("active");
formBtn.disabled = true;
});
app.getCookie("azer_token", (e, r) => {
app.query(
".sell-vald-bdy"
).innerHTML = ` ${app.loading()}`;
app.query(".sellValBtn").disabled = true;
if (e) {
app.client
.fetch(`/user/wallet/${swapToBtn.dataset.asset}`, "POST", {
token: r,
})
.then(async (dx) => {
let coinerDataId =
swapToBtn.dataset.id === "tether"
? "usdt"
: swapToBtn.dataset.id === "binancecoin"
? "bnb"
: swapToBtn.dataset.id;
coinValUsd = dx[coinerDataId].coinPrice;
// Getting single currency array
const fetchedCurrency = await getSingleCurrency(
swapFromBtn.dataset.id
);
fetchedCurrency.forEach((data) => {
coinValue = data.currency_rate_ngn * coinValUsd;
revCoinVal = 1 / coinValue;
});
})
.then(() => {
app.query(".sellValBtn").disabled = false;
app.query(".sell-vald-bdy").innerHTML = `
To receive
${Number(
swapToInputVal
).toFixed(8)}
${swapToAbbv}
Rate
1 ${swapFromAbbv} = ${coinValue.toFixed(
2
)} ${swapToAbbv}
Inverse Rate
1 ${swapToAbbv} = ${revCoinVal.toFixed(
8
)} ${swapFromAbbv}
Payment Method
Azer Wallet
What you receive
${Number(
swapToInputVal
).toFixed(8)} ${swapToAbbv}
`;
});
}
});
//OBJECT TO POST
// app.query(".sellValBtn").addEventListener("submit", (e) => {
// e.preventDefault();
// console.log("hello");
// });
// {
// coin_sold: coinSellBtn.dataset.id,
// coin_val: sellCoinVal,
// curr_val: sellCurrVal,
// curr_purchase: currSellBtn.dataset.id,
// }
// sellOrder.push({
// coin_sold: coinSellBtn.dataset.id,
// coin_val: sellCoinVal,
// curr_val: sellCurrVal,
// curr_purchase: currSellBtn.dataset.id,
// });
}
});
}
});
}
});
//PROCEED SELL TRANSACTION
app.query(".sellValBtn").addEventListener("click", (e) => {
e.preventDefault();
app.query(".sell-validate-cnt").classList.remove("active");
app.query(".sell-comp").classList.add("active");
app.query(".sell-comp-load").innerHTML = app.loading();
const sellValidate = app.query(".sell-validate");
app.getCookie("azer_token", (e, r) => {
const swapFromBtn = app.query("#swapFromBtn");
const swapToBtn = app.query("#swapToBtn");
let swapFromInputVal = app.query("#swapFromInput").value;
let swapToInputVal = app.query("#swapToInput").value;
let withdrawableBalance = 0;
//Posting coin to fiat transaction
if (
swapFromBtn.dataset.type === "coin" &&
swapToBtn.dataset.type === "fiat"
) {
if (e) {
app.client
.fetch(`/user/wallet/${swapFromBtn.dataset.asset}`, "POST", {
token: r,
})
.then(async (dx) => {
let coinerDataId =
swapFromBtn.dataset.id === "tether"
? "usdt"
: swapFromBtn.dataset.id === "binancecoin"
? "bnb"
: swapFromBtn.dataset.id;
if (swapFromInputVal > dx[coinerDataId].totalAvailableBalance) {
return;
} else {
let ex = await fetch(
`../../api/convert/sellusd?id=${
swapToBtn.dataset.id
}&ex=${parseFloat(swapToInputVal)}`
);
let exc = await ex.json();
const { usd } = exc;
let data = {
coin: swapFromBtn.dataset.id,
unit: parseFloat(swapFromInputVal),
amount: parseFloat(swapToInputVal),
usd: parseFloat(usd),
currency: swapToBtn.dataset.id,
token: r,
};
app.client
.fetch(`/user/wallet/sell`, "POST", data)
.then((dxb) => {
if (dxb.isSuccess) {
app.query(".sell-comp-load").classList.remove("active");
app.query(".sell-comp-bdy").classList.add("active");
} else {
return;
}
});
}
});
}
}
//Posting coin to coin transaction
if (e) {
app.client
.fetch(`/user/wallet/${swapFromBtn.dataset.asset}`, "POST", {
token: r,
})
.then(async (dx) => {
let coinerDataId =
swapFromBtn.dataset.id === "tether"
? "usdt"
: swapFromBtn.dataset.id === "binancecoin"
? "bnb"
: swapFromBtn.dataset.id;
if (swapFromInputVal > dx[coinerDataId].totalAvailableBalance) {
return;
} else {
let data = {
coinFrom: swapFromBtn.dataset.id,
coinFromUnit: parseFloat(swapFromInputVal),
coinToUnit: parseFloat(swapToInputVal),
coinTo: swapToBtn.dataset.id,
token: r,
};
app.client.fetch(`/user/wallet/sell`, "POST", data).then((dxb) => {
if (dxb.isSuccess) {
app.query(".sell-comp-load").classList.remove("active");
app.query(".sell-comp-bdy").classList.add("active");
} else {
return;
}
});
}
});
}
//Posting fiat to coin transaction
if (
swapFromBtn.dataset.type === "fiat" &&
swapToBtn.dataset.type === "coin"
) {
if (e) {
app.client
.fetch(`/user/wallet/fiat`, "POST", {
token: r,
})
.then(async (dx) => {
withdrawableBalance = dx.AvailableBalance;
if (swapFromInputVal > withdrawableBalance) {
return;
} else {
let ex = await fetch(
`../../api/convert/sellusd?id=${
swapFromBtn.dataset.id
}&ex=${parseFloat(swapFromInputVal)}`
);
let exc = await ex.json();
const { usd } = exc;
let data = {
currencyfrom: swapToBtn.dataset.id,
amount: parseFloat(swapFromInputVal),
usd: parseFloat(usd),
coinTo: swapFromBtn.dataset.id,
unit: parseFloat(swapToInputVal),
token: r,
};
app.client
.fetch(`/user/wallet/sell`, "POST", data)
.then((dxb) => {
if (dxb.isSuccess) {
app.query(".sell-comp-load").classList.remove("active");
app.query(".sell-comp-bdy").classList.add("active");
} else {
return;
}
});
}
});
}
}
});
});
app.query(".conttt").addEventListener("click", (e) => {
e.preventDefault();
app.query(".sell-validate").classList.remove("active");
app.query("#swapFromInput").value = "";
app.query("#swapToInput").value = "";
app.query(".sell-validate-cnt").classList.add("active");
app.query(".sell-comp").classList.remove("active");
});