diff --git a/DashWallet/Sources/UI/Menu/Security/Wallets/IdentitiesScreen.swift b/DashWallet/Sources/UI/Menu/Security/Wallets/IdentitiesScreen.swift index 1c76318ce..b0148baed 100644 --- a/DashWallet/Sources/UI/Menu/Security/Wallets/IdentitiesScreen.swift +++ b/DashWallet/Sources/UI/Menu/Security/Wallets/IdentitiesScreen.swift @@ -282,11 +282,14 @@ private struct IdentityRowView: View { icon: "server.rack", color: .indigo) } - if row.isLocal { + // `isLocal` = mine-or-tracked: wallet-derived identities + // are always local, manual adds too. Badge only the rare + // incidental rows (observed identities nobody tracks). + if !row.isLocal { IdentityBadge( - text: NSLocalizedString("Local Only", comment: "Identities"), - icon: "location", - color: .orange) + text: NSLocalizedString("Observed", comment: "Identities"), + icon: "eye", + color: .gray) } if row.pendingContestedName != nil { IdentityBadge( @@ -530,12 +533,16 @@ struct IdentityDetailScreen: View { detailRow( label: NSLocalizedString("Type", comment: "Identities"), value: typeName) - divider - detailRow( - label: NSLocalizedString("Status", comment: ""), - value: row.isLocal - ? NSLocalizedString("Local Only", comment: "Identities") - : NSLocalizedString("On Network", comment: "Identities")) + // A Status row only for the rare incidental case — every + // wallet identity is local, so an always-on "Local" row + // would be noise; the Wallet row below already names the + // owner when there is one. + if !row.isLocal { + divider + detailRow( + label: NSLocalizedString("Status", comment: ""), + value: NSLocalizedString("Observed", comment: "Identities")) + } if let walletName = row.walletName { divider detailRow( diff --git a/DashWallet/Sources/UI/Menu/Security/Wallets/IdentitiesViewModel.swift b/DashWallet/Sources/UI/Menu/Security/Wallets/IdentitiesViewModel.swift index ca05ea258..9171d5636 100644 --- a/DashWallet/Sources/UI/Menu/Security/Wallets/IdentitiesViewModel.swift +++ b/DashWallet/Sources/UI/Menu/Security/Wallets/IdentitiesViewModel.swift @@ -229,7 +229,11 @@ final class IdentitiesViewModel: ObservableObject { } var failures = 0 - for row in rows where !row.isLocal { + // Refresh every row — the old `!row.isLocal` filter dates from + // when the flag was misread as an on-network badge; under the + // real semantics (mine-or-tracked) it would skip exactly the + // wallet's own identities. + for row in rows { do { let fetched = try await sdk.identityGet(identityId: row.idBase58) if let balance = Self.uint64(from: fetched["balance"]) {