From 26217fdb374042cc1460eff2d5ea0b950ac3ac9d Mon Sep 17 00:00:00 2001 From: QuickMythril Date: Mon, 15 Dec 2025 12:29:52 -0500 Subject: [PATCH] Fix AdminBoard kick/ban for address-only accounts --- assets/js/AdminBoard.js | 9 ++++----- assets/js/MinterBoard.js | 3 +-- assets/js/QortalApi.js | 26 +++++++++++++------------- 3 files changed, 18 insertions(+), 20 deletions(-) diff --git a/assets/js/AdminBoard.js b/assets/js/AdminBoard.js index fdb5704..6696938 100644 --- a/assets/js/AdminBoard.js +++ b/assets/js/AdminBoard.js @@ -1092,7 +1092,7 @@ const handleKickMinter = async (minterName) => { // Get the minter address from name info let minterAddress - if (!isAddress.address || !isAddress.address != minterName){ + if (!isAddress.address || isAddress.address !== minterName){ const minterNameInfo = await getNameInfo(minterName) minterAddress = minterNameInfo?.owner } else { @@ -1104,7 +1104,7 @@ const handleKickMinter = async (minterName) => { return } - const adminPublicKey = await getPublicKeyByName(userState.accountName) + const adminPublicKey = await getPublicKeyFromAddress(userState.accountAddress) const reason = 'Kicked by Minter Admins' const fee = 0.01 @@ -1152,7 +1152,7 @@ const handleBanMinter = async (minterName) => { txGroupId = 694 } let minterAddress - if (!isAddress.address || !isAddress.address != minterName){ + if (!isAddress.address || isAddress.address !== minterName){ const minterNameInfo = await getNameInfo(minterName) minterAddress = minterNameInfo?.owner } else { @@ -1163,7 +1163,7 @@ const handleBanMinter = async (minterName) => { alert(`No valid address found for minter name: ${minterName}, this should NOT have happened, please report to developers...`) return } - const adminPublicKey = await getPublicKeyByName(userState.accountName) + const adminPublicKey = await getPublicKeyFromAddress(userState.accountAddress) const reason = 'Banned by Minter Admins' const fee = 0.01 @@ -1408,4 +1408,3 @@ const createEncryptedCardHTML = async (cardData, pollResults, cardIdentifier, co ` } - diff --git a/assets/js/MinterBoard.js b/assets/js/MinterBoard.js index 138945d..7dce4fe 100644 --- a/assets/js/MinterBoard.js +++ b/assets/js/MinterBoard.js @@ -2028,7 +2028,7 @@ const handleGroupApproval = async (pendingSignature) => { return } const fee = 0.01 - const adminPublicKey = await getPublicKeyByName(userState.accountName) + const adminPublicKey = await getPublicKeyFromAddress(userState.accountAddress) const txGroupId = 0 const rawGroupApprovalTransaction = await createGroupApprovalTransaction(adminPublicKey, pendingSignature, txGroupId, fee) const signedGroupApprovalTransaction = await qortalRequest({ @@ -2247,4 +2247,3 @@ const createCardHTML = async (cardData, pollResults, cardIdentifier, commentCoun ` } - diff --git a/assets/js/QortalApi.js b/assets/js/QortalApi.js index 4ae2787..2d84fb7 100644 --- a/assets/js/QortalApi.js +++ b/assets/js/QortalApi.js @@ -51,14 +51,14 @@ const randomID = () => { // Turn a unix timestamp into a human-readable date const timestampToHumanReadableDate = async(timestamp) => { const date = new Date(timestamp) - const day = date.getDate() - const month = date.getMonth() + 1 + const day = String(date.getDate()).padStart(2, '0') + const month = String(date.getMonth() + 1).padStart(2, '0') const year = date.getFullYear() - const hours = date.getHours() + const hours = String(date.getHours()).padStart(2, '0') const minutes = String(date.getMinutes()).padStart(2, '0'); const seconds = String(date.getSeconds()).padStart(2, '0'); - const formattedDate = `${day}.${month}.${year}..@${hours}:${minutes}:${seconds}` + const formattedDate = `${year}-${month}-${day} @ ${hours}:${minutes}:${seconds}` console.log('Formatted date:', formattedDate) return formattedDate } @@ -1463,8 +1463,8 @@ const createGroupInviteTransaction = async (recipientAddress, adminPublicKey, gr const createGroupKickTransaction = async (adminPublicKey, groupId=694, member, reason='Kicked by admins', txGroupId=694, fee=0.01) => { try { - // Fetch account reference correctly - const accountInfo = await getAddressInfo(member) + const adminAddress = await getAddressFromPublicKey(adminPublicKey) + const accountInfo = await getAddressInfo(adminAddress) const accountReference = accountInfo.reference // Validate inputs before making the request @@ -1673,13 +1673,13 @@ const createGroupApprovalTransaction = async (adminPublicKey, pendingSignature, const createGroupBanTransaction = async (recipientAddress, adminPublicKey, groupId=694, offender, reason='Banned by admins', txGroupId, fee) => { try { - // Fetch account reference correctly - const accountInfo = await getAddressInfo(recipientAddress) + const adminAddress = await getAddressFromPublicKey(adminPublicKey) + const accountInfo = await getAddressInfo(adminAddress) const accountReference = accountInfo.reference // Validate inputs before making the request - if (!adminPublicKey || !accountReference || !recipientAddress) { - throw new Error("Missing required parameters for group invite transaction.") + if (!adminPublicKey || !accountReference || !offender) { + throw new Error("Missing required parameters for group ban transaction.") } const payload = { @@ -1907,9 +1907,9 @@ const searchTransactions = async ({ const searchPendingTransactions = async (limit=20, offset=0, reverse=false) => { try { const queryParams = [] - if (limit) queryParams.push(`limit=${limit}`) - if (offset) queryParams.push(`offset=${offset}`) - if (reverse) queryParams.push(`reverse=${reverse}`) + if (limit !== undefined) queryParams.push(`limit=${limit}`) + if (offset !== undefined) queryParams.push(`offset=${offset}`) + if (reverse !== undefined) queryParams.push(`reverse=${reverse}`) const queryString = queryParams.join('&') const url = `${baseUrl}/transactions/pending${queryString ? `?${queryString}` : ''}` -- 2.43.0