window.debug = false;
// Utility Functions
function displayMessage(message, isError = false, isInfo = false) {
const msgDiv = document.getElementById("message");
msgDiv.textContent = message;
msgDiv.className =
"message " + (isError ? "error" : isInfo ? "info" : "success");
if (isInfo) {
setTimeout(() => {
if (msgDiv.className.includes("info")) {
msgDiv.textContent = "";
msgDiv.className = "message";
domuserupdate = document.getElementById("userupdate");
//domuserupdate.style.display = "none";
}
}, 3000);
}
}
function logoset(targetId, previewId = "updateImgPreview") {
const stringText = window.imgsrc;
const targetInput = document.getElementById(targetId);
const previewDiv = document.getElementById(previewId);
const defaultAvatar = 'https://placehold.co/100x100/666/fff/png';
if (targetInput && typeof stringText !== "undefined") {
if (/^https?:\/\//.test(stringText)) {
targetInput.value = stringText;
if (previewDiv) {
previewDiv.innerHTML = ``;
const img = previewDiv.querySelector('img');
img.onerror = () => {
console.warn("Failed to load preview image, reverting to default.");
img.src = defaultAvatar;
};
}
} else {
console.warn("Invalid image URL in logoset, using default:", stringText);
targetInput.value = defaultAvatar;
if (previewDiv) {
previewDiv.innerHTML = `
`;
}
}
}
}
function togglePassword(inputId, buttonId) {
const input = document.getElementById(inputId);
if (input) {
input.type = input.type === "password" ? "text" : "password";
const button = document.getElementById(buttonId);
if (button)
button.textContent = input.type === "password" ? "Show" : "Hide";
}
}
async function postto(apiUrl = "", payload = {}) {
try {
const response = await fetch(apiUrl, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ data: payload }),
});
if (!response.ok) {
const errorData = await response.json().catch(() => ({}));
throw new Error(
errorData.error || `HTTP error! status: ${response.status}`,
);
}
return await response.json();
} catch (error) {
console.error("Request failed:", error);
displayMessage(error.message, true);
throw error;
}
}
async function getData(url) {
try {
const response = await fetch(url);
if (!response.ok) throw new Error(`HTTP error! status: ${response.status}`);
return await response.json();
} catch (error) {
console.error("Get request failed:", error);
throw error;
}
}
// Check User Function
async function checkUser(userId) {
if (!userId) {
displayMessage("No user ID provided in URL", true);
return null;
}
try {
displayMessage(`Checking user ${userId}...`, false, true);
const response = await getData(
`https://r.kunok.com/aui.php?action=list&id=${encodeURIComponent(userId)}`,
);
const user =
response.data && response.data.length ? response.data[0] : null;
if (!user) {
displayMessage(`User ${userId} not found`, true);
return null;
}
displayMessage(
`User ${userId} found, loading update panel...`,
false,
true,
);
return userId;
} catch (error) {
console.error("Check user error:", error);
displayMessage(`Error checking user ${userId}: ${error.message}`, true);
return null;
}
}
// Update User Panel Function
async function userUpdatePanel(userId) {
// Add spinner styles if not already present
addStyle(`
@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}
.loading-spinner {
border: 4px solid rgba(0, 0, 0, 0.1);
border-radius: 50%;
border-top: 4px solid #3498db;
width: 30px;
height: 30px;
animation: spin 1s linear infinite;
}
`);
setTimeout(async () => {
try {
displayMessage("Loading user data...", false, true);
const response = await getData(
`https://r.kunok.com/aui.php?action=list&id=${encodeURIComponent(userId)}`,
);
if (response.error || !response.data || response.data.length === 0) {
throw new Error(response.error || "User not found");
}
const user = response.data[0];
const defaultAvatar = 'https://placehold.co/100x100/666/fff/png';
let userImg = defaultAvatar;
if (user.img && /^https?:\/\//.test(user.img)) {
userImg = user.img;
} else if (user.img) {
console.warn("Invalid image URL from API, using default:", user.img);
}
localStorage.setItem("userid", user.id);
localStorage.setItem("user_name", user.name);
localStorage.setItem("flag", user.flag);
localStorage.setItem("level", user.level);
localStorage.setItem("img", userImg);
const formHTML = `
Failed to load user data
'; } displayMessage(`Error loading user ${userId}: ${error.message}`, true); } }, 100); } // Main function to show user update panel async function showUserUpdatePanel() { createPanel("updateUserPanel", "T1", "ctc", 400, window.innerHeight - 100, { bodyContent: `