Add a button for self share to Reward Share

This creates a reward share at 0% using the currently active account's public key.
This commit is contained in:
QuickMythril 2022-05-20 12:01:16 -04:00 committed by GitHub
parent 7679526749
commit 689649ea94
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -101,6 +101,7 @@ class RewardShare extends LitElement {
<div style="min-height:48px; display: flex; padding-bottom: 6px;">
<h3 style="margin: 0; flex: 1; padding-top: 8px; display: inline;">${translate("rewardsharepage.rchange1")}</h3>
<mwc-button style="float:right;" @click=${() => this.shadowRoot.querySelector('#createRewardShareDialog').show()}><mwc-icon>add</mwc-icon>${translate("rewardsharepage.rchange2")}</mwc-button>
<mwc-button style="float:right;" @click=${() => this.shadowRoot.querySelector('#createSelfShareDialog').show()}><mwc-icon>add</mwc-icon>${translate("rewardsharepage.rchange16")}</mwc-button>
</div>
<div class="divCard">
@ -163,6 +164,44 @@ class RewardShare extends LitElement {
${translate("general.close")}
</mwc-button>
</mwc-dialog>
<mwc-dialog id="createSelfShareDialog" scrimClickAction="${this.createRewardShareLoading ? '' : 'close'}">
<div>${translate("rewardsharepage.rchange9")}</div>
<br>
<div>${translate("rewardsharepage.rchange10")}:<br>${this.selectedAddress.base58PublicKey}</div>
<p style="margin-bottom:0;">
${translate("rewardsharepage.rchange11")}: 0
</p>
<div style="text-align:right; height:36px;">
<span ?hidden="${!this.createRewardShareLoading}">
<!-- loading message -->
${translate("rewardsharepage.rchange13")} &nbsp;
<paper-spinner-lite
style="margin-top:12px;"
?active="${this.createRewardShareLoading}"
alt="${translate("rewardsharepage.rchange13")}"></paper-spinner-lite>
</span>
<span ?hidden=${this.message === ''} style="${this.error ? 'color:red;' : ''}">
${this.message}
</span>
</div>
<mwc-button
?disabled="${this.createRewardShareLoading}"
slot="primaryAction"
@click=${this.createSelfShare}
>
${translate("rewardsharepage.rchange14")}
</mwc-button>
<mwc-button
?disabled="${this.createRewardShareLoading}"
slot="secondaryAction"
dialogAction="cancel"
class="red"
>
${translate("general.close")}
</mwc-button>
</mwc-dialog>
${this.isEmptyArray(this.rewardShares) ? html`
<span style="color: var(--black);">${translate("rewardsharepage.rchange15")}</span>
`: ''}
@ -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