From ccc78226467db60b9f9e408301b6013ae1394794 Mon Sep 17 00:00:00 2001 From: Phillip Date: Tue, 15 Aug 2023 11:20:16 -0500 Subject: [PATCH] add fees to publish --- .../plugins/core/qdn/publish/publish.src.js | 34 +++++++++++++++---- plugins/plugins/utils/publish-image.js | 25 ++++++++++++-- 2 files changed, 50 insertions(+), 9 deletions(-) diff --git a/plugins/plugins/core/qdn/publish/publish.src.js b/plugins/plugins/core/qdn/publish/publish.src.js index 08372934..0d0ce8f0 100644 --- a/plugins/plugins/core/qdn/publish/publish.src.js +++ b/plugins/plugins/core/qdn/publish/publish.src.js @@ -488,6 +488,16 @@ class PublishData extends LitElement { this.successMessage = '' console.error(errorMessage) } + const getArbitraryFee = async () => { + const timestamp = Date.now() + let fee = await parentEpml.request('apiCall', { + url: `/unitfee?txType=ARBITRARY×tamp=${timestamp}` + }) + return { + timestamp, + fee : (Number(fee) / 1e8).toFixed(8) + } + } const validate = async () => { let validNameRes = await validateName(registeredName) @@ -501,8 +511,17 @@ class PublishData extends LitElement { this.generalMessage = `${err6string}` let transactionBytes let previewUrlPath - - let uploadDataRes = await uploadData(registeredName, path, file, preview, fee) + let feeAmount = null + + if(fee){ + const res = await getArbitraryFee() + if(res.fee){ + feeAmount= res.fee + } else { + throw new Error('unable to get fee') + } + } + let uploadDataRes = await uploadData(registeredName, path, file, preview, fee, feeAmount) if (uploadDataRes.error) { let err7string = get("publishpage.pchange20") @@ -531,12 +550,13 @@ class PublishData extends LitElement { if (fee) { let err9string = get("publishpage.pchange26") this.generalMessage = `${err9string}` + } else { let err9string = get("publishpage.pchange22") this.generalMessage = `${err9string}` } - let signAndProcessRes = await signAndProcess(transactionBytes, fee) + let signAndProcessRes = await signAndProcess(transactionBytes, fee, feeAmount) if (signAndProcessRes.error) { let err10string = get("publishpage.pchange20") @@ -554,7 +574,9 @@ class PublishData extends LitElement { this.successMessage = `${err11string}` } - const uploadData = async (registeredName, path, file, preview, fee) => { + + + const uploadData = async (registeredName, path, file, preview, fee, feeAmount) => { let postBody = path let urlSuffix = "" if (file != null) { @@ -592,9 +614,9 @@ class PublishData extends LitElement { uploadDataUrl = `/arbitrary/${service}/${registeredName}/${this.identifier}${urlSuffix}?${metadataQueryString}&apiKey=${this.getApiKey()}&preview=${new Boolean(preview).toString()}` } } else if (fee) { - uploadDataUrl = `/arbitrary/${this.service}/${registeredName}${urlSuffix}?${metadataQueryString}&fee=100000&apiKey=${this.getApiKey()}` + uploadDataUrl = `/arbitrary/${this.service}/${registeredName}${urlSuffix}?${metadataQueryString}&fee=${feeAmount}&apiKey=${this.getApiKey()}` if (identifier != null && identifier.trim().length > 0) { - uploadDataUrl = `/arbitrary/${service}/${registeredName}/${this.identifier}${urlSuffix}?${metadataQueryString}&fee=100000&apiKey=${this.getApiKey()}` + uploadDataUrl = `/arbitrary/${service}/${registeredName}/${this.identifier}${urlSuffix}?${metadataQueryString}&fee=${feeAmount}&apiKey=${this.getApiKey()}` } } else { uploadDataUrl = `/arbitrary/${this.service}/${registeredName}${urlSuffix}?${metadataQueryString}&apiKey=${this.getApiKey()}` diff --git a/plugins/plugins/utils/publish-image.js b/plugins/plugins/utils/publish-image.js index b3511283..bde9a78f 100644 --- a/plugins/plugins/utils/publish-image.js +++ b/plugins/plugins/utils/publish-image.js @@ -48,6 +48,16 @@ export const publishData = async ({ }) return convertedBytes } + const getArbitraryFee = async () => { + const timestamp = Date.now() + let fee = await parentEpml.request('apiCall', { + url: `/unitfee?txType=ARBITRARY×tamp=${timestamp}` + }) + return { + timestamp, + fee : (Number(fee) / 1e8).toFixed(8) + } + } const signAndProcess = async (transactionBytesBase58) => { let convertedBytesBase58 = await convertBytesForSigning( @@ -125,7 +135,16 @@ export const publishData = async ({ if (validNameRes.error) { throw new Error('Name not found'); } - let transactionBytes = await uploadData(registeredName, path, file) + let fee = null + if(withFee){ + const res = await getArbitraryFee() + if(res.fee){ + fee= res.fee + } else { + throw new Error('unable to get fee') + } + } + let transactionBytes = await uploadData(registeredName, path, file, fee) if (transactionBytes.error) { throw new Error(transactionBytes.message || 'Error when uploading'); } else if ( @@ -149,7 +168,7 @@ export const publishData = async ({ return signAndProcessRes } - const uploadData = async (registeredName, path, file) => { + const uploadData = async (registeredName, path, file, fee) => { if (identifier != null && identifier.trim().length > 0) { let postBody = path let urlSuffix = "" @@ -181,7 +200,7 @@ export const publishData = async ({ } if(withFee){ - uploadDataUrl = uploadDataUrl + '&fee=100000' + uploadDataUrl = uploadDataUrl + `&fee=${fee}` } if(filename != null && filename != "undefined"){