From 8595e8d62bcecd73f924f81ddd471e958f64c22b Mon Sep 17 00:00:00 2001 From: Philippe Weidmann Date: Mon, 26 Aug 2024 09:05:47 +0200 Subject: [PATCH 1/2] fix: Prevent adding itself as child Signed-off-by: Philippe Weidmann --- .../DriveFileManager/DriveFileManager+Listing.swift | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/kDriveCore/Data/Cache/DriveFileManager/DriveFileManager+Listing.swift b/kDriveCore/Data/Cache/DriveFileManager/DriveFileManager+Listing.swift index c23245dff..e1ba0e715 100644 --- a/kDriveCore/Data/Cache/DriveFileManager/DriveFileManager+Listing.swift +++ b/kDriveCore/Data/Cache/DriveFileManager/DriveFileManager+Listing.swift @@ -114,7 +114,10 @@ public extension DriveFileManager { let oldParent = existingFile.parent { oldParent.children.remove(existingFile) } - directory.children.insert(actionFile) + + if fileUid != directory.uid { + directory.children.insert(actionFile) + } case .fileRename, .fileFavoriteCreate, .fileUpdate, .fileFavoriteRemove, @@ -134,8 +137,12 @@ public extension DriveFileManager { writableRealm: writableRealm ) writableRealm.add(actionFile, update: .modified) - directory.children.insert(actionFile) + + if fileUid != directory.uid { + directory.children.insert(actionFile) + } actionFile.applyLastModifiedDateToLocalFile() + default: break } From 2e94fa97e814633ec654fb90ded68e64276bbe42 Mon Sep 17 00:00:00 2001 From: Philippe Weidmann Date: Mon, 26 Aug 2024 09:06:29 +0200 Subject: [PATCH 2/2] fix: Add inherited actions Signed-off-by: Philippe Weidmann --- .../FileDetail/FileDetailActivityTableViewCell.swift | 4 ++-- .../DriveFileManager/DriveFileManager+Listing.swift | 10 +++------- kDriveCore/Data/Models/FileActivity.swift | 3 +++ 3 files changed, 8 insertions(+), 9 deletions(-) diff --git a/kDrive/UI/View/Files/FileDetail/FileDetailActivityTableViewCell.swift b/kDrive/UI/View/Files/FileDetail/FileDetailActivityTableViewCell.swift index 3d2ae45e1..359b6a7ca 100644 --- a/kDrive/UI/View/Files/FileDetail/FileDetailActivityTableViewCell.swift +++ b/kDrive/UI/View/Files/FileDetail/FileDetailActivityTableViewCell.swift @@ -68,9 +68,9 @@ class FileDetailActivityTableViewCell: InsetTableViewCell { localizedKey = file.isDirectory ? "fileDetailsActivityFolderCreate" : "fileDetailsActivityFileCreate" case .fileRename: localizedKey = file.isDirectory ? "fileDetailsActivityFolderRename" : "fileDetailsActivityFileRename" - case .fileTrash: + case .fileTrash, .fileTrashInherited: localizedKey = file.isDirectory ? "fileDetailsActivityFolderTrash" : "fileDetailsActivityFileTrash" - case .fileRestore: + case .fileRestore, .fileRestoreInherited: localizedKey = file.isDirectory ? "fileDetailsActivityFolderRestore" : "fileDetailsActivityFileRestore" case .fileDelete: localizedKey = file.isDirectory ? "fileDetailsActivityFolderDelete" : "fileDetailsActivityFileDelete" diff --git a/kDriveCore/Data/Cache/DriveFileManager/DriveFileManager+Listing.swift b/kDriveCore/Data/Cache/DriveFileManager/DriveFileManager+Listing.swift index e1ba0e715..2e252c39f 100644 --- a/kDriveCore/Data/Cache/DriveFileManager/DriveFileManager+Listing.swift +++ b/kDriveCore/Data/Cache/DriveFileManager/DriveFileManager+Listing.swift @@ -88,13 +88,8 @@ public extension DriveFileManager { let fileUid = File.uid(driveId: directory.driveId, fileId: fileAction.fileId) - // FIXME: Temporary fix for back-end to prevent adding parent to itself - guard fileUid != directory.uid else { - continue - } - switch fileAction.action { - case .fileDelete, .fileTrash: + case .fileDelete, .fileTrash, .fileTrashInherited: removeFileInDatabase(fileUid: fileUid, cascade: true, writableRealm: writableRealm) case .fileMoveOut: @@ -102,7 +97,8 @@ public extension DriveFileManager { let oldParent = movedOutFile.parent else { continue } oldParent.children.remove(movedOutFile) - case .fileMoveIn, .fileRestore, .fileCreate: + + case .fileMoveIn, .fileRestore, .fileCreate, .fileRestoreInherited: keepCacheAttributesForFile( newFile: actionFile, keepProperties: [.standard, .extras], diff --git a/kDriveCore/Data/Models/FileActivity.swift b/kDriveCore/Data/Models/FileActivity.swift index b246b559a..b13f2fe4a 100644 --- a/kDriveCore/Data/Models/FileActivity.swift +++ b/kDriveCore/Data/Models/FileActivity.swift @@ -29,7 +29,9 @@ public enum FileActivityType: String, Codable, CaseIterable { case fileMoveIn = "file_move" case fileMoveOut = "file_move_out" case fileTrash = "file_trash" + case fileTrashInherited = "file_trash_inherited" case fileRestore = "file_restore" + case fileRestoreInherited = "file_restore_inherited" case fileDelete = "file_delete" case fileUpdate = "file_update" case fileCategorize = "file_categorize" @@ -65,6 +67,7 @@ public enum FileActivityType: String, Codable, CaseIterable { .fileMoveIn, .fileMoveOut, .fileTrash, + .fileTrashInherited, .fileRestore, .fileDelete, .fileUpdate,