From 689649ea942fe02d023c520ddacdb8adba8b0238 Mon Sep 17 00:00:00 2001 From: QuickMythril Date: Fri, 20 May 2022 12:01:16 -0400 Subject: [PATCH] Add a button for self share to Reward Share This creates a reward share at 0% using the currently active account's public key. --- .../core/reward-share/reward-share.src.js | 200 ++++++++++++++++++ 1 file changed, 200 insertions(+) diff --git a/qortal-ui-plugins/plugins/core/reward-share/reward-share.src.js b/qortal-ui-plugins/plugins/core/reward-share/reward-share.src.js index 6f97db3b..ce0d7e59 100644 --- a/qortal-ui-plugins/plugins/core/reward-share/reward-share.src.js +++ b/qortal-ui-plugins/plugins/core/reward-share/reward-share.src.js @@ -101,6 +101,7 @@ class RewardShare extends LitElement {

${translate("rewardsharepage.rchange1")}

this.shadowRoot.querySelector('#createRewardShareDialog').show()}>add${translate("rewardsharepage.rchange2")} + this.shadowRoot.querySelector('#createSelfShareDialog').show()}>add${translate("rewardsharepage.rchange16")}
@@ -163,6 +164,44 @@ class RewardShare extends LitElement { ${translate("general.close")} + + +
${translate("rewardsharepage.rchange9")}
+
+
${translate("rewardsharepage.rchange10")}:
${this.selectedAddress.base58PublicKey}
+

+ ${translate("rewardsharepage.rchange11")}: 0 +

+
+ + + ${translate("rewardsharepage.rchange13")}   + + + + ${this.message} + +
+ + + ${translate("rewardsharepage.rchange14")} + + + ${translate("general.close")} + +
${this.isEmptyArray(this.rewardShares) ? html` ${translate("rewardsharepage.rchange15")} `: ''} @@ -469,6 +508,167 @@ class RewardShare extends LitElement { this.createRewardShareLoading = false } + async createSelfShare(e) { + this.error = false + this.message = '' + const recipientPublicKey = this.selectedAddress.base58PublicKey + const percentageShare = 0 + + // Check for valid... + this.createRewardShareLoading = true + + let recipientAddress = window.parent.base58PublicKeyToAddress(recipientPublicKey) + + // Get Last Ref + const getLastRef = async () => { + let myRef = await parentEpml.request('apiCall', { + type: 'api', + url: `/addresses/lastreference/${this.selectedAddress.address}` + }) + return myRef + }; + + // Get Account Details + const getAccountDetails = async () => { + let myAccountDetails = await parentEpml.request('apiCall', { + type: 'api', + url: `/addresses/${this.selectedAddress.address}` + }) + return myAccountDetails + }; + + // Get Reward Relationship if it already exists + const getRewardShareRelationship = async (minterAddr) => { + let isRewardShareExisting = false + let myRewardShareArray = await parentEpml.request('apiCall', { + type: 'api', + url: `/addresses/rewardshares?minters=${minterAddr}&recipients=${recipientAddress}` + }) + isRewardShareExisting = myRewardShareArray.length !== 0 ? true : false + return isRewardShareExisting + } + + // Validate Reward Share by Level + const validateReceiver = async () => { + let accountDetails = await getAccountDetails(); + let lastRef = await getLastRef(); + let isExisting = await getRewardShareRelationship(this.selectedAddress.address) + + // Check for creating self share at different levels (also adding check for flags...) + if (accountDetails.flags === 1) { + this.error = false + this.message = '' + let myTransaction = await makeTransactionRequest(lastRef) + if (isExisting === true) { + this.error = true + this.message = `Cannot Create Multiple Reward Shares!` + } else { + // Send the transaction for confirmation by the user + this.error = false + this.message = '' + getTxnRequestResponse(myTransaction) + } + } else if (accountDetails.address === recipientAddress) { + if (accountDetails.level >= 1 && accountDetails.level <= 4) { + this.error = false + this.message = '' + let myTransaction = await makeTransactionRequest(lastRef) + if (isExisting === true) { + let err1string = get("rewardsharepage.rchange18") + this.error = true + this.message = `${err1string}` + } else { + // Send the transaction for confirmation by the user + this.error = false + this.message = '' + getTxnRequestResponse(myTransaction) + } + } else if (accountDetails.level >= 5) { + + this.error = false + this.message = '' + let myTransaction = await makeTransactionRequest(lastRef) + if (isExisting === true) { + let err2string = get("rewardsharepage.rchange19") + this.error = true + this.message = `${err2string}` + } else { + // Send the transaction for confirmation by the user + this.error = false + this.message = '' + getTxnRequestResponse(myTransaction) + } + } else { + let err3string = get("rewardsharepage.rchange20") + this.error = true + this.message = `${err3string} ${accountDetails.level}` + } + } else { + //Check for creating reward shares + if (accountDetails.level >= 5) { + this.error = false + this.message = '' + let myTransaction = await makeTransactionRequest(lastRef) + if (isExisting === true) { + let err4string = get("rewardsharepage.rchange18") + this.error = true + this.message = `${err4string}` + } else { + // Send the transaction for confirmation by the user + this.error = false + this.message = '' + getTxnRequestResponse(myTransaction) + } + } else { + this.error = true + let err5string = get("rewardsharepage.rchange20") + this.message = `${err5string} ${accountDetails.level}` + } + } + } + + // Make Transaction Request + const makeTransactionRequest = async (lastRef) => { + let mylastRef = lastRef + let rewarddialog1 = get("transactions.rewarddialog1") + let rewarddialog2 = get("transactions.rewarddialog2") + let rewarddialog3 = get("transactions.rewarddialog3") + let rewarddialog4 = get("transactions.rewarddialog4") + let myTxnrequest = await parentEpml.request('transaction', { + type: 38, + nonce: this.selectedAddress.nonce, + params: { + recipientPublicKey, + percentageShare, + lastReference: mylastRef, + rewarddialog1: rewarddialog1, + rewarddialog2: rewarddialog2, + rewarddialog3: rewarddialog3, + rewarddialog4: rewarddialog4, + } + }) + return myTxnrequest + } + + const getTxnRequestResponse = (txnResponse) => { + if (txnResponse.success === false && txnResponse.message) { + this.error = true + this.message = txnResponse.message + throw new Error(txnResponse) + } else if (txnResponse.success === true && !txnResponse.data.error) { + let err6string = get("rewardsharepage.rchange21") + this.message = err6string + this.error = false + } else { + this.error = true + this.message = txnResponse.data.message + throw new Error(txnResponse) + } + } + validateReceiver() + this.createRewardShareLoading = false + } + async removeRewardShare(rewardShareObject) { const myPercentageShare = -1