diff --git a/Sources/AutomergeRepo/Networking/NetworkAdapterEvents.swift b/Sources/AutomergeRepo/Networking/NetworkAdapterEvents.swift index 82471d7..a800b0d 100644 --- a/Sources/AutomergeRepo/Networking/NetworkAdapterEvents.swift +++ b/Sources/AutomergeRepo/Networking/NetworkAdapterEvents.swift @@ -1,40 +1,3 @@ -public struct PeerConnection: Sendable, CustomStringConvertible { - public var description: String { - var str = "" - if initiated { - str.append(" -> ") - } else { - str.append(" <- ") - } - if let meta = peerMetadata { - str.append("\(peerId),\(meta)") - } else { - str.append("\(peerId),nil") - } - if peered { - str.append(" [ready]") - } else { - str.append(" [pending]") - } - return str - } - - public let peerId: PEER_ID - public let peerMetadata: PeerMetadata? - // additional metadata about the connection that's useful for UI displays - public let endpoint: String - public let initiated: Bool - public let peered: Bool - - public init(peerId: PEER_ID, peerMetadata: PeerMetadata?, endpoint: String, initiated: Bool, peered: Bool) { - self.peerId = peerId - self.peerMetadata = peerMetadata - self.endpoint = endpoint - self.initiated = initiated - self.peered = peered - } -} - public enum NetworkAdapterEvents: Sendable, CustomDebugStringConvertible { public var debugDescription: String { switch self { diff --git a/Sources/AutomergeRepo/Networking/Providers/AvailablePeer.swift b/Sources/AutomergeRepo/Networking/Providers/AvailablePeer.swift index 557ace1..b19e4cc 100644 --- a/Sources/AutomergeRepo/Networking/Providers/AvailablePeer.swift +++ b/Sources/AutomergeRepo/Networking/Providers/AvailablePeer.swift @@ -1,7 +1,18 @@ import Network -public struct AvailablePeer: Sendable { - public let peerId: PEER_ID +public struct AvailablePeer: Identifiable, Sendable { + public let peerId: String public let endpoint: NWEndpoint public let name: String + public var id: String { + peerId + } +} + +extension AvailablePeer: Hashable {} + +extension AvailablePeer: Comparable { + public static func < (lhs: AvailablePeer, rhs: AvailablePeer) -> Bool { + lhs.name < rhs.name + } } diff --git a/Sources/AutomergeRepo/Networking/Providers/PeerConnection.swift b/Sources/AutomergeRepo/Networking/Providers/PeerConnection.swift new file mode 100644 index 0000000..3054c0e --- /dev/null +++ b/Sources/AutomergeRepo/Networking/Providers/PeerConnection.swift @@ -0,0 +1,48 @@ +public struct PeerConnection: Sendable, Identifiable, CustomStringConvertible { + public var description: String { + var str = "" + if initiated { + str.append(" -> ") + } else { + str.append(" <- ") + } + if let meta = peerMetadata { + str.append("\(peerId),\(meta)") + } else { + str.append("\(peerId),nil") + } + if peered { + str.append(" [ready]") + } else { + str.append(" [pending]") + } + return str + } + + public let peerId: PEER_ID + public let peerMetadata: PeerMetadata? + // additional metadata about the connection that's useful for UI displays + public let endpoint: String + public let initiated: Bool + public let peered: Bool + + public init(peerId: PEER_ID, peerMetadata: PeerMetadata?, endpoint: String, initiated: Bool, peered: Bool) { + self.peerId = peerId + self.peerMetadata = peerMetadata + self.endpoint = endpoint + self.initiated = initiated + self.peered = peered + } + + public var id: String { + peerId + } +} + +extension PeerConnection: Hashable {} + +extension PeerConnection: Comparable { + public static func < (lhs: PeerConnection, rhs: PeerConnection) -> Bool { + lhs.peerId < rhs.peerId + } +} diff --git a/Sources/AutomergeRepo/PeerMetadata.swift b/Sources/AutomergeRepo/PeerMetadata.swift index ef85702..e97b770 100644 --- a/Sources/AutomergeRepo/PeerMetadata.swift +++ b/Sources/AutomergeRepo/PeerMetadata.swift @@ -8,7 +8,7 @@ import Foundation // isEphemeral: bool // } -public struct PeerMetadata: Sendable, Codable, CustomDebugStringConvertible { +public struct PeerMetadata: Hashable, Sendable, Codable, CustomDebugStringConvertible { public var storageId: STORAGE_ID? public var isEphemeral: Bool diff --git a/Tests/AutomergeRepoTests/TwoReposWithNetworkTests.swift b/Tests/AutomergeRepoTests/TwoReposWithNetworkTests.swift index 2316cad..2ea870a 100644 --- a/Tests/AutomergeRepoTests/TwoReposWithNetworkTests.swift +++ b/Tests/AutomergeRepoTests/TwoReposWithNetworkTests.swift @@ -166,6 +166,7 @@ final class TwoReposWithNetworkTests: XCTestCase { // verify that after sync, both repos have a copy of the document knownOnOne = await repoOne.documentIds() + // FLAKE HERE.... XCTAssertEqual(knownOnOne.count, 1) XCTAssertEqual(knownOnOne[0], newDocId) }