Files
meterios/common/aux/AccountButton.swift

44 lines
1.4 KiB
Swift

//
// AccountButton.swift
// meterios
//
// (c) 2025 Martin "maride" Dessauer
//
import SwiftUI
/// **AccountButton** creates a button showing all relevant information of a Mete user account: profile picture, name, and balance
struct AccountButton : View {
@Bindable private var account: Account
private let action: () -> Void
init(account: Account, action: @escaping () -> Void = {}) {
self.account = account
self.action = action
}
var body: some View {
Button(action: action) {
HStack {
// Profile Image
AsyncImageWithPlaceholder(url: account.displayImageURL, width: 64, height: 64).clipShape(Circle()).fixedSize()
Spacer(minLength: 16.0)
// Account, Address & Balance
VStack(alignment: .leading) {
HStack {
if account.displayName != nil {
Text(account.displayName!).fontWeight(.bold)
}
Divider()
if account.balance != nil {
Text(account.balance!.formatted(.currency(code: "EUR"))).foregroundStyle(account.balance! > 0 ? .green : .red)
}
}.fixedSize()
Text("\(account.address)").fontWeight(.thin)
}.fixedSize()
}.fixedSize()
}
}
}