diff --git a/src/plugins/axivion/axivionplugin.cpp b/src/plugins/axivion/axivionplugin.cpp index 06c0d72aac4..d9ba207de39 100644 --- a/src/plugins/axivion/axivionplugin.cpp +++ b/src/plugins/axivion/axivionplugin.cpp @@ -440,24 +440,31 @@ static Group dtoRecipe(const Storage> &dtoStorage) return DoneResult::Success; } - const auto getError = [&]() -> Error { - if (contentType == s_jsonContentType) { - try { - return DashboardError(reply->url(), statusCode, - reply->attribute(QNetworkRequest::HttpReasonPhraseAttribute).toString(), - Dto::ErrorDto::deserialize(reply->readAll())); - } catch (const Dto::invalid_dto_exception &) { - // ignore + QString errorString; + if (contentType == s_jsonContentType) { + const Utils::expected_str error + = Dto::ErrorDto::deserializeExpected(reply->readAll()); + + if (error) { + if constexpr (std::is_same_v) { + // Suppress logging error on unauthorized dashboard fetch + if (!dtoStorage->credential && error->type == "UnauthenticatedException") + return DoneResult::Error; } + + errorString = Error(DashboardError(reply->url(), statusCode, + reply->attribute(QNetworkRequest::HttpReasonPhraseAttribute).toString(), + *error)).message(); } - if (statusCode != 0) { - return HttpError(reply->url(), statusCode, - reply->attribute(QNetworkRequest::HttpReasonPhraseAttribute).toString(), - QString::fromUtf8(reply->readAll())); // encoding? - } - return NetworkError(reply->url(), error, reply->errorString()); - }; - MessageManager::writeDisrupting(QString("Axivion: %1").arg(getError().message())); + } else if (statusCode != 0) { + errorString = Error(HttpError(reply->url(), statusCode, + reply->attribute(QNetworkRequest::HttpReasonPhraseAttribute).toString(), + QString::fromUtf8(reply->readAll()))).message(); // encoding? + } else { + errorString = Error(NetworkError(reply->url(), error, reply->errorString())).message(); + } + + MessageManager::writeDisrupting(QString("Axivion: %1").arg(errorString)); return DoneResult::Error; };