* step one * progress * minor theme enhancements * update screenshot and icon links in README.md * update site link * swiftformat fixes
36 lines
928 B
Swift
36 lines
928 B
Swift
import Foundation
|
|
import Observation
|
|
|
|
@Observable
|
|
@MainActor
|
|
final class AddressListViewModel {
|
|
var receiveAddresses: [AddressItem] = []
|
|
var changeAddresses: [AddressItem] = []
|
|
var selectedTab: AddressTab = .receive
|
|
private var expectedProfileId: UUID?
|
|
|
|
enum AddressTab: String, CaseIterable {
|
|
case receive = "Receive"
|
|
case change = "Change"
|
|
}
|
|
|
|
var displayedAddresses: [AddressItem] {
|
|
selectedTab == .receive ? receiveAddresses : changeAddresses
|
|
}
|
|
|
|
private var bitcoinService: BitcoinService {
|
|
BitcoinService.shared
|
|
}
|
|
|
|
func loadAddresses(for profileId: UUID) {
|
|
expectedProfileId = profileId
|
|
guard bitcoinService.currentProfile?.id == expectedProfileId else {
|
|
receiveAddresses = []
|
|
changeAddresses = []
|
|
return
|
|
}
|
|
receiveAddresses = bitcoinService.getAddresses(keychain: .external)
|
|
changeAddresses = bitcoinService.getAddresses(keychain: .internal)
|
|
}
|
|
}
|