/* const { header, content, links, nominee, nomineeAddress, nominator, nominatorAddress, creator, creatorAddress, publishedBy, publishedByAddress, timestamp, poll, } = cardData const formattedDate = cardUpdatedTime ? new Date(cardUpdatedTime).toLocaleString() : new Date(timestamp).toLocaleString() const nomineeName = getCardNomineeName(cardData, creator || "Unknown") const nomineeAddressValue = getCardNomineeAddress( cardData, address || creatorAddress || nomineeAddress || "" ) const nominatorName = getCardNominatorName( cardData, publishedBy || "Unknown" ) const nominatorAddressValue = getCardNominatorAddress( cardData, publishedByAddress || nominatorAddress || "" ) const avatarPromise = Promise.all([ getMinterAvatar(nomineeName), getMinterAvatar(nominatorName || ""), ]).catch(() => [ ``, ``, ]) const addressInfoPromise = Promise.all([ getAddressInfoCached(nomineeAddressValue || address), nominatorAddressValue ? getAddressInfoCached(nominatorAddressValue) : Promise.resolve(null), ]).catch(() => [null, null]) const canEditCardPromise = canCurrentUserEditPublishedCard( nominatorName, nominatorAddressValue || "" ).catch(() => false) const [ [avatarHtml, nominatorAvatarHtml], [nomineeAddressInfo, nominatorAddressInfo], canEditCard, ] = await Promise.all([ avatarPromise, addressInfoPromise, canEditCardPromise, ]) const linksArray = Array.isArray(links) ? links : [] minterBoardCardDataByIdentifier.set(cardIdentifier, { ...cardData, nominee: nomineeName, nomineeAddress: nomineeAddressValue, nominator: nominatorName, nominatorAddress: nominatorAddressValue, _inviteDisplayStatus: quickInviteDisplayStatus, }) const linksHTML = linksArray .map( (link, index) => ` ` ) .join("") const safeNominee = qEscapeHtml(nomineeName) const safeHeader = qEscapeHtml(header) const renderedContent = qRenderRichContentHtml(content) const nomineeLinkHtml = typeof buildBoardAccountTriggerHtml === "function" ? buildBoardAccountTriggerHtml({ name: nomineeName || "Unknown", address: nomineeAddressValue || "", label: nomineeName || "Unknown", className: "card-account-trigger card-account-trigger--heading", tagName: "button", }) : safeNominee const safeFormattedDate = qEscapeHtml(formattedDate) const safeCardIdentifier = qEscapeAttr(cardIdentifier) const optimisticNotice = cardData._optimisticPending ? `
Published locally. Waiting for QDN indexing.
` : "" const inviteStateSlotHtml = `
${invitedText}
` const inviteJoinSlotHtml = `
` const groupApprovalSlotHtml = `
${quickGroupApprovalHtml}
` const nomineeLevel = nomineeAddressInfo?.level ?? 0 const nominatorLevel = nominatorAddressInfo?.level ?? null const editButtonHtml = canEditCard ? ` ` : "" const notificationButtonHtml = buildMinterCardNotificationButtonHtml(cardIdentifier) const identityBoxesHtml = `
${buildIdentityBoxHtml( "Nominee", nomineeName, nomineeAddressValue || "", nomineeLevel, avatarHtml )} ${buildIdentityBoxHtml( "Nominator", nominatorName || "Unknown", nominatorAddressValue || "", nominatorLevel, nominatorAvatarHtml )}
` const supportResultsLoadingHtml = `
${getBoardInlineLoadingHTML("Loading current approval results...")}
` if (poll) { void fetchPollResultsCached(poll).catch(() => null) } createModal("links") createModal("poll-details") createModal("group-approval-details") const inviteButtonSlotHtml = `
` let inviteHtmlAdd = inviteButtonSlotHtml let finalBgColor = bgColor const userVoteStateClass = "" let invitedText = quickInviteDisplayStatus ? buildMinterInviteStatusHtml(quickInviteDisplayStatus, { variant: "card", cardIdentifier, nomineeName: quickNomineeName, nomineeAddress: quickNomineeAddressValue || "", }) : "" // for invite status label if found let adminYes = 0 let adminNo = 0 let minterYes = 0 let minterNo = 0 let totalYes = 0 let totalNo = 0 let totalYesWeight = 0 let totalNoWeight = 0 let detailsHtml = supportResultsLoadingHtml let userVote = null const penaltyText = (nomineeAddressInfo?.blocksMintedPenalty ?? 0) === 0 ? "" : "

(has Blocks Penalty)

" const adjustmentText = (nomineeAddressInfo?.blocksMintedAdjustment ?? 0) === 0 ? "" : "

(has Blocks Adjustment)

" if (quickInviteDisplayStatus === "invited") { finalBgColor = "black" inviteHtmlAdd = buildMinterInviteStatusHtml("invited", { variant: "card", cardIdentifier, nomineeName: quickNomineeName, nomineeAddress: quickNomineeAddressValue || "", }) } else if (quickInviteDisplayStatus === "kicked") { finalBgColor = "rgb(29, 7, 4)" inviteHtmlAdd = buildMinterInviteStatusHtml("kicked", { variant: "card", cardIdentifier, nomineeName: quickNomineeName, nomineeAddress: quickNomineeAddressValue || "", }) } else if (quickInviteDisplayStatus === "banned") { finalBgColor = "rgb(24, 3, 3)" inviteHtmlAdd = buildMinterInviteStatusHtml("banned", { variant: "card", cardIdentifier, nomineeName: quickNomineeName, nomineeAddress: quickNomineeAddressValue || "", }) } else if (quickInviteDisplayStatus === "existing" || isExistingMinter) { finalBgColor = "rgb(99, 99, 99)" invitedText = buildMinterInviteStatusHtml("existing", { variant: "card", cardIdentifier, nomineeName: quickNomineeName, nomineeAddress: quickNomineeAddressValue || "", }) inviteHtmlAdd = "" } if (!inviteHtmlAdd) { inviteHtmlAdd = inviteButtonSlotHtml } if (isListMode) { return buildMinterListCardHTML({ cardIdentifier, userVoteStateClass, finalBgColor, avatarHtml, nomineeLinkHtml, nomineeName, nomineeLevel, nomineeAddressValue, nominatorName, nominatorAddressValue, safeHeader, renderedContent, linksHTML, safeFormattedDate, optimisticNotice, identityBoxesHtml, penaltyText, adjustmentText, invitedText, detailsHtml, inviteHtmlAdd, adminYes, adminNo, minterYes, minterNo, totalYes, totalNo, totalYesWeight, totalNoWeight, commentCount, poll, hasApprovedInvite: false, hasPendingInvite: false, isExistingMinter, inviteStatus: quickInviteDisplayStatus, groupApprovalHtml: quickGroupApprovalHtml, shareButtonHtml: buildMinterBoardShareLinkButtonHtml({ cardIdentifier, variant: "list", }), editButtonHtml, notificationButtonHtml, }) } return `

${notificationButtonHtml} ${quickActionButtonsHtml}
${avatarHtml}

${nomineeLinkHtml} - Level ${nomineeLevel}

${identityBoxesHtml} ${inviteStateSlotHtml}
${safeHeader}
${penaltyText}${adjustmentText}${inviteJoinSlotHtml}${groupApprovalSlotHtml} ${optimisticNotice}
NOMINATION STATEMENT
${renderedContent}
NOMINATION LINKS
CURRENT SUPPORT RESULTS
${supportResultsLoadingHtml} ${inviteHtmlAdd}
Admin Yes: ... Admin No: ...
Minter Yes: ... Minter No: ...
Total Yes: ... Weight: ...
Total No: ... Weight: ...
SUPPORT NOMINATION FOR
${safeNominee}

(click COMMENTS button to open/close card comments)

Published ${safeFormattedDate}

` */ }