20 lines
966 B
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")
|
|
}
|
|
}
|