Use verification job within edit locally job
authorClaudio Cambra <claudio.cambra@nextcloud.com>
Thu, 23 May 2024 16:17:09 +0000 (00:17 +0800)
committerClaudio Cambra <claudio.cambra@nextcloud.com>
Mon, 22 Jul 2024 11:51:37 +0000 (19:51 +0800)
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
src/gui/editlocallyjob.cpp
src/gui/editlocallyjob.h

index 9af8e83de3b5d22cf9949d15f38e55645cb7d272..e2d7f5639a1508ce9e3353884699d61dc2b9cc1d 100644 (file)
@@ -18,7 +18,7 @@
 #include <QDesktopServices>
 #include <QtConcurrent>
 
-#include "editlocallymanager.h"
+#include "editlocallyverificationjob.h"
 #include "folder.h"
 #include "folderman.h"
 #include "syncengine.h"
@@ -84,45 +84,9 @@ void EditLocallyJob::startSetup()
 
 void EditLocallyJob::startTokenRemoteCheck()
 {
-    if (!_accountState || _relPath.isEmpty() || _token.isEmpty()) {
-        qCWarning(lcEditLocallyJob) << "Could not start token check."
-                                        << "accountState:" << _accountState
-                                        << "relPath:" << _relPath
-                                        << "token:" << _token;
-
-        showError(tr("Could not start editing locally."),
-                  tr("An error occurred trying to verify the request to edit locally."));
-        return;
-    }
-
-    const auto encodedToken = QString::fromUtf8(QUrl::toPercentEncoding(_token)); // Sanitise the token
-    const auto encodedRelPath = QUrl::toPercentEncoding(_relPath); // Sanitise the relPath
-
-    const auto checkTokenJob = new SimpleApiJob(_accountState->account(),
-                                          QStringLiteral("/ocs/v2.php/apps/files/api/v1/openlocaleditor/%1").arg(encodedToken));
-
-    QUrlQuery params;
-    params.addQueryItem(QStringLiteral("path"), prefixSlashToPath(encodedRelPath));
-    checkTokenJob->addQueryParams(params);
-    checkTokenJob->setVerb(SimpleApiJob::Verb::Post);
-    connect(checkTokenJob, &SimpleApiJob::resultReceived, this, &EditLocallyJob::remoteTokenCheckResultReceived);
-
-    checkTokenJob->start();
-}
-
-void EditLocallyJob::remoteTokenCheckResultReceived(const int statusCode)
-{
-    qCInfo(lcEditLocallyJob) << "token check result" << statusCode;
-
-    constexpr auto HTTP_OK_CODE = 200;
-    _tokenVerified = statusCode == HTTP_OK_CODE;
-
-    if (!_tokenVerified) {
-        showError(tr("Could not validate the request to open a file from server."), tr("Please try again."));
-        return;
-    }
-
-    findAfolderAndConstructPaths();
+    const auto verificationJob = new EditLocallyVerificationJob(_accountState, _relPath, _token);
+    connect(verificationJob, &EditLocallyVerificationJob::error, this, &EditLocallyJob::showError);
+    connect(verificationJob, &EditLocallyVerificationJob::finished, this, &EditLocallyJob::findAfolderAndConstructPaths);
 }
 
 void EditLocallyJob::proceedWithSetup()
index e778cf4a8cc21fa2ae3dccf15f5257507932009b..84bb11123e88da6f98bc58309eee3a3e26f33443 100644 (file)
@@ -63,7 +63,6 @@ private slots:
     void showErrorNotification(const QString &message, const QString &informativeText) const;
     void showErrorMessageBox(const QString &message, const QString &informativeText) const;
 
-    void remoteTokenCheckResultReceived(const int statusCode);
     void slotItemDiscovered(const OCC::SyncFileItemPtr &item);
     void slotItemCompleted(const OCC::SyncFileItemPtr &item);