From 3d7ad0dd9a7ca37a1b6cc0f454bc9bb1e659e79b Mon Sep 17 00:00:00 2001 From: Book Pauk Date: Fri, 15 Jul 2022 17:05:17 +0700 Subject: [PATCH] =?UTF-8?q?=D0=9D=D0=B5=D0=B1=D1=8E=D0=BE=D0=BB=D1=8C?= =?UTF-8?q?=D1=88=D0=B8=D0=B5=20=D0=BE=D0=BF=D1=82=D0=B8=D0=BC=D0=B8=D0=B7?= =?UTF-8?q?=D0=B0=D1=86=D0=B8=D0=B8=20=D0=B7=D0=B0=D0=B3=D1=80=D1=83=D0=B7?= =?UTF-8?q?=D0=BA=D0=B8=20=D0=BE=D0=B1=D0=BB=D0=BE=D0=B6=D0=B5=D0=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client/api/reader.js | 12 +++++---- client/components/Reader/share/bookManager.js | 26 ++++++++++++------- 2 files changed, 23 insertions(+), 15 deletions(-) diff --git a/client/api/reader.js b/client/api/reader.js index f93efc39..4ae05dae 100644 --- a/client/api/reader.js +++ b/client/api/reader.js @@ -226,16 +226,18 @@ class Reader { return response; } - async uploadFileBuf(buf, urlCallback) { + makeUrlFromBuf(buf) { const key = utils.toHex(cryptoUtils.sha256(buf)); - const url = `disk://${key}`; + return `disk://${key}`; + } - if (urlCallback) - urlCallback(url); + async uploadFileBuf(buf, url) { + if (!url) + url = this.makeUrlFromBuf(buf); let response; 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})); } catch (e) { response = await wsc.message(await wsc.send({action: 'upload-file-buf', buf})); diff --git a/client/components/Reader/share/bookManager.js b/client/components/Reader/share/bookManager.js index 193f5c4d..69709162 100644 --- a/client/components/Reader/share/bookManager.js +++ b/client/components/Reader/share/bookManager.js @@ -351,6 +351,8 @@ class BookManager { //cover page let coverPageUrl = ''; if (parsed.coverPageId && parsed.binary[parsed.coverPageId]) { + if (callback) callback(90); + const bin = parsed.binary[parsed.coverPageId]; let dataUrl = `data:${bin.type};base64,${bin.data}`; try { @@ -359,18 +361,22 @@ class BookManager { console.error(e); } - //отправим dataUrl на сервер в /upload - try { - await readerApi.uploadFileBuf(dataUrl, (url) => { - coverPageUrl = url; - }); - } catch (e) { - console.error(e); - } + coverPageUrl = readerApi.makeUrlFromBuf(dataUrl); - //сохраним в storage - if (coverPageUrl) + if (callback) callback(100); + + //далее асинхронно + (async() => { + //отправим dataUrl на сервер в /upload + try { + await readerApi.uploadFileBuf(dataUrl, coverPageUrl); + } catch (e) { + console.error(e); + } + + //сохраним в storage await coversStorage.setData(coverPageUrl, dataUrl); + })(); } const result = Object.assign({}, meta, parsedMeta, {