Browse Source

Добавил loadBook(opts.force)

Book Pauk 6 years ago
parent
commit
a7a34a0e49
2 changed files with 28 additions and 24 deletions
  1. 2 1
      client/api/reader.js
  2. 26 23
      client/components/Reader/Reader.vue

+ 2 - 1
client/api/reader.js

@@ -27,6 +27,7 @@ class Reader {
             callback(response.data);
             callback(response.data);
 
 
             if (response.data.state == 'finish') {//воркер закончил работу, можно скачивать кешированный на сервере файл
             if (response.data.state == 'finish') {//воркер закончил работу, можно скачивать кешированный на сервере файл
+                callback({step: 4});
                 const book = await this.loadCachedBook(response.data.path, callback);
                 const book = await this.loadCachedBook(response.data.path, callback);
                 return Object.assign({}, response.data, {data: book.data});
                 return Object.assign({}, response.data, {data: book.data});
             }
             }
@@ -57,7 +58,7 @@ class Reader {
         const options = {
         const options = {
             onDownloadProgress: progress => {
             onDownloadProgress: progress => {
                 if (callback)
                 if (callback)
-                    callback({state: 'loading', step: 4, progress: Math.round((progress.loaded*100)/progress.total)});
+                    callback({state: 'loading', progress: Math.round((progress.loaded*100)/progress.total)});
             }
             }
         }
         }
         //загрузка
         //загрузка

+ 26 - 23
client/components/Reader/Reader.vue

@@ -239,35 +239,38 @@ class Reader extends Vue {
                 wasOpened = (wasOpened ? wasOpened : {});
                 wasOpened = (wasOpened ? wasOpened : {});
                 const bookPos = (opts.bookPos !== undefined ? opts.bookPos : wasOpened.bookPos);
                 const bookPos = (opts.bookPos !== undefined ? opts.bookPos : wasOpened.bookPos);
 
 
-                // пытаемся загрузить и распарсить книгу в менеджере из локального кеша
-                const bookParsed = await bookManager.getBook({url: opts.url}, (prog) => {
-                    progress.setState({progress: prog});
-                });
+                let book = null;
 
 
-                // если есть в локальном кеше
-                if (bookParsed) {
-                    this.commit('reader/setOpenedBook', Object.assign({bookPos}, bookManager.metaOnly(bookParsed)));
-                    this.loaderActive = false;
-                    progress.hide(); this.progressActive = false;
-                    return;
-                }
+                if (!opts.force) {
+                    // пытаемся загрузить и распарсить книгу в менеджере из локального кеша
+                    const bookParsed = await bookManager.getBook({url: opts.url}, (prog) => {
+                        progress.setState({progress: prog});
+                    });
 
 
-                // иначе идем на сервер
-                let book = null;
-                progress.setState({totalSteps: 5});
+                    // если есть в локальном кеше
+                    if (bookParsed) {
+                        this.commit('reader/setOpenedBook', Object.assign({bookPos}, bookManager.metaOnly(bookParsed)));
+                        this.loaderActive = false;
+                        progress.hide(); this.progressActive = false;
+                        return;
+                    }
 
 
-                // пытаемся загрузить готовый файл с сервера
-                if (wasOpened.path) {
-                    try {
-                        const resp = await readerApi.loadCachedBook(wasOpened.path, (state) => {
-                            progress.setState(state);
-                        });
-                        book = Object.assign({}, wasOpened, {data: resp.data});
-                    } catch (e) {
-                        //молчим
+                    // иначе идем на сервер
+                    // пытаемся загрузить готовый файл с сервера
+                    if (wasOpened.path) {
+                        try {
+                            const resp = await readerApi.loadCachedBook(wasOpened.path, (state) => {
+                                progress.setState(state);
+                            });
+                            book = Object.assign({}, wasOpened, {data: resp.data});
+                        } catch (e) {
+                            //молчим
+                        }
                     }
                     }
                 }
                 }
 
 
+                progress.setState({totalSteps: 5});
+
                 // не удалось, скачиваем книгу полностью с конвертацией
                 // не удалось, скачиваем книгу полностью с конвертацией
                 if (!book) {
                 if (!book) {
                     book = await readerApi.loadBook(opts.url, (state) => {
                     book = await readerApi.loadBook(opts.url, (state) => {