diff --git a/MVMCoreUI/Atomic/Molecules/HorizontalCombinationViews/TabBar.swift b/MVMCoreUI/Atomic/Molecules/HorizontalCombinationViews/TabBar.swift index 4a6e3ca7..847103de 100644 --- a/MVMCoreUI/Atomic/Molecules/HorizontalCombinationViews/TabBar.swift +++ b/MVMCoreUI/Atomic/Molecules/HorizontalCombinationViews/TabBar.swift @@ -80,7 +80,8 @@ // MARK: - UITabBarDelegate public func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) { - self.model.selectedTab = item.tag + guard model.selectedTab != tabBar.selectedItem?.tag else { return } + model.selectedTab = item.tag Button.performButtonAction(with: model.tabs[item.tag].action, button: item, delegateObject: delegateObject, additionalData: nil) } diff --git a/MVMCoreUI/Atomic/Protocols/ModelProtocols/MoleculeModelProtocol.swift b/MVMCoreUI/Atomic/Protocols/ModelProtocols/MoleculeModelProtocol.swift index 2823e5a5..0cd54170 100644 --- a/MVMCoreUI/Atomic/Protocols/ModelProtocols/MoleculeModelProtocol.swift +++ b/MVMCoreUI/Atomic/Protocols/ModelProtocols/MoleculeModelProtocol.swift @@ -21,6 +21,8 @@ public extension MoleculeModelProtocol { static var categoryCodingKey: String { "moleculeName" } } + +// Helpers made due to swift not able to reconcile which category. extension KeyedDecodingContainer where Key: CodingKey { /// Decodes to a registered molecule based on the identifier public func decodeMoleculeIfPresent(codingKey: KeyedDecodingContainer.Key) throws -> T? { @@ -33,6 +35,15 @@ extension KeyedDecodingContainer where Key: CodingKey { } return modelT } + + /// Decodes to a registered molecule based on the identifier. + public func decodeMolecule(codingKey: KeyedDecodingContainer.Key) throws -> T { + guard let model: T = try decodeMoleculeIfPresent(codingKey: codingKey) else { + MVMCoreLoggingHandler.logDebugMessage(withDelegate: "ModelRegistry Error decoderErrorObjectNotPresent: \(codingKey.stringValue)") + throw ModelRegistry.Error.decoderErrorObjectNotPresent(codingKey: codingKey, codingPath: codingPath) + } + return model + } } public extension MoleculeModelProtocol {