diff options
author | Hannah von Reth <hannah.vonreth@owncloud.com> | 2022-11-07 17:00:20 +0300 |
---|---|---|
committer | Hannah von Reth <vonreth@kde.org> | 2022-11-08 12:17:36 +0300 |
commit | 526b702d2d0f48137e5992aa6f6bbaeeb0361605 (patch) | |
tree | 2eb0ce199e587ab9cb76cb7b5db03b530995e1aa | |
parent | 2ca890a86f879622d05ca859d25504debe8e8a01 (diff) |
Handle http error on open in web
Fixes: #10198
-rw-r--r-- | src/libsync/appprovider.cpp | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/src/libsync/appprovider.cpp b/src/libsync/appprovider.cpp index 265f9ebb9..017d2ccde 100644 --- a/src/libsync/appprovider.cpp +++ b/src/libsync/appprovider.cpp @@ -22,6 +22,7 @@ #include "libsync/account.h" #include "libsync/networkjobs/jsonjob.h" +#include <QCoreApplication> #include <QDesktopServices> #include <QJsonArray> #include <QMimeDatabase> @@ -72,15 +73,21 @@ const AppProvider::Provider &AppProvider::app(const QString &localPath) const return app(mimeType); } -bool OCC::AppProvider::open(const AccountPtr &account, const QString &localPath, const QByteArray &fileId) const +bool AppProvider::open(const AccountPtr &account, const QString &localPath, const QByteArray &fileId) const { const auto &a = app(localPath); if (a.isValid()) { SimpleNetworkJob::UrlQuery query { { QStringLiteral("file_id"), QString::fromUtf8(fileId) } }; auto *job = new JsonJob(account, account->url(), account->capabilities().appProviders().openWebUrl, "POST", query); - QObject::connect(job, &JsonJob::finishedSignal, [job] { - const auto url = QUrl(job->data().value(QStringLiteral("uri")).toString()); - qCDebug(lcAppProvider) << "start browser" << url << QDesktopServices::openUrl(url); + QObject::connect(job, &JsonJob::finishedSignal, [job, localPath] { + if (job->httpStatusCode() == 200) { + const auto url = QUrl(job->data().value(QStringLiteral("uri")).toString()); + qCDebug(lcAppProvider) << "start browser" << url << QDesktopServices::openUrl(url); + } else { + QMetaObject::invokeMethod(qApp, "slotShowGuiMessage", Qt::QueuedConnection, + Q_ARG(QString, QCoreApplication::translate("AppProvider", "Error")), + Q_ARG(QString, QCoreApplication::translate("AppProvider", "Failed to open %1 in web. Error: %2.").arg(localPath, job->reply()->errorString()))); + } }); job->start(); return true; |