mirror of
https://github.com/Qortal/qortal-ui.git
synced 2025-02-11 17:55:51 +00:00
Merge pull request #161 from Philreact/feature/encrypt-decrypt-data-qapp
added file param to publish
This commit is contained in:
commit
05040da8b4
@ -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) {
|
||||
|
@ -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…
x
Reference in New Issue
Block a user