Работа над BookUpdateChecker
This commit is contained in:
@@ -9,7 +9,7 @@ class Misc {
|
|||||||
async loadConfig() {
|
async loadConfig() {
|
||||||
|
|
||||||
const query = {params: [
|
const query = {params: [
|
||||||
'name', 'version', 'mode', 'maxUploadFileSize', 'useExternalBookConverter', 'acceptFileExt', 'branch',
|
'name', 'version', 'mode', 'maxUploadFileSize', 'useExternalBookConverter', 'acceptFileExt', 'bucEnabled', 'branch',
|
||||||
]};
|
]};
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|||||||
@@ -309,6 +309,8 @@ class Reader {
|
|||||||
donationVisible = false;
|
donationVisible = false;
|
||||||
dualPageMode = false;
|
dualPageMode = false;
|
||||||
|
|
||||||
|
bucEnabled = false;
|
||||||
|
|
||||||
created() {
|
created() {
|
||||||
this.rstore = rstore;
|
this.rstore = rstore;
|
||||||
this.loading = true;
|
this.loading = true;
|
||||||
@@ -416,14 +418,26 @@ class Reader {
|
|||||||
await this.$refs.dialogs.init();
|
await this.$refs.dialogs.init();
|
||||||
})();
|
})();
|
||||||
|
|
||||||
|
//проверки обновлений читалки
|
||||||
(async() => {
|
(async() => {
|
||||||
this.isFirstNeedUpdateNotify = true;
|
this.isFirstNeedUpdateNotify = true;
|
||||||
//вечный цикл, запрашиваем периодически конфиг для проверки выхода новой версии читалки
|
//вечный цикл, запрашиваем периодически конфиг для проверки выхода новой версии читалки
|
||||||
while (true) {// eslint-disable-line no-constant-condition
|
while (1) {// eslint-disable-line no-constant-condition
|
||||||
await this.checkNewVersionAvailable();
|
await this.checkNewVersionAvailable();
|
||||||
await utils.sleep(3600*1000); //каждый час
|
await utils.sleep(3600*1000); //каждый час
|
||||||
}
|
}
|
||||||
//дальше кода нет
|
//дальше хода нет
|
||||||
|
})();
|
||||||
|
|
||||||
|
//проверки обновлений книг
|
||||||
|
(async() => {
|
||||||
|
await utils.sleep(1*1000); //подождем неск. секунд перед первым запросом
|
||||||
|
//вечный цикл, запрашиваем периодически обновления
|
||||||
|
while (1) {// eslint-disable-line no-constant-condition
|
||||||
|
await this.checkBuc();
|
||||||
|
await utils.sleep(70*60*1000); //каждые 70 минут
|
||||||
|
}
|
||||||
|
//дальше хода нет
|
||||||
})();
|
})();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -445,6 +459,7 @@ class Reader {
|
|||||||
this.pdfQuality = settings.pdfQuality;
|
this.pdfQuality = settings.pdfQuality;
|
||||||
this.dualPageMode = settings.dualPageMode;
|
this.dualPageMode = settings.dualPageMode;
|
||||||
this.userWallpapers = settings.userWallpapers;
|
this.userWallpapers = settings.userWallpapers;
|
||||||
|
this.bucEnabled = settings.bucEnabled;
|
||||||
|
|
||||||
this.readerActionByKeyCode = utils.userHotKeysObjectSwap(settings.userHotKeys);
|
this.readerActionByKeyCode = utils.userHotKeysObjectSwap(settings.userHotKeys);
|
||||||
this.$root.readerActionByKeyEvent = (event) => {
|
this.$root.readerActionByKeyEvent = (event) => {
|
||||||
@@ -542,6 +557,36 @@ class Reader {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async checkBuc() {
|
||||||
|
if (!this.bothBucEnabled)
|
||||||
|
return;
|
||||||
|
|
||||||
|
try {
|
||||||
|
const sorted = bookManager.getSortedRecent();
|
||||||
|
|
||||||
|
//выберем все кандидиаты на обновление
|
||||||
|
const updateUrls = new Set();
|
||||||
|
for (const book of sorted) {
|
||||||
|
if (!book.deleted && book.checkBuc && book.url && book.url.indexOf('disk://') !== 0)
|
||||||
|
updateUrls.add(book.url);
|
||||||
|
}
|
||||||
|
|
||||||
|
//теперь по кусочкам запросим сервер
|
||||||
|
const arr = Array.from(updateUrls);
|
||||||
|
const chunkSize = 100;
|
||||||
|
for (let i = 0; i < arr.length; i += chunkSize) {
|
||||||
|
const chunk = arr.slice(i, i + chunkSize);
|
||||||
|
|
||||||
|
const data = await readerApi.checkBuc(chunk);
|
||||||
|
console.log(data);
|
||||||
|
await utils.sleep(1000);//чтобы не ддосить сервер
|
||||||
|
}
|
||||||
|
console.log('checkBuc finished', arr);
|
||||||
|
} catch (e) {
|
||||||
|
console.error(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
checkSetStorageAccessKey() {
|
checkSetStorageAccessKey() {
|
||||||
const q = this.$route.query;
|
const q = this.$route.query;
|
||||||
|
|
||||||
@@ -620,6 +665,10 @@ class Reader {
|
|||||||
return versionHistory[0].version;
|
return versionHistory[0].version;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
get bothBucEnabled() {
|
||||||
|
return this.$store.state.config.bucEnabled && this.bucEnabled;
|
||||||
|
}
|
||||||
|
|
||||||
get routeParamUrl() {
|
get routeParamUrl() {
|
||||||
let result = '';
|
let result = '';
|
||||||
const path = this.$route.fullPath;
|
const path = this.$route.fullPath;
|
||||||
|
|||||||
@@ -192,7 +192,14 @@ const settingDefaults = {
|
|||||||
recentShowSameBook: false,
|
recentShowSameBook: false,
|
||||||
recentSortMethod: '',
|
recentSortMethod: '',
|
||||||
|
|
||||||
|
//Book Update Checker
|
||||||
|
bucEnabled: true, // общее включение/выключение проверки обновлений
|
||||||
|
bucSizeDiff: 1000, // разница в размерах файла, при которой показывать наличие обновления
|
||||||
|
bucSetOnNew: true, // автоматически включать проверку обновлений для вновь загружаемых файлов
|
||||||
|
|
||||||
|
//для SettingsPage
|
||||||
needUpdateSettingsView: 0,
|
needUpdateSettingsView: 0,
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
for (const font of fonts)
|
for (const font of fonts)
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ module.exports = {
|
|||||||
|
|
||||||
useExternalBookConverter: false,
|
useExternalBookConverter: false,
|
||||||
acceptFileExt: '.fb2, .fb3, .html, .txt, .zip, .bz2, .gz, .rar, .epub, .mobi, .rtf, .doc, .docx, .pdf, .djvu, .jpg, .jpeg, .png',
|
acceptFileExt: '.fb2, .fb3, .html, .txt, .zip, .bz2, .gz, .rar, .epub, .mobi, .rtf, .doc, .docx, .pdf, .djvu, .jpg, .jpeg, .png',
|
||||||
webConfigParams: ['name', 'version', 'mode', 'maxUploadFileSize', 'useExternalBookConverter', 'acceptFileExt', 'branch'],
|
webConfigParams: ['name', 'version', 'mode', 'maxUploadFileSize', 'useExternalBookConverter', 'acceptFileExt', 'bucEnabled', 'branch'],
|
||||||
|
|
||||||
jembaDb: [
|
jembaDb: [
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user