fix(apple): realign UI layer with regenerated core bindings

- map the new VnidropError cases (DeviceUnavailable, OfferTimeout,
  RelayPolicyIncompatible, ProtocolIncompatible) to existing catalog keys
- drop the stale .map(\.share) now that sharePickedFiles returns Share
- remove the duplicate .transfersChanged pattern in the signal switch
- replace the deprecated String(cString:) sysctl decode
- close the CoreGateway protocol declaration
This commit is contained in:
2026-08-12 11:34:49 +02:00
parent ebdff3df4b
commit dac8232324
5 changed files with 12 additions and 4 deletions

View File

@@ -47,3 +47,4 @@ protocol CoreGateway: AnyObject {
func receiverRequests(transferId: UInt64) async -> Result<[ReceiverRequestModel], Error> func receiverRequests(transferId: UInt64) async -> Result<[ReceiverRequestModel], Error>
func respondReceiverRequest(requestId: String, accepted: Bool, reason: String?) async -> Result<Void, Error> func respondReceiverRequest(requestId: String, accepted: Bool, reason: String?) async -> Result<Void, Error>
func refresh() async -> Result<Void, Error> func refresh() async -> Result<Void, Error>
}

View File

@@ -111,7 +111,7 @@ final class TransferNotificationCoordinator: ObservableObject {
switch signal { switch signal {
case .receiverHistoryChanged(let transferId), .transfersChanged(let transferId): case .receiverHistoryChanged(let transferId), .transfersChanged(let transferId):
Task { await self.syncReceivers(transferId: transferId) } Task { await self.syncReceivers(transferId: transferId) }
case .approvalChanged, .transfersChanged: case .approvalChanged:
break break
} }
} }

View File

@@ -353,7 +353,7 @@ final class SendModel: ObservableObject {
senderName: current.senderName.trimmingCharacters(in: .whitespacesAndNewlines), senderName: current.senderName.trimmingCharacters(in: .whitespacesAndNewlines),
destination: .invitation(accessPolicy: current.accessPolicy) destination: .invitation(accessPolicy: current.accessPolicy)
) )
switch result.map(\.share) { switch result {
case .success(let share): case .success(let share):
await fileSystemService.discardPickedFiles(current.selectedFiles) await fileSystemService.discardPickedFiles(current.selectedFiles)
if let thumb = current.selectedFiles.compactMap(\.thumbnailData).first { if let thumb = current.selectedFiles.compactMap(\.thumbnailData).first {

View File

@@ -42,9 +42,10 @@ private struct MacDeviceInfoProvider: DeviceInfoProvider {
var size = 0 var size = 0
sysctlbyname("hw.model", nil, &size, nil, 0) sysctlbyname("hw.model", nil, &size, nil, 0)
guard size > 0 else { return nil } guard size > 0 else { return nil }
var model = [CChar](repeating: 0, count: size) var model = [UInt8](repeating: 0, count: size)
sysctlbyname("hw.model", &model, &size, nil, 0) sysctlbyname("hw.model", &model, &size, nil, 0)
return String(cString: model) // sysctl reports a NUL-terminated C string; drop the terminator(s).
return String(decoding: model.prefix(while: { $0 != 0 }), as: UTF8.self)
} }
} }
#endif #endif

View File

@@ -30,6 +30,10 @@ extension Error {
return .resource(L10n.Error.storageFull) return .resource(L10n.Error.storageFull)
case .Network: case .Network:
return .resource(L10n.Error.network) return .resource(L10n.Error.network)
case .DeviceUnavailable, .RelayPolicyIncompatible:
return .resource(L10n.Error.network)
case .OfferTimeout, .ProtocolIncompatible:
return .resource(L10n.Error.transfer)
case .Transfer(let reason): case .Transfer(let reason):
return transferUiText(reason) return transferUiText(reason)
case .Repository: case .Repository:
@@ -88,6 +92,8 @@ extension Error {
switch vni { switch vni {
case .Initialization(let r), .Ticket(let r), .Filesystem(let r), .FilesystemPermission(let r), case .Initialization(let r), .Ticket(let r), .Filesystem(let r), .FilesystemPermission(let r),
.DestinationExists(let r), .StorageFull(let r), .Network(let r), .DestinationExists(let r), .StorageFull(let r), .Network(let r),
.DeviceUnavailable(let r), .OfferTimeout(let r),
.RelayPolicyIncompatible(let r), .ProtocolIncompatible(let r),
.Transfer(let r), .Permission(let r), .Repository(let r), .Cancelled(let r), .Transfer(let r), .Permission(let r), .Repository(let r), .Cancelled(let r),
.InvalidInput(let r), .InvalidTransition(let r), .SecureStorageLocked(let r), .InvalidInput(let r), .InvalidTransition(let r), .SecureStorageLocked(let r),
.SecureStorageMissing(let r), .SecureStorageCorrupted(let r), .SecureStorageMissing(let r), .SecureStorageCorrupted(let r),