import { applyLang, bindHeader, connectToApp, createMask, get, getUserId, post, t, toast } from "../bd-static/shared.js";
let ways = [];
let cards = [];
let form = { userId: getUserId(), cardType: "", cardName: "", cardNo: "", payee: "" };
bindHeader("bank_card");
applyLang();
document.getElementById("addButton").addEventListener("click", openAddSheet);
connectToApp().then(loadData);
async function loadData() {
try {
const [wayResponse, cardResponse] = await Promise.all([get("/wallet/bank/withdrawal_ways"), get("/wallet/bank-card/list")]);
ways = wayResponse.body || [];
cards = cardResponse.body || [];
render();
} catch (error) {
toast(error.response?.errorMsg || error.message);
}
}
function render() {
const current = cards.find((item) => item.use);
document.getElementById("currentCard").innerHTML = current
? `
${t("payee")}: ${current.payee || "-"}
${t("card_number")}: ${current.cardNo || "-"}
`
: `${t("no_bank_cards_in_use")}
`;
const list = document.getElementById("cardList");
list.innerHTML = "";
if (!cards.length) {
list.innerHTML = `${t("no_bank_cards_added")}
`;
return;
}
cards.forEach((item) => {
const card = document.createElement("article");
card.className = "card card-pad";
card.style.marginBottom = "10px";
card.innerHTML = `
${t("payee")}: ${item.payee || "-"}
${t("card_number")}: ${item.cardNo || "-"}
${item.use ? `` : ``}
`;
card.querySelector("[data-delete]").addEventListener("click", () => deleteCard(item.id));
const use = card.querySelector("[data-use]");
if (use) use.addEventListener("click", () => useCard(item.id));
list.appendChild(card);
});
}
function openAddSheet() {
form = { userId: getUserId(), cardType: "", cardName: "", cardNo: "", payee: "" };
const sheet = document.createElement("section");
sheet.className = "sheet";
sheet.innerHTML = `
${t("add_new_payment_method")}
${t("withdrawal_method")}:
${t("card_number")}:
${t("payee")}:
`;
createMask(sheet);
const type = sheet.querySelector("#cardType");
type.addEventListener("change", () => {
form.cardType = type.value;
form.cardName = type.value === "USDT" ? "USDT" : "";
sheet.querySelector("#cardNameWrap").hidden = type.value !== "BANK";
});
sheet.querySelector("#confirmAdd").addEventListener("click", async () => {
form.cardName = type.value === "BANK" ? sheet.querySelector("#cardName").value.trim() : form.cardName;
form.cardNo = sheet.querySelector("#cardNo").value.trim();
form.payee = sheet.querySelector("#payee").value.trim();
if (!form.cardType || !form.cardName || !form.cardNo || !form.payee) return;
try {
await post("/wallet/bank-card/add", form);
document.getElementById("modalMask").remove();
await loadData();
} catch (error) {
toast(error.response?.errorMsg || error.message);
}
});
}
async function deleteCard(id) {
try {
await post("/wallet/bank-card/delete", { id });
await loadData();
} catch (error) {
toast(error.response?.errorMsg || error.message);
}
}
async function useCard(id) {
try {
await post("/wallet/bank-card/use", { id });
await loadData();
} catch (error) {
toast(error.response?.errorMsg || error.message);
}
}