Fix upload of failed images, missing caps

This commit is contained in:
Christoph Hagen 2024-02-29 15:39:07 +01:00
parent 902c4b08c4
commit 1d992b0bd2

View File

@ -89,10 +89,14 @@ final class Database: ObservableObject {
pendingImageUploadStorage = newValue.map { cap, images in
"\(cap)-\(images.map { "\($0)" }.joined(separator: ":"))"
}.joined(separator: ";")
pendingImageUploadCount = newValue.values.reduce(0) { $0 + $1.count }
updatePendingImageUploadCount(imageUploads: newValue)
}
}
private func updatePendingImageUploadCount(imageUploads: [Int: [Int]]) {
pendingImageUploadCount = imageUploads.values.reduce(0) { $0 + $1.count }
}
@Published
private(set) var pendingImageUploadCount = 0
@ -171,6 +175,7 @@ final class Database: ObservableObject {
ensureFolderExistence(gridStorageFolder)
loadCaps()
updatePendingImageUploadCount(imageUploads: imageUploads)
}
func mainImage(for cap: Int) -> Int {
@ -587,7 +592,7 @@ final class Database: ObservableObject {
continue
}
guard await upload(imageAt: url, for: cap) else {
log("Failed to upload image \(url.lastPathComponent)")
//log("Failed to upload image \(url.lastPathComponent)")
continue
}
log("Uploaded image \(image) for cap \(cap)")
@ -614,10 +619,10 @@ final class Database: ObservableObject {
log("No image data found for image \(url.lastPathComponent) (Cap \(cap))")
return false
}
let url = serverUrl
let serverUrl = serverUrl
.appendingPathComponent("image")
.appendingPathComponent("\(cap)")
var request = URLRequest(url: url)
var request = URLRequest(url: serverUrl)
request.addValue(serverAuthenticationKey, forHTTPHeaderField: "key")
request.httpMethod = "POST"
do {
@ -627,7 +632,15 @@ final class Database: ObservableObject {
return false
}
guard httpResponse.statusCode == 200 else {
log("Failed to upload image \(url.path): Response \(httpResponse.statusCode)")
if httpResponse.statusCode == 410 {
log("Missing cap for image \(url.lastPathComponent), reupload cap")
// Missing cap, force upload
DispatchQueue.main.async {
self.changedCaps.insert(cap)
}
} else {
log("Failed to upload image \(url.lastPathComponent): Response \(httpResponse.statusCode)")
}
return false
}
return true