From 43b9f3983d4162124c298a18b5d78616f41fff5e Mon Sep 17 00:00:00 2001 From: Amrut Waghmare Date: Fri, 17 May 2024 12:49:33 +0530 Subject: [PATCH] NMC 2169 - Customisation for Media date filter --- .../Data/NCManageDatabase+Metadata.swift | 28 +++++++++++++++++++ iOSClient/Menu/NCViewer+Menu.swift | 15 ++++++++++ iOSClient/NCImageCache.swift | 17 +---------- 3 files changed, 44 insertions(+), 16 deletions(-) diff --git a/iOSClient/Data/NCManageDatabase+Metadata.swift b/iOSClient/Data/NCManageDatabase+Metadata.swift index 28c1ce8300..fb2d80869d 100644 --- a/iOSClient/Data/NCManageDatabase+Metadata.swift +++ b/iOSClient/Data/NCManageDatabase+Metadata.swift @@ -1157,4 +1157,32 @@ extension NCManageDatabase { return nil } + + func getMediaMetadatas(predicate: NSPredicate, sorted: String? = nil, ascending: Bool = false) -> ThreadSafeArray? { + + do { + let realm = try Realm() + if let sorted { + var results: [tableMetadata] = [] + switch NCKeychain().mediaSortDate { + case "date": + results = realm.objects(tableMetadata.self).filter(predicate).sorted { ($0.date as Date) > ($1.date as Date) } + case "creationDate": + results = realm.objects(tableMetadata.self).filter(predicate).sorted { ($0.creationDate as Date) > ($1.creationDate as Date) } + case "uploadDate": + results = realm.objects(tableMetadata.self).filter(predicate).sorted { ($0.uploadDate as Date) > ($1.uploadDate as Date) } + default: + let results = realm.objects(tableMetadata.self).filter(predicate) + return ThreadSafeArray(results.map { tableMetadata.init(value: $0) }) + } + return ThreadSafeArray(results.map { tableMetadata.init(value: $0) }) + } else { + let results = realm.objects(tableMetadata.self).filter(predicate) + return ThreadSafeArray(results.map { tableMetadata.init(value: $0) }) + } + } catch let error as NSError { + NextcloudKit.shared.nkCommonInstance.writeLog("Could not access database: \(error)") + } + return nil + } } diff --git a/iOSClient/Menu/NCViewer+Menu.swift b/iOSClient/Menu/NCViewer+Menu.swift index b11e685a37..42ffdfa179 100644 --- a/iOSClient/Menu/NCViewer+Menu.swift +++ b/iOSClient/Menu/NCViewer+Menu.swift @@ -36,6 +36,21 @@ extension NCViewer { let localFile = NCManageDatabase.shared.getTableLocalFile(predicate: NSPredicate(format: "ocId == %@", metadata.ocId)) let isOffline = localFile?.offline == true + // + // DETAIL + // + if !appDelegate.disableSharesView { + actions.append( + NCMenuAction( + title: NSLocalizedString("_details_", comment: ""), + icon: utility.loadImage(named: "info.circle"), + action: { _ in + NCActionCenter.shared.openShare(viewController: viewController, metadata: metadata, page: .activity) + } + ) + ) + } + // // VIEW IN FOLDER // diff --git a/iOSClient/NCImageCache.swift b/iOSClient/NCImageCache.swift index 0a08f82f72..31de09a27e 100644 --- a/iOSClient/NCImageCache.swift +++ b/iOSClient/NCImageCache.swift @@ -194,22 +194,7 @@ import RealmSwift } func getMediaMetadatas(account: String, predicate: NSPredicate? = nil) -> ThreadSafeArray? { - guard let tableAccount = NCManageDatabase.shared.getAccount(predicate: NSPredicate(format: "account == %@", account)) else { return nil } - let startServerUrl = NCUtilityFileSystem().getHomeServer(urlBase: tableAccount.urlBase, userId: tableAccount.userId) + tableAccount.mediaPath - let predicateBoth = NSPredicate(format: showBothPredicateMediaString, account, startServerUrl) - - switch NCKeychain().mediaSortDate { - case "date": - return NCManageDatabase.shared.getMediaMetadatas(predicate: predicate ?? predicateBoth, sorted: "date") - case "creationDate": - return NCManageDatabase.shared.getMediaMetadatas(predicate: predicate ?? predicateBoth, sorted: "creationDate") - case "uploadDate": - return NCManageDatabase.shared.getMediaMetadatas(predicate: predicate ?? predicateBoth, sorted: "uploadDate") - default: - break - } - return NCManageDatabase.shared.getMediaMetadatas(predicate: predicate ?? predicateBoth, sorted: "date") - } + return NCManageDatabase.shared.getMediaMetadatas(predicate: predicate ?? predicateBoth, sorted: "date") } // MARK: -