Bladeren bron

Remove deleted files from metadata

Signed-off-by: alperozturk <alper_ozturk@proton.me>
alperozturk 1 jaar geleden
bovenliggende
commit
57b295c13f

+ 9 - 1
app/src/main/java/com/owncloud/android/operations/RemoveRemoteEncryptedFileOperation.kt

@@ -36,6 +36,7 @@ import org.apache.jackrabbit.webdav.client.methods.DeleteMethod
  * @param parentFolder parent folder
  */
 
+@Suppress("LongParameterList")
 class RemoveRemoteEncryptedFileOperation internal constructor(
     private val remotePath: String,
     private val user: User,
@@ -48,6 +49,8 @@ class RemoveRemoteEncryptedFileOperation internal constructor(
     /**
      * Performs the remove operation.
      */
+    @Deprecated("Deprecated in Java")
+    @Suppress("TooGenericExceptionCaught")
     override fun run(client: OwnCloudClient): RemoteOperationResult<Void> {
         val result: RemoteOperationResult<Void>
         var delete: DeleteMethod? = null
@@ -110,9 +113,10 @@ class RemoveRemoteEncryptedFileOperation internal constructor(
     }
 
     private fun deleteForV1(client: OwnCloudClient, token: String?): Pair<RemoteOperationResult<Void>, DeleteMethod> {
+        @Suppress("DEPRECATION")
         val arbitraryDataProvider: ArbitraryDataProvider = ArbitraryDataProviderImpl(context)
-        val publicKey = arbitraryDataProvider.getValue(user.accountName, EncryptionUtils.PUBLIC_KEY)
         val privateKey = arbitraryDataProvider.getValue(user.accountName, EncryptionUtils.PRIVATE_KEY)
+        val publicKey = arbitraryDataProvider.getValue(user.accountName, EncryptionUtils.PUBLIC_KEY)
 
         val (metadataExists, metadata) = EncryptionUtils.retrieveMetadataV1(
             parentFolder,
@@ -125,6 +129,10 @@ class RemoveRemoteEncryptedFileOperation internal constructor(
 
         val (result, delete) = deleteRemoteFile(client, token)
 
+        if (!isFolder) {
+            EncryptionUtils.removeFileFromMetadata(fileName, metadata)
+        }
+
         val encryptedFolderMetadata = EncryptionUtils.encryptFolderMetadata(
             metadata,
             publicKey,

+ 4 - 0
app/src/main/java/com/owncloud/android/utils/EncryptionUtils.java

@@ -169,6 +169,10 @@ public final class EncryptionUtils {
         }
     }
 
+    public static void removeFileFromMetadata(String fileName, DecryptedFolderMetadataFileV1 metadata) {
+        metadata.getFiles().remove(fileName);
+    }
+
     public static String serializeJSON(Object data) {
         return serializeJSON(data, false);
     }