Skip to content

Commit

Permalink
NMC 2169 - Customisation for Media date filter
Browse files Browse the repository at this point in the history
  • Loading branch information
TSI-amrutwaghmare committed May 17, 2024
1 parent 6cac830 commit 43b9f39
Show file tree
Hide file tree
Showing 3 changed files with 44 additions and 16 deletions.
28 changes: 28 additions & 0 deletions iOSClient/Data/NCManageDatabase+Metadata.swift
Original file line number Diff line number Diff line change
Expand Up @@ -1157,4 +1157,32 @@ extension NCManageDatabase {

return nil
}

func getMediaMetadatas(predicate: NSPredicate, sorted: String? = nil, ascending: Bool = false) -> ThreadSafeArray<tableMetadata>? {

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
}
}
15 changes: 15 additions & 0 deletions iOSClient/Menu/NCViewer+Menu.swift
Original file line number Diff line number Diff line change
Expand Up @@ -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
//
Expand Down
17 changes: 1 addition & 16 deletions iOSClient/NCImageCache.swift
Original file line number Diff line number Diff line change
Expand Up @@ -194,22 +194,7 @@ import RealmSwift
}

func getMediaMetadatas(account: String, predicate: NSPredicate? = nil) -> ThreadSafeArray<tableMetadata>? {
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: -

Expand Down

0 comments on commit 43b9f39

Please sign in to comment.