浏览代码

Добавлена автоотмена проверки обновлений книг по истечении заданного количества дней

Book Pauk 2 年之前
父节点
当前提交
76673295bf

+ 38 - 0
client/components/Reader/Reader.vue

@@ -476,7 +476,10 @@ class Reader {
         this.dualPageMode = settings.dualPageMode;
         this.userWallpapers = settings.userWallpapers;
         this.bucEnabled = settings.bucEnabled;
+        this.bucSizeDiff = settings.bucSizeDiff;
         this.bucSetOnNew = settings.bucSetOnNew;
+        this.bucCancelEnabled = settings.bucCancelEnabled;
+        this.bucCancelDays = settings.bucCancelDays;
 
         this.readerActionByKeyCode = utils.userHotKeysObjectSwap(settings.userHotKeys);
         this.$root.readerActionByKeyEvent = (event) => {
@@ -604,6 +607,7 @@ class Reader {
                 await utils.sleep(1000);//чтобы не ддосить сервер
             }
 
+            const checkSetTime = {};
             //проставим новые размеры у книг
             for (const book of sorted) {
                 //размер 0 считаем отсутствующим
@@ -611,6 +615,40 @@ class Reader {
                     book.bucSize = bucSize[book.url];
                     await bookManager.recentSetItem(book);
                 }
+
+                //подготовка к следующему шагу
+                if (updateUrls.has(book.url)) {
+                    let time = checkSetTime[book.key] || 0;
+                    if (book.checkBucTime && book.checkBucTime > time) {
+                        time = book.checkBucTime;
+                    } else if (book.loadTime && book.loadTime > time) {
+                        time = book.loadTime;
+                    }
+
+                    checkSetTime[book.key] = time;
+                }
+            }
+
+            //bucCancelEnabled и bucCancelDays
+            //снимем флаг checkBuc у необновлявшихся bucCancelDays
+            if (this.bucCancelEnabled) {
+                for (const [key, time] of Object.entries(checkSetTime)) {
+                    if (time && Date.now() - time > this.bucCancelDays*24*3600*1000) {
+                        const book = await bookManager.getRecentBook({key});
+                        const needBookUpdate = 
+                            book.checkBuc
+                            && book.bucSize
+                            && utils.hasProp(book, 'downloadSize')
+                            && book.bucSize !== book.downloadSize
+                            && (book.bucSize - book.downloadSize >= this.bucSizeDiff)
+                        ;
+
+                        if (book && !needBookUpdate) {
+                            book.checkBuc = undefined;//!!!
+                            await bookManager.recentSetItem(book);
+                        }
+                    }
+                }
             }
 
             await this.$refs.recentBooksPage.updateTableData();

+ 31 - 5
client/components/Reader/SettingsPage/UpdateTab.inc

@@ -25,6 +25,20 @@
     </q-checkbox>
 </div>
 
+<div v-show="configBucEnabled && bucEnabled" class="item row">
+    <div class="label-6"></div>
+    <div class="col-5 column justify-center items-end q-pr-xs">Разница размеров</div>
+    <div class="col row">
+        <NumInput class="col-left" v-model="bucSizeDiff" />
+
+        <q-tooltip :delay="1000" anchor="top middle" self="bottom middle" content-style="font-size: 80%">
+            Уведомлять о наличии обновления книги в списке загруженных<br>
+            при указанной разнице в размерах старого и нового файлов.<br>
+            Разница указывается в байтах и может быть отрицательной.
+        </q-tooltip>
+    </div>
+</div>
+
 <div v-show="configBucEnabled && bucEnabled" class="item row">
     <div class="label-6"></div>
     <q-checkbox size="xs" v-model="bucSetOnNew">
@@ -37,14 +51,26 @@
 </div>
 
 <div v-show="configBucEnabled && bucEnabled" class="item row">
-    <div class="label-6">Разница размеров</div>
+    <div class="label-6"></div>
+    <q-checkbox size="xs" v-model="bucCancelEnabled">
+        Отменять проверку через {{ bucCancelDays }} дней{{ (bucCancelEnabled ? ':' : '') }}
+        <q-tooltip :delay="1000" anchor="top middle" self="bottom middle" content-style="font-size: 80%">
+            Снимать флаг проверки с книги, если не было<br>
+            обновлений в течение {{ bucCancelDays }} дней
+        </q-tooltip>
+    </q-checkbox>
+</div>
+
+<div v-show="configBucEnabled && bucEnabled && bucCancelEnabled" class="item row">
+    <div class="label-6"></div>
+    <div class="col-5"></div>
     <div class="col row">
-        <NumInput class="col-left" v-model="bucSizeDiff" />
+        <NumInput class="col-left" v-model="bucCancelDays" :min="1" :max="10000"/>
 
         <q-tooltip :delay="1000" anchor="top middle" self="bottom middle" content-style="font-size: 80%">
-            Уведомлять о наличии обновления книги в списке загруженных<br>
-            при указанной разнице в размерах старого и нового файлов.<br>
-            Разница указывается в байтах и может быть отрицательной.
+            Снимать флаг проверки с книги, если не было<br>
+            обновлений в течение {{ bucCancelDays }} дней
         </q-tooltip>
     </div>
 </div>
+

+ 2 - 0
client/components/Reader/share/bookManager.js

@@ -505,6 +505,8 @@ class BookManager {
 
         for (const book of updateItems) {
             book.checkBuc = checkBuc;
+            if (checkBuc)
+                book.checkBucTime = Date.now();
             await this.recentSetItem(book);
         }
     }

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

@@ -185,7 +185,7 @@ const settingDefaults = {
 
     fontShifts: {},
     showToolButton: {},
-    toolBarHideOnScroll: true,
+    toolBarHideOnScroll: false,
     userHotKeys: {},
     userWallpapers: [],
 
@@ -196,6 +196,8 @@ const settingDefaults = {
     bucEnabled: true, // общее включение/выключение проверки обновлений
     bucSizeDiff: 1, // разница в размерах файла, при которой показывать наличие обновления
     bucSetOnNew: true, // автоматически включать проверку обновлений для вновь загружаемых файлов
+    bucCancelEnabled: true, // вкл/выкл отмену проверки книг через bucCancelDays
+    bucCancelDays: 60, // количество дней, через которое отменяется проверка книги, при условии отсутствия обновлений за это время
 
     //для SettingsPage
     needUpdateSettingsView: 0,