Добавлен параметр "Включить html-фильтр для сайтов" в раздел "Вид"->"Текст" в настройках

This commit is contained in:
Book Pauk
2019-10-18 19:13:17 +07:00
parent e2bea407ee
commit d76f60639c
9 changed files with 42 additions and 12 deletions

View File

@@ -15,7 +15,10 @@ class ReaderController extends BaseController {
try {
if (!request.url)
throw new Error(`key 'url' is empty`);
const workerId = this.readerWorker.loadBookUrl(request.url);
const workerId = this.readerWorker.loadBookUrl({
url: request.url,
enableSitesFilter: (request.hasOwnProperty('enableSitesFilter') ? request.enableSitesFilter : true)
});
const state = workerState.getState(workerId);
return (state ? state : {});
} catch (e) {

View File

@@ -20,6 +20,9 @@ class ConvertSamlib extends ConvertBase {
}
async run(data, opts) {
if (!opts.enableSitesFilter)
return false;
const checkResult = this.check(data, opts);
if (!checkResult)
return false;

View File

@@ -29,6 +29,9 @@ class ConvertSites extends ConvertHtml {
}
async run(data, opts) {
if (!opts.enableSitesFilter)
return false;
const checkResult = this.check(data, opts);
if (!checkResult)
return false;

View File

@@ -25,13 +25,14 @@ class BookConverter {
}
}
async convertToFb2(inputFiles, outputFile, url, callback) {
async convertToFb2(inputFiles, outputFile, opts, callback) {
const selectedFileType = await this.detector.detectFile(inputFiles.selectedFile);
const data = await fs.readFile(inputFiles.selectedFile);
const convertOpts = Object.assign({}, opts, {inputFiles, callback, dataType: selectedFileType});
let result = false;
for (const convert of this.convertFactory) {
result = await convert.run(data, {inputFiles, url, callback, dataType: selectedFileType});
result = await convert.run(data, convertOpts);
if (result) {
await fs.writeFile(outputFile, result);
break;
@@ -39,14 +40,14 @@ class BookConverter {
}
if (!result && inputFiles.nesting) {
result = await this.convertToFb2(inputFiles.nesting, outputFile, url, callback);
result = await this.convertToFb2(inputFiles.nesting, outputFile, opts, callback);
}
if (!result) {
if (selectedFileType)
throw new Error(`Этот формат файла не поддерживается: ${selectedFileType.mime}`);
else {
throw new Error(`Не удалось определить формат файла: ${url}`);
throw new Error(`Не удалось определить формат файла: ${opts.url}`);
}
}

View File

@@ -32,7 +32,8 @@ class ReaderWorker {
}
}
async loadBook(url, wState) {
async loadBook(opts, wState) {
const url = opts.url;
let errMes = '';
let decompDir = '';
let downloadedFilename = '';
@@ -77,7 +78,7 @@ class ReaderWorker {
//конвертирование в fb2
wState.set({state: 'convert', step: 3, progress: 0});
convertFilename = `${this.config.tempDownloadDir}/${tempFilename2}`;
await this.bookConverter.convertToFb2(decompFiles, convertFilename, url, progress => {
await this.bookConverter.convertToFb2(decompFiles, convertFilename, opts, progress => {
wState.set({progress});
});
@@ -105,12 +106,12 @@ class ReaderWorker {
}
}
loadBookUrl(url) {
loadBookUrl(opts) {
const workerId = workerState.generateWorkerId();
const wState = workerState.getControl(workerId);
wState.set({state: 'start'});
this.loadBook(url, wState);
this.loadBook(opts, wState);
return workerId;
}