From a5e61539e7a5603d852768ace891c2b3ddf79fe6 Mon Sep 17 00:00:00 2001 From: daniel-j Date: Wed, 7 Jun 2017 16:17:40 +0200 Subject: [PATCH] Firefox support --- src/FimFic2Epub.js | 11 +++++++++-- src/cleanMarkup.js | 11 ++++------- src/fetch.js | 3 +++ src/main.js | 18 ++++++++++++++---- 4 files changed, 30 insertions(+), 13 deletions(-) diff --git a/src/FimFic2Epub.js b/src/FimFic2Epub.js index ddc54d3..824ed97 100644 --- a/src/FimFic2Epub.js +++ b/src/FimFic2Epub.js @@ -454,11 +454,18 @@ class FimFic2Epub extends Emitter { } // Internal/private methods - progress (part, percent, status) { + progress (part, percent, status = '') { // let parts = 6.3 // let partsize = 1 / parts // percent = (part / parts) + percent * partsize - this.trigger('progress', percent, status) + try { + this.trigger('progress', percent, status) + } catch (err) { + console.error(err) + } + if (status) { + console.log(status) + } } findRemoteResources (prefix, where, html) { diff --git a/src/cleanMarkup.js b/src/cleanMarkup.js index cd81c38..93371ca 100644 --- a/src/cleanMarkup.js +++ b/src/cleanMarkup.js @@ -14,9 +14,9 @@ export function cleanMarkup (html) { } return new Promise((resolve, reject) => { - // replace HTML non-breaking spaces with normal spaces - html = html.replace(/ /g, ' ') - html = html.replace(/ /g, ' ') + // replace HTML entities with decimal entities + html = html.replace(/ /g, ' ') + html = html.replace(/ /g, ' ') // fix some tags html = html.replace(//g, '') @@ -27,10 +27,7 @@ export function cleanMarkup (html) { html = html.replace(/

\s*/g, '

') html = html.replace(/\s*<\/p>/g, '

') - html = html.replace(/

/g, '

') - html = html.replace(/<\/div><\/p>/g, '') - - html = fixParagraphIndent(html) + // html = fixParagraphIndent(html) html = fixDoubleSpacing(html) diff --git a/src/fetch.js b/src/fetch.js index fd15899..769da3a 100644 --- a/src/fetch.js +++ b/src/fetch.js @@ -28,6 +28,9 @@ export default function fetch (url, responseType) { if (url.indexOf('//') === 0) { url = 'http:' + url } + if (url.indexOf('/') === 0) { + url = 'https://fimfiction.net' + url + } if (isNode) { return fetchNode(url, responseType) diff --git a/src/main.js b/src/main.js index eadcfdc..2501e42 100644 --- a/src/main.js +++ b/src/main.js @@ -98,6 +98,14 @@ function selectOptions (list, selected = '') { }) } +function redraw (arg) { + try { + m.redraw(arg) + } catch (err) { + console.log(err) + } +} + let ffcProgress = m.prop(0) let ffcStatus = m.prop('') @@ -140,12 +148,14 @@ let dialog = { this.author(ffc.storyInfo.author.name) this.description(ffc.storyInfo.short_description) this.subjects(ffc.subjects.slice(0)) - m.redraw(true) + redraw(true) this.center() ffc.fetchChapters().then(() => { ffcProgress(-1) - m.redraw() + redraw() }) + }).catch((err) => { + throw err }) } } @@ -232,7 +242,7 @@ let dialog = { ffc.options.paragraphStyle = this.paragraphStyle() ffc.subjects = this.subjects() ffc.options.joinSubjects = this.joinSubjects() - m.redraw() + redraw() chain .then(ffc.fetchAll.bind(ffc)) @@ -337,7 +347,7 @@ function onProgress (percent, status) { if (status) { ffcStatus(status) } - m.redraw() + redraw() } if (pageStoryId && isChromeExt) {