reworked file api

This commit is contained in:
Bogdan Pilyugin 2024-03-28 11:42:20 +02:00
parent 9dbfd1ac61
commit 62f8f4edf0
2 changed files with 25 additions and 23 deletions

View File

@ -90,14 +90,14 @@ function DeleteFile() {
cancel: true,
persistent: true
}).onOk(() => {
const dialog = Dialog.create({ message: 'Waiting for delete finished...', progress: true, persistent: true, ok: false, style: 'border: none; box-shadow: none;' })
const dialog = Dialog.create({ message: `Deleting file "${selected.value[0].name}"...`, progress: true, persistent: true, ok: false, style: 'border: none; box-shadow: none;' })
PostData({
raw_data: {
opertype: 2,
operphase: 3,
part: 0,
parts: 1,
mem_object: selected.value[0].name,
offset: 0,
size: 0
}
}, 1, 0, () => { PostData(data, 2, 0, () => { dialog.hide(); }) })

View File

@ -8,15 +8,11 @@ let MessIdCounter = 1;
const BLOCK_SIZE = 5120;
function ReceiveChunk(cur, total, name) {
let foper;
if (total == 1) foper = 3;
else if (cur == 0) foper = 1;
else if (cur == (total - 1)) foper = 2;
else foper = 0;
let data = {
raw_data: {
opertype: 1,
operphase: foper,
part: cur,
parts: total,
mem_object: name,
size: BLOCK_SIZE,
dat: ''
@ -44,13 +40,19 @@ async function GetBlockObject(name, size, buf) {
console.log(`Found ${partsnum} blocks in file ${name}`)
let i;
let resp;
const dialog = Dialog.create({ message: 'Downloaded 0%', progress: true, persistent: true, ok: false, style: 'border: none; box-shadow: none;' })
const dialog = Dialog.create({ message: `File "${name}" download 0%`, progress: true, persistent: true, ok: false, style: 'border: none; box-shadow: none;' })
for (i = 0; i < partsnum; i++) {
resp = await ReceiveChunk(i, partsnum, name);
if (typeof resp.raw_data === 'string' || resp.raw_data instanceof String) {
dialog.hide();
Notify.create({ color: "negative", position: "top", message: resp.raw_data, icon: "report_problem", });
return;
}
let decoded = base64ToArrayBuffer(resp.raw_data.dat);
for (let k = 0; k < decoded.byteLength; k++)
buf[i * BLOCK_SIZE + k] = decoded[k];
dialog.update({ message: `Downloaded ${Math.floor(i * 100 / partsnum)}%` })
dialog.update({ message: `File "${name}" download ${Math.floor(i * 100 / partsnum)}%` })
}
dialog.hide();
}
@ -73,17 +75,11 @@ function SendChunk(cur, total, name, buf) {
arr = new Uint8Array(buf, cur * BLOCK_SIZE, BLOCK_SIZE);
let encode = ToBase64(arr);
let length = encode.length;
let foper;
if (total == 1) foper = 3;
else if (cur == 0) foper = 1;
else if (cur == (total - 1)) foper = 2;
else foper = 0;
let data = {
raw_data: {
opertype: 3,
operphase: foper,
part: cur,
parts: total,
mem_object: name,
size: length,
dat: encode
@ -91,7 +87,7 @@ function SendChunk(cur, total, name, buf) {
};
console.log(`Send chunk ${cur} from ${total} length ${arr.byteLength}`)
PostData(data, 1, 0, () => resolve())
PostData(data, 1, 0, () => resolve(data))
})
}
@ -101,10 +97,16 @@ async function PutBlockObject(name, size, buf) {
partsnum++;
console.log(`Found ${partsnum} blocks in file`)
let i;
const dialog = Dialog.create({ message: 'Uploaded 0%', progress: true, persistent: true, ok: false, style: 'border: none; box-shadow: none;' })
let resp;
const dialog = Dialog.create({ message: `File "${name}" upload 0%`, progress: true, persistent: true, ok: false, style: 'border: none; box-shadow: none;' })
for (i = 0; i < partsnum; i++) {
await SendChunk(i, partsnum, name, buf);
dialog.update({ message: `Uploaded ${Math.floor(i * 100 / partsnum)}%` })
resp = await SendChunk(i, partsnum, name, buf);
if (typeof resp.raw_data === 'string' || resp.raw_data instanceof String) {
dialog.hide();
Notify.create({ color: "negative", position: "top", message: resp.raw_data, icon: "report_problem", });
return;
}
dialog.update({ message: `File "${name}" upload ${Math.floor(i * 100 / partsnum)}%` })
}
dialog.hide();
}