IceCubesApp/Packages/Account/Sources/Account/Edit/EditRelationshipNoteView.swift
Thomas Ricouard ee83f524bd More UI
2023-12-19 09:48:12 +01:00

72 lines
2 KiB
Swift

import DesignSystem
import Network
import SwiftUI
@MainActor
public struct EditRelationshipNoteView: View {
@Environment(\.dismiss) private var dismiss
@Environment(Theme.self) private var theme
@Environment(Client.self) private var client
@State var accountDetailViewModel: AccountDetailViewModel
@State private var viewModel = EditRelationshipNoteViewModel()
public var body: some View {
NavigationStack {
Form {
Section("account.relation.note.label") {
TextField("account.relation.note.edit.placeholder", text: $viewModel.note, axis: .vertical)
.frame(minHeight: 150, maxHeight: 150, alignment: .top)
}
#if !os(visionOS)
.listRowBackground(theme.primaryBackgroundColor)
#endif
}
#if !os(visionOS)
.scrollContentBackground(.hidden)
.background(theme.secondaryBackgroundColor)
#endif
.navigationTitle("account.relation.note.edit")
.navigationBarTitleDisplayMode(.inline)
.toolbar {
toolbarContent
}
.alert("account.relation.note.edit.error.save.title",
isPresented: $viewModel.saveError,
actions: {
Button("alert.button.ok", action: {})
}, message: { Text("account.relation.note.edit.error.save.message") })
.task {
viewModel.client = client
viewModel.relatedAccountId = accountDetailViewModel.accountId
viewModel.note = accountDetailViewModel.relationship?.note ?? ""
}
}
}
@ToolbarContentBuilder
private var toolbarContent: some ToolbarContent {
ToolbarItem(placement: .navigationBarLeading) {
Button("action.cancel") {
dismiss()
}
}
ToolbarItem(placement: .navigationBarTrailing) {
Button {
Task {
await viewModel.save()
await accountDetailViewModel.fetchAccount()
dismiss()
}
} label: {
if viewModel.isSaving {
ProgressView()
} else {
Text("action.save").bold()
}
}
}
}
}