new notification events for nodejs packages info
This commit is contained in:
parent
f9d0607adf
commit
d21520f28a
@ -26,7 +26,7 @@
|
||||
<url type="donation">https://github.com/sponsors/martinrotter</url>
|
||||
<content_rating type="oars-1.1" />
|
||||
<releases>
|
||||
<release version="4.1.2" date="2022-02-10"/>
|
||||
<release version="4.1.2" date="2022-02-11"/>
|
||||
</releases>
|
||||
<content_rating type="oars-1.0">
|
||||
<content_attribute id="violence-cartoon">none</content_attribute>
|
||||
|
@ -15,7 +15,6 @@
|
||||
#include "miscellaneous/iconfactory.h"
|
||||
#include "miscellaneous/iofactory.h"
|
||||
#include "miscellaneous/mutex.h"
|
||||
#include "miscellaneous/nodejs.h"
|
||||
#include "miscellaneous/notificationfactory.h"
|
||||
#include "network-web/webfactory.h"
|
||||
#include "services/abstract/serviceroot.h"
|
||||
@ -91,6 +90,9 @@ Application::Application(const QString& id, int& argc, char** argv)
|
||||
connect(this, &Application::commitDataRequest, this, &Application::onCommitData);
|
||||
connect(this, &Application::saveStateRequest, this, &Application::onSaveState);
|
||||
|
||||
connect(m_nodejs, &NodeJs::packageError, this, &Application::onNodeJsPackageUpdateError);
|
||||
connect(m_nodejs, &NodeJs::packageInstalledUpdated, this, &Application::onNodeJsPackageInstalled);
|
||||
|
||||
#if defined(Q_OS_UNIX) && !defined(Q_OS_MACOS)
|
||||
QString app_dir = QString::fromLocal8Bit(qgetenv("APPDIR"));
|
||||
|
||||
@ -132,7 +134,9 @@ Application::Application(const QString& id, int& argc, char** argv)
|
||||
Notification(Notification::Event::NewUnreadArticlesFetched, true,
|
||||
QSL("%1/notify.wav").arg(SOUNDS_BUILTIN_DIRECTORY)),
|
||||
Notification(Notification::Event::NewAppVersionAvailable, true),
|
||||
Notification(Notification::Event::LoginFailure, true)
|
||||
Notification(Notification::Event::LoginFailure, true),
|
||||
Notification(Notification::Event::NodePackageUpdated, true),
|
||||
Notification(Notification::Event::NodePackageFailedToUpdate, true)
|
||||
}, settings());
|
||||
}
|
||||
else {
|
||||
@ -141,8 +145,6 @@ Application::Application(const QString& id, int& argc, char** argv)
|
||||
|
||||
QTimer::singleShot(1000, system(), &SystemFactory::checkForUpdatesOnStartup);
|
||||
|
||||
//nodejs()->installUpdatePackage({ "@cliqz/adblocker", ">=1.0.0 <2.0.0" });
|
||||
|
||||
qDebugNN << LOGSEC_CORE
|
||||
<< "OpenSSL version:"
|
||||
<< QUOTE_W_SPACE_DOT(QSslSocket::sslLibraryVersionString());
|
||||
@ -535,7 +537,13 @@ void Application::showGuiMessage(Notification::Event event,
|
||||
SystemTrayIcon::isSystemTrayAreaAvailable() &&
|
||||
notification.balloonEnabled() &&
|
||||
dest.m_tray) {
|
||||
trayIcon()->showMessage(msg.m_title, msg.m_message, msg.m_type, TRAY_ICON_BUBBLE_TIMEOUT, std::move(action.m_action));
|
||||
trayIcon()->showMessage(msg.m_title.simplified().isEmpty()
|
||||
? Notification::nameForEvent(notification.event())
|
||||
: msg.m_title,
|
||||
msg.m_message,
|
||||
msg.m_type,
|
||||
TRAY_ICON_BUBBLE_TIMEOUT,
|
||||
std::move(action.m_action));
|
||||
return;
|
||||
}
|
||||
}
|
||||
@ -839,6 +847,24 @@ void Application::parseCmdArgumentsFromMyInstance() {
|
||||
}
|
||||
}
|
||||
|
||||
void Application::onNodeJsPackageUpdateError(const NodeJs::PackageMetadata& pkg, const QString& error) {
|
||||
qApp->showGuiMessage(Notification::Event::NodePackageUpdated,
|
||||
{ {},
|
||||
tr("Package %1 was NOT updated to version %2 because of error: %3.").arg(pkg.m_name,
|
||||
pkg.m_version,
|
||||
error),
|
||||
QSystemTrayIcon::MessageIcon::Critical });
|
||||
}
|
||||
|
||||
void Application::onNodeJsPackageInstalled(const NodeJs::PackageMetadata& pkg, bool already_up_to_date) {
|
||||
if (!already_up_to_date) {
|
||||
qApp->showGuiMessage(Notification::Event::NodePackageUpdated,
|
||||
{ {},
|
||||
tr("Package %1 was updated to version %2.").arg(pkg.m_name, pkg.m_version),
|
||||
QSystemTrayIcon::MessageIcon::Information });
|
||||
}
|
||||
}
|
||||
|
||||
QString Application::customDataFolder() const {
|
||||
return m_customDataFolder;
|
||||
}
|
||||
|
@ -10,6 +10,7 @@
|
||||
#include "miscellaneous/feedreader.h"
|
||||
#include "miscellaneous/iofactory.h"
|
||||
#include "miscellaneous/localization.h"
|
||||
#include "miscellaneous/nodejs.h"
|
||||
#include "miscellaneous/notification.h"
|
||||
#include "miscellaneous/settings.h"
|
||||
#include "miscellaneous/singleapplication.h"
|
||||
@ -33,7 +34,6 @@ class FormMain;
|
||||
class IconFactory;
|
||||
class QAction;
|
||||
class Mutex;
|
||||
class NodeJs;
|
||||
|
||||
#if QT_VERSION_MAJOR == 6
|
||||
class QWebEngineDownloadRequest;
|
||||
@ -172,6 +172,8 @@ class RSSGUARD_DLLSPEC Application : public SingleApplication {
|
||||
void parseCmdArgumentsFromMyInstance();
|
||||
|
||||
private slots:
|
||||
void onNodeJsPackageUpdateError(const NodeJs::PackageMetadata& pkg, const QString& error);
|
||||
void onNodeJsPackageInstalled(const NodeJs::PackageMetadata& pkg, bool already_up_to_date);
|
||||
void onCommitData(QSessionManager& manager);
|
||||
void onSaveState(QSessionManager& manager);
|
||||
void onAboutToQuit();
|
||||
|
@ -106,7 +106,7 @@ void NodeJs::installUpdatePackage(const PackageMetadata& pkg) {
|
||||
case PackageStatus::UpToDate:
|
||||
qDebugNN << LOGSEC_NODEJS << "Package" << QUOTE_W_SPACE(pkg.m_name) << "is up-to-date.";
|
||||
|
||||
emit packageInstalledUpdated(pkg);
|
||||
emit packageInstalledUpdated(pkg, true);
|
||||
|
||||
break;
|
||||
}
|
||||
@ -130,7 +130,7 @@ void NodeJs::installPackage(const PackageMetadata& pkg) {
|
||||
else {
|
||||
qDebugNN << LOGSEC_NODEJS << "Installed/updated package" << QUOTE_W_SPACE(pkg.m_name)
|
||||
<< "with version" << QUOTE_W_SPACE_DOT(pkg.m_version);
|
||||
emit packageInstalledUpdated(pkg);
|
||||
emit packageInstalledUpdated(pkg, false);
|
||||
}
|
||||
});
|
||||
connect(proc, &QProcess::errorOccurred, this, [pkg, this](QProcess::ProcessError error) {
|
||||
|
@ -66,7 +66,7 @@ class NodeJs : public QObject {
|
||||
|
||||
signals:
|
||||
void packageError(const PackageMetadata& pkg, const QString& error);
|
||||
void packageInstalledUpdated(const PackageMetadata& pkg);
|
||||
void packageInstalledUpdated(const PackageMetadata& pkg, bool already_up_to_date);
|
||||
|
||||
private:
|
||||
void installPackage(const PackageMetadata& pkg);
|
||||
|
@ -120,6 +120,8 @@ QList<Notification::Event> Notification::allEvents() {
|
||||
Event::LoginDataRefreshed,
|
||||
Event::LoginFailure,
|
||||
Event::NewAppVersionAvailable,
|
||||
Event::NodePackageUpdated,
|
||||
Event::NodePackageFailedToUpdate
|
||||
};
|
||||
}
|
||||
|
||||
@ -143,6 +145,12 @@ QString Notification::nameForEvent(Notification::Event event) {
|
||||
case Notification::Event::GeneralEvent:
|
||||
return QObject::tr("Miscellaneous events");
|
||||
|
||||
case Notification::Event::NodePackageUpdated:
|
||||
return QObject::tr("Node.js - package updated");
|
||||
|
||||
case Notification::Event::NodePackageFailedToUpdate:
|
||||
return QObject::tr("Node.js - package failed to updated");
|
||||
|
||||
default:
|
||||
return QObject::tr("Unknown event");
|
||||
}
|
||||
|
@ -30,9 +30,17 @@ class Notification {
|
||||
// OAuth or similar mechanism.
|
||||
LoginDataRefreshed = 4,
|
||||
|
||||
// New RSS Guard version available.
|
||||
NewAppVersionAvailable = 5,
|
||||
|
||||
LoginFailure = 6
|
||||
// Some service failed to login.
|
||||
LoginFailure = 6,
|
||||
|
||||
// Node.js - package updated.
|
||||
NodePackageUpdated = 7,
|
||||
|
||||
// Node.js - package failde to update.
|
||||
NodePackageFailedToUpdate = 8
|
||||
};
|
||||
|
||||
explicit Notification(Event event = Event::NoEvent, bool balloon = {}, const QString& sound_path = {},
|
||||
|
@ -23,6 +23,7 @@
|
||||
#include <QJsonObject>
|
||||
#include <QProcess>
|
||||
#include <QString>
|
||||
#include <QVersionNumber>
|
||||
|
||||
using UpdateCheck = QPair<UpdateInfo, QNetworkReply::NetworkError>;
|
||||
|
||||
@ -226,35 +227,10 @@ void SystemFactory::checkForUpdatesOnStartup() {
|
||||
}
|
||||
|
||||
bool SystemFactory::isVersionNewer(const QString& new_version, const QString& base_version) {
|
||||
QStringList base_version_tkn = base_version.split(QL1C('.'));
|
||||
QStringList new_version_tkn = new_version.split(QL1C('.'));
|
||||
QVersionNumber nw = QVersionNumber::fromString(new_version);
|
||||
QVersionNumber bs = QVersionNumber::fromString(base_version);
|
||||
|
||||
while (!base_version_tkn.isEmpty() && !new_version_tkn.isEmpty()) {
|
||||
const int base_number = base_version_tkn.takeFirst().toInt();
|
||||
const int new_number = new_version_tkn.takeFirst().toInt();
|
||||
|
||||
if (new_number > base_number) {
|
||||
// New version is indeed higher that current version.
|
||||
return true;
|
||||
}
|
||||
else if (new_number < base_number) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
// Versions are either the same or they have unequal sizes.
|
||||
if (base_version_tkn.isEmpty() && new_version_tkn.isEmpty()) {
|
||||
// Versions are the same.
|
||||
return false;
|
||||
}
|
||||
else {
|
||||
if (new_version_tkn.isEmpty()) {
|
||||
return false;
|
||||
}
|
||||
else {
|
||||
return new_version_tkn.join(QString()).toInt() > 0;
|
||||
}
|
||||
}
|
||||
return nw > bs;
|
||||
}
|
||||
|
||||
bool SystemFactory::isVersionEqualOrNewer(const QString& new_version, const QString& base_version) {
|
||||
|
@ -175,7 +175,9 @@ void AdBlockManager::showDialog() {
|
||||
AdBlockDialog(qApp->mainFormWidget()).exec();
|
||||
}
|
||||
|
||||
void AdBlockManager::onPackageReady(const NodeJs::PackageMetadata& pkg) {
|
||||
void AdBlockManager::onPackageReady(const NodeJs::PackageMetadata& pkg, bool already_up_to_date) {
|
||||
Q_UNUSED(already_up_to_date)
|
||||
|
||||
if (pkg.m_name == QSL(CLIQZ_ADBLOCKED_PACKAGE)) {
|
||||
m_installing = false;
|
||||
|
||||
|
@ -71,7 +71,7 @@ class AdBlockManager : public QObject {
|
||||
void processTerminated();
|
||||
|
||||
private slots:
|
||||
void onPackageReady(const NodeJs::PackageMetadata& pkg);
|
||||
void onPackageReady(const NodeJs::PackageMetadata& pkg, bool already_up_to_date);
|
||||
void onPackageError(const NodeJs::PackageMetadata& pkg, const QString& error);
|
||||
void onServerProcessFinished(int exit_code, QProcess::ExitStatus exit_status);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user