Skip to content

Commit c3c8b37

Browse files
committed
v2.0.0(110)
fix reload bug
1 parent 16208d1 commit c3c8b37

File tree

9 files changed

+88
-14
lines changed

9 files changed

+88
-14
lines changed

CryptCloudViewer/CryptCloudViewer.xcodeproj/project.pbxproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -325,7 +325,7 @@
325325
CLANG_ENABLE_MODULES = YES;
326326
CODE_SIGN_ENTITLEMENTS = CryptCloudViewer/CryptCloudViewer.entitlements;
327327
CODE_SIGN_STYLE = Automatic;
328-
CURRENT_PROJECT_VERSION = 109;
328+
CURRENT_PROJECT_VERSION = 110;
329329
DEAD_CODE_STRIPPING = YES;
330330
DEVELOPMENT_TEAM = 7A9X38B4YU;
331331
ENABLE_APP_SANDBOX = YES;
@@ -384,7 +384,7 @@
384384
CLANG_ENABLE_MODULES = YES;
385385
CODE_SIGN_ENTITLEMENTS = CryptCloudViewer/CryptCloudViewer.entitlements;
386386
CODE_SIGN_STYLE = Automatic;
387-
CURRENT_PROJECT_VERSION = 109;
387+
CURRENT_PROJECT_VERSION = 110;
388388
DEAD_CODE_STRIPPING = YES;
389389
DEVELOPMENT_TEAM = 7A9X38B4YU;
390390
ENABLE_APP_SANDBOX = YES;

RemoteCloud/RemoteCloud/ChildStorage.swift

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,21 @@ public class ChildStorage: RemoteStorageBase {
9090
}
9191

9292
override func listChildren(fileId: String, path: String) async {
93+
let viewContext = CloudFactory.shared.data.viewContext
94+
let storage = storageName ?? ""
95+
await viewContext.perform {
96+
let fetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName: "RemoteData")
97+
fetchRequest.predicate = NSPredicate(format: "parent == %@ && storage == %@", fileId, storage)
98+
if let result = try? viewContext.fetch(fetchRequest) {
99+
for object in result {
100+
viewContext.delete(object as! NSManagedObject)
101+
}
102+
}
103+
}
104+
await viewContext.perform {
105+
try? viewContext.save()
106+
}
107+
93108
let fixFileId = (fileId == "") ? "\(baseRootStorage)\n\(baseRootFileId)" : fileId
94109
let array = fixFileId.components(separatedBy: .newlines)
95110
let baseStorage = array[0]
@@ -99,7 +114,6 @@ public class ChildStorage: RemoteStorageBase {
99114
}
100115
await s.list(fileId: baseFileId)
101116

102-
let viewContext = CloudFactory.shared.data.viewContext
103117
let items = await getBaseList(baseStorage: baseStorage, baseFileId: baseFileId)
104118
for item in items {
105119
guard let storage = item.storage, let id = item.id, let name = item.name else {

RemoteCloud/RemoteCloud/Storages/Cryptomator.swift

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -777,6 +777,21 @@ public class Cryptomator: ChildStorage {
777777
// fileId dir: parentDirId/deflatedName/dirId
778778
os_log("%{public}@", log: log, type: .debug, "ListChildren(cryptomator:\(storageName ?? "")) \(fileId)")
779779

780+
let viewContext = CloudFactory.shared.data.viewContext
781+
let storage = storageName ?? ""
782+
await viewContext.perform {
783+
let fetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName: "RemoteData")
784+
fetchRequest.predicate = NSPredicate(format: "parent == %@ && storage == %@", fileId, storage)
785+
if let result = try? viewContext.fetch(fetchRequest) {
786+
for object in result {
787+
viewContext.delete(object as! NSManagedObject)
788+
}
789+
}
790+
}
791+
await viewContext.perform {
792+
try? viewContext.save()
793+
}
794+
780795
if fileId == "" {
781796
await subListChildren(dirId: "", fileId: fileId, path: path)
782797
}

RemoteCloud/RemoteCloud/Storages/DropBoxStorage.swift

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -291,9 +291,19 @@ public class DropBoxStorage: NetworkStorage, URLSessionDataDelegate {
291291
}
292292

293293
override func listChildren(fileId: String, path: String) async {
294+
let viewContext = CloudFactory.shared.data.viewContext
295+
let storage = storageName ?? ""
296+
await viewContext.perform {
297+
let fetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName: "RemoteData")
298+
fetchRequest.predicate = NSPredicate(format: "parent == %@ && storage == %@", fileId, storage)
299+
if let result = try? viewContext.fetch(fetchRequest) {
300+
for object in result {
301+
viewContext.delete(object as! NSManagedObject)
302+
}
303+
}
304+
}
294305
let result = await listFolder(path: fileId)
295306
if let items = result {
296-
let viewContext = CloudFactory.shared.data.viewContext
297307
for item in items {
298308
storeItem(item: item, parentFileId: fileId, context: viewContext)
299309
}

RemoteCloud/RemoteCloud/Storages/GoogleDriveStorage.swift

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -388,11 +388,21 @@ public class GoogleDriveStorage: NetworkStorage, URLSessionDataDelegate {
388388
}
389389

390390
override func listChildren(fileId: String, path: String) async {
391+
let viewContext = CloudFactory.shared.data.viewContext
392+
let storage = storageName ?? ""
393+
await viewContext.perform {
394+
let fetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName: "RemoteData")
395+
fetchRequest.predicate = NSPredicate(format: "parent == %@ && storage == %@", fileId, storage)
396+
if let result = try? viewContext.fetch(fetchRequest) {
397+
for object in result {
398+
viewContext.delete(object as! NSManagedObject)
399+
}
400+
}
401+
}
391402
if spaces == "appDataFolder" {
392403
let fixFileId = (fileId == "") ? rootName : fileId
393404
let result = await listFiles(q: "'\(fixFileId)'+in+parents", pageToken: "")
394405
if let items = result {
395-
let viewContext = CloudFactory.shared.data.viewContext
396406
for item in items {
397407
storeItem(item: item, parentFileId: fileId, parentPath: path, context: viewContext)
398408
}
@@ -403,7 +413,6 @@ public class GoogleDriveStorage: NetworkStorage, URLSessionDataDelegate {
403413
return
404414
}
405415
if fileId == "" {
406-
let viewContext = CloudFactory.shared.data.viewContext
407416
storeRootItems(context: viewContext)
408417
await viewContext.perform {
409418
try? viewContext.save()
@@ -413,7 +422,6 @@ public class GoogleDriveStorage: NetworkStorage, URLSessionDataDelegate {
413422
if fileId == "teamdrives" {
414423
let result = await listTeamdrives(q: "", pageToken: "")
415424
if let items = result {
416-
let viewContext = CloudFactory.shared.data.viewContext
417425
for item in items {
418426
storeTeamDriveItem(item: item, context: viewContext)
419427
}
@@ -430,7 +438,6 @@ public class GoogleDriveStorage: NetworkStorage, URLSessionDataDelegate {
430438
let fixFileId = comp[1]
431439
let result = await listFiles(q: "'\(fixFileId)'+in+parents", pageToken: "", teamDrive: teamId)
432440
if let items = result {
433-
let viewContext = CloudFactory.shared.data.viewContext
434441
for item in items {
435442
storeItem(item: item, parentFileId: fileId, parentPath: path, teamID: teamId, context: viewContext)
436443
}
@@ -443,7 +450,6 @@ public class GoogleDriveStorage: NetworkStorage, URLSessionDataDelegate {
443450
let fixFileId = (fileId == "mydrive") ? rootName : fileId
444451
let result = await listFiles(q: "'\(fixFileId)'+in+parents", pageToken: "")
445452
if let items = result {
446-
let viewContext = CloudFactory.shared.data.viewContext
447453
for item in items {
448454
storeItem(item: item, parentFileId: fileId, parentPath: path, context: viewContext)
449455
}

RemoteCloud/RemoteCloud/Storages/OneDriveStorage.swift

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -288,9 +288,18 @@ public class OneDriveStorage: NetworkStorage, URLSessionDataDelegate {
288288
}
289289

290290
override func listChildren(fileId: String, path: String) async {
291+
let viewContext = CloudFactory.shared.data.viewContext
292+
let storage = storageName ?? ""
293+
await viewContext.perform {
294+
let fetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName: "RemoteData")
295+
fetchRequest.predicate = NSPredicate(format: "parent == %@ && storage == %@", fileId, storage)
296+
if let result = try? viewContext.fetch(fetchRequest) {
297+
for object in result {
298+
viewContext.delete(object as! NSManagedObject)
299+
}
300+
}
301+
}
291302
if let items = await listFiles(itemId: fileId, nextLink: "") {
292-
let viewContext = CloudFactory.shared.data.viewContext
293-
294303
for item in items {
295304
storeItem(item: item, parentFileId: fileId, parentPath: path, context: viewContext)
296305
}

RemoteCloud/RemoteCloud/Storages/WebDAVStorage.swift

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -488,8 +488,18 @@ public class WebDAVStorage: NetworkStorage, URLSessionTaskDelegate, URLSessionDa
488488
}
489489

490490
override func listChildren(fileId: String, path: String) async {
491+
let viewContext = CloudFactory.shared.data.viewContext
492+
let storage = storageName ?? ""
493+
await viewContext.perform {
494+
let fetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName: "RemoteData")
495+
fetchRequest.predicate = NSPredicate(format: "parent == %@ && storage == %@", fileId, storage)
496+
if let result = try? viewContext.fetch(fetchRequest) {
497+
for object in result {
498+
viewContext.delete(object as! NSManagedObject)
499+
}
500+
}
501+
}
491502
if let items = await listFolder(path: fileId) {
492-
let viewContext = CloudFactory.shared.data.viewContext
493503
for item in items {
494504
await storeItem(item: item, parentFileId: fileId, parentPath: path, context: viewContext)
495505
}

RemoteCloud/RemoteCloud/Storages/pCloudStorage.swift

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -256,6 +256,17 @@ public class pCloudStorage: NetworkStorage, URLSessionDataDelegate {
256256
}
257257

258258
override func listChildren(fileId: String, path: String) async {
259+
let viewContext = CloudFactory.shared.data.viewContext
260+
let storage = storageName ?? ""
261+
await viewContext.perform {
262+
let fetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName: "RemoteData")
263+
fetchRequest.predicate = NSPredicate(format: "parent == %@ && storage == %@", fileId, storage)
264+
if let result = try? viewContext.fetch(fetchRequest) {
265+
for object in result {
266+
viewContext.delete(object as! NSManagedObject)
267+
}
268+
}
269+
}
259270
let folderId: Int
260271
if fileId == "" {
261272
folderId = 0
@@ -267,7 +278,6 @@ public class pCloudStorage: NetworkStorage, URLSessionDataDelegate {
267278
return
268279
}
269280
if let items = await listFolder(folderId: folderId) {
270-
let viewContext = CloudFactory.shared.data.viewContext
271281
for item in items {
272282
storeItem(item: item, parentFileId: fileId, parentPath: path, context: viewContext)
273283
}

RemoteCloud/RemoteCloud/SubItem/ProcessArchive.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ public class ArchiveBridge {
6161
defer {
6262
semaphore.signal()
6363
}
64-
await myself.setBuffer(try? stream.read(position: myself.offset, length: 64*1024))
64+
await myself.setBuffer(try? stream.read(position: myself.offset, length: 1*1024*1024))
6565
}
6666
if semaphore.wait(timeout: .now() + 10) == .timedOut {
6767
return -1

0 commit comments

Comments
 (0)