diff --git a/Packages/Pachyderm/Sources/Pachyderm/Model/NodeInfo.swift b/Packages/Pachyderm/Sources/Pachyderm/Model/NodeInfo.swift index 555674c8..1c3ab39d 100644 --- a/Packages/Pachyderm/Sources/Pachyderm/Model/NodeInfo.swift +++ b/Packages/Pachyderm/Sources/Pachyderm/Model/NodeInfo.swift @@ -8,11 +8,11 @@ import Foundation -public struct NodeInfo: Decodable, Sendable { +public struct NodeInfo: Decodable, Sendable, Equatable { public let version: String public let software: Software - public struct Software: Decodable, Sendable { + public struct Software: Decodable, Sendable, Equatable { public let name: String public let version: String } diff --git a/Tusker/API/MastodonController.swift b/Tusker/API/MastodonController.swift index c9c4e2a0..97efb6b7 100644 --- a/Tusker/API/MastodonController.swift +++ b/Tusker/API/MastodonController.swift @@ -89,6 +89,14 @@ class MastodonController: ObservableObject { .combineLatest($nodeInfo) .sink { [unowned self] (instance, nodeInfo) in self.instanceFeatures.update(instance: instance, nodeInfo: nodeInfo) + } + .store(in: &cancellables) + + $instanceInfo + .compactMap { $0 } + .removeDuplicates(by: { $0.version == $1.version }) + .combineLatest($nodeInfo.removeDuplicates()) + .sink { (instance, nodeInfo) in setInstanceBreadcrumb(instance: instance, nodeInfo: nodeInfo) } .store(in: &cancellables)