From 902521867178520a0a2ae7c917daaf9c9a5a8eab Mon Sep 17 00:00:00 2001 From: Book Pauk Date: Wed, 16 Oct 2019 11:19:40 +0700 Subject: [PATCH 01/12] =?UTF-8?q?=D0=9C=D0=B5=D0=BB=D0=BA=D0=B0=D1=8F=20?= =?UTF-8?q?=D0=BF=D0=BE=D0=BF=D1=80=D0=B0=D0=B2=D0=BA=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client/components/Reader/ServerStorage/ServerStorage.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/components/Reader/ServerStorage/ServerStorage.vue b/client/components/Reader/ServerStorage/ServerStorage.vue index 21667b62..9c55ec3b 100644 --- a/client/components/Reader/ServerStorage/ServerStorage.vue +++ b/client/components/Reader/ServerStorage/ServerStorage.vue @@ -455,7 +455,7 @@ class ServerStorage extends Vue { const l = Object.keys(this.recentDelta).length - (1*(!!this.recentDelta.diff)); this.makeDeltaDiff = (l == 1 && this.prevItemKey == itemKey ? this.makeDeltaDiff : false); - const forceSaveRecent = l > 10 || (this.sameKeyCount > 5 && (l > 1)) || (l == 1 && this.sameKeyCount > 10 && !this.makeDeltaDiff); + const forceSaveRecent = l > 20 || (this.sameKeyCount > 5 && (l > 1)) || (l == 1 && this.sameKeyCount > 10 && !this.makeDeltaDiff); this.sameKeyCount = (!forceSaveRecent ? this.sameKeyCount : 0); this.prevItemKey = itemKey; From 16eebfb9a4ce0f94993e65cdf062f77830ccf4d1 Mon Sep 17 00:00:00 2001 From: Book Pauk Date: Wed, 16 Oct 2019 16:41:26 +0700 Subject: [PATCH 02/12] =?UTF-8?q?=D0=9F=D0=BE=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20=D1=82=D0=B5=D0=BA=D1=81=D1=82=20=D1=81=D1=81?= =?UTF-8?q?=D1=8B=D0=BB=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Reader/HelpPage/CommonHelpPage/CommonHelpPage.vue | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/client/components/Reader/HelpPage/CommonHelpPage/CommonHelpPage.vue b/client/components/Reader/HelpPage/CommonHelpPage/CommonHelpPage.vue index 2ea212c6..28ebd44c 100644 --- a/client/components/Reader/HelpPage/CommonHelpPage/CommonHelpPage.vue +++ b/client/components/Reader/HelpPage/CommonHelpPage/CommonHelpPage.vue @@ -24,10 +24,14 @@

Вы можете добавить в свой браузер закладку, указав в ее свойствах вместо адреса следующий код: -
- javascript:location.href='https://omnireader.ru/?url='+location.href; +
javascript:location.href='https://omnireader.ru/?url='+location.href; +   + + (скопировать) -
Тогда, активировав получившуюся закладку на любой странице интернета, вы автоматически откроете ее в Omni Reader. +
или перетащив на панель закладок следующую ссылку: +
Omni Reader +
Тогда, активировав получившуюся закладку на любой странице интернета, вы автоматически загрузите эту страницу в Omni Reader.
В Chrome для Android можно вызывать такую закладку по имени прямо в адресной строке браузера (имя стоит сделать попроще).

From 2b5f47b3ded034ed34b75a12d0c8fbb08d9ffccc Mon Sep 17 00:00:00 2001 From: Book Pauk Date: Wed, 16 Oct 2019 21:08:34 +0700 Subject: [PATCH 03/12] =?UTF-8?q?=D0=97=D0=B0=D0=BC=D0=B5=D0=BD=D0=B0=20de?= =?UTF-8?q?compress-zip=20=D0=BD=D0=B0=20adm-zip?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package-lock.json | 82 ++++----------------------------- package.json | 2 +- server/core/FileDecompressor.js | 23 +++------ 3 files changed, 16 insertions(+), 91 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8970897b..8c703a87 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "Liberama", - "version": "0.7.0", + "version": "0.7.1", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -541,6 +541,11 @@ "integrity": "sha512-tiNTrP1MP0QrChmD2DdupCr6HWSFeKVw5d/dHTu4Y7rkAkRhU/Dt7dphAfIUyxtHpl/eBVip5uTNSpQJHylpAw==", "dev": true }, + "adm-zip": { + "version": "0.4.13", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.13.tgz", + "integrity": "sha512-fERNJX8sOXfel6qCBCMPvZLzENBEhZTzKqg6vrOW5pvoEaQuJhRU4ndTAh6lHOxn1I6jnz2NHra56ZODM751uw==" + }, "ajv": { "version": "6.10.2", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", @@ -1645,15 +1650,6 @@ "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", "dev": true }, - "binary": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", - "integrity": "sha1-n2BVO8XOjDOG87VTz/R0Yq3sqnk=", - "requires": { - "buffers": "~0.1.1", - "chainsaw": "~0.1.0" - } - }, "binary-extensions": { "version": "1.13.1", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", @@ -1883,11 +1879,6 @@ "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", "dev": true }, - "buffers": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", - "integrity": "sha1-skV5w77U1tOWru5tmorn9Ugqt7s=" - }, "builtin-status-codes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", @@ -2071,14 +2062,6 @@ "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" }, - "chainsaw": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", - "integrity": "sha1-XqtQsor+WAdNDVgpE4iCi15fvJg=", - "requires": { - "traverse": ">=0.3.0 <0.4" - } - }, "chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", @@ -3196,20 +3179,6 @@ "mimic-response": "^1.0.0" } }, - "decompress-zip": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/decompress-zip/-/decompress-zip-0.2.2.tgz", - "integrity": "sha512-v+Na3Ck86Px7s2ix+f77pMQC3GlkxHHN+YyvnkEW7+xX5F39pcDpIV/VFvGYk8MznTFcMoPjL3XNWEJLXWoSPw==", - "requires": { - "binary": "^0.3.0", - "graceful-fs": "^4.1.3", - "mkpath": "^0.1.0", - "nopt": "^3.0.1", - "q": "^1.1.2", - "readable-stream": "^1.1.8", - "touch": "0.0.3" - } - }, "deep-extend": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", @@ -6751,11 +6720,6 @@ } } }, - "mkpath": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/mkpath/-/mkpath-0.1.0.tgz", - "integrity": "sha1-dVSm+Nhxg0zJe1RisSLEwSTW3pE=" - }, "move-concurrently": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", @@ -7047,14 +7011,6 @@ "semver": "^5.3.0" } }, - "nopt": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", - "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", - "requires": { - "abbrev": "1" - } - }, "normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -9953,7 +9909,8 @@ "q": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=" + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", + "dev": true }, "qs": { "version": "6.7.0", @@ -11785,24 +11742,6 @@ "integrity": "sha1-LmhELZ9k7HILjMieZEOsbKqVACk=", "dev": true }, - "touch": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/touch/-/touch-0.0.3.tgz", - "integrity": "sha1-Ua7z1ElXHU8oel2Hyci0kYGg2x0=", - "requires": { - "nopt": "~1.0.10" - }, - "dependencies": { - "nopt": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", - "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=", - "requires": { - "abbrev": "1" - } - } - } - }, "tough-cookie": { "version": "2.4.3", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", @@ -11819,11 +11758,6 @@ } } }, - "traverse": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", - "integrity": "sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk=" - }, "trim-right": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", diff --git a/package.json b/package.json index e5ca04a4..900ce8aa 100644 --- a/package.json +++ b/package.json @@ -55,12 +55,12 @@ "webpack-merge": "^4.2.2" }, "dependencies": { + "adm-zip": "^0.4.13", "appcache-webpack-plugin": "^1.4.0", "axios": "^0.18.1", "base-x": "^3.0.6", "chardet": "^0.7.0", "compression": "^1.7.4", - "decompress-zip": "^0.2.2", "element-ui": "^2.12.0", "express": "^4.17.1", "fg-loadcss": "^2.1.0", diff --git a/server/core/FileDecompressor.js b/server/core/FileDecompressor.js index 99305207..95a4a46b 100644 --- a/server/core/FileDecompressor.js +++ b/server/core/FileDecompressor.js @@ -4,7 +4,7 @@ const crypto = require('crypto'); const path = require('path'); const unbzip2Stream = require('unbzip2-stream'); const tar = require('tar-fs'); -const DecompressZip = require('decompress-zip'); +const AdmZip = require('adm-zip'); const utils = require('./utils'); const FileDetector = require('./FileDetector'); @@ -112,26 +112,17 @@ class FileDecompressor { } async unZip(filename, outputDir) { - return new Promise((resolve, reject) => { + return new Promise((resolve) => { const files = []; - const unzipper = new DecompressZip(filename); + const zip = new AdmZip(filename); - unzipper.on('error', function(err) { - reject(err); + zip.getEntries().forEach(function(zipEntry) { + files.push({path: zipEntry.entryName, size: zipEntry.header.size}); }); - unzipper.on('extract', function() { - resolve(files); - }); + zip.extractAllTo(outputDir, true); - unzipper.extract({ - path: outputDir, - filter: function(file) { - if (file.type == 'File') - files.push({path: file.path, size: file.uncompressedSize}); - return true; - } - }); + resolve(files); }); } From 7d59af54de176b7b4e407deca5717377b17acfc3 Mon Sep 17 00:00:00 2001 From: Book Pauk Date: Wed, 16 Oct 2019 21:48:41 +0700 Subject: [PATCH 04/12] =?UTF-8?q?=D0=A3=D0=BB=D1=83=D1=87=D1=88=D0=B8?= =?UTF-8?q?=D0=BB=20=D0=BE=D0=BF=D1=80=D0=B5=D0=B4=D0=B5=D0=BB=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=20=D0=BA=D0=BE=D0=B4=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/core/BookConverter/textUtils.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/core/BookConverter/textUtils.js b/server/core/BookConverter/textUtils.js index 6ee5169d..80ee401e 100644 --- a/server/core/BookConverter/textUtils.js +++ b/server/core/BookConverter/textUtils.js @@ -74,7 +74,7 @@ function getEncoding(buf, returnAll) { if (returnAll) return sorted; - else if (sorted[0].c > 0) + else if (sorted[0].c > 0 && sorted[0].c > sorted[0].totalChecked/2) return sorted[0].codePage; else return 'ISO-8859-5'; From 2ec1dd58a5391ed4d677d7ec5781a1c604b5fdd5 Mon Sep 17 00:00:00 2001 From: Book Pauk Date: Thu, 17 Oct 2019 13:49:24 +0700 Subject: [PATCH 05/12] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B0=20=D1=81=D1=81=D1=8B=D0=BB=D0=BA=D0=B0=20"?= =?UTF-8?q?=D0=A1=D1=82=D0=B0=D1=80=D0=B0=D1=8F=20=D0=B2=D0=B5=D1=80=D1=81?= =?UTF-8?q?=D0=B8=D1=8F"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client/components/Reader/LoaderPage/LoaderPage.vue | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/client/components/Reader/LoaderPage/LoaderPage.vue b/client/components/Reader/LoaderPage/LoaderPage.vue index 1bf6475c..673909de 100644 --- a/client/components/Reader/LoaderPage/LoaderPage.vue +++ b/client/components/Reader/LoaderPage/LoaderPage.vue @@ -31,6 +31,7 @@
Отзывы о читалке + Старая версия
@@ -137,6 +138,10 @@ class LoaderPage extends Vue { window.open('http://samlib.ru/comment/b/bookpauk/bookpauk_reader', '_blank'); } + openOldVersion() { + window.open('http://old.omnireader.ru', '_blank'); + } + keyHook(event) { if (this.pasteTextActive) { return this.$refs.pasteTextPage.keyHook(event); From 75cb6117019b86632e355daecfce1a91a508b67d Mon Sep 17 00:00:00 2001 From: Book Pauk Date: Thu, 17 Oct 2019 17:20:43 +0700 Subject: [PATCH 06/12] =?UTF-8?q?=D0=9F=D0=BE=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BA=D0=B8=20=D0=B1=D0=B0=D0=B3=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client/components/Reader/Reader.vue | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/client/components/Reader/Reader.vue b/client/components/Reader/Reader.vue index 90428c15..e28f4225 100644 --- a/client/components/Reader/Reader.vue +++ b/client/components/Reader/Reader.vue @@ -510,15 +510,14 @@ class Reader extends Vue { } async bookManagerEvent(eventName) { - if (eventName == 'recent-changed') { - if (this.recentBooksActive) { - await this.$refs.recentBooksPage.updateTableData(); - } - } - if (eventName == 'set-recent' || eventName == 'recent-deleted') { const oldBook = this.mostRecentBookReactive; const newBook = bookManager.mostRecentBook(); + + if (!(oldBook && newBook && oldBook.key == newBook.key)) { + this.mostRecentBook(); + } + if (oldBook && newBook) { if (oldBook.key != newBook.key) { this.loadingBook = true; @@ -533,6 +532,12 @@ class Reader extends Vue { } } } + + if (eventName == 'recent-changed') { + if (this.recentBooksActive) { + await this.$refs.recentBooksPage.updateTableData(); + } + } } get toolBarActive() { @@ -1063,7 +1068,7 @@ class Reader extends Vue { let page = this.$refs.page; while (this.blinkCount) { this.showRefreshIcon = !this.showRefreshIcon; - if (page.blinkCachedLoadMessage) + if (page && page.blinkCachedLoadMessage) page.blinkCachedLoadMessage(this.showRefreshIcon); await utils.sleep(500); if (this.stopBlink) @@ -1073,7 +1078,7 @@ class Reader extends Vue { } this.showRefreshIcon = true; this.inBlink = false; - if (page.blinkCachedLoadMessage) + if (page && page.blinkCachedLoadMessage) page.blinkCachedLoadMessage('finish'); }); } From 92afc5cb3390bf8a7527fd9ce397b842837a8f5f Mon Sep 17 00:00:00 2001 From: Book Pauk Date: Thu, 17 Oct 2019 19:09:05 +0700 Subject: [PATCH 07/12] =?UTF-8?q?=D0=9F=D0=BE=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BA=D0=B8=20=D0=B1=D0=B0=D0=B3=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client/components/Reader/Reader.vue | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/client/components/Reader/Reader.vue b/client/components/Reader/Reader.vue index e28f4225..762198a7 100644 --- a/client/components/Reader/Reader.vue +++ b/client/components/Reader/Reader.vue @@ -511,7 +511,7 @@ class Reader extends Vue { async bookManagerEvent(eventName) { if (eventName == 'set-recent' || eventName == 'recent-deleted') { - const oldBook = this.mostRecentBookReactive; + const oldBook = (this.textPage ? this.textPage.lastBook : null); const newBook = bookManager.mostRecentBook(); if (!(oldBook && newBook && oldBook.key == newBook.key)) { @@ -908,6 +908,7 @@ class Reader extends Vue { this.updateRoute(); const textPage = this.$refs.page; if (textPage.showBook) { + this.textPage = textPage; textPage.lastBook = last; textPage.bookPos = (last.bookPos !== undefined ? last.bookPos : 0); @@ -932,7 +933,7 @@ class Reader extends Vue { url = 'http://' + url; // уже просматривается сейчас - const lastBook = (this.$refs.page ? this.$refs.page.lastBook : null); + const lastBook = (this.textPage ? this.textPage.lastBook : null); if (!opts.force && lastBook && lastBook.url == url && await bookManager.hasBookParsed(lastBook)) { this.loaderActive = false; return; From bfb37e55d46f2844fab0253b29dfa0d92321eac7 Mon Sep 17 00:00:00 2001 From: Book Pauk Date: Thu, 17 Oct 2019 19:18:56 +0700 Subject: [PATCH 08/12] =?UTF-8?q?=D0=9F=D0=BE=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BA=D0=B0=20=D0=BE=D1=82=D0=BE=D0=B1=D1=80=D0=B0=D0=B6=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D1=8F=20=D0=BF=D1=80=D0=BE=D0=B3=D1=80=D0=B5=D1=81?= =?UTF-8?q?=D1=81=D0=B1=D0=B0=D1=80=D0=B0=20=D0=B7=D0=B0=D0=B3=D1=80=D1=83?= =?UTF-8?q?=D0=B7=D0=BA=D0=B8=20=D0=BA=D0=BD=D0=B8=D0=B3=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client/api/reader.js | 5 ++--- client/components/Reader/Reader.vue | 1 + 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/client/api/reader.js b/client/api/reader.js index b8081bd8..7d45eada 100644 --- a/client/api/reader.js +++ b/client/api/reader.js @@ -1,6 +1,4 @@ -import _ from 'lodash'; import axios from 'axios'; -import {Buffer} from 'safe-buffer'; import * as utils from '../share/utils'; @@ -66,12 +64,13 @@ class Reader { estSize = response.headers['content-length']; } + callback({state: 'loading', progress: 0}); const options = { onDownloadProgress: progress => { while (progress.loaded > estSize) estSize *= 1.5; if (callback) - callback({state: 'loading', progress: Math.round((progress.loaded*100)/estSize)}); + callback({progress: Math.round((progress.loaded*100)/estSize)}); } } //загрузка diff --git a/client/components/Reader/Reader.vue b/client/components/Reader/Reader.vue index 762198a7..cd997ea5 100644 --- a/client/components/Reader/Reader.vue +++ b/client/components/Reader/Reader.vue @@ -984,6 +984,7 @@ class Reader extends Vue { // иначе идем на сервер // пытаемся загрузить готовый файл с сервера if (wasOpened.path) { + progress.setState({totalSteps: 5}); try { const resp = await readerApi.loadCachedBook(wasOpened.path, (state) => { progress.setState(state); From 93cf5065357774759afa035b2a30aad94a3614cf Mon Sep 17 00:00:00 2001 From: Book Pauk Date: Thu, 17 Oct 2019 20:38:52 +0700 Subject: [PATCH 09/12] =?UTF-8?q?=D0=9F=D0=BE=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BA=D0=B0=20=D0=B1=D0=B0=D0=B3=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client/components/Reader/Reader.vue | 8 +++++--- client/components/Reader/share/bookManager.js | 5 +++++ 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/client/components/Reader/Reader.vue b/client/components/Reader/Reader.vue index cd997ea5..10902c02 100644 --- a/client/components/Reader/Reader.vue +++ b/client/components/Reader/Reader.vue @@ -519,7 +519,7 @@ class Reader extends Vue { } if (oldBook && newBook) { - if (oldBook.key != newBook.key) { + if (oldBook.key != newBook.key || oldBook.path != newBook.path) { this.loadingBook = true; try { await this.loadBook(newBook); @@ -934,7 +934,9 @@ class Reader extends Vue { // уже просматривается сейчас const lastBook = (this.textPage ? this.textPage.lastBook : null); - if (!opts.force && lastBook && lastBook.url == url && await bookManager.hasBookParsed(lastBook)) { + if (!opts.force && lastBook && lastBook.url == url && + (!opts.path || opts.path == lastBook.path) && + await bookManager.hasBookParsed(lastBook)) { this.loaderActive = false; return; } @@ -963,7 +965,7 @@ class Reader extends Vue { if (!opts.force) { // пытаемся загрузить и распарсить книгу в менеджере из локального кэша - const bookParsed = await bookManager.getBook({url}, (prog) => { + const bookParsed = await bookManager.getBook({url, path: opts.path}, (prog) => { progress.setState({progress: prog}); }); diff --git a/client/components/Reader/share/bookManager.js b/client/components/Reader/share/bookManager.js index 06342f78..f0f10fad 100644 --- a/client/components/Reader/share/bookManager.js +++ b/client/components/Reader/share/bookManager.js @@ -262,6 +262,11 @@ class BookManager { this.books[meta.key] = result; } + //Если файл на сервере изменился, считаем, что в кеше его нету + if (meta.path && result && meta.path != result.path) { + return; + } + if (result && !result.parsed) { let data = await bmDataStore.getItem(`bmData-${meta.key}`); callback(5); From d505fd0795fe86a68e1751c92267f04e3c4ce3a8 Mon Sep 17 00:00:00 2001 From: Book Pauk Date: Thu, 17 Oct 2019 21:38:13 +0700 Subject: [PATCH 10/12] =?UTF-8?q?=D0=9C=D0=B5=D0=BB=D0=BA=D0=B0=D1=8F=20?= =?UTF-8?q?=D0=BF=D0=BE=D0=BF=D1=80=D0=B0=D0=B2=D0=BA=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client/components/Reader/Reader.vue | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/client/components/Reader/Reader.vue b/client/components/Reader/Reader.vue index 10902c02..b3055709 100644 --- a/client/components/Reader/Reader.vue +++ b/client/components/Reader/Reader.vue @@ -512,6 +512,7 @@ class Reader extends Vue { async bookManagerEvent(eventName) { if (eventName == 'set-recent' || eventName == 'recent-deleted') { const oldBook = (this.textPage ? this.textPage.lastBook : null); + const oldPos = (this.textPage ? this.textPage.bookPos : null); const newBook = bookManager.mostRecentBook(); if (!(oldBook && newBook && oldBook.key == newBook.key)) { @@ -526,7 +527,7 @@ class Reader extends Vue { } finally { this.loadingBook = false; } - } else if (oldBook.bookPos != newBook.bookPos) { + } else if (oldPos != newBook.bookPos) { while (this.loadingBook) await utils.sleep(100); this.bookPosChanged({bookPos: newBook.bookPos}); } From c60f0991df82224406b170b1aff564f1cb7c7ed2 Mon Sep 17 00:00:00 2001 From: Book Pauk Date: Fri, 18 Oct 2019 09:06:04 +0700 Subject: [PATCH 11/12] =?UTF-8?q?=D0=9F=D1=80=D0=B0=D0=B2=D0=BA=D0=B0=20?= =?UTF-8?q?=D0=B1=D0=B0=D0=B3=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/Reader/RecentBooksPage/RecentBooksPage.vue | 1 + client/components/Reader/share/bookManager.js | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/client/components/Reader/RecentBooksPage/RecentBooksPage.vue b/client/components/Reader/RecentBooksPage/RecentBooksPage.vue index 444dbc3e..200dc9c1 100644 --- a/client/components/Reader/RecentBooksPage/RecentBooksPage.vue +++ b/client/components/Reader/RecentBooksPage/RecentBooksPage.vue @@ -251,6 +251,7 @@ class RecentBooksPage extends Vue { } if (this.tableData.length > result.length) this.tableData.splice(result.length);*/ + this.tableData = result; this.updating = false; } diff --git a/client/components/Reader/share/bookManager.js b/client/components/Reader/share/bookManager.js index f0f10fad..e58a2e0b 100644 --- a/client/components/Reader/share/bookManager.js +++ b/client/components/Reader/share/bookManager.js @@ -439,6 +439,12 @@ class BookManager { const mergedRecent = _.cloneDeep(this.recent); Object.assign(mergedRecent, value); + + //подстраховка + for (let i of Object.keys(mergedRecent)) { + if (!mergedRecent[i].key || mergedRecent[i].key !== i) + delete mergedRecent[i]; + } //"ленивое" обновление хранилища (async() => { From 34f1ad8faef4ce252c841a9da63b3ea3a1f47ac4 Mon Sep 17 00:00:00 2001 From: Book Pauk Date: Fri, 18 Oct 2019 09:16:52 +0700 Subject: [PATCH 12/12] =?UTF-8?q?=D0=92=D0=B5=D1=80=D1=81=D0=B8=D1=8F=200.?= =?UTF-8?q?7.2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client/components/Reader/versionHistory.js | 11 +++++++++++ package.json | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/client/components/Reader/versionHistory.js b/client/components/Reader/versionHistory.js index df6acf20..3cdb9d90 100644 --- a/client/components/Reader/versionHistory.js +++ b/client/components/Reader/versionHistory.js @@ -1,4 +1,15 @@ export const versionHistory = [ +{ + showUntil: '2019-10-17', + header: '0.7.2 (2019-10-18)', + content: +` +
    +
  • исправления багов
  • +
+` +}, + { showUntil: '2019-09-19', header: '0.7.1 (2019-09-20)', diff --git a/package.json b/package.json index 900ce8aa..ef406575 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "Liberama", - "version": "0.7.1", + "version": "0.7.2", "engines": { "node": ">=10.0.0" },