macsync/@packages/shared/Sources/MacSyncShared/Sync/SyncConnectionError.swift

20 lines
966 B
Swift

import Foundation
/// Shared heuristic for detecting whether an arbitrary `Error` represents a
/// transport-level connectivity failure (vs a logical/server error). Every
/// module's `SyncError` previously re-implemented the same lowercase substring
/// match extracted here so there is a single source of truth.
public enum SyncConnectionErrorHeuristic {
/// Returns `true` when the error's localized description suggests the
/// failure is caused by the local network being unable to reach the
/// backend (DNS, refused connections, timeouts, unreachable host).
public static func isConnectionError(_ error: Error) -> Bool {
let msg = error.localizedDescription.lowercased()
return msg.contains("network")
|| msg.contains("connection")
|| msg.contains("timeout")
|| msg.contains("unreachable")
|| msg.contains("could not connect")
|| msg.contains("offline")
}
}