From 2b5b749dc8d492f92da6c8464f4a4d0ed593cda7 Mon Sep 17 00:00:00 2001 From: Shadowfacts Date: Sun, 28 May 2023 21:54:31 -0700 Subject: [PATCH] Avoid setting duplicate breadcrumbs --- Packages/Pachyderm/Sources/Pachyderm/Model/NodeInfo.swift | 4 ++-- Tusker/API/MastodonController.swift | 8 ++++++++ 2 files changed, 10 insertions(+), 2 deletions(-) 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)