Skip to content

Commit fdb872f

Browse files
Merge pull request #3497 from nextcloud/664-sp2
664-sp2
2 parents 5c000ed + 3ed4132 commit fdb872f

File tree

7 files changed

+273
-271
lines changed

7 files changed

+273
-271
lines changed

Nextcloud.xcodeproj/project.pbxproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5857,7 +5857,7 @@
58575857
CLANG_WARN_UNREACHABLE_CODE = YES;
58585858
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
58595859
COPY_PHASE_STRIP = NO;
5860-
CURRENT_PROJECT_VERSION = 1;
5860+
CURRENT_PROJECT_VERSION = 2;
58615861
DEBUG_INFORMATION_FORMAT = dwarf;
58625862
DEVELOPMENT_TEAM = NKUJUXUJ3B;
58635863
ENABLE_STRICT_OBJC_MSGSEND = YES;
@@ -5923,7 +5923,7 @@
59235923
CLANG_WARN_UNREACHABLE_CODE = YES;
59245924
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
59255925
COPY_PHASE_STRIP = NO;
5926-
CURRENT_PROJECT_VERSION = 1;
5926+
CURRENT_PROJECT_VERSION = 2;
59275927
DEVELOPMENT_TEAM = NKUJUXUJ3B;
59285928
ENABLE_STRICT_OBJC_MSGSEND = YES;
59295929
ENABLE_TESTABILITY = YES;

iOSClient/AppDelegate.swift

Lines changed: 1 addition & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -209,16 +209,13 @@ class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterD
209209
return
210210
}
211211

212-
let results = await NCNetworkingProcess.shared.refreshProcessingTask()
213-
NextcloudKit.shared.nkCommonInstance.writeLog("[DEBUG] \(taskText) networking process with download: \(results.counterDownloading) upload: \(results.counterUploading)")
212+
// await NCNetworkingProcess.shared.refreshProcessingTask()
214213

215214
let newAutoUpload = await initAutoUpload(account: account)
216215
NextcloudKit.shared.nkCommonInstance.writeLog("[DEBUG] \(taskText) new auto upload with \(newAutoUpload) uploads")
217216

218217
if taskText == "ProcessingTask",
219218
newAutoUpload == 0,
220-
results.counterDownloading == 0,
221-
results.counterUploading == 0,
222219
let directories = NCManageDatabase.shared.getTablesDirectory(predicate: NSPredicate(format: "account == %@ AND offline == true", account), sorted: "offlineDate", ascending: true) {
223220
for directory: tableDirectory in directories {
224221
// test only 3 time for day (every 8 h.)
@@ -231,21 +228,6 @@ class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterD
231228
}
232229
}
233230

234-
let resultsCount = NCManageDatabase.shared.getResultsMetadatas(predicate: NSPredicate(format: "status != %i", NCGlobal.shared.metadataStatusNormal))?.count ?? 0
235-
#if DEBUG
236-
if UIApplication.shared.applicationIconBadgeNumber != resultsCount {
237-
UIApplication.shared.applicationIconBadgeNumber = resultsCount
238-
}
239-
#else
240-
if resultsCount > 999 {
241-
UIApplication.shared.applicationIconBadgeNumber = 999
242-
} else {
243-
if UIApplication.shared.applicationIconBadgeNumber != resultsCount {
244-
UIApplication.shared.applicationIconBadgeNumber = resultsCount
245-
}
246-
}
247-
#endif
248-
249231
NextcloudKit.shared.nkCommonInstance.writeLog("[DEBUG] \(taskText) completion handle")
250232
completion()
251233
}

iOSClient/Data/NCManageDatabase+Metadata+Session.swift

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,22 @@ extension NCManageDatabase {
189189
return updated
190190
}
191191

192+
func setMetadataStatus(ocId: String, status: Int) async -> tableMetadata? {
193+
var updated: tableMetadata?
194+
195+
await performRealmWrite { realm in
196+
guard let result = realm.object(ofType: tableMetadata.self, forPrimaryKey: ocId) else {
197+
return
198+
}
199+
200+
result.status = status
201+
result.sessionDate = (status == NCGlobal.shared.metadataStatusNormal) ? nil : Date()
202+
updated = tableMetadata(value: result)
203+
}
204+
205+
return updated
206+
}
207+
192208
// MARK: - Realm Read
193209

194210
func getMetadata(from url: URL?, sessionTaskIdentifier: Int) -> tableMetadata? {

iOSClient/Data/NCManageDatabase+Metadata.swift

Lines changed: 25 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -913,6 +913,17 @@ extension NCManageDatabase {
913913
}
914914
}
915915

916+
func getMetadatasAsync(predicate: NSPredicate,
917+
sortedByKeyPath: String,
918+
ascending: Bool = false) async -> [tableMetadata]? {
919+
return await performRealmRead { realm in
920+
realm.objects(tableMetadata.self)
921+
.filter(predicate)
922+
.sorted(byKeyPath: sortedByKeyPath, ascending: ascending)
923+
.map { tableMetadata(value: $0) }
924+
}
925+
}
926+
916927
func getMetadatas(predicate: NSPredicate, numItems: Int, sorted: String, ascending: Bool) -> [tableMetadata] {
917928
return performRealmRead { realm in
918929
let results = realm.objects(tableMetadata.self)
@@ -1199,10 +1210,10 @@ extension NCManageDatabase {
11991210
}
12001211
}
12011212

1202-
func getResultsMetadatasAsync(predicate: NSPredicate,
1203-
sortDescriptors: [RealmSwift.SortDescriptor] = [],
1204-
freeze: Bool = false,
1205-
completion: @escaping (Results<tableMetadata>?) -> Void) {
1213+
func getResultsMetadatas(predicate: NSPredicate,
1214+
sortDescriptors: [RealmSwift.SortDescriptor] = [],
1215+
freeze: Bool = false,
1216+
completion: @escaping (Results<tableMetadata>?) -> Void) {
12061217
performRealmRead({ realm in
12071218
var results = realm.objects(tableMetadata.self).filter(predicate)
12081219
if !sortDescriptors.isEmpty {
@@ -1212,21 +1223,16 @@ extension NCManageDatabase {
12121223
}, sync: false, completion: completion)
12131224
}
12141225

1215-
func fetchNetworkingProcessState() -> (counterDownloading: Int, counterUploading: Int) {
1216-
return performRealmRead { realm in
1217-
let downloading = realm.objects(tableMetadata.self)
1218-
.filter("status == %d", NCGlobal.shared.metadataStatusDownloading)
1219-
let uploading = realm.objects(tableMetadata.self)
1220-
.filter("status == %d", NCGlobal.shared.metadataStatusUploading)
1221-
1222-
return (
1223-
counterDownloading: downloading.count,
1224-
counterUploading: uploading.count
1225-
)
1226-
} ?? (
1227-
counterDownloading: 0,
1228-
counterUploading: 0
1229-
)
1226+
func getResultsMetadatasAsync(predicate: NSPredicate,
1227+
sortDescriptors: [RealmSwift.SortDescriptor] = [],
1228+
freeze: Bool = false) async -> Results<tableMetadata>? {
1229+
await performRealmRead { realm in
1230+
var results = realm.objects(tableMetadata.self).filter(predicate)
1231+
if !sortDescriptors.isEmpty {
1232+
results = results.sorted(by: sortDescriptors)
1233+
}
1234+
return freeze ? results.freeze() : results
1235+
}
12301236
}
12311237

12321238
func fetchNetworkingProcessDownload(limit: Int, session: String) -> [tableMetadata] {
@@ -1242,19 +1248,6 @@ extension NCManageDatabase {
12421248
} ?? []
12431249
}
12441250

1245-
func fetchNetworkingProcessUpload(limit: Int, sessionSelector: String) -> [tableMetadata] {
1246-
return performRealmRead { realm in
1247-
let metadatas = realm.objects(tableMetadata.self)
1248-
.filter("sessionSelector == %@ AND status == %d", sessionSelector, NCGlobal.shared.metadataStatusWaitUpload)
1249-
.sorted(byKeyPath: "sessionDate")
1250-
1251-
let safeLimit = min(limit, metadatas.count)
1252-
let limitedMetadatas = metadatas.prefix(safeLimit)
1253-
1254-
return limitedMetadatas.map { tableMetadata(value: $0) }
1255-
} ?? []
1256-
}
1257-
12581251
func hasUploadingMetadataWithChunksOrE2EE() -> Bool {
12591252
return performRealmRead { realm in
12601253
realm.objects(tableMetadata.self)

iOSClient/Data/NCManageDatabase.swift

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,7 @@ final class NCManageDatabase: Sendable {
168168
}
169169
}
170170

171-
// MARK: -
171+
// MARK: - performRealmRead, performRealmWrite
172172

173173
@discardableResult
174174
func performRealmRead<T>(_ block: @escaping (Realm) throws -> T?, sync: Bool = true, completion: ((T?) -> Void)? = nil) -> T? {
@@ -248,6 +248,29 @@ final class NCManageDatabase: Sendable {
248248
}
249249
}
250250

251+
// MARK: - performRealmRead async/await, performRealmWrite async/await
252+
253+
func performRealmRead<T>(_ block: @escaping (Realm) throws -> T?) async -> T? {
254+
await withCheckedContinuation { continuation in
255+
_ = self.performRealmRead(block, sync: false) { result in
256+
continuation.resume(returning: result)
257+
}
258+
}
259+
}
260+
261+
func performRealmWrite(_ block: @escaping (Realm) throws -> Void) async {
262+
await withCheckedContinuation { continuation in
263+
performRealmWrite(sync: false) { realm in
264+
do {
265+
try block(realm)
266+
} catch {
267+
NextcloudKit.shared.nkCommonInstance.writeLog("[ERROR] Realm write error: \(error)")
268+
}
269+
continuation.resume()
270+
}
271+
}
272+
}
273+
251274
// MARK: -
252275

253276
func clearTable(_ table: Object.Type, account: String? = nil) {

0 commit comments

Comments
 (0)