multiple fixes related to all nodejs features
This commit is contained in:
parent
32e8f1f2a0
commit
d1b9039bba
|
@ -107,7 +107,7 @@ void WebBrowser::createConnections() {
|
|||
connect(qApp->web()->readability(), &Readability::errorOnHtmlReadabiliting, this, &WebBrowser::readabilityFailed);
|
||||
|
||||
connect(qApp->web()->articleParse(), &ArticleParse::articleParsed, this, &WebBrowser::setFullArticleHtml);
|
||||
connect(qApp->web()->articleParse(), &ArticleParse::errorOnArticlePArsing, this, &WebBrowser::fullArticleFailed);
|
||||
connect(qApp->web()->articleParse(), &ArticleParse::errorOnArticleParsing, this, &WebBrowser::fullArticleFailed);
|
||||
}
|
||||
|
||||
void WebBrowser::updateUrl(const QUrl& url) {
|
||||
|
@ -306,13 +306,13 @@ void WebBrowser::newWindowRequested(WebViewer* viewer) {
|
|||
qApp->mainForm()->tabWidget()->addBrowser(false, false, browser);
|
||||
}
|
||||
|
||||
void WebBrowser::setReadabledHtml(QObject* sndr, const QString& better_html) {
|
||||
void WebBrowser::setReadabledHtml(const QObject* sndr, const QString& better_html) {
|
||||
if (sndr == this && !better_html.isEmpty()) {
|
||||
m_webView->setReadabledHtml(better_html, m_webView->url());
|
||||
}
|
||||
}
|
||||
|
||||
void WebBrowser::readabilityFailed(QObject* sndr, const QString& error) {
|
||||
void WebBrowser::readabilityFailed(const QObject* sndr, const QString& error) {
|
||||
if (sndr == this && !error.isEmpty()) {
|
||||
m_webView->setReadabledHtml(error, m_webView->url());
|
||||
}
|
||||
|
@ -344,7 +344,7 @@ Message WebBrowser::messageFromExtractor(const QJsonDocument& extracted_data) co
|
|||
return msg;
|
||||
}
|
||||
|
||||
void WebBrowser::setFullArticleHtml(QObject* sndr, const QString& url, const QString& json_answer) {
|
||||
void WebBrowser::setFullArticleHtml(const QObject* sndr, const QString& url, const QString& json_answer) {
|
||||
if (sndr == this && !json_answer.isEmpty()) {
|
||||
QJsonDocument json_doc = QJsonDocument::fromJson(json_answer.toUtf8());
|
||||
|
||||
|
@ -385,7 +385,7 @@ void WebBrowser::setFullArticleHtml(QObject* sndr, const QString& url, const QSt
|
|||
}
|
||||
}
|
||||
|
||||
void WebBrowser::fullArticleFailed(QObject* sndr, const QString& error) {
|
||||
void WebBrowser::fullArticleFailed(const QObject* sndr, const QString& error) {
|
||||
if (sndr == this && !error.isEmpty()) {
|
||||
m_webView->setReadabledHtml(error, m_webView->url());
|
||||
}
|
||||
|
|
|
@ -76,11 +76,11 @@ class RSSGUARD_DLLSPEC WebBrowser : public TabContent {
|
|||
void readabilePage();
|
||||
void getFullArticle();
|
||||
|
||||
void setReadabledHtml(QObject* sndr, const QString& better_html);
|
||||
void readabilityFailed(QObject* sndr, const QString& error);
|
||||
void setReadabledHtml(const QObject* sndr, const QString& better_html);
|
||||
void readabilityFailed(const QObject* sndr, const QString& error);
|
||||
|
||||
void setFullArticleHtml(QObject* sndr, const QString &url, const QString& json_answer);
|
||||
void fullArticleFailed(QObject* sndr, const QString& error);
|
||||
void setFullArticleHtml(const QObject* sndr, const QString& url, const QString& json_answer);
|
||||
void fullArticleFailed(const QObject* sndr, const QString& error);
|
||||
|
||||
signals:
|
||||
void windowCloseRequested();
|
||||
|
|
|
@ -1369,19 +1369,25 @@ void Application::fillCmdArgumentsParser(QCommandLineParser& parser) {
|
|||
QSL("[url-1 ... url-n]"));
|
||||
}
|
||||
|
||||
void Application::onNodeJsPackageUpdateError(const QList<NodeJs::PackageMetadata>& pkgs, const QString& error) {
|
||||
void Application::onNodeJsPackageUpdateError(const QObject* sndr,
|
||||
const QList<NodeJs::PackageMetadata>& pkgs,
|
||||
const QString& error) {
|
||||
Q_UNUSED(sndr)
|
||||
qApp->showGuiMessage(Notification::Event::NodePackageFailedToUpdate,
|
||||
{{},
|
||||
tr("Packages %1 were NOT updated because of error: %2.")
|
||||
{tr("Node.js"),
|
||||
tr("Packages were NOT updated because of error: %2. Affected packages:\n%1")
|
||||
.arg(NodeJs::packagesToString(pkgs), error),
|
||||
QSystemTrayIcon::MessageIcon::Critical});
|
||||
}
|
||||
|
||||
void Application::onNodeJsPackageInstalled(const QList<NodeJs::PackageMetadata>& pkgs, bool already_up_to_date) {
|
||||
void Application::onNodeJsPackageInstalled(const QObject* sndr,
|
||||
const QList<NodeJs::PackageMetadata>& pkgs,
|
||||
bool already_up_to_date) {
|
||||
Q_UNUSED(sndr)
|
||||
if (!already_up_to_date) {
|
||||
qApp->showGuiMessage(Notification::Event::NodePackageUpdated,
|
||||
{{},
|
||||
tr("Packages %1 were updated.").arg(NodeJs::packagesToString(pkgs)),
|
||||
{tr("Node.js"),
|
||||
tr("These packages were installed/updated:\n%1").arg(NodeJs::packagesToString(pkgs)),
|
||||
QSystemTrayIcon::MessageIcon::Information});
|
||||
}
|
||||
}
|
||||
|
|
|
@ -218,8 +218,12 @@ class RSSGUARD_DLLSPEC Application : public SingleApplication {
|
|||
void loadMessageToFeedAndArticleList(Feed* feed, const Message& message);
|
||||
void fillCmdArgumentsParser(QCommandLineParser& parser);
|
||||
|
||||
void onNodeJsPackageUpdateError(const QList<NodeJs::PackageMetadata>& pkgs, const QString& error);
|
||||
void onNodeJsPackageInstalled(const QList<NodeJs::PackageMetadata>& pkgs, bool already_up_to_date);
|
||||
void onNodeJsPackageUpdateError(const QObject* sndr,
|
||||
const QList<NodeJs::PackageMetadata>& pkgs,
|
||||
const QString& error);
|
||||
void onNodeJsPackageInstalled(const QObject* sndr,
|
||||
const QList<NodeJs::PackageMetadata>& pkgs,
|
||||
bool already_up_to_date);
|
||||
void onCommitData(QSessionManager& manager);
|
||||
void onSaveState(QSessionManager& manager);
|
||||
void onAboutToQuit();
|
||||
|
|
|
@ -110,7 +110,7 @@ NodeJs::PackageStatus NodeJs::packageStatus(const PackageMetadata& pkg) const {
|
|||
}
|
||||
}
|
||||
|
||||
void NodeJs::installUpdatePackages(const QList<PackageMetadata>& pkgs) {
|
||||
void NodeJs::installUpdatePackages(const QObject* sndr, const QList<PackageMetadata>& pkgs) {
|
||||
QList<PackageMetadata> to_install;
|
||||
QStringList desc;
|
||||
|
||||
|
@ -130,19 +130,17 @@ void NodeJs::installUpdatePackages(const QList<PackageMetadata>& pkgs) {
|
|||
}
|
||||
}
|
||||
catch (const ApplicationException& ex) {
|
||||
emit packageError(pkgs, ex.message());
|
||||
|
||||
emit packageError(sndr, pkgs, ex.message());
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (to_install.isEmpty()) {
|
||||
qDebugNN << LOGSEC_NODEJS << "Packages" << QUOTE_W_SPACE(desc.join(QL1S(", "))) << "are up-to-date.";
|
||||
|
||||
emit packageInstalledUpdated(pkgs, true);
|
||||
emit packageInstalledUpdated(sndr, pkgs, true);
|
||||
}
|
||||
else {
|
||||
installPackages(pkgs);
|
||||
installPackages(sndr, pkgs);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -150,15 +148,20 @@ QString NodeJs::packagesToString(const QList<PackageMetadata>& pkgs) {
|
|||
QStringList desc;
|
||||
|
||||
for (const PackageMetadata& mt : pkgs) {
|
||||
desc << QSL("%1@%2").arg(mt.m_name, mt.m_version);
|
||||
desc << QSL("\u2022 %1@%2").arg(mt.m_name, mt.m_version);
|
||||
}
|
||||
|
||||
return desc.join(QL1S(", "));
|
||||
return desc.join(QL1S("\n"));
|
||||
}
|
||||
|
||||
void NodeJs::installPackages(const QList<PackageMetadata>& pkgs) {
|
||||
void NodeJs::installPackages(const QObject* sndr, const QList<PackageMetadata>& pkgs) {
|
||||
QStringList to_install;
|
||||
|
||||
qApp->showGuiMessage(Notification::Event::NodePackageUpdated,
|
||||
GuiMessage(tr("Node.js"),
|
||||
tr("Some packages are missing and will be installed or updated:\n%1")
|
||||
.arg(packagesToString(pkgs))));
|
||||
|
||||
try {
|
||||
for (const PackageMetadata& mt : pkgs) {
|
||||
to_install.append(QSL("%1@%2").arg(mt.m_name, mt.m_version));
|
||||
|
@ -169,32 +172,31 @@ void NodeJs::installPackages(const QList<PackageMetadata>& pkgs) {
|
|||
connect(proc,
|
||||
QOverload<int, QProcess::ExitStatus>::of(&QProcess::finished),
|
||||
this,
|
||||
[pkgs, this](int exit_code, QProcess::ExitStatus status) {
|
||||
QProcess* sndr = qobject_cast<QProcess*>(sender());
|
||||
[=](int exit_code, QProcess::ExitStatus status) {
|
||||
QProcess* proc_sndr = qobject_cast<QProcess*>(sender());
|
||||
|
||||
if (exit_code != EXIT_SUCCESS || status == QProcess::ExitStatus::CrashExit) {
|
||||
qCriticalNN << LOGSEC_NODEJS << "Error when installing packages"
|
||||
<< QUOTE_W_SPACE_DOT(packagesToString(pkgs))
|
||||
<< " Exit code:" << QUOTE_W_SPACE_DOT(exit_code)
|
||||
<< " Message:" << QUOTE_W_SPACE_DOT(sndr->readAllStandardError());
|
||||
qCriticalNN << LOGSEC_NODEJS << "Error when installing packages\n"
|
||||
<< packagesToString(pkgs) << "\nExit code:" << QUOTE_W_SPACE_DOT(exit_code)
|
||||
<< " Message:" << QUOTE_W_SPACE_DOT(proc_sndr->readAllStandardError());
|
||||
|
||||
emit packageError(pkgs, sndr->errorString());
|
||||
emit packageError(sndr, pkgs, proc_sndr->errorString());
|
||||
}
|
||||
else {
|
||||
qDebugNN << LOGSEC_NODEJS << "Installed/updated packages" << QUOTE_W_SPACE(packagesToString(pkgs));
|
||||
emit packageInstalledUpdated(pkgs, false);
|
||||
emit packageInstalledUpdated(sndr, pkgs, false);
|
||||
}
|
||||
});
|
||||
connect(proc, &QProcess::errorOccurred, this, [pkgs, this](QProcess::ProcessError error) {
|
||||
QProcess* sndr = qobject_cast<QProcess*>(sender());
|
||||
|
||||
qCriticalNN << LOGSEC_NODEJS << "Error when installing packages" << QUOTE_W_SPACE_DOT(packagesToString(pkgs))
|
||||
<< " Message:" << QUOTE_W_SPACE_DOT(error);
|
||||
qCriticalNN << LOGSEC_NODEJS << "Error when installing packages\n"
|
||||
<< packagesToString(pkgs) << "\nMessage:" << QUOTE_W_SPACE_DOT(error);
|
||||
|
||||
emit packageError(pkgs, sndr->errorString());
|
||||
emit packageError(sndr, pkgs, sndr->errorString());
|
||||
});
|
||||
|
||||
qDebugNN << LOGSEC_NODEJS << "Installing packages" << QUOTE_W_SPACE_DOT(packagesToString(pkgs));
|
||||
qDebugNN << LOGSEC_NODEJS << "Installing packages\n" << packagesToString(pkgs);
|
||||
|
||||
to_install.prepend(QSL("--production"));
|
||||
to_install.prepend(QSL("install"));
|
||||
|
@ -208,6 +210,6 @@ void NodeJs::installPackages(const QList<PackageMetadata>& pkgs) {
|
|||
qCriticalNN << LOGSEC_NODEJS << "Packages" << QUOTE_W_SPACE(to_install)
|
||||
<< "were not installed, error:" << QUOTE_W_SPACE_DOT(ex.message());
|
||||
|
||||
emit packageError(pkgs, ex.message());
|
||||
emit packageError(sndr, pkgs, ex.message());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -61,15 +61,15 @@ class NodeJs : public QObject {
|
|||
// If package IS installed but out-of-date, it is updated to desired versions.
|
||||
//
|
||||
// NOTE: https://docs.npmjs.com/cli/v8/commands/npm-install
|
||||
void installUpdatePackages(const QList<PackageMetadata>& pkgs);
|
||||
void installUpdatePackages(const QObject* sndr, const QList<PackageMetadata>& pkgs);
|
||||
|
||||
void installPackages(const QList<PackageMetadata>& pkgs);
|
||||
void installPackages(const QObject* sndr, const QList<PackageMetadata>& pkgs);
|
||||
|
||||
static QString packagesToString(const QList<PackageMetadata>& pkgs);
|
||||
|
||||
signals:
|
||||
void packageError(const QList<PackageMetadata>& pkgs, const QString& error);
|
||||
void packageInstalledUpdated(const QList<PackageMetadata>& pkgs, bool already_up_to_date);
|
||||
void packageError(const QObject* sndr, const QList<PackageMetadata>& pkgs, const QString& error);
|
||||
void packageInstalledUpdated(const QObject* sndr, const QList<PackageMetadata>& pkgs, bool already_up_to_date);
|
||||
|
||||
private:
|
||||
Settings* m_settings;
|
||||
|
|
|
@ -106,7 +106,7 @@ void AdBlockManager::setEnabled(bool enabled) {
|
|||
if (m_enabled) {
|
||||
if (!m_installing) {
|
||||
m_installing = true;
|
||||
qApp->nodejs()->installUpdatePackages({{QSL(CLIQZ_ADBLOCKED_PACKAGE), QSL(CLIQZ_ADBLOCKED_VERSION)}});
|
||||
qApp->nodejs()->installUpdatePackages(this, {{QSL(CLIQZ_ADBLOCKED_PACKAGE), QSL(CLIQZ_ADBLOCKED_VERSION)}});
|
||||
}
|
||||
}
|
||||
else {
|
||||
|
@ -177,7 +177,9 @@ void AdBlockManager::showDialog() {
|
|||
AdBlockDialog(qApp->mainFormWidget()).exec();
|
||||
}
|
||||
|
||||
void AdBlockManager::onPackageReady(const QList<NodeJs::PackageMetadata>& pkgs, bool already_up_to_date) {
|
||||
void AdBlockManager::onPackageReady(const QObject* sndr,
|
||||
const QList<NodeJs::PackageMetadata>& pkgs,
|
||||
bool already_up_to_date) {
|
||||
Q_UNUSED(already_up_to_date)
|
||||
|
||||
bool concerns_adblock = boolinq::from(pkgs).any([](const NodeJs::PackageMetadata& pkg) {
|
||||
|
@ -201,7 +203,9 @@ void AdBlockManager::onPackageReady(const QList<NodeJs::PackageMetadata>& pkgs,
|
|||
}
|
||||
}
|
||||
|
||||
void AdBlockManager::onPackageError(const QList<NodeJs::PackageMetadata>& pkgs, const QString& error) {
|
||||
void AdBlockManager::onPackageError(const QObject* sndr,
|
||||
const QList<NodeJs::PackageMetadata>& pkgs,
|
||||
const QString& error) {
|
||||
bool concerns_adblock = boolinq::from(pkgs).any([](const NodeJs::PackageMetadata& pkg) {
|
||||
return pkg.m_name == QSL(CLIQZ_ADBLOCKED_PACKAGE);
|
||||
});
|
||||
|
|
|
@ -69,8 +69,8 @@ class AdBlockManager : public QObject {
|
|||
void processTerminated();
|
||||
|
||||
private slots:
|
||||
void onPackageReady(const QList<NodeJs::PackageMetadata>& pkgs, bool already_up_to_date);
|
||||
void onPackageError(const QList<NodeJs::PackageMetadata>& pkgs, const QString& error);
|
||||
void onPackageReady(const QObject* sndr, const QList<NodeJs::PackageMetadata>& pkgs, bool already_up_to_date);
|
||||
void onPackageError(const QObject* sndr, const QList<NodeJs::PackageMetadata>& pkgs, const QString& error);
|
||||
void onServerProcessFinished(int exit_code, QProcess::ExitStatus exit_status);
|
||||
|
||||
private:
|
||||
|
|
|
@ -19,7 +19,9 @@ ArticleParse::ArticleParse(QObject* parent) : QObject{parent}, m_modulesInstalli
|
|||
connect(qApp->nodejs(), &NodeJs::packageError, this, &ArticleParse::onPackageError);
|
||||
}
|
||||
|
||||
void ArticleParse::onPackageReady(const QList<NodeJs::PackageMetadata>& pkgs, bool already_up_to_date) {
|
||||
void ArticleParse::onPackageReady(const QObject* sndr,
|
||||
const QList<NodeJs::PackageMetadata>& pkgs,
|
||||
bool already_up_to_date) {
|
||||
Q_UNUSED(already_up_to_date)
|
||||
|
||||
bool concerns_extractor = boolinq::from(pkgs).any([](const NodeJs::PackageMetadata& pkg) {
|
||||
|
@ -40,10 +42,12 @@ void ArticleParse::onPackageReady(const QList<NodeJs::PackageMetadata>& pkgs, bo
|
|||
{true, true, false});
|
||||
|
||||
// Emit this just to allow the action again for user.
|
||||
emit articleParsed(nullptr, {}, tr("Packages for article-extractor are installed. You can now use this feature!"));
|
||||
emit errorOnArticleParsing(sndr, tr("Packages for article-extractor are installed. You can now use this feature!"));
|
||||
}
|
||||
|
||||
void ArticleParse::onPackageError(const QList<NodeJs::PackageMetadata>& pkgs, const QString& error) {
|
||||
void ArticleParse::onPackageError(const QObject* sndr,
|
||||
const QList<NodeJs::PackageMetadata>& pkgs,
|
||||
const QString& error) {
|
||||
bool concerns_extractor = boolinq::from(pkgs).any([](const NodeJs::PackageMetadata& pkg) {
|
||||
return pkg.m_name == QSL(EXTRACTOR_PACKAGE);
|
||||
});
|
||||
|
@ -61,9 +65,8 @@ void ArticleParse::onPackageError(const QList<NodeJs::PackageMetadata>& pkgs, co
|
|||
{true, true, false});
|
||||
|
||||
// Emit this just to allow readability again for user.
|
||||
emit articleParsed(nullptr,
|
||||
{},
|
||||
tr("Packages for article-extractor are NOT installed. There is error: %1").arg(error));
|
||||
emit errorOnArticleParsing(sndr,
|
||||
tr("Packages for article-extractor are NOT installed. There is error: %1").arg(error));
|
||||
}
|
||||
|
||||
void ArticleParse::parseArticle(QObject* sndr, const QString& url) {
|
||||
|
@ -85,15 +88,8 @@ void ArticleParse::parseArticle(QObject* sndr, const QString& url) {
|
|||
if (!m_modulesInstalling) {
|
||||
// We make sure to update modules.
|
||||
m_modulesInstalling = true;
|
||||
|
||||
qApp->showGuiMessage(Notification::Event::NodePackageUpdated,
|
||||
{tr("Node.js libraries not installed"),
|
||||
tr("%1 will now install some needed libraries, this will take only a few seconds. "
|
||||
"You will be notified when installation is complete.")
|
||||
.arg(QSL(APP_NAME)),
|
||||
QSystemTrayIcon::MessageIcon::Warning},
|
||||
{true, true, false});
|
||||
qApp->nodejs()->installUpdatePackages({{QSL(EXTRACTOR_PACKAGE), QSL(EXTRACTOR_VERSION)},
|
||||
qApp->nodejs()->installUpdatePackages(sndr,
|
||||
{{QSL(EXTRACTOR_PACKAGE), QSL(EXTRACTOR_VERSION)},
|
||||
{QSL(FETCH_PACKAGE), QSL(FETCH_VERSION)}});
|
||||
}
|
||||
|
||||
|
@ -134,7 +130,7 @@ void ArticleParse::parseArticle(QObject* sndr, const QString& url) {
|
|||
qApp->nodejs()->runScript(proc, m_scriptFilename, {url});
|
||||
}
|
||||
|
||||
void ArticleParse::onParsingFinished(QObject* sndr,
|
||||
void ArticleParse::onParsingFinished(const QObject *sndr,
|
||||
const QString& url,
|
||||
int exit_code,
|
||||
QProcess::ExitStatus exit_status) {
|
||||
|
@ -145,7 +141,7 @@ void ArticleParse::onParsingFinished(QObject* sndr,
|
|||
}
|
||||
else {
|
||||
QString err = QString::fromUtf8(proc->readAllStandardError());
|
||||
emit errorOnArticlePArsing(sndr, err);
|
||||
emit errorOnArticleParsing(sndr, err);
|
||||
}
|
||||
|
||||
proc->deleteLater();
|
||||
|
|
|
@ -17,13 +17,13 @@ class ArticleParse : public QObject {
|
|||
void parseArticle(QObject* sndr, const QString& url);
|
||||
|
||||
private slots:
|
||||
void onParsingFinished(QObject* sndr, const QString& url, int exit_code, QProcess::ExitStatus exit_status);
|
||||
void onPackageReady(const QList<NodeJs::PackageMetadata>& pkgs, bool already_up_to_date);
|
||||
void onPackageError(const QList<NodeJs::PackageMetadata>& pkgs, const QString& error);
|
||||
void onParsingFinished(const QObject* sndr, const QString& url, int exit_code, QProcess::ExitStatus exit_status);
|
||||
void onPackageReady(const QObject* sndr, const QList<NodeJs::PackageMetadata>& pkgs, bool already_up_to_date);
|
||||
void onPackageError(const QObject* sndr, const QList<NodeJs::PackageMetadata>& pkgs, const QString& error);
|
||||
|
||||
signals:
|
||||
void articleParsed(QObject* sndr, const QString& url, const QString& better_html);
|
||||
void errorOnArticlePArsing(QObject* sndr, const QString& error);
|
||||
void articleParsed(const QObject* sndr, const QString& url, const QString& better_html);
|
||||
void errorOnArticleParsing(const QObject* sndr, const QString& error);
|
||||
|
||||
private:
|
||||
bool m_modulesInstalling;
|
||||
|
|
|
@ -19,7 +19,9 @@ Readability::Readability(QObject* parent) : QObject{parent}, m_modulesInstalling
|
|||
connect(qApp->nodejs(), &NodeJs::packageError, this, &Readability::onPackageError);
|
||||
}
|
||||
|
||||
void Readability::onPackageReady(const QList<NodeJs::PackageMetadata>& pkgs, bool already_up_to_date) {
|
||||
void Readability::onPackageReady(const QObject* sndr,
|
||||
const QList<NodeJs::PackageMetadata>& pkgs,
|
||||
bool already_up_to_date) {
|
||||
Q_UNUSED(already_up_to_date)
|
||||
|
||||
bool concerns_readability = boolinq::from(pkgs).any([](const NodeJs::PackageMetadata& pkg) {
|
||||
|
@ -40,10 +42,12 @@ void Readability::onPackageReady(const QList<NodeJs::PackageMetadata>& pkgs, boo
|
|||
{true, true, false});
|
||||
|
||||
// Emit this just to allow readability again for user.
|
||||
emit htmlReadabled(nullptr, tr("Packages for reader mode are installed. You can now use reader mode!"));
|
||||
emit errorOnHtmlReadabiliting(sndr, tr("Packages for reader mode are installed. You can now use reader mode!"));
|
||||
}
|
||||
|
||||
void Readability::onPackageError(const QList<NodeJs::PackageMetadata>& pkgs, const QString& error) {
|
||||
void Readability::onPackageError(const QObject* sndr,
|
||||
const QList<NodeJs::PackageMetadata>& pkgs,
|
||||
const QString& error) {
|
||||
bool concerns_readability = boolinq::from(pkgs).any([](const NodeJs::PackageMetadata& pkg) {
|
||||
return pkg.m_name == QSL(READABILITY_PACKAGE);
|
||||
});
|
||||
|
@ -61,29 +65,22 @@ void Readability::onPackageError(const QList<NodeJs::PackageMetadata>& pkgs, con
|
|||
{true, true, false});
|
||||
|
||||
// Emit this just to allow readability again for user.
|
||||
emit htmlReadabled(nullptr, tr("Packages for reader mode are NOT installed. There is error: %1").arg(error));
|
||||
emit errorOnHtmlReadabiliting(sndr, tr("Packages for reader mode are NOT installed. There is error: %1").arg(error));
|
||||
}
|
||||
|
||||
void Readability::makeHtmlReadable(QObject* sndr, const QString& html, const QString& base_url) {
|
||||
if (!m_modulesInstalled) {
|
||||
try {
|
||||
NodeJs::PackageStatus stReadability =
|
||||
NodeJs::PackageStatus st_readability =
|
||||
qApp->nodejs()->packageStatus({QSL(READABILITY_PACKAGE), QSL(READABILITY_VERSION)});
|
||||
NodeJs::PackageStatus stJsdom = qApp->nodejs()->packageStatus({QSL(JSDOM_PACKAGE), QSL(JSDOM_VERSION)});
|
||||
NodeJs::PackageStatus st_jsdom = qApp->nodejs()->packageStatus({QSL(JSDOM_PACKAGE), QSL(JSDOM_VERSION)});
|
||||
|
||||
if (stReadability != NodeJs::PackageStatus::UpToDate || stJsdom != NodeJs::PackageStatus::UpToDate) {
|
||||
if (st_readability != NodeJs::PackageStatus::UpToDate || st_jsdom != NodeJs::PackageStatus::UpToDate) {
|
||||
if (!m_modulesInstalling) {
|
||||
// We make sure to update modules.
|
||||
m_modulesInstalling = true;
|
||||
|
||||
qApp->showGuiMessage(Notification::Event::NodePackageUpdated,
|
||||
{tr("Node.js libraries not installed"),
|
||||
tr("%1 will now install some needed libraries, this will take only a few seconds. "
|
||||
"You will be notified when installation is complete.")
|
||||
.arg(QSL(APP_NAME)),
|
||||
QSystemTrayIcon::MessageIcon::Warning},
|
||||
{true, true, false});
|
||||
qApp->nodejs()->installUpdatePackages({{QSL(READABILITY_PACKAGE), QSL(READABILITY_VERSION)},
|
||||
qApp->nodejs()->installUpdatePackages(sndr,
|
||||
{{QSL(READABILITY_PACKAGE), QSL(READABILITY_VERSION)},
|
||||
{QSL(JSDOM_PACKAGE), QSL(JSDOM_VERSION)}});
|
||||
}
|
||||
|
||||
|
@ -104,9 +101,10 @@ void Readability::makeHtmlReadable(QObject* sndr, const QString& html, const QSt
|
|||
qCriticalNN << LOGSEC_CORE << "Failed to check for Node.js package status:" << QUOTE_W_SPACE_DOT(ex.message());
|
||||
|
||||
// Emit this just to allow readability again for user.
|
||||
emit htmlReadabled(sndr,
|
||||
tr("Node.js is not configured properly. Go to \"Settings\" -> \"Node.js\" and check "
|
||||
"if your Node.js is properly configured."));
|
||||
emit
|
||||
errorOnHtmlReadabiliting(sndr,
|
||||
tr("Node.js is not configured properly. Go to \"Settings\" -> \"Node.js\" and check "
|
||||
"if your Node.js is properly configured."));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -18,12 +18,12 @@ class Readability : public QObject {
|
|||
|
||||
private slots:
|
||||
void onReadabilityFinished(QObject* sndr, int exit_code, QProcess::ExitStatus exit_status);
|
||||
void onPackageReady(const QList<NodeJs::PackageMetadata>& pkgs, bool already_up_to_date);
|
||||
void onPackageError(const QList<NodeJs::PackageMetadata>& pkgs, const QString& error);
|
||||
void onPackageReady(const QObject* sndr, const QList<NodeJs::PackageMetadata>& pkgs, bool already_up_to_date);
|
||||
void onPackageError(const QObject* sndr, const QList<NodeJs::PackageMetadata>& pkgs, const QString& error);
|
||||
|
||||
signals:
|
||||
void htmlReadabled(QObject* sndr, const QString& better_html);
|
||||
void errorOnHtmlReadabiliting(QObject* sndr, const QString& error);
|
||||
void htmlReadabled(const QObject* sndr, const QString& better_html);
|
||||
void errorOnHtmlReadabiliting(const QObject* sndr, const QString& error);
|
||||
|
||||
private:
|
||||
bool m_modulesInstalling;
|
||||
|
|
Loading…
Reference in New Issue