Browse Source

Merge pull request #161 from Philreact/feature/encrypt-decrypt-data-qapp

added file param to publish
qortal-ui-dev
AlphaX-Projects 1 year ago committed by GitHub
parent
commit
05040da8b4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 18
      qortal-ui-plugins/plugins/core/components/qdn-action-encryption.js
  2. 26
      qortal-ui-plugins/plugins/core/qdn/browser/browser.src.js

18
qortal-ui-plugins/plugins/core/components/qdn-action-encryption.js

@ -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'
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) {

26
qortal-ui-plugins/plugins/core/qdn/browser/browser.src.js

@ -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 ed2curve from '../../../../../qortal-ui-crypto/api/deps/ed2curve.js'
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 });
class WebBrowser extends LitElement {
@ -841,7 +841,7 @@ class WebBrowser extends LitElement {
case actions.PUBLISH_QDN_RESOURCE: {
// optional fields: encrypt:boolean recipientPublicKey:string
const requiredFields = ['service', 'name', 'data64'];
const requiredFields = ['service', 'name'];
const missingFields = [];
requiredFields.forEach((field) => {
@ -858,6 +858,12 @@ class WebBrowser extends LitElement {
response = JSON.stringify(data);
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
const service = data.service;
const name = data.name;
@ -907,6 +913,8 @@ class WebBrowser extends LitElement {
}
}
const res2 = await showModalAndWait(
actions.PUBLISH_QDN_RESOURCE,
{
@ -917,6 +925,9 @@ class WebBrowser extends LitElement {
}
);
if (res2.action === 'accept') {
if (data.file && !data.encrypt) {
data64 = await fileToBase64(data.file)
}
const worker = new WebWorker();
try {
this.loader.show();
@ -1016,7 +1027,7 @@ class WebBrowser extends LitElement {
}
const resourcesMap = resources.map(async (resource) => {
const requiredFields = ['service', 'name', 'data64'];
const requiredFields = ['service', 'name'];
const missingFields = [];
requiredFields.forEach((field) => {
@ -1031,6 +1042,11 @@ class WebBrowser extends LitElement {
throw new Error(errorMsg)
}
if (!resource.file && !resource.data64) {
throw new Error('No data or file was submitted')
}
const service = resource.service;
const name = resource.name;
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();

Loading…
Cancel
Save