update: bump 'common' version to 0.1.20
This commit is contained in:
+13
-20
@@ -191,15 +191,14 @@ import { default as $, LogRecord, Rpc2 } from '/';
|
||||
let major = 0;
|
||||
let minor = 0;
|
||||
let busy = false;
|
||||
let save = false;
|
||||
let status = null;
|
||||
let locale = null;
|
||||
let unique = null;
|
||||
let writable = null;
|
||||
let filereader = null;
|
||||
let filehandle = null;
|
||||
let subcategories = [];
|
||||
|
||||
window.addEventListener('beforeunload', (e) => {
|
||||
writable?.abort();
|
||||
Rpc2.notify('exit');
|
||||
e.preventDefault();
|
||||
e.returnValue = '';
|
||||
@@ -214,7 +213,7 @@ document.title += ` (${name})`;
|
||||
async function handlePrimaryButtonClick() {
|
||||
switch (status) {
|
||||
case 'IDLE':
|
||||
let PickerOptions = {
|
||||
[filehandle] = await showOpenFilePicker({
|
||||
types: [
|
||||
{
|
||||
description: "Excel Spreadsheet",
|
||||
@@ -223,17 +222,11 @@ async function handlePrimaryButtonClick() {
|
||||
}
|
||||
}
|
||||
]
|
||||
};
|
||||
let [handle] = await showOpenFilePicker(PickerOptions);
|
||||
filereader = () => handle.getFile().then(file => new Promise((resolve, reject) => {
|
||||
let reader = new FileReader();
|
||||
reader.onload = () => resolve([file, reader.result]);
|
||||
reader.onerror = () => reject(reader.error);
|
||||
reader.readAsArrayBuffer(file);
|
||||
}));
|
||||
});
|
||||
let chain = filehandle.getFile().then(f => Promise.all([f, f.arrayBuffer()]));
|
||||
let [file, buffer] = await chain.catch(e => alert('(ERROR) ' + new String(e ?? 'Failed to load file')));
|
||||
|
||||
let [file, buffer] = await filereader().catch(e => alert('(ERROR) ' + new String(e ?? 'Unable to read data')));
|
||||
writable = await handle.createWritable().catch(() => null);
|
||||
save = await handle.requestPermission({ mode: 'readwrite' }) === 'granted';
|
||||
major = await Rpc2.invoke('loads', { params: [file.name, new Uint8Array(buffer).toBase64()] });
|
||||
$.get('#fileLabel').innerText = file.name;
|
||||
$.get('#fromLabel').innerText = parameters.account;
|
||||
@@ -241,7 +234,7 @@ async function handlePrimaryButtonClick() {
|
||||
break;
|
||||
case 'READY':
|
||||
let locale = $('#locale').value;
|
||||
let options = { locale, subcategories, mapping: new Object(), writable: new Boolean(writable), start: 2, limit: null };
|
||||
let options = { locale, subcategories, save, mapping: new Object(), start: 2, limit: null };
|
||||
|
||||
for (let element of $.all("input[type='number'].params")) {
|
||||
parameters[element.id] = element.disabled ? null : element.valueAsNumber;
|
||||
@@ -422,7 +415,6 @@ while (await new Promise(o => setTimeout(o, 1000, true))) {
|
||||
case 'IDLE':
|
||||
$('#send > span.text').innerText = 'Open';
|
||||
$('#send').classList.remove('pulse');
|
||||
await writable?.abort().catch(() => void 0).finally(() => writable = null);
|
||||
break;
|
||||
case 'READY':
|
||||
$('#send > span.text').innerText = 'Send';
|
||||
@@ -431,17 +423,18 @@ while (await new Promise(o => setTimeout(o, 1000, true))) {
|
||||
$('#remainingLabel').innerText = '';
|
||||
break;
|
||||
case 'CLOSING':
|
||||
if (writable) try {
|
||||
if (save) try {
|
||||
$.all('#actions > button').forEach(e => e.disabled = true);
|
||||
let data = await filereader().then(([_, b]) => Rpc2.invoke('merge', { params: [new Uint8Array(b).toBase64()] }));
|
||||
let writable = await filehandle.createWritable({ mode: 'exclusive' });
|
||||
let data = await filehandle.getFile().arrayBuffer().then(b => Rpc2.invoke('merge', { params: [new Uint8Array(b).toBase64()] }));
|
||||
await writable.write(Uint8Array.fromBase64(data));
|
||||
await writable.close();
|
||||
await Rpc2.notify('close');
|
||||
} catch (e) {
|
||||
if (Error.isError(e) && e.name === 'NoModificationAllowedError') continue;
|
||||
alert('(ERROR) ' + new String(e ?? 'File operation failed'));
|
||||
await writable.abort().catch(() => void 0);
|
||||
}
|
||||
writable = null;
|
||||
save = false;
|
||||
continue;
|
||||
case 'RUNNING':
|
||||
$('#send > span.text').innerText = 'Pause';
|
||||
|
||||
Reference in New Issue
Block a user