From 76339b389248aad1cc74581dbf19625c84616013 Mon Sep 17 00:00:00 2001 From: Philippe Weidmann Date: Tue, 23 Jan 2024 10:28:28 +0100 Subject: [PATCH] fix: Ensure fake roots have correct uid Signed-off-by: Philippe Weidmann --- kDriveCore/Data/Cache/DriveFileManager.swift | 6 +++++- kDriveCore/Data/Models/File.swift | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/kDriveCore/Data/Cache/DriveFileManager.swift b/kDriveCore/Data/Cache/DriveFileManager.swift index f2d1460ae6..f8873fd96c 100644 --- a/kDriveCore/Data/Cache/DriveFileManager.swift +++ b/kDriveCore/Data/Cache/DriveFileManager.swift @@ -250,7 +250,7 @@ public final class DriveFileManager { } return freeze ? root.freeze() : root } else { - return File(id: DriveFileManager.constants.rootID, name: drive.name) + return File(id: DriveFileManager.constants.rootID, name: drive.name, driveId: drive.id) } } @@ -1565,6 +1565,10 @@ public final class DriveFileManager { if let cachedFile = getCachedFile(id: file.id, freeze: false, using: realm) { return cachedFile } else { + if file.isRoot { + file.driveId = drive.id + file.uid = File.uid(driveId: file.driveId, fileId: file.id) + } keepCacheAttributesForFile(newFile: file, keepProperties: [.all], using: realm) try? realm.write { realm.add(file, update: .all) diff --git a/kDriveCore/Data/Models/File.swift b/kDriveCore/Data/Models/File.swift index 6090471096..617c82377e 100644 --- a/kDriveCore/Data/Models/File.swift +++ b/kDriveCore/Data/Models/File.swift @@ -794,10 +794,14 @@ public final class File: Object, Codable { // primary key is set as default value } - convenience init(id: Int, name: String) { + convenience init(id: Int, name: String, driveId: Int? = nil) { self.init() self.id = id self.name = name + if let driveId { + self.driveId = driveId + uid = File.uid(driveId: driveId, fileId: id) + } rawType = "dir" children = MutableSet() }