mirror of
https://github.com/Qortal/qortal-ui.git
synced 2025-02-12 02:05:51 +00:00
added file param to publish
This commit is contained in:
parent
9faa804277
commit
0c02934825
@ -2,6 +2,24 @@ import nacl from '../../../../qortal-ui-crypto/api/deps/nacl-fast.js'
|
|||||||
import ed2curve from '../../../../qortal-ui-crypto/api/deps/ed2curve.js'
|
import ed2curve from '../../../../qortal-ui-crypto/api/deps/ed2curve.js'
|
||||||
|
|
||||||
|
|
||||||
|
export const fileToBase64 = (file) =>
|
||||||
|
new Promise((resolve, reject) => {
|
||||||
|
const reader = new FileReader();
|
||||||
|
reader.readAsDataURL(file);
|
||||||
|
reader.onload = () => {
|
||||||
|
const dataUrl = reader.result;
|
||||||
|
if (typeof dataUrl === "string") {
|
||||||
|
const base64String = dataUrl.split(',')[1];
|
||||||
|
resolve(base64String);
|
||||||
|
} else {
|
||||||
|
reject(new Error('Invalid data URL'));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
reader.onerror = (error) => {
|
||||||
|
reject(error);
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
export function uint8ArrayToBase64(uint8Array) {
|
export function uint8ArrayToBase64(uint8Array) {
|
||||||
|
@ -24,7 +24,7 @@ import { QORT_DECIMALS } from 'qortal-ui-crypto/api/constants';
|
|||||||
import nacl from '../../../../../qortal-ui-crypto/api/deps/nacl-fast.js'
|
import nacl from '../../../../../qortal-ui-crypto/api/deps/nacl-fast.js'
|
||||||
import ed2curve from '../../../../../qortal-ui-crypto/api/deps/ed2curve.js'
|
import ed2curve from '../../../../../qortal-ui-crypto/api/deps/ed2curve.js'
|
||||||
import { mimeToExtensionMap } from '../../components/qdn-action-constants';
|
import { mimeToExtensionMap } from '../../components/qdn-action-constants';
|
||||||
import { base64ToUint8Array, encryptData, uint8ArrayToBase64 } from '../../components/qdn-action-encryption';
|
import { base64ToUint8Array, encryptData, fileToBase64, uint8ArrayToBase64 } from '../../components/qdn-action-encryption';
|
||||||
const parentEpml = new Epml({ type: 'WINDOW', source: window.parent });
|
const parentEpml = new Epml({ type: 'WINDOW', source: window.parent });
|
||||||
|
|
||||||
class WebBrowser extends LitElement {
|
class WebBrowser extends LitElement {
|
||||||
@ -841,7 +841,7 @@ class WebBrowser extends LitElement {
|
|||||||
|
|
||||||
case actions.PUBLISH_QDN_RESOURCE: {
|
case actions.PUBLISH_QDN_RESOURCE: {
|
||||||
// optional fields: encrypt:boolean recipientPublicKey:string
|
// optional fields: encrypt:boolean recipientPublicKey:string
|
||||||
const requiredFields = ['service', 'name', 'data64'];
|
const requiredFields = ['service', 'name'];
|
||||||
const missingFields = [];
|
const missingFields = [];
|
||||||
|
|
||||||
requiredFields.forEach((field) => {
|
requiredFields.forEach((field) => {
|
||||||
@ -858,6 +858,12 @@ class WebBrowser extends LitElement {
|
|||||||
response = JSON.stringify(data);
|
response = JSON.stringify(data);
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
if (!data.file && !data.data64) {
|
||||||
|
let data = {};
|
||||||
|
data['error'] = "No data or file was submitted";
|
||||||
|
response = JSON.stringify(data);
|
||||||
|
break
|
||||||
|
}
|
||||||
// Use "default" if user hasn't specified an identifer
|
// Use "default" if user hasn't specified an identifer
|
||||||
const service = data.service;
|
const service = data.service;
|
||||||
const name = data.name;
|
const name = data.name;
|
||||||
@ -907,6 +913,8 @@ class WebBrowser extends LitElement {
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
const res2 = await showModalAndWait(
|
const res2 = await showModalAndWait(
|
||||||
actions.PUBLISH_QDN_RESOURCE,
|
actions.PUBLISH_QDN_RESOURCE,
|
||||||
{
|
{
|
||||||
@ -917,6 +925,9 @@ class WebBrowser extends LitElement {
|
|||||||
}
|
}
|
||||||
);
|
);
|
||||||
if (res2.action === 'accept') {
|
if (res2.action === 'accept') {
|
||||||
|
if (data.file && !data.encrypt) {
|
||||||
|
data64 = await fileToBase64(data.file)
|
||||||
|
}
|
||||||
const worker = new WebWorker();
|
const worker = new WebWorker();
|
||||||
try {
|
try {
|
||||||
this.loader.show();
|
this.loader.show();
|
||||||
@ -1016,7 +1027,7 @@ class WebBrowser extends LitElement {
|
|||||||
|
|
||||||
}
|
}
|
||||||
const resourcesMap = resources.map(async (resource) => {
|
const resourcesMap = resources.map(async (resource) => {
|
||||||
const requiredFields = ['service', 'name', 'data64'];
|
const requiredFields = ['service', 'name'];
|
||||||
const missingFields = [];
|
const missingFields = [];
|
||||||
|
|
||||||
requiredFields.forEach((field) => {
|
requiredFields.forEach((field) => {
|
||||||
@ -1031,6 +1042,11 @@ class WebBrowser extends LitElement {
|
|||||||
throw new Error(errorMsg)
|
throw new Error(errorMsg)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!resource.file && !resource.data64) {
|
||||||
|
|
||||||
|
throw new Error('No data or file was submitted')
|
||||||
|
}
|
||||||
|
|
||||||
const service = resource.service;
|
const service = resource.service;
|
||||||
const name = resource.name;
|
const name = resource.name;
|
||||||
let identifier = resource.identifier;
|
let identifier = resource.identifier;
|
||||||
@ -1067,7 +1083,9 @@ class WebBrowser extends LitElement {
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
if (resource.file && !data.encrypt) {
|
||||||
|
data64 = await fileToBase64(resource.file)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
const worker = new WebWorker();
|
const worker = new WebWorker();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user