${
@@ -347,13 +396,13 @@ export async function renderSavedPromos() {
cCode.code
} |
${
- fNew ? '...' : nBal + ' ' + cChainParams.current.TICKER
+ fNew || !cCode.fSynced
+ ? '...'
+ : nBal + ' ' + cChainParams.current.TICKER
} |
${
- fNew ? 'Confirming...' : nBal > 0 ? 'Unclaimed' : 'Claimed'
- } |
+ }" target="_blank" rel="noopener noreferrer">${strStatus}
`;
}
@@ -362,6 +411,30 @@ export async function renderSavedPromos() {
return { codes: arrCodes.length, html: strHTML };
}
+/** Export and download all PIVX Promos data in to a CSV format */
+export async function promosToCSV() {
+ const arrCSV = [
+ // Titles
+ ['Promo Code', 'PIV (Remaining)', 'Funding Address'],
+ // Content
+ ];
+
+ // Push each code in to the CSV
+ for (const cCode of arrPromoCodes) {
+ arrCSV.push([
+ cCode.code,
+ (await cCode.getBalance(true)) / COIN,
+ cCode.address,
+ ]);
+ }
+
+ // Encode it
+ const cCSV = arrayToCSV(arrCSV);
+
+ // Download it
+ downloadBlob(cCSV, 'promos.csv', 'text/csv;charset=utf-8;');
+}
+
/**
* Handle the Promo Workers, Code Rendering, and update or prompt the UI appropriately
* @param {boolean} fRecursive - Whether this call is self-initiated or not
@@ -428,14 +501,15 @@ export async function updatePromoCreationTick(fRecursive = false) {
}
// Render the table row
- strHTML += `
+ strHTML =
+ `