diff --git a/Sources/KukaiCoreSwift/Models/WalletMetadata.swift b/Sources/KukaiCoreSwift/Models/WalletMetadata.swift index 634c3fe1..2f80775d 100644 --- a/Sources/KukaiCoreSwift/Models/WalletMetadata.swift +++ b/Sources/KukaiCoreSwift/Models/WalletMetadata.swift @@ -75,6 +75,16 @@ public struct WalletMetadataList: Codable, Hashable { return nil } + public func parentMetadata(forChildAddress address: String) -> WalletMetadata? { + for metadata in hdWallets { + for childMetadata in metadata.children { + if childMetadata.address == address { return metadata } + } + } + + return nil + } + public mutating func update(address: String, with newMetadata: WalletMetadata) -> Bool { for (index, metadata) in socialWallets.enumerated() { if metadata.address == address { socialWallets[index] = newMetadata; return true } diff --git a/Tests/KukaiCoreSwiftTests/Services/WalletCacheServiceTests.swift b/Tests/KukaiCoreSwiftTests/Services/WalletCacheServiceTests.swift index be43bd6c..7e19da89 100644 --- a/Tests/KukaiCoreSwiftTests/Services/WalletCacheServiceTests.swift +++ b/Tests/KukaiCoreSwiftTests/Services/WalletCacheServiceTests.swift @@ -310,6 +310,9 @@ class WalletCacheServiceTests: XCTestCase { let metaForAddress = list.metadata(forAddress: "tz1jkl") XCTAssert(metaForAddress?.address == "tz1jkl", metaForAddress?.address ?? "-") + let parentMeta = list.parentMetadata(forChildAddress: child.address) + XCTAssert(parentMeta?.address == "tz1abc123", parentMeta?.address ?? "-") + let _ = list.set(hdWalletGroupName: "Test", forAddress: "tz1abc123") let updatedMeta = list.metadata(forAddress: "tz1abc123") XCTAssert(updatedMeta?.hdWalletGroupName == "Test", updatedMeta?.hdWalletGroupName ?? "-")