forked from Qortal/qortal-ui
add PUBLISH_MULTIPLE_QDN_RESOURCES
This commit is contained in:
parent
4ba418998a
commit
756f5cc6b6
@ -630,7 +630,9 @@
|
|||||||
"bchange29": "Instant publish (requires 0.001 QORT fee)",
|
"bchange29": "Instant publish (requires 0.001 QORT fee)",
|
||||||
"bchange30": "Service",
|
"bchange30": "Service",
|
||||||
"bchange31": "Name",
|
"bchange31": "Name",
|
||||||
"bchange32": "Identifier"
|
"bchange32": "Identifier",
|
||||||
|
"bchange33": "Instant publish",
|
||||||
|
"bchange34": "Filename"
|
||||||
},
|
},
|
||||||
"datapage": {
|
"datapage": {
|
||||||
"dchange1": "Data Management",
|
"dchange1": "Data Management",
|
||||||
|
@ -23,4 +23,7 @@ export const DEPLOY_AT = 'DEPLOY_AT';
|
|||||||
export const GET_WALLET_BALANCE = 'GET_WALLET_BALANCE';
|
export const GET_WALLET_BALANCE = 'GET_WALLET_BALANCE';
|
||||||
|
|
||||||
// SEND_COIN action
|
// SEND_COIN action
|
||||||
export const SEND_COIN = 'SEND_COIN';
|
export const SEND_COIN = 'SEND_COIN';
|
||||||
|
|
||||||
|
// PUBLISH_MULTIPLE_QDN_RESOURCES
|
||||||
|
export const PUBLISH_MULTIPLE_QDN_RESOURCES = 'PUBLISH_MULTIPLE_QDN_RESOURCES'
|
@ -607,6 +607,145 @@ class WebBrowser extends LitElement {
|
|||||||
} else if (res2.action === 'reject') {
|
} else if (res2.action === 'reject') {
|
||||||
response = '{"error": "User declined request"}';
|
response = '{"error": "User declined request"}';
|
||||||
}
|
}
|
||||||
|
// Params: data.service, data.name, data.identifier, data.data64,
|
||||||
|
// TODO: prompt user for publish. If they confirm, call `POST /arbitrary/{service}/{name}/{identifier}/base64` and sign+process transaction
|
||||||
|
// then set the response string from the core to the `response` variable (defined above)
|
||||||
|
// If they decline, send back JSON that includes an `error` key, such as `{"error": "User declined request"}`
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case actions.PUBLISH_MULTIPLE_QDN_RESOURCES: {
|
||||||
|
const requiredFields = ['resources'];
|
||||||
|
const missingFields = [];
|
||||||
|
|
||||||
|
requiredFields.forEach((field) => {
|
||||||
|
if (!data[field]) {
|
||||||
|
missingFields.push(field);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
if (missingFields.length > 0) {
|
||||||
|
const missingFieldsString = missingFields.join(', ');
|
||||||
|
const errorMsg = `Missing fields: ${missingFieldsString}`
|
||||||
|
let data = {};
|
||||||
|
data['error'] = errorMsg;
|
||||||
|
response = JSON.stringify(data);
|
||||||
|
break
|
||||||
|
}
|
||||||
|
const resources = data.resources
|
||||||
|
if (!Array.isArray(resources)) {
|
||||||
|
let data = {};
|
||||||
|
data['error'] = "Invalid data"
|
||||||
|
response = JSON.stringify(data);
|
||||||
|
break
|
||||||
|
}
|
||||||
|
if (resources.length === 0) {
|
||||||
|
let data = {};
|
||||||
|
data['error'] = "No resources to publish"
|
||||||
|
response = JSON.stringify(data);
|
||||||
|
break
|
||||||
|
}
|
||||||
|
const res2 = await showModalAndWait(
|
||||||
|
actions.PUBLISH_MULTIPLE_QDN_RESOURCES,
|
||||||
|
{
|
||||||
|
resources,
|
||||||
|
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
if (res2.action === 'reject') {
|
||||||
|
response = '{"error": "User declined request"}';
|
||||||
|
break
|
||||||
|
|
||||||
|
}
|
||||||
|
const resourcesMap = resources.map(async (resource) => {
|
||||||
|
const requiredFields = ['service', 'name', 'data64'];
|
||||||
|
const missingFields = [];
|
||||||
|
|
||||||
|
requiredFields.forEach((field) => {
|
||||||
|
if (!resource[field]) {
|
||||||
|
missingFields.push(field);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
if (missingFields.length > 0) {
|
||||||
|
const missingFieldsString = missingFields.join(', ');
|
||||||
|
const errorMsg = `Missing fields: ${missingFieldsString}`
|
||||||
|
throw new Error(errorMsg)
|
||||||
|
}
|
||||||
|
|
||||||
|
const service = resource.service;
|
||||||
|
const name = resource.name;
|
||||||
|
let identifier = resource.identifier;
|
||||||
|
const data64 = resource.data64;
|
||||||
|
const filename = resource.filename;
|
||||||
|
const title = resource.title;
|
||||||
|
const description = resource.description;
|
||||||
|
const category = resource.category;
|
||||||
|
const tag1 = resource.tag1;
|
||||||
|
const tag2 = resource.tag2;
|
||||||
|
const tag3 = resource.tag3;
|
||||||
|
const tag4 = resource.tag4;
|
||||||
|
const tag5 = resource.tag5;
|
||||||
|
if (resource.identifier == null) {
|
||||||
|
identifier = 'default';
|
||||||
|
}
|
||||||
|
|
||||||
|
const worker = new WebWorker();
|
||||||
|
try {
|
||||||
|
|
||||||
|
const resPublish = await publishData({
|
||||||
|
registeredName: encodeURIComponent(name),
|
||||||
|
file: data64,
|
||||||
|
service: service,
|
||||||
|
identifier: encodeURIComponent(identifier),
|
||||||
|
parentEpml,
|
||||||
|
uploadType: 'file',
|
||||||
|
selectedAddress: this.selectedAddress,
|
||||||
|
worker: worker,
|
||||||
|
isBase64: true,
|
||||||
|
filename: filename,
|
||||||
|
title,
|
||||||
|
description,
|
||||||
|
category,
|
||||||
|
tag1,
|
||||||
|
tag2,
|
||||||
|
tag3,
|
||||||
|
tag4,
|
||||||
|
tag5,
|
||||||
|
apiVersion: 2,
|
||||||
|
withFee: res2.userData.isWithFee === true ? true : false
|
||||||
|
});
|
||||||
|
|
||||||
|
worker.terminate();
|
||||||
|
return resPublish
|
||||||
|
} catch (error) {
|
||||||
|
worker.terminate();
|
||||||
|
const errorMsg = error.message || 'Upload failed';
|
||||||
|
throw new Error(errorMsg)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
})
|
||||||
|
|
||||||
|
try {
|
||||||
|
this.loader.show();
|
||||||
|
const results = await Promise.all(resourcesMap);
|
||||||
|
response = JSON.stringify(results);
|
||||||
|
this.loader.hide();
|
||||||
|
break
|
||||||
|
// handle successful results
|
||||||
|
} catch (error) {
|
||||||
|
const obj = {};
|
||||||
|
const errorMsg = error.message || 'Upload failed';
|
||||||
|
obj['error'] = errorMsg;
|
||||||
|
response = JSON.stringify(obj);
|
||||||
|
this.loader.hide();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Params: data.service, data.name, data.identifier, data.data64,
|
// Params: data.service, data.name, data.identifier, data.data64,
|
||||||
// TODO: prompt user for publish. If they confirm, call `POST /arbitrary/{service}/{name}/{identifier}/base64` and sign+process transaction
|
// TODO: prompt user for publish. If they confirm, call `POST /arbitrary/{service}/{name}/{identifier}/base64` and sign+process transaction
|
||||||
// then set the response string from the core to the `response` variable (defined above)
|
// then set the response string from the core to the `response` variable (defined above)
|
||||||
@ -1580,7 +1719,36 @@ async function showModalAndWait(type, data) {
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
` : ''}
|
` : ''}
|
||||||
${type === actions.PUBLISH_QDN_RESOURCE ? `<div class="modal-subcontainer">
|
${type === actions.PUBLISH_MULTIPLE_QDN_RESOURCES ? `
|
||||||
|
|
||||||
|
<div class="modal-subcontainer">
|
||||||
|
<p class="modal-paragraph">${get("browserpage.bchange19")}</p>
|
||||||
|
<table>
|
||||||
|
${data.resources.map((resource) => `
|
||||||
|
<tr>
|
||||||
|
<td><span style="font-weight: bold">${get("browserpage.bchange30")}:</span> ${resource.service}</td>
|
||||||
|
<td><span style="font-weight: bold">${get("browserpage.bchange31")}:</span> ${resource.name}</td>
|
||||||
|
<td><span style="font-weight: bold">${get("browserpage.bchange32")}:</span> ${resource.identifier}</td>
|
||||||
|
${resource.filename ? `<td><span style="font-weight: bold">${get("browserpage.bchange34")}:</span> ${resource.filename}</td>` : ''}
|
||||||
|
</tr>
|
||||||
|
`).join('')}
|
||||||
|
</table>
|
||||||
|
<div class="checkbox-row">
|
||||||
|
<label for="isWithFee" id="isWithFeeLabel">
|
||||||
|
${get('browserpage.bchange33')} ${data.resources.length * 0.001} QORT fee
|
||||||
|
</label>
|
||||||
|
<mwc-checkbox checked style="margin-right: -15px;" id="isWithFee"></mwc-checkbox>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="modal-buttons">
|
||||||
|
<button id="cancel-button">${get("browserpage.bchange27")}</button>
|
||||||
|
<button id="ok-button">${get("browserpage.bchange28")}</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
` : ''}
|
||||||
|
${type === actions.PUBLISH_QDN_RESOURCE ? `<div class="modal-subcontainer">
|
||||||
<p class="modal-paragraph">${get("browserpage.bchange19")}</p>
|
<p class="modal-paragraph">${get("browserpage.bchange19")}</p>
|
||||||
<p style="font-size: 16px;overflow-wrap: anywhere;" class="modal-paragraph"><span style="font-weight: bold">${get("browserpage.bchange30")}:</span> ${data.service}</p>
|
<p style="font-size: 16px;overflow-wrap: anywhere;" class="modal-paragraph"><span style="font-weight: bold">${get("browserpage.bchange30")}:</span> ${data.service}</p>
|
||||||
<p style="font-size: 16px;overflow-wrap: anywhere;" class="modal-paragraph"><span style="font-weight: bold">${get("browserpage.bchange31")}:</span> ${data.name}</p>
|
<p style="font-size: 16px;overflow-wrap: anywhere;" class="modal-paragraph"><span style="font-weight: bold">${get("browserpage.bchange31")}:</span> ${data.name}</p>
|
||||||
@ -1593,6 +1761,7 @@ async function showModalAndWait(type, data) {
|
|||||||
</mwc-checkbox>
|
</mwc-checkbox>
|
||||||
</div>
|
</div>
|
||||||
</div>` : ''}
|
</div>` : ''}
|
||||||
|
|
||||||
${type === actions.GET_WALLET_BALANCE ? `<p class="modal-paragraph">${get("browserpage.bchange20")}</p>` : ''}
|
${type === actions.GET_WALLET_BALANCE ? `<p class="modal-paragraph">${get("browserpage.bchange20")}</p>` : ''}
|
||||||
${type === actions.SEND_CHAT_MESSAGE ? `<p class="modal-paragraph">${get("browserpage.bchange22")}</p>` : ''}
|
${type === actions.SEND_CHAT_MESSAGE ? `<p class="modal-paragraph">${get("browserpage.bchange22")}</p>` : ''}
|
||||||
</div>
|
</div>
|
||||||
@ -1609,7 +1778,7 @@ async function showModalAndWait(type, data) {
|
|||||||
const okButton = modal.querySelector('#ok-button');
|
const okButton = modal.querySelector('#ok-button');
|
||||||
okButton.addEventListener('click', () => {
|
okButton.addEventListener('click', () => {
|
||||||
const userData = {};
|
const userData = {};
|
||||||
if (type === actions.PUBLISH_QDN_RESOURCE) {
|
if (type === actions.PUBLISH_QDN_RESOURCE || type === actions.PUBLISH_MULTIPLE_QDN_RESOURCES) {
|
||||||
const isWithFeeCheckbox = modal.querySelector('#isWithFee');
|
const isWithFeeCheckbox = modal.querySelector('#isWithFee');
|
||||||
userData.isWithFee = isWithFeeCheckbox.checked;
|
userData.isWithFee = isWithFeeCheckbox.checked;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user