mirror of
https://github.com/Dimillian/IceCubesApp.git
synced 2024-05-19 08:48:16 +00:00
72 lines
2 KiB
Swift
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()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|