Fix existing check and completion for relative resource URLs
authorClaudio Cambra <claudio.cambra@nextcloud.com>
Fri, 16 Dec 2022 14:19:11 +0000 (15:19 +0100)
committerClaudio Cambra <claudio.cambra@gmail.com>
Fri, 6 Jan 2023 17:49:13 +0000 (18:49 +0100)
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
src/gui/tray/unifiedsearchresultslistmodel.cpp

index d2345da99bef90a4a39972b9915e453eb70267a5..8eefbd66b20b5dc26d1bbaf362ee103f10bf0e0d 100644 (file)
@@ -579,13 +579,13 @@ void UnifiedSearchResultsListModel::parseResultsForProvider(const QJsonObject &d
 
     QVector<UnifiedSearchResult> newEntries;
 
-    const auto makeResourceUrl = [](const QString &resourceUrl, const QUrl &accountUrl) {
-        QUrl finalResurceUrl(resourceUrl);
-        if (finalResurceUrl.scheme().isEmpty() && accountUrl.scheme().isEmpty()) {
-            finalResurceUrl = accountUrl;
-            finalResurceUrl.setPath(resourceUrl);
+    const auto makeResourceUrl = [](const QUrl &resourceUrl, const QUrl &accountUrl) {
+        QUrl finalResourceUrl(resourceUrl);
+        if (finalResourceUrl.isRelative() && !accountUrl.isRelative()) {
+            finalResourceUrl = accountUrl;
+            finalResourceUrl.setPath(resourceUrl.toString());
         }
-        return finalResurceUrl;
+        return finalResourceUrl;
     };
 
     for (const auto &entry : entries) {
@@ -601,7 +601,7 @@ void UnifiedSearchResultsListModel::parseResultsForProvider(const QJsonObject &d
         result._title = entryMap.value(QStringLiteral("title")).toString();
         result._subline = entryMap.value(QStringLiteral("subline")).toString();
 
-        const auto resourceUrl = entryMap.value(QStringLiteral("resourceUrl")).toString();
+        const auto resourceUrl = entryMap.value(QStringLiteral("resourceUrl")).toUrl();
         const auto accountUrl = (_accountState && _accountState->account()) ? _accountState->account()->url() : QUrl();
 
         result._resourceUrl = makeResourceUrl(resourceUrl, accountUrl);