Jelajahi Sumber

Работа над ServerStorage - saveRecent

Book Pauk 6 tahun lalu
induk
melakukan
79ced4eca4

+ 7 - 1
client/components/Reader/Reader.vue

@@ -197,6 +197,12 @@ class Reader extends Vue {
             }
         }, 500);
 
+        this.debouncedSaveRecent = _.debounce(async() => {
+            const serverStorage = this.$refs.serverStorage;
+            while (!serverStorage.inited) await utils.sleep(1000);
+            await serverStorage.saveRecent();
+        }, 1000);
+
         document.addEventListener('fullscreenchange', () => {
             this.fullScreenActive = (document.fullscreenElement !== null);
         });
@@ -303,7 +309,7 @@ class Reader extends Vue {
                     await this.loadBook(newBook);
                 }
 
-                await serverStorage.saveRecent();
+                this.debouncedSaveRecent();
             })();
         }
     }

+ 12 - 7
client/components/Reader/ServerStorage/ServerStorage.vue

@@ -36,6 +36,7 @@ export default @Component({
 })
 class ServerStorage extends Vue {
     created() {
+        this.inited = false;
         this.commit = this.$store.commit;
         this.prevServerStorageKey = null;
         this.$root.$on('generateNewServerStorageKey', () => {this.generateNewServerStorageKey()});
@@ -50,14 +51,18 @@ class ServerStorage extends Vue {
     }
 
     async init() {
-        if (!this.serverStorageKey) {
-            //генерируем новый ключ
-            await this.generateNewServerStorageKey();
-        } else {
-            await this.serverStorageKeyChanged();
+        try {
+            if (!this.serverStorageKey) {
+                //генерируем новый ключ
+                await this.generateNewServerStorageKey();
+            } else {
+                await this.serverStorageKeyChanged();
+            }
+            await this.currentProfileChanged();
+            await this.loadRecent();
+        } finally {
+            this.inited = true;
         }
-        await this.currentProfileChanged();
-        await this.loadRecent();
     }
 
     async generateNewServerStorageKey() {