Move logic for determine error relevance to InternalError
This commit is contained in:
parent
14f42fbc51
commit
5046cb3eed
|
@ -162,24 +162,10 @@ void TrayIcon::handleErrorsCleared()
|
|||
void TrayIcon::showInternalError(
|
||||
const QString &errorMsg, SyncthingErrorCategory category, int networkError, const QNetworkRequest &request, const QByteArray &response)
|
||||
{
|
||||
const auto &settings = Settings::values();
|
||||
#ifdef LIB_SYNCTHING_CONNECTOR_SUPPORT_SYSTEMD
|
||||
const SyncthingService &service = syncthingService();
|
||||
const bool serviceRelevant = service.isSystemdAvailable() && isLocal(QUrl(m_trayMenu.widget()->connection().syncthingUrl()));
|
||||
#endif
|
||||
if (settings.notifyOn.internalErrors
|
||||
&& (m_trayMenu.widget()->connection().autoReconnectTries() < 1 || category != SyncthingErrorCategory::OverallConnection)
|
||||
#ifdef LIB_SYNCTHING_CONNECTOR_SUPPORT_SYSTEMD
|
||||
&& (!settings.systemd.considerForReconnect || !serviceRelevant
|
||||
|| !(networkError == QNetworkReply::RemoteHostClosedError && service.isManuallyStopped()))
|
||||
&& (settings.ignoreInavailabilityAfterStart == 0
|
||||
|| !(networkError == QNetworkReply::ConnectionRefusedError && service.isRunning()
|
||||
&& !service.isActiveWithoutSleepFor(settings.ignoreInavailabilityAfterStart)))
|
||||
#endif
|
||||
) {
|
||||
if (InternalError::isRelevant(m_trayMenu.widget()->connection(), category, networkError)) {
|
||||
InternalError error(errorMsg, request.url(), response);
|
||||
#ifdef QT_UTILITIES_SUPPORT_DBUS_NOTIFICATIONS
|
||||
if (settings.dbusNotifications) {
|
||||
if (Settings::values().dbusNotifications) {
|
||||
m_dbusNotifier.showInternalError(error);
|
||||
} else
|
||||
#endif
|
||||
|
|
|
@ -32,6 +32,7 @@ set(WIDGETS_SRC_FILES
|
|||
misc/errorviewdialog.cpp
|
||||
misc/statusinfo.cpp
|
||||
misc/dbusstatusnotifier.cpp
|
||||
misc/internalerror.cpp
|
||||
misc/otherdialogs.cpp
|
||||
)
|
||||
set(RES_FILES
|
||||
|
|
|
@ -0,0 +1,32 @@
|
|||
#include "./internalerror.h"
|
||||
|
||||
#include "../settings/settings.h"
|
||||
|
||||
#include "../../connector/syncthingconnection.h"
|
||||
#include "../../connector/syncthingservice.h"
|
||||
#include "../../connector/utils.h"
|
||||
|
||||
#include <QNetworkReply>
|
||||
|
||||
using namespace Data;
|
||||
|
||||
namespace QtGui {
|
||||
|
||||
bool InternalError::isRelevant(const SyncthingConnection &connection, SyncthingErrorCategory category, int networkError)
|
||||
{
|
||||
const auto &settings = Settings::values();
|
||||
#ifdef LIB_SYNCTHING_CONNECTOR_SUPPORT_SYSTEMD
|
||||
const SyncthingService &service = syncthingService();
|
||||
const bool serviceRelevant = service.isSystemdAvailable() && isLocal(QUrl(connection.syncthingUrl()));
|
||||
#endif
|
||||
return settings.notifyOn.internalErrors && (connection.autoReconnectTries() < 1 || category != SyncthingErrorCategory::OverallConnection)
|
||||
#ifdef LIB_SYNCTHING_CONNECTOR_SUPPORT_SYSTEMD
|
||||
&& (!settings.systemd.considerForReconnect || !serviceRelevant
|
||||
|| !(networkError == QNetworkReply::RemoteHostClosedError && service.isManuallyStopped()))
|
||||
&& (settings.ignoreInavailabilityAfterStart == 0
|
||||
|| !(networkError == QNetworkReply::ConnectionRefusedError && service.isRunning()
|
||||
&& !service.isActiveWithoutSleepFor(settings.ignoreInavailabilityAfterStart)))
|
||||
#endif
|
||||
;
|
||||
}
|
||||
}
|
|
@ -9,11 +9,18 @@
|
|||
#include <QString>
|
||||
#include <QUrl>
|
||||
|
||||
namespace Data {
|
||||
class SyncthingConnection;
|
||||
enum class SyncthingErrorCategory;
|
||||
}
|
||||
|
||||
namespace QtGui {
|
||||
|
||||
struct SYNCTHINGWIDGETS_EXPORT InternalError {
|
||||
InternalError(const QString &message = QString(), const QUrl &url = QUrl(), const QByteArray &response = QByteArray());
|
||||
|
||||
static bool isRelevant(const Data::SyncthingConnection &connection, Data::SyncthingErrorCategory category, int networkError);
|
||||
|
||||
QString message;
|
||||
QUrl url;
|
||||
QByteArray response;
|
||||
|
|
Loading…
Reference in New Issue