Небюольшие оптимизации загрузки обложек
This commit is contained in:
@@ -226,16 +226,18 @@ class Reader {
|
|||||||
return response;
|
return response;
|
||||||
}
|
}
|
||||||
|
|
||||||
async uploadFileBuf(buf, urlCallback) {
|
makeUrlFromBuf(buf) {
|
||||||
const key = utils.toHex(cryptoUtils.sha256(buf));
|
const key = utils.toHex(cryptoUtils.sha256(buf));
|
||||||
const url = `disk://${key}`;
|
return `disk://${key}`;
|
||||||
|
}
|
||||||
|
|
||||||
if (urlCallback)
|
async uploadFileBuf(buf, url) {
|
||||||
urlCallback(url);
|
if (!url)
|
||||||
|
url = this.makeUrlFromBuf(buf);
|
||||||
|
|
||||||
let response;
|
let response;
|
||||||
try {
|
try {
|
||||||
await axios.head(`/upload/${key}`, {headers: {'Cache-Control': 'no-cache'}});
|
await axios.head(url.replace('disk://', '/upload/'), {headers: {'Cache-Control': 'no-cache'}});
|
||||||
response = await wsc.message(await wsc.send({action: 'upload-file-touch', url}));
|
response = await wsc.message(await wsc.send({action: 'upload-file-touch', url}));
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
response = await wsc.message(await wsc.send({action: 'upload-file-buf', buf}));
|
response = await wsc.message(await wsc.send({action: 'upload-file-buf', buf}));
|
||||||
|
|||||||
@@ -351,6 +351,8 @@ class BookManager {
|
|||||||
//cover page
|
//cover page
|
||||||
let coverPageUrl = '';
|
let coverPageUrl = '';
|
||||||
if (parsed.coverPageId && parsed.binary[parsed.coverPageId]) {
|
if (parsed.coverPageId && parsed.binary[parsed.coverPageId]) {
|
||||||
|
if (callback) callback(90);
|
||||||
|
|
||||||
const bin = parsed.binary[parsed.coverPageId];
|
const bin = parsed.binary[parsed.coverPageId];
|
||||||
let dataUrl = `data:${bin.type};base64,${bin.data}`;
|
let dataUrl = `data:${bin.type};base64,${bin.data}`;
|
||||||
try {
|
try {
|
||||||
@@ -359,18 +361,22 @@ class BookManager {
|
|||||||
console.error(e);
|
console.error(e);
|
||||||
}
|
}
|
||||||
|
|
||||||
//отправим dataUrl на сервер в /upload
|
coverPageUrl = readerApi.makeUrlFromBuf(dataUrl);
|
||||||
try {
|
|
||||||
await readerApi.uploadFileBuf(dataUrl, (url) => {
|
|
||||||
coverPageUrl = url;
|
|
||||||
});
|
|
||||||
} catch (e) {
|
|
||||||
console.error(e);
|
|
||||||
}
|
|
||||||
|
|
||||||
//сохраним в storage
|
if (callback) callback(100);
|
||||||
if (coverPageUrl)
|
|
||||||
|
//далее асинхронно
|
||||||
|
(async() => {
|
||||||
|
//отправим dataUrl на сервер в /upload
|
||||||
|
try {
|
||||||
|
await readerApi.uploadFileBuf(dataUrl, coverPageUrl);
|
||||||
|
} catch (e) {
|
||||||
|
console.error(e);
|
||||||
|
}
|
||||||
|
|
||||||
|
//сохраним в storage
|
||||||
await coversStorage.setData(coverPageUrl, dataUrl);
|
await coversStorage.setData(coverPageUrl, dataUrl);
|
||||||
|
})();
|
||||||
}
|
}
|
||||||
|
|
||||||
const result = Object.assign({}, meta, parsedMeta, {
|
const result = Object.assign({}, meta, parsedMeta, {
|
||||||
|
|||||||
Reference in New Issue
Block a user