diff --git a/client/api/reader.js b/client/api/reader.js index 7bba118f..f93efc39 100644 --- a/client/api/reader.js +++ b/client/api/reader.js @@ -1,5 +1,6 @@ import axios from 'axios'; import * as utils from '../share/utils'; +import * as cryptoUtils from '../share/cryptoUtils'; import wsc from './webSocketConnection'; const api = axios.create({ @@ -225,8 +226,20 @@ class Reader { return response; } - async uploadFileBuf(buf) { - const response = await wsc.message(await wsc.send({action: 'upload-file-buf', buf})); + async uploadFileBuf(buf, urlCallback) { + const key = utils.toHex(cryptoUtils.sha256(buf)); + const url = `disk://${key}`; + + if (urlCallback) + urlCallback(url); + + let response; + try { + await axios.head(`/upload/${key}`, {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})); + } if (response.error) throw new Error(response.error); diff --git a/client/components/Reader/Reader.vue b/client/components/Reader/Reader.vue index af537445..c1c824b4 100644 --- a/client/components/Reader/Reader.vue +++ b/client/components/Reader/Reader.vue @@ -194,6 +194,7 @@ import ReaderDialogs from './ReaderDialogs/ReaderDialogs.vue'; import bookManager from './share/bookManager'; import wallpaperStorage from './share/wallpaperStorage'; +import coversStorage from './share/coversStorage'; import dynamicCss from '../../share/dynamicCss'; import rstore from '../../store/modules/reader'; @@ -366,6 +367,8 @@ class Reader { mounted() { (async() => { await wallpaperStorage.init(); + await coversStorage.init(); + await bookManager.init(this.settings); bookManager.addEventListener(this.bookManagerEvent); diff --git a/client/components/Reader/RecentBooksPage/RecentBooksPage.vue b/client/components/Reader/RecentBooksPage/RecentBooksPage.vue index 98d86fc3..d70ab44c 100644 --- a/client/components/Reader/RecentBooksPage/RecentBooksPage.vue +++ b/client/components/Reader/RecentBooksPage/RecentBooksPage.vue @@ -106,7 +106,8 @@