From 4f1d3e8eb1d02175c50119437542b1948e56e7c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrien=20Coye=20de=20Brune=CC=81lis?= Date: Mon, 19 Feb 2024 14:52:55 +0100 Subject: [PATCH] fix: Harden InMemoryFileListViewModel use of frozen realm object --- .../Files/File List/InMemoryFileListViewModel.swift | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/kDrive/UI/Controller/Files/File List/InMemoryFileListViewModel.swift b/kDrive/UI/Controller/Files/File List/InMemoryFileListViewModel.swift index 27877bdc2..e82163d25 100644 --- a/kDrive/UI/Controller/Files/File List/InMemoryFileListViewModel.swift +++ b/kDrive/UI/Controller/Files/File List/InMemoryFileListViewModel.swift @@ -25,7 +25,14 @@ class InMemoryFileListViewModel: FileListViewModel { private let realm: Realm override init(configuration: Configuration, driveFileManager: DriveFileManager, currentDirectory: File) { - if let realm = currentDirectory.realm { + // TODO: Refactor to explicit realm state + /// We expect the object to be live in this view controller, if not detached. + var currentDirectory = currentDirectory + if currentDirectory.isFrozen, let liveDirectory = currentDirectory.thaw() { + currentDirectory = liveDirectory + } + + if let realm = currentDirectory.realm, !currentDirectory.isFrozen { self.realm = realm } else { let unCachedRealmConfiguration = Realm.Configuration( @@ -40,6 +47,7 @@ class InMemoryFileListViewModel: FileListViewModel { } super.init(configuration: configuration, driveFileManager: driveFileManager, currentDirectory: currentDirectory) + try? realm.write { realm.add(currentDirectory) }