Skip to content

Commit ad694e7

Browse files
NMC 1984 - Privacy policy customisation updated changes with 10.3.0 version
1 parent bfa77c0 commit ad694e7

17 files changed

Lines changed: 391 additions & 726 deletions

iOSClient/Data/NCManageDatabase+LocalFile.swift

Lines changed: 19 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -29,17 +29,14 @@ extension NCManageDatabase {
2929

3030
// MARK: - Realm Write
3131

32+
/// Adds or updates multiple local file entries corresponding to the given metadata array.
33+
/// Uses async Realm read + single write transaction. Assumes `tableLocalFile` has a primary key.
3234
/// - Parameters:
33-
/// - metadata: The `tableMetadata` containing file details.
34-
/// - offline: Optional flag to mark the file as available offline.
35-
/// - Returns: Nothing. Realm write is performed asynchronously.
36-
func addLocalFileAsync(metadata: tableMetadata, offline: Bool? = nil) async {
37-
// Read (non-blocking): safely detach from Realm thread
38-
let existing: tableLocalFile? = performRealmRead { realm in
39-
realm.objects(tableLocalFile.self)
40-
.filter(NSPredicate(format: "ocId == %@", metadata.ocId))
41-
.first
42-
.map { tableLocalFile(value: $0) }
35+
/// - metadatas: Array of `tableMetadata` to map into `tableLocalFile`.
36+
/// - offline: Optional override for the `offline` flag applied to all items.
37+
func addLocalFilesAsync(metadatas: [tableMetadata], offline: Bool? = nil) async {
38+
guard !metadatas.isEmpty else {
39+
return
4340
}
4441

4542
// Extract ocIds for efficient lookup
@@ -62,19 +59,20 @@ extension NCManageDatabase {
6259
// Reuse existing object or create a new one
6360
let local = existingMap[metadata.ocId] ?? tableLocalFile()
6461

65-
addObject.account = metadata.account
66-
addObject.etag = metadata.etag
67-
addObject.exifDate = NSDate()
68-
addObject.exifLatitude = "-1"
69-
addObject.exifLongitude = "-1"
70-
addObject.ocId = metadata.ocId
71-
addObject.fileName = metadata.fileName
62+
local.account = metadata.account
63+
local.etag = metadata.etag
64+
local.exifDate = NSDate()
65+
local.exifLatitude = "-1"
66+
local.exifLongitude = "-1"
67+
local.ocId = metadata.ocId
68+
local.fileName = metadata.fileName
7269

73-
if let offline {
74-
addObject.offline = offline
75-
}
70+
if let offline {
71+
local.offline = offline
72+
}
7673

77-
realm.add(addObject, update: .all)
74+
realm.add(local, update: .all)
75+
}
7876
}
7977
}
8078

iOSClient/Data/NCManageDatabase+Metadata.swift

Lines changed: 0 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -151,37 +151,10 @@ extension tableMetadata {
151151
(fileNameView as NSString).deletingPathExtension
152152
}
153153

154-
var isRenameable: Bool {
155-
if !NCMetadataPermissions.canRename(self) {
156-
return false
157-
}
158-
if lock {
159-
return false
160-
}
161-
if !isDirectoryE2EE && e2eEncrypted {
162-
return false
163-
}
164-
return true
165-
}
166-
167-
var isPrintable: Bool {
168-
if isDocumentViewableOnly {
169-
return false
170-
}
171-
if ["application/pdf", "com.adobe.pdf"].contains(contentType) || contentType.hasPrefix("text/") || classFile == NKTypeClassFile.image.rawValue {
172-
return true
173-
}
174-
return false
175-
}
176-
177154
var isSavebleInCameraRoll: Bool {
178155
return (classFile == NKTypeClassFile.image.rawValue && contentType != "image/svg+xml") || classFile == NKTypeClassFile.video.rawValue
179156
}
180157

181-
var isDocumentViewableOnly: Bool {
182-
sharePermissionsCollaborationServices == NCPermissions().permissionReadShare && classFile == NKTypeClassFile.document.rawValue
183-
}
184-
185158
var isAudioOrVideo: Bool {
186159
return classFile == NKTypeClassFile.audio.rawValue || classFile == NKTypeClassFile.video.rawValue
187160
}
@@ -370,17 +343,6 @@ extension tableMetadata {
370343
return !lock || (lockOwner == user && lockOwnerType == 0)
371344
}
372345

373-
// Return if is sharable
374-
func isSharable() -> Bool {
375-
guard let capabilities = NCNetworking.shared.capabilities[account] else {
376-
return false
377-
}
378-
if !capabilities.fileSharingApiEnabled || (capabilities.e2EEEnabled && isDirectoryE2EE), !e2eEncrypted {
379-
return false
380-
}
381-
return !e2eEncrypted
382-
}
383-
384346
/// Returns a detached (unmanaged) deep copy of the current `tableMetadata` object.
385347
///
386348
/// - Note: Primitive properties and lists of primitive values (for example `shareType`)
@@ -968,34 +930,6 @@ extension NCManageDatabase {
968930
.map { $0.detachedCopy() }
969931
} ?? []
970932
}
971-
972-
func getMediaMetadatas(predicate: NSPredicate, sorted: String? = nil, ascending: Bool = false) -> ThreadSafeArray<tableMetadata>? {
973-
974-
do {
975-
let realm = try Realm()
976-
if let sorted {
977-
var results: [tableMetadata] = []
978-
switch sorted {//NCPreferences().mediaSortDate {
979-
case "date":
980-
results = realm.objects(tableMetadata.self).filter(predicate).sorted { ($0.date as Date) > ($1.date as Date) }
981-
case "creationDate":
982-
results = realm.objects(tableMetadata.self).filter(predicate).sorted { ($0.creationDate as Date) > ($1.creationDate as Date) }
983-
case "uploadDate":
984-
results = realm.objects(tableMetadata.self).filter(predicate).sorted { ($0.uploadDate as Date) > ($1.uploadDate as Date) }
985-
default:
986-
let results = realm.objects(tableMetadata.self).filter(predicate)
987-
return ThreadSafeArray(results.map { tableMetadata.init(value: $0) })
988-
}
989-
return ThreadSafeArray(results.map { tableMetadata.init(value: $0) })
990-
} else {
991-
let results = realm.objects(tableMetadata.self).filter(predicate)
992-
return ThreadSafeArray(results.map { tableMetadata.init(value: $0) })
993-
}
994-
} catch let error as NSError {
995-
// NextcloudKit.shared.nkCommonInstance.writeLog("Could not access database: \(error)")
996-
}
997-
return nil
998-
}
999933

1000934
func getMetadatas(predicate: NSPredicate,
1001935
sortedByKeyPath: String,

iOSClient/Main/Collection Common/NCCollectionViewCommon+SyncMetadata.swift

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ extension NCCollectionViewCommon {
2121
// If a sync task is already running, do not start a new one
2222
if let task = syncMetadatasTask,
2323
!task.isCancelled {
24-
nkLog(tag: global.logSpeedUpSyncMetadata, emoji: .info, message: "Exit: Another sync is already running. Skipping this one.", consoleOnly: true)
24+
nkLog(tag: global.logTagSpeedUpSyncMetadata, emoji: .info, message: "Exit: Another sync is already running. Skipping this one.", consoleOnly: true)
2525
return
2626
}
2727

@@ -45,9 +45,9 @@ extension NCCollectionViewCommon {
4545
func stopSyncMetadata() async {
4646
if let task = syncMetadatasTask {
4747
if task.isCancelled {
48-
nkLog(tag: global.logSpeedUpSyncMetadata, emoji: .stop, message: "Sync Metadata for \(self.serverUrl) was already cancelled.", consoleOnly: true)
48+
nkLog(tag: global.logTagSpeedUpSyncMetadata, emoji: .stop, message: "Sync Metadata for \(self.serverUrl) was already cancelled.", consoleOnly: true)
4949
} else {
50-
nkLog(tag: global.logSpeedUpSyncMetadata, emoji: .stop, message: "Stopping active Sync Metadata for \(self.serverUrl).", consoleOnly: true)
50+
nkLog(tag: global.logTagSpeedUpSyncMetadata, emoji: .stop, message: "Stopping active Sync Metadata for \(self.serverUrl).", consoleOnly: true)
5151
}
5252
}
5353

@@ -74,7 +74,7 @@ extension NCCollectionViewCommon {
7474
return
7575
}
7676
let identifier = self.serverUrl + "_syncMetadata"
77-
nkLog(tag: global.logSpeedUpSyncMetadata, emoji: .start, message: "Start Sync Metadata for \(self.serverUrl)")
77+
nkLog(tag: global.logTagSpeedUpSyncMetadata, emoji: .start, message: "Start Sync Metadata for \(self.serverUrl)")
7878

7979
// Always cancel and clear all tracked URLSessionTask on any exit path
8080
defer {
@@ -85,7 +85,7 @@ extension NCCollectionViewCommon {
8585

8686
// If a readFile for this serverUrl is already in-flight, do nothing
8787
if await networking.networkingTasks.isReading(identifier: identifier) {
88-
nkLog(tag: global.logSpeedUpSyncMetadata, emoji: .debug, message: "ReadFile for this \(self.serverUrl) is already in-flight.", consoleOnly: true)
88+
nkLog(tag: global.logTagSpeedUpSyncMetadata, emoji: .debug, message: "ReadFile for this \(self.serverUrl) is already in-flight.", consoleOnly: true)
8989
return
9090
}
9191

@@ -151,9 +151,9 @@ extension NCCollectionViewCommon {
151151

152152
// If this folder failed, skip it but keep processing others
153153
if resultsReadFolder.error == .success {
154-
nkLog(tag: global.logSpeedUpSyncMetadata, emoji: .network, message: "Read correctly: \(serverUrl)", consoleOnly: true)
154+
nkLog(tag: global.logTagSpeedUpSyncMetadata, emoji: .network, message: "Read correctly: \(serverUrl)", consoleOnly: true)
155155
} else {
156-
nkLog(tag: global.logSpeedUpSyncMetadata, emoji: .error, message: "Read failed for \(serverUrl) with error: \(resultsReadFolder.error.errorDescription)")
156+
nkLog(tag: global.logTagSpeedUpSyncMetadata, emoji: .error, message: "Read failed for \(serverUrl) with error: \(resultsReadFolder.error.errorDescription)")
157157
return
158158
}
159159

0 commit comments

Comments
 (0)