Move encrypt menu entry declaration to own method
authorClaudio Cambra <claudio.cambra@nextcloud.com>
Fri, 9 Dec 2022 17:31:06 +0000 (18:31 +0100)
committerClaudio Cambra <claudio.cambra@gmail.com>
Tue, 13 Dec 2022 12:27:56 +0000 (13:27 +0100)
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
src/gui/socketapi/socketapi.cpp
src/gui/socketapi/socketapi.h

index 541063c8f4434f19a7be184fc1f30d9a704e1886..100c9087bd186f109281b8ce34d8ac70c3b5fb8b 100644 (file)
@@ -1155,6 +1155,33 @@ void SocketApi::sendSharingContextMenuOptions(const FileData &fileData, SocketLi
     //listener->sendMessage(QLatin1String("MENU_ITEM:EMAIL_PRIVATE_LINK") + flagString + tr("Send private link by email …"));
 }
 
+void SocketApi::sendEncryptFolderCommandMenuEntries(const QFileInfo &fileInfo,
+                                                    const FileData &fileData,
+                                                    const bool isE2eEncryptedPath,
+                                                    const OCC::SocketListener* const listener) const
+{
+    if (!fileInfo.isDir() || isE2eEncryptedPath) {
+        return;
+    }
+
+    bool anyAncestorEncrypted = false;
+    auto ancestor = fileData.parentFolder();
+    while (ancestor.journalRecord().isValid()) {
+        if (ancestor.journalRecord()._isE2eEncrypted) {
+            anyAncestorEncrypted = true;
+            break;
+        }
+
+        ancestor = ancestor.parentFolder();
+    }
+
+    if (!anyAncestorEncrypted) {
+        const auto isOnTheServer = fileData.journalRecord().isValid();
+        const auto flagString = isOnTheServer ? QLatin1String("::") : QLatin1String(":d:");
+        listener->sendMessage(QStringLiteral("MENU_ITEM:ENCRYPT") + flagString + tr("Encrypt"));
+    }
+}
+
 void SocketApi::sendLockFileCommandMenuEntries(const QFileInfo &fileInfo,
                                                Folder* const syncFolder,
                                                const FileData &fileData,
@@ -1282,23 +1309,6 @@ void SocketApi::command_GET_MENU_ITEMS(const QString &argument, OCC::SocketListe
             listener->sendMessage(QLatin1String("MENU_ITEM:ACTIVITY") + flagString + tr("Activity"));
         }
 
-        if (fileInfo.isDir() && !isE2eEncryptedPath) {
-            bool anyAncestorEncrypted = false;
-            auto ancestor = fileData.parentFolder();
-            while (ancestor.journalRecord().isValid()) {
-                if (ancestor.journalRecord()._isE2eEncrypted) {
-                    anyAncestorEncrypted = true;
-                    break;
-                }
-
-                ancestor = ancestor.parentFolder();
-            }
-
-            if (!anyAncestorEncrypted) {
-                listener->sendMessage(QStringLiteral("MENU_ITEM:ENCRYPT") + flagString + tr("Encrypt"));
-            }
-        }
-
         DirectEditor* editor = getDirectEditorForLocalFile(fileData.localPath);
         if (editor) {
             //listener->sendMessage(QLatin1String("MENU_ITEM:EDIT") + flagString + tr("Edit via ") + editor->name());
@@ -1307,6 +1317,7 @@ void SocketApi::command_GET_MENU_ITEMS(const QString &argument, OCC::SocketListe
             listener->sendMessage(QLatin1String("MENU_ITEM:OPEN_PRIVATE_LINK") + flagString + tr("Open in browser"));
         }
 
+        sendEncryptFolderCommandMenuEntries(fileInfo, fileData, isE2eEncryptedPath, listener);
         sendLockFileCommandMenuEntries(fileInfo, syncFolder, fileData, listener);
         sendSharingContextMenuOptions(fileData, listener, !isE2eEncryptedPath);
 
index ab3b6c264f56a13c4cdfada5a2610353cc00b334..0806158a2004e61be48ec914beeaf24aa034217a 100644 (file)
@@ -153,8 +153,15 @@ private:
     // Sends the context menu options relating to sharing to listener
     void sendSharingContextMenuOptions(const FileData &fileData, SocketListener *listener, bool enabled);
 
-    void
-    sendLockFileCommandMenuEntries(const QFileInfo &fileInfo, Folder *const syncFolder, const FileData &fileData, const SocketListener *const listener) const;
+    void sendEncryptFolderCommandMenuEntries(const QFileInfo &fileInfo,
+                                             const FileData &fileData,
+                                             const bool isE2eEncryptedPath,
+                                             const OCC::SocketListener* const listener) const;
+
+    void sendLockFileCommandMenuEntries(const QFileInfo &fileInfo,
+                                        Folder *const syncFolder,
+                                        const FileData &fileData,
+                                        const SocketListener *const listener) const;
 
     void sendLockFileInfoMenuEntries(const QFileInfo &fileInfo,
                                      Folder* const syncFolder,