Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/owncloud/client.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorHannah von Reth <hannah.vonreth@owncloud.com>2022-11-07 17:00:20 +0300
committerHannah von Reth <vonreth@kde.org>2022-11-08 12:17:36 +0300
commit526b702d2d0f48137e5992aa6f6bbaeeb0361605 (patch)
tree2eb0ce199e587ab9cb76cb7b5db03b530995e1aa /src
parent2ca890a86f879622d05ca859d25504debe8e8a01 (diff)
Handle http error on open in web
Fixes: #10198
Diffstat (limited to 'src')
-rw-r--r--src/libsync/appprovider.cpp15
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;