fix: refresh node cache on Gifts/User card open (new nodes weren't showing up); preselect country flag in node edit modal
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
parent
8a3ac30dbb
commit
5725922bdc
1 changed files with 12 additions and 3 deletions
15
admin.html
15
admin.html
|
|
@ -581,6 +581,15 @@ function flagEmoji(code) {
|
||||||
return code.split("").map((c) => String.fromCodePoint(127397 + c.charCodeAt(0))).join("");
|
return code.split("").map((c) => String.fromCodePoint(127397 + c.charCodeAt(0))).join("");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function flagToCode(label) {
|
||||||
|
const chars = Array.from(label || "");
|
||||||
|
if (chars.length < 2) return null;
|
||||||
|
const cp1 = chars[0].codePointAt(0) - 127397;
|
||||||
|
const cp2 = chars[1].codePointAt(0) - 127397;
|
||||||
|
if (cp1 < 65 || cp1 > 90 || cp2 < 65 || cp2 > 90) return null;
|
||||||
|
return String.fromCharCode(cp1) + String.fromCharCode(cp2);
|
||||||
|
}
|
||||||
|
|
||||||
function createDropdown(id, { options, value, placeholder, searchable, onChange }) {
|
function createDropdown(id, { options, value, placeholder, searchable, onChange }) {
|
||||||
const container = document.getElementById(id);
|
const container = document.getElementById(id);
|
||||||
container.classList.add("dd");
|
container.classList.add("dd");
|
||||||
|
|
@ -829,7 +838,7 @@ async function openUserCard(tgId, label) {
|
||||||
switchUserTab("subs");
|
switchUserTab("subs");
|
||||||
document.getElementById("devices-overlay").classList.add("show");
|
document.getElementById("devices-overlay").classList.add("show");
|
||||||
if (!plansCache) plansCache = await api("/admin/api/plans");
|
if (!plansCache) plansCache = await api("/admin/api/plans");
|
||||||
if (!nodesCache) nodesCache = await api("/admin/api/nodes");
|
nodesCache = await api("/admin/api/nodes");
|
||||||
DD.ucGrantNode.setOptions(nodesCache.filter((n) => n.enabled).map((n) => ({ value: n.code, label: n.label })));
|
DD.ucGrantNode.setOptions(nodesCache.filter((n) => n.enabled).map((n) => ({ value: n.code, label: n.label })));
|
||||||
DD.ucGrantPlan.setOptions(plansCache.map((p) => ({ value: p.code, label: p.label })));
|
DD.ucGrantPlan.setOptions(plansCache.map((p) => ({ value: p.code, label: p.label })));
|
||||||
const data = await api(`/admin/api/users/${tgId}`);
|
const data = await api(`/admin/api/users/${tgId}`);
|
||||||
|
|
@ -897,7 +906,7 @@ let plansCache = null, nodesCache = null;
|
||||||
|
|
||||||
async function loadGifts() {
|
async function loadGifts() {
|
||||||
if (!plansCache) plansCache = await api("/admin/api/plans");
|
if (!plansCache) plansCache = await api("/admin/api/plans");
|
||||||
if (!nodesCache) nodesCache = await api("/admin/api/nodes");
|
nodesCache = await api("/admin/api/nodes");
|
||||||
const nodeOptions = nodesCache.filter((n) => n.enabled).map((n) => ({ value: n.code, label: n.label }));
|
const nodeOptions = nodesCache.filter((n) => n.enabled).map((n) => ({ value: n.code, label: n.label }));
|
||||||
const planOptions = plansCache.map((p) => ({ value: p.code, label: p.label }));
|
const planOptions = plansCache.map((p) => ({ value: p.code, label: p.label }));
|
||||||
DD.giftNode.setOptions(nodeOptions);
|
DD.giftNode.setOptions(nodeOptions);
|
||||||
|
|
@ -964,7 +973,7 @@ function openEditNode(code) {
|
||||||
const isDe1 = code === "de1";
|
const isDe1 = code === "de1";
|
||||||
document.getElementById("edit-node-title").textContent = `Редактировать: ${n.label}`;
|
document.getElementById("edit-node-title").textContent = `Редактировать: ${n.label}`;
|
||||||
document.getElementById("edit-label").value = n.label || "";
|
document.getElementById("edit-label").value = n.label || "";
|
||||||
DD.editCountry.setValue(null);
|
DD.editCountry.setValue(flagToCode(n.label));
|
||||||
document.getElementById("edit-node-advanced").style.display = isDe1 ? "none" : "block";
|
document.getElementById("edit-node-advanced").style.display = isDe1 ? "none" : "block";
|
||||||
document.getElementById("edit-node-de1-note").style.display = isDe1 ? "block" : "none";
|
document.getElementById("edit-node-de1-note").style.display = isDe1 ? "block" : "none";
|
||||||
document.getElementById("edit-address").value = n.address || "";
|
document.getElementById("edit-address").value = n.address || "";
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue