fix(core): report receiver failures to sender

This commit is contained in:
2026-07-24 14:52:09 +02:00
parent 0448137d84
commit 425500ecf2
25 changed files with 430 additions and 22 deletions

View File

@@ -88,6 +88,7 @@ enum ReceiverDeliveryStatus: Equatable, Sendable {
case refused
case expired
case completed
case failed
case unknown
}

View File

@@ -512,6 +512,7 @@ private extension ReceiverRequest {
case "refused": return .refused
case "expired": return .expired
case "completed": return .completed
case "failed": return .failed
default: return .unknown
}
}

View File

@@ -237,6 +237,7 @@ private struct ReceiverRow: View {
let name = receiver.receiverName ?? receiver.receiverDeviceName ?? String(localized: "transfer_nearby_device")
let showLive = sendProgress != nil && receiver.status != .completed
&& receiver.status != .refused && receiver.status != .expired
&& receiver.status != .failed
HStack(alignment: .top, spacing: 12) {
VStack(alignment: .leading, spacing: 6) {
Text(name).font(VniType.bodyLarge).lineLimit(1)
@@ -397,6 +398,7 @@ extension ReceiverDeliveryStatus {
case .refused: return "transfer_receiver_refused"
case .expired: return "transfer_receiver_expired"
case .completed: return "transfer_receiver_completed"
case .failed: return "transfer_receiver_failed"
case .unknown: return "transfer_receiver_unknown"
}
}
@@ -404,7 +406,7 @@ extension ReceiverDeliveryStatus {
func statusColor(_ colors: VniDropColors) -> Color {
switch self {
case .completed: return colors.brandDefault
case .refused, .expired: return colors.destructiveDefault
case .refused, .expired, .failed: return colors.destructiveDefault
default: return colors.foregroundLighter
}
}

View File

@@ -16581,6 +16581,66 @@
}
}
},
"transfer_receiver_failed": {
"comment": "Receiver status: the transfer failed.",
"extractionState": "manual",
"localizations": {
"de": {
"stringUnit": {
"state": "needs_review",
"value": "Übertragung fehlgeschlagen"
}
},
"en": {
"stringUnit": {
"state": "translated",
"value": "Transfer failed"
}
},
"es": {
"stringUnit": {
"state": "needs_review",
"value": "Transferencia fallida"
}
},
"fr": {
"stringUnit": {
"state": "needs_review",
"value": "Transfert échoué"
}
},
"it": {
"stringUnit": {
"state": "needs_review",
"value": "Trasferimento non riuscito"
}
},
"nl": {
"stringUnit": {
"state": "needs_review",
"value": "Overdracht mislukt"
}
},
"pl": {
"stringUnit": {
"state": "needs_review",
"value": "Przesyłanie nie powiodło się"
}
},
"pt": {
"stringUnit": {
"state": "needs_review",
"value": "A transferência falhou"
}
},
"ru": {
"stringUnit": {
"state": "needs_review",
"value": "Передача не удалась"
}
}
}
},
"transfer_receiver_expired": {
"comment": "Receiver status: the request expired.",
"extractionState": "manual",