From 0cc8b45cfa0d04715dd41b78bb7a267ea39e9cf0 Mon Sep 17 00:00:00 2001 From: sbohmann Date: Sat, 11 Apr 2020 12:19:46 +0200 Subject: [PATCH] 1.2.6 Fixed resource collection problems by uncommenting the call to handleBurstAssets :D --- assets/AssetCollector.swift | 2 +- photobackup.xcodeproj/project.pbxproj | 2 ++ photobackup/Core.swift | 19 +++++++++++-------- photobackup/Info.plist | 2 +- photobackup/MainViewController.swift | 2 +- 5 files changed, 16 insertions(+), 11 deletions(-) diff --git a/assets/AssetCollector.swift b/assets/AssetCollector.swift index b0fb5af..078619d 100644 --- a/assets/AssetCollector.swift +++ b/assets/AssetCollector.swift @@ -92,7 +92,7 @@ class AssetCollector { fetchResult.enumerateObjects { (asset, count, boolPointer) in let beforeHandleRawAsset = DispatchTime.now() self.handleRawAsset(asset, knownAssetsForName) - self.handleBurstAssets(asset, knownAssetsForName) +// self.handleBurstAssets(asset, knownAssetsForName) let afterHandleRawAsset = DispatchTime.now() let delta = afterHandleRawAsset.uptimeNanoseconds - beforeHandleRawAsset.uptimeNanoseconds timeHandlingRawAssets += Int64(delta) diff --git a/photobackup.xcodeproj/project.pbxproj b/photobackup.xcodeproj/project.pbxproj index 8b3d57c..e799837 100644 --- a/photobackup.xcodeproj/project.pbxproj +++ b/photobackup.xcodeproj/project.pbxproj @@ -576,6 +576,7 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 6; INFOPLIST_FILE = photobackup/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 10.2; LD_RUNPATH_SEARCH_PATHS = ( @@ -594,6 +595,7 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 6; INFOPLIST_FILE = photobackup/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 10.2; LD_RUNPATH_SEARCH_PATHS = ( diff --git a/photobackup/Core.swift b/photobackup/Core.swift index e561f15..3f46c35 100644 --- a/photobackup/Core.swift +++ b/photobackup/Core.swift @@ -81,7 +81,7 @@ class Core { } } - func upload(resources: [Resource], numberOfResources: Int) { + func upload(resources: [Resource], numberOfResources: Int, numberOfResourcesSuccesfullyUploaded: Int) { guard let resource = resources.first else { return } @@ -104,7 +104,7 @@ class Core { guard let rawResource = rawResourceOption else { NSLog("Found no asset resources of name %@ for asset %@", resource.fileName, resource.localAssetId) - self.startNextUpload(resources: resources, numberOfResources: numberOfResources) + self.startNextUpload(resources: resources, numberOfResources: numberOfResources, numberOfResourcesSuccesfullyUploaded: numberOfResourcesSuccesfullyUploaded) return } @@ -121,7 +121,7 @@ class Core { guard let inputStream = boundInputStream, let outputStream = boundOutputStream else { NSLog("%@ unable to create streams") - self.startNextUpload(resources: resources, numberOfResources: numberOfResources) + self.startNextUpload(resources: resources, numberOfResources: numberOfResources, numberOfResourcesSuccesfullyUploaded: numberOfResourcesSuccesfullyUploaded) return } @@ -140,8 +140,10 @@ class Core { self.reportCompletion(data, response, error) if let error = error { self.statusHandler("Error uploading resource \(resource.fileName): \(error)", nil) + self.startNextUpload(resources: resources, numberOfResources: numberOfResources, numberOfResourcesSuccesfullyUploaded: numberOfResourcesSuccesfullyUploaded) + } else { + self.startNextUpload(resources: resources, numberOfResources: numberOfResources, numberOfResourcesSuccesfullyUploaded: numberOfResourcesSuccesfullyUploaded + 1) } - self.startNextUpload(resources: resources, numberOfResources: numberOfResources) }) if let size = resource.fileSize { NSLog("size: %d", size) @@ -196,15 +198,16 @@ class Core { } } - private func startNextUpload(resources: [Resource], numberOfResources: Int) { + private func startNextUpload(resources: [Resource], numberOfResources: Int, numberOfResourcesSuccesfullyUploaded: Int) { let rest = [Resource](resources[1...]) if !rest.isEmpty { DispatchQueue.main.async { - self.upload(resources: rest, numberOfResources: numberOfResources) + self.upload(resources: rest, numberOfResources: numberOfResources, numberOfResourcesSuccesfullyUploaded: numberOfResourcesSuccesfullyUploaded) } - } else { - // TODO report number of errors!!! + } else if (numberOfResourcesSuccesfullyUploaded == numberOfResources) { self.statusHandler("Finished uploading resources.", 1.0) + } else { + self.statusHandler("Failed to upload \(numberOfResources - numberOfResourcesSuccesfullyUploaded) out of \(numberOfResources) resources.", 1.0) } } diff --git a/photobackup/Info.plist b/photobackup/Info.plist index 7e8b642..65726a3 100644 --- a/photobackup/Info.plist +++ b/photobackup/Info.plist @@ -19,7 +19,7 @@ CFBundleShortVersionString 1.2 CFBundleVersion - 3 + $(CURRENT_PROJECT_VERSION) LSRequiresIPhoneOS NSPhotoLibraryUsageDescription diff --git a/photobackup/MainViewController.swift b/photobackup/MainViewController.swift index 9b1b48d..3b1a7b1 100644 --- a/photobackup/MainViewController.swift +++ b/photobackup/MainViewController.swift @@ -43,7 +43,7 @@ class MainViewController: UIViewController { .resources .filter({ resource in missingAssetChecksums.contains(Checksum(value: resource.checksum)) })) } - self.core.upload(resources: filteredResources, numberOfResources: filteredResources.count) + self.core.upload(resources: filteredResources, numberOfResources: filteredResources.count, numberOfResourcesSuccesfullyUploaded: 0) } }