testing-20241230 #1
@ -213,7 +213,28 @@ const loadCards = async () => {
|
||||
const validatedCards = await Promise.all(
|
||||
response.map(async card => {
|
||||
const isValid = await validateCardStructure(card);
|
||||
return isValid ? card : null;
|
||||
if (!isValid) {
|
||||
return null;
|
||||
}
|
||||
// Check if the name is currently owned by any address
|
||||
let nameData;
|
||||
try {
|
||||
nameData = await qortalRequest({
|
||||
action: "GET_NAME_DATA",
|
||||
name: card.name
|
||||
});
|
||||
// If the name is unowned, an error is returned, skip the card
|
||||
if (!nameData || !nameData.owner) {
|
||||
console.warn(`Skipping card with unowned or unknown name: ${card.name}`);
|
||||
return null;
|
||||
}
|
||||
} catch (err) {
|
||||
console.warn(`Error fetching name data for card name: ${card.name}`, err);
|
||||
return null;
|
||||
}
|
||||
// If structure is valid and name is owned, we consider the card valid
|
||||
card.address = nameData.owner
|
||||
return card;
|
||||
})
|
||||
);
|
||||
|
||||
@ -224,7 +245,18 @@ const loadCards = async () => {
|
||||
return;
|
||||
}
|
||||
|
||||
const finalCards = await processMinterCards(validCards)
|
||||
// Filter out cards owned by addresses already in the Minter group.
|
||||
const minterGroupData = await fetchMinterGroupMembers();
|
||||
const minterGroupAddresses = minterGroupData.map(m => m.member);
|
||||
const notInMinterGroupCards = validCards.filter(
|
||||
(card) => !minterGroupAddresses.includes(card.address)
|
||||
);
|
||||
|
||||
if (notInMinterGroupCards.length === 0) {
|
||||
cardsContainer.innerHTML = "<p>No cards to display. (All belong to existing Minters.)</p>";
|
||||
return;
|
||||
}
|
||||
const finalCards = await processMinterCards(notInMinterGroupCards);
|
||||
|
||||
// Sort cards by timestamp descending (newest first)
|
||||
// validCards.sort((a, b) => {
|
||||
@ -263,6 +295,26 @@ const loadCards = async () => {
|
||||
return;
|
||||
}
|
||||
|
||||
// Fetch the poll's owner (the address that created the poll)
|
||||
let pollOwner;
|
||||
try {
|
||||
pollOwner = await fetchPollOwner(cardDataResponse.poll);
|
||||
if (!pollOwner) {
|
||||
console.warn(`Skipping card, could not fetch poll owner for: ${cardDataResponse.poll}`);
|
||||
removeSkeleton(card.identifier);
|
||||
return;
|
||||
}
|
||||
} catch (err) {
|
||||
console.warn(`Error fetching poll owner for poll ${cardDataResponse.poll}`, err);
|
||||
removeSkeleton(card.identifier);
|
||||
return;
|
||||
}
|
||||
if (card.address !== pollOwner) {
|
||||
console.warn(`Skipping card ${card.identifier}, mismatch: name owner != poll owner`);
|
||||
removeSkeleton(card.identifier);
|
||||
return;
|
||||
}
|
||||
|
||||
// Fetch poll results
|
||||
const pollResults = await fetchPollResults(cardDataResponse.poll);
|
||||
const BgColor = generateDarkPastelBackgroundBy(card.name)
|
||||
|
@ -1126,6 +1126,21 @@ const voteYesOnPoll = async (poll) => {
|
||||
optionIndex: 1,
|
||||
})
|
||||
}
|
||||
|
||||
// Fetch poll owner -----------------------------
|
||||
const fetchPollOwner = async (pollName) => {
|
||||
try {
|
||||
const response = await fetch(`${baseUrl}/polls/${pollName}`, {
|
||||
method: 'GET',
|
||||
headers: { 'Accept': 'application/json' }
|
||||
})
|
||||
const pollData = await response.json()
|
||||
return pollData.owner
|
||||
} catch (error) {
|
||||
console.error(`Error fetching poll owner for ${pollName}:`, error)
|
||||
return null
|
||||
}
|
||||
}
|
||||
|
||||
// export {
|
||||
// userState,
|
||||
|
Loading…
x
Reference in New Issue
Block a user