Merge branch 'release/0.11.8-1'

This commit is contained in:
Book Pauk
2022-07-15 18:14:06 +07:00
5 changed files with 76 additions and 27 deletions

View File

@@ -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}));

View File

@@ -105,7 +105,7 @@
</div> </div>
<div class="row-part column justify-center items-stretch" style="width: 80px"> <div class="row-part column justify-center items-stretch" style="width: 80px">
<div class="col row justify-center items-center clickable" style="padding: 4px" @click="loadBook(item)"> <div class="col row justify-center items-center clickable" style="padding: 0 2px 0 2px" @click="loadBook(item)">
<div v-show="isLoadedCover(item.coverPageUrl)" style="height: 80px" v-html="getCoverHtml(item.coverPageUrl)" /> <div v-show="isLoadedCover(item.coverPageUrl)" style="height: 80px" v-html="getCoverHtml(item.coverPageUrl)" />
<q-icon v-show="!isLoadedCover(item.coverPageUrl)" name="la la-book" size="40px" style="color: #dddddd" /> <q-icon v-show="!isLoadedCover(item.coverPageUrl)" name="la la-book" size="40px" style="color: #dddddd" />
</div> </div>
@@ -243,6 +243,7 @@ class RecentBooksPage {
archive = false; archive = false;
covers = {}; covers = {};
coversLoadFunc = {};
created() { created() {
this.commit = this.$store.commit; this.commit = this.$store.commit;
@@ -669,8 +670,16 @@ class RecentBooksPage {
return false; return false;
let loadedCover = this.covers[coverPageUrl]; let loadedCover = this.covers[coverPageUrl];
if (loadedCover == 'error')
return false;
if (!loadedCover) { if (!loadedCover) {
(async() => { (async() => {
if (this.coversLoadFunc[coverPageUrl])
return;
this.coversLoadFunc[coverPageUrl] = (async() => {
//сначала заглянем в storage //сначала заглянем в storage
let data = await coversStorage.getData(coverPageUrl); let data = await coversStorage.getData(coverPageUrl);
if (data) { if (data) {
@@ -682,8 +691,16 @@ class RecentBooksPage {
this.covers[coverPageUrl] = this.makeCoverHtml(data); this.covers[coverPageUrl] = this.makeCoverHtml(data);
} catch (e) { } catch (e) {
console.error(e); console.error(e);
this.covers[coverPageUrl] = 'error';
} }
} }
});
try {
await this.coversLoadFunc[coverPageUrl]();
} finally {
this.coversLoadFunc[coverPageUrl] = null;
}
})(); })();
} }

View File

@@ -5,6 +5,8 @@
</template> </template>
<div class="col row"> <div class="col row">
<a ref="download" style="display: none;" target="_blank"></a>
<div class="full-height"> <div class="full-height">
<q-tabs <q-tabs
ref="tabs" ref="tabs"
@@ -674,6 +676,27 @@ class SettingsPage {
} }
} }
async downloadWallpaper() {
if (this.wallpaper.indexOf('user-paper') != 0)
return;
try {
const d = this.$refs.download;
const dataUrl = await wallpaperStorage.getData(this.wallpaper);
if (!dataUrl)
throw new Error('Файл обоев не найден');
d.href = dataUrl;
d.download = `wallpaper-#${this.wallpaper.replace('user-paper', '').substring(0, 4)}`;
d.click();
} catch (e) {
this.$root.stdDialog.alert(e.message, 'Ошибка', {color: 'negative'});
}
}
keyHook(event) { keyHook(event) {
if (!this.$root.stdDialog.active && event.type == 'keydown' && event.key == 'Escape') { if (!this.$root.stdDialog.active && event.type == 'keydown' && event.key == 'Escape') {
this.close(); this.close();

View File

@@ -102,6 +102,11 @@
Удалить выбранные обои Удалить выбранные обои
</q-tooltip> </q-tooltip>
</q-btn> </q-btn>
<q-btn v-show="wallpaper.indexOf('user-paper') === 0" class="q-ml-sm" round dense color="blue" icon="la la-file-download" @click.stop="downloadWallpaper">
<q-tooltip :delay="1500" anchor="bottom middle" content-style="font-size: 80%">
Скачать выбранные обои
</q-tooltip>
</q-btn>
</div> </div>
</div> </div>

View File

@@ -359,18 +359,20 @@ class BookManager {
console.error(e); console.error(e);
} }
coverPageUrl = readerApi.makeUrlFromBuf(dataUrl);
//далее асинхронно
(async() => {
//отправим dataUrl на сервер в /upload //отправим dataUrl на сервер в /upload
try { try {
await readerApi.uploadFileBuf(dataUrl, (url) => { await readerApi.uploadFileBuf(dataUrl, coverPageUrl);
coverPageUrl = url;
});
} catch (e) { } catch (e) {
console.error(e); console.error(e);
} }
//сохраним в storage //сохраним в storage
if (coverPageUrl)
await coversStorage.setData(coverPageUrl, dataUrl); await coversStorage.setData(coverPageUrl, dataUrl);
})();
} }
const result = Object.assign({}, meta, parsedMeta, { const result = Object.assign({}, meta, parsedMeta, {