mirror of
https://github.com/Qortal/qortal-ui.git
synced 2025-04-17 08:35:54 +00:00
Merge pull request #186 from Philreact/bugfix/publishing-multiple-files
bugfix, use the filereader only one file at a time
This commit is contained in:
commit
d839a89c1e
@ -2,12 +2,41 @@ import nacl from '../../../../crypto/api/deps/nacl-fast.js'
|
|||||||
import ed2curve from '../../../../crypto/api/deps/ed2curve.js'
|
import ed2curve from '../../../../crypto/api/deps/ed2curve.js'
|
||||||
|
|
||||||
|
|
||||||
|
class Semaphore {
|
||||||
|
constructor(count) {
|
||||||
|
this.count = count;
|
||||||
|
this.waiting = [];
|
||||||
|
}
|
||||||
|
|
||||||
|
acquire() {
|
||||||
|
return new Promise(resolve => {
|
||||||
|
if (this.count > 0) {
|
||||||
|
this.count--;
|
||||||
|
resolve();
|
||||||
|
} else {
|
||||||
|
this.waiting.push(resolve);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
release() {
|
||||||
|
if (this.waiting.length > 0) {
|
||||||
|
const resolve = this.waiting.shift();
|
||||||
|
resolve();
|
||||||
|
} else {
|
||||||
|
this.count++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let semaphore = new Semaphore(1);
|
||||||
let reader = new FileReader();
|
let reader = new FileReader();
|
||||||
export const fileToBase64 = (file) =>
|
export const fileToBase64 = (file) =>
|
||||||
new Promise((resolve, reject) => {
|
new Promise(async (resolve, reject) => {
|
||||||
if (!reader) {
|
if (!reader) {
|
||||||
reader = new FileReader();
|
reader = new FileReader();
|
||||||
}
|
}
|
||||||
|
await semaphore.acquire();
|
||||||
reader.readAsDataURL(file);
|
reader.readAsDataURL(file);
|
||||||
reader.onload = () => {
|
reader.onload = () => {
|
||||||
const dataUrl = reader.result;
|
const dataUrl = reader.result;
|
||||||
@ -21,11 +50,13 @@ export const fileToBase64 = (file) =>
|
|||||||
reader.onerror = null;
|
reader.onerror = null;
|
||||||
reject(new Error('Invalid data URL'));
|
reject(new Error('Invalid data URL'));
|
||||||
}
|
}
|
||||||
|
semaphore.release();
|
||||||
};
|
};
|
||||||
reader.onerror = (error) => {
|
reader.onerror = (error) => {
|
||||||
reader.onload = null;
|
reader.onload = null;
|
||||||
reader.onerror = null;
|
reader.onerror = null;
|
||||||
reject(error);
|
reject(error);
|
||||||
|
semaphore.release();
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user