Эх сурвалжийг харах

Улучшил обработку ошибок

Book Pauk 6 жил өмнө
parent
commit
aef24fb271

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

@@ -150,12 +150,13 @@ class Reader extends Vue {
                     progress.setState({progress: prog});
                     progress.setState({progress: prog});
                 });
                 });
 
 
-                this.commit('reader/addOpenedBook', bookManager.metaOnly(addedBook));
+                this.commit('reader/setOpenedBook', bookManager.metaOnly(addedBook));
                 this.commit('reader/setLoaderActive', false);
                 this.commit('reader/setLoaderActive', false);
 
 
                 progress.hide(); this.progressActive = false;
                 progress.hide(); this.progressActive = false;
             } catch (e) {
             } catch (e) {
                 progress.hide(); this.progressActive = false;
                 progress.hide(); this.progressActive = false;
+                this.commit('reader/setLoaderActive', true);
                 this.$alert(e.message, 'Ошибка', {type: 'error'});
                 this.$alert(e.message, 'Ошибка', {type: 'error'});
             }
             }
         });
         });
@@ -164,7 +165,7 @@ class Reader extends Vue {
     parseBook(meta) {
     parseBook(meta) {
         this.progressActive = true;
         this.progressActive = true;
         this.$nextTick(async() => {
         this.$nextTick(async() => {
-            if (await bookManager.hasBookParsed(meta)) {
+            if (bookManager.hasBookParsed(meta)) {
                 this.progressActive = false;
                 this.progressActive = false;
                 return;
                 return;
             }
             }
@@ -184,6 +185,7 @@ class Reader extends Vue {
                 }
                 }
             } catch (e) {
             } catch (e) {
                 progress.hide(); this.progressActive = false;
                 progress.hide(); this.progressActive = false;
+                this.commit('reader/setLoaderActive', true);
                 this.$alert(e.message, 'Ошибка', {type: 'error'});
                 this.$alert(e.message, 'Ошибка', {type: 'error'});
             }
             }
         });
         });

+ 15 - 18
client/components/Reader/TextPage/TextPage.vue

@@ -1,9 +1,6 @@
 <template>
 <template>
     <div class="main">
     <div class="main">
         <pre>{{ meta }}</pre>
         <pre>{{ meta }}</pre>
-        <p v-for="item in items" :key="item.id">
-            {{ item.text }}
-        </p>
     </div>
     </div>
 </template>
 </template>
 
 
@@ -21,25 +18,30 @@ class TextPage extends Vue {
     meta = null;
     meta = null;
     fb2 = null;
     fb2 = null;
 
 
-    items = null;
-
     created() {
     created() {
         this.commit = this.$store.commit;
         this.commit = this.$store.commit;
         this.dispatch = this.$store.dispatch;
         this.dispatch = this.$store.dispatch;
         this.config = this.$store.state.config;
         this.config = this.$store.state.config;
         this.reader = this.$store.state.reader;
         this.reader = this.$store.state.reader;
 
 
-        this.book = null;
+        this.openFailed = false;
     }
     }
 
 
     activated() {
     activated() {
+        this.book = null;
+        this.meta = null;
+        this.fb2 = null;
+
         const last = this.lastOpenedBook;
         const last = this.lastOpenedBook;
         if (last) {
         if (last) {
             (async() => {
             (async() => {
                 const isParsed = await bookManager.hasBookParsed(last);
                 const isParsed = await bookManager.hasBookParsed(last);
                 if (!isParsed) {
                 if (!isParsed) {
                     this.$root.$emit('set-app-title');
                     this.$root.$emit('set-app-title');
-                    this.$emit('parse-book', last);
+                    if (!this.openFailed) {
+                        this.$emit('parse-book', last);
+                        this.openFailed = true;
+                    }
                     return;
                     return;
                 }
                 }
                 this.book = await bookManager.getBook(last);
                 this.book = await bookManager.getBook(last);
@@ -51,17 +53,7 @@ class TextPage extends Vue {
                     this.fb2.firstName,
                     this.fb2.firstName,
                     '-',
                     '-',
                     this.fb2.bookTitle
                     this.fb2.bookTitle
-                ]).join(' '));                
-//
-                let lines = [];
-                let para = this.book.parsed.para;
-                const len = (para.length > 50 ? 50 : para.length);
-                for (let i = 0; i < len; i++) {
-                    lines.push({key: i, text: para[i].text});
-                }
-                this.items = lines;
-//
-
+                ]).join(' '));
             })();
             })();
         }
         }
     }
     }
@@ -70,6 +62,11 @@ class TextPage extends Vue {
         return this.$store.getters['reader/lastOpenedBook'];
         return this.$store.getters['reader/lastOpenedBook'];
     }
     }
 
 
+    showPage() {
+        if (!this.book)
+            return;
+    }
+
     keyHook(event) {
     keyHook(event) {
     }
     }
 }
 }

+ 1 - 1
client/store/modules/reader.js

@@ -34,7 +34,7 @@ const mutations = {
     setFullScreenActive(state, value) {
     setFullScreenActive(state, value) {
         state.fullScreenActive = value;
         state.fullScreenActive = value;
     },
     },
-    addOpenedBook(state, value) {
+    setOpenedBook(state, value) {
         Vue.set(state.openedBook, value.key, Object.assign({}, value, {touchTime: Date.now()}));
         Vue.set(state.openedBook, value.key, Object.assign({}, value, {touchTime: Date.now()}));
     },
     },
     delOpenedBook(state, value) {
     delOpenedBook(state, value) {