fix applyVoteSortingData for admin board

This commit is contained in:
QuickMythril 2025-02-03 00:45:37 -05:00
parent 9971c6d595
commit 02868171e3

View File

@ -240,10 +240,10 @@ const sortCards = async (cardsArray, selectedSort, board) => {
}) })
break break
case 'least-votes': case 'least-votes':
await applyVoteSortingData(cardsArray, /* ascending= */ true) await applyVoteSortingData(cardsArray, /* ascending= */ true, board)
break break
case 'most-votes': case 'most-votes':
await applyVoteSortingData(cardsArray, /* ascending= */ false) await applyVoteSortingData(cardsArray, /* ascending= */ false, board)
break break
default: default:
// Sort by date // Sort by date
@ -278,36 +278,71 @@ const getNewestCommentTimestamp = async (cardIdentifier, board) => {
} }
} }
const applyVoteSortingData = async (cards, ascending = true) => { const applyVoteSortingData = async (cards, ascending = true, boardType = 'minter') => {
const minterGroupMembers = await fetchMinterGroupMembers() const minterGroupMembers = await fetchMinterGroupMembers()
const minterAdmins = await fetchMinterGroupAdmins() const minterAdmins = await fetchMinterGroupAdmins()
for (const card of cards) { for (const card of cards) {
try { try {
const cardDataResponse = await qortalRequest({ if (boardType === 'admin') {
action: "FETCH_QDN_RESOURCE", // For the Admin board, we already have the poll name in `card.decryptedCardData.poll`
name: card.name, // No need to fetch the resource from BLOG_POST
service: "BLOG_POST", const pollName = card.decryptedCardData?.poll
identifier: card.identifier, if (!pollName) {
}) // No poll => no votes
if (!cardDataResponse || !cardDataResponse.poll) { card._adminVotes = 0
card._adminVotes = 0 card._adminYes = 0
card._adminYes = 0 card._minterVotes = 0
card._minterVotes = 0 card._minterYes = 0
card._minterYes = 0 continue
continue }
// Fetch poll results
const pollResults = await fetchPollResults(pollName)
if (!pollResults) {
card._adminVotes = 0
card._adminYes = 0
card._minterVotes = 0
card._minterYes = 0
continue
}
// Process them
const { adminYes, adminNo, minterYes, minterNo } = await processPollData(
pollResults,
minterGroupMembers,
minterAdmins,
card.decryptedCardData.creator,
card.card.identifier
)
card._adminVotes = adminYes + adminNo
card._adminYes = adminYes
card._minterVotes = minterYes + minterNo
card._minterYes = minterYes
} else {
const cardDataResponse = await qortalRequest({
action: "FETCH_QDN_RESOURCE",
name: card.name,
service: "BLOG_POST",
identifier: card.identifier,
})
if (!cardDataResponse || !cardDataResponse.poll) {
card._adminVotes = 0
card._adminYes = 0
card._minterVotes = 0
card._minterYes = 0
continue
}
const pollResults = await fetchPollResults(cardDataResponse.poll);
const { adminYes, adminNo, minterYes, minterNo } = await processPollData(
pollResults,
minterGroupMembers,
minterAdmins,
cardDataResponse.creator,
card.identifier
)
card._adminVotes = adminYes + adminNo
card._adminYes = adminYes
card._minterVotes = minterYes + minterNo
card._minterYes = minterYes
} }
const pollResults = await fetchPollResults(cardDataResponse.poll);
const { adminYes, adminNo, minterYes, minterNo } = await processPollData(
pollResults,
minterGroupMembers,
minterAdmins,
cardDataResponse.creator,
card.identifier
)
card._adminVotes = adminYes + adminNo
card._adminYes = adminYes
card._minterVotes = minterYes + minterNo
card._minterYes = minterYes
} catch (error) { } catch (error) {
console.warn(`Error fetching or processing poll for card ${card.identifier}:`, error) console.warn(`Error fetching or processing poll for card ${card.identifier}:`, error)
card._adminVotes = 0 card._adminVotes = 0