瀏覽代碼

Merge branch 'release/0.7.5'

Book Pauk 5 年之前
父節點
當前提交
3caea77dde

+ 2 - 3
client/components/Reader/Reader.vue

@@ -540,11 +540,10 @@ class Reader extends Vue {
                 await this.$refs.recentBooksPage.updateTableData();
                 await this.$refs.recentBooksPage.updateTableData();
             }
             }
 
 
+            //сохранение в serverStorage
             if (value) {
             if (value) {
                 await utils.sleep(500);
                 await utils.sleep(500);
-                while (!this.$refs.serverStorage.inited) await utils.sleep(100);
-
-                this.$refs.serverStorage.saveRecent(value);
+                await this.$refs.serverStorage.saveRecent(value);
             }
             }
         }
         }
     }
     }

+ 59 - 52
client/components/Reader/ServerStorage/ServerStorage.vue

@@ -432,67 +432,74 @@ class ServerStorage extends Vue {
     }
     }
 
 
     async saveRecent(itemKey, recurse) {
     async saveRecent(itemKey, recurse) {
+        while (!this.inited || this.savingRecent)
+            await utils.sleep(100);
+
         if (!this.keyInited || !this.serverSyncEnabled || this.savingRecent)
         if (!this.keyInited || !this.serverSyncEnabled || this.savingRecent)
             return;
             return;
 
 
-        const bm = bookManager;
+        this.savingRecent = true;
+        try {        
+            const bm = bookManager;
 
 
-        let needSaveRecent = false;
-        let needSaveRecentPatch = false;
-        let needSaveRecentMod = false;
+            let needSaveRecent = false;
+            let needSaveRecentPatch = false;
+            let needSaveRecentMod = false;
 
 
-        //newRecentMod
-        let newRecentMod = {};
-        if (itemKey && this.cachedRecentPatch.data[itemKey] && this.prevItemKey == itemKey) {
-            newRecentMod = _.cloneDeep(this.cachedRecentMod);
-            newRecentMod.rev++;
+            //newRecentMod
+            let newRecentMod = {};
+            if (itemKey && this.cachedRecentPatch.data[itemKey] && this.prevItemKey == itemKey) {
+                newRecentMod = _.cloneDeep(this.cachedRecentMod);
+                newRecentMod.rev++;
 
 
-            newRecentMod.data.key = itemKey;
-            newRecentMod.data.mod = utils.getObjDiff(this.cachedRecentPatch.data[itemKey], bm.recent[itemKey]);
-            needSaveRecentMod = true;
-        }
-        this.prevItemKey = itemKey;
-
-        //newRecentPatch
-        let newRecentPatch = {};
-        if (itemKey && !needSaveRecentMod) {
-            newRecentPatch = _.cloneDeep(this.cachedRecentPatch);
-            newRecentPatch.rev++;
-            newRecentPatch.data[itemKey] = bm.recent[itemKey];
-
-            let applyMod = this.cachedRecentMod.data;
-            if (applyMod && applyMod.key && newRecentPatch.data[applyMod.key])
-                newRecentPatch.data[applyMod.key] = utils.applyObjDiff(newRecentPatch.data[applyMod.key], applyMod.mod);
-
-            newRecentMod = {rev: this.cachedRecentMod.rev + 1, data: {}};
-            needSaveRecentPatch = true;
-            needSaveRecentMod = true;
-        }
+                newRecentMod.data.key = itemKey;
+                newRecentMod.data.mod = utils.getObjDiff(this.cachedRecentPatch.data[itemKey], bm.recent[itemKey]);
+                needSaveRecentMod = true;
+            }
+            this.prevItemKey = itemKey;
+
+            //newRecentPatch
+            let newRecentPatch = {};
+            if (itemKey && !needSaveRecentMod) {
+                newRecentPatch = _.cloneDeep(this.cachedRecentPatch);
+                newRecentPatch.rev++;
+                newRecentPatch.data[itemKey] = bm.recent[itemKey];
+
+                let applyMod = this.cachedRecentMod.data;
+                if (applyMod && applyMod.key && newRecentPatch.data[applyMod.key])
+                    newRecentPatch.data[applyMod.key] = utils.applyObjDiff(newRecentPatch.data[applyMod.key], applyMod.mod);
+
+                newRecentMod = {rev: this.cachedRecentMod.rev + 1, data: {}};
+                needSaveRecentPatch = true;
+                needSaveRecentMod = true;
+            }
 
 
-        //newRecent
-        let newRecent = {};
-        if (!itemKey || (needSaveRecentPatch && Object.keys(newRecentPatch.data).length > 10)) {
-            newRecent = {rev: this.cachedRecent.rev + 1, data: bm.recent};
-            newRecentPatch = {rev: this.cachedRecentPatch.rev + 1, data: {}};
-            newRecentMod = {rev: this.cachedRecentMod.rev + 1, data: {}};
-            needSaveRecent = true;
-            needSaveRecentPatch = true;
-            needSaveRecentMod = true;
-        }
+            //newRecent
+            let newRecent = {};
+            if (!itemKey || (needSaveRecentPatch && Object.keys(newRecentPatch.data).length > 10)) {
+                //ждем весь bm.recent
+                while (!bookManager.loaded)
+                    await utils.sleep(100);
+
+                newRecent = {rev: this.cachedRecent.rev + 1, data: bm.recent};
+                newRecentPatch = {rev: this.cachedRecentPatch.rev + 1, data: {}};
+                newRecentMod = {rev: this.cachedRecentMod.rev + 1, data: {}};
+                needSaveRecent = true;
+                needSaveRecentPatch = true;
+                needSaveRecentMod = true;
+            }
 
 
-        //query
-        let query = {};
-        if (needSaveRecent) {
-            query = {recent: newRecent, recentPatch: newRecentPatch, recentMod: newRecentMod};
-        } else if (needSaveRecentPatch) {
-            query = {recentPatch: newRecentPatch, recentMod: newRecentMod};
-        } else {
-            query = {recentMod: newRecentMod};
-        }
+            //query
+            let query = {};
+            if (needSaveRecent) {
+                query = {recent: newRecent, recentPatch: newRecentPatch, recentMod: newRecentMod};
+            } else if (needSaveRecentPatch) {
+                query = {recentPatch: newRecentPatch, recentMod: newRecentMod};
+            } else {
+                query = {recentMod: newRecentMod};
+            }
 
 
-        //сохранение
-        this.savingRecent = true;        
-        try {
+            //сохранение
             let result = {state: ''};
             let result = {state: ''};
 
 
             try {
             try {

+ 2 - 2
client/components/Reader/versionHistory.js

@@ -1,7 +1,7 @@
 export const versionHistory = [
 export const versionHistory = [
 {
 {
-    showUntil: '2019-10-20',
-    header: '0.7.4 (2019-10-21)',
+    showUntil: '2019-10-21',
+    header: '0.7.5 (2019-10-22)',
     content:
     content:
 `
 `
 <ul>
 <ul>

+ 1 - 1
docs/omnireader/old/index.html

@@ -153,7 +153,7 @@
 			<p>- регистрация не требуется
 			<p>- регистрация не требуется
 
 
 		<br><br>В качестве URL можно задавать html-страничку с книгой, либо прямую ссылку на файл из онлайн-библиотеки (например, скопировав адрес ссылки или кнопки "скачать fb2").
 		<br><br>В качестве URL можно задавать html-страничку с книгой, либо прямую ссылку на файл из онлайн-библиотеки (например, скопировав адрес ссылки или кнопки "скачать fb2").
-				Поддерживаемые форматы: <strong>html, txt, fb2, fb2.zip и другие</strong>
+				Поддерживаемые форматы: <b>fb2, html, txt, rtf, doc, docx, pdf, epub, mobi</b> и сжатие: <b>zip, bz2, gz</b>
 
 
 		<br><br>Вы можете добавить в свой браузер закладку, указав в ее свойствах вместо адреса следующий код:
 		<br><br>Вы можете добавить в свой браузер закладку, указав в ее свойствах вместо адреса следующий код:
 		<br><p><strong>javascript:location.href='http://old.omnireader.ru/?url='+location.href;</strong>
 		<br><p><strong>javascript:location.href='http://old.omnireader.ru/?url='+location.href;</strong>

+ 1 - 1
package.json

@@ -1,6 +1,6 @@
 {
 {
   "name": "Liberama",
   "name": "Liberama",
-  "version": "0.7.4",
+  "version": "0.7.5",
   "engines": {
   "engines": {
     "node": ">=10.0.0"
     "node": ">=10.0.0"
   },
   },