Skip to content

Commit

Permalink
Added focus
Browse files Browse the repository at this point in the history
  • Loading branch information
cp-nirali-s committed Nov 29, 2024
1 parent 4a461ba commit a88fa81
Show file tree
Hide file tree
Showing 5 changed files with 38 additions and 12 deletions.
8 changes: 6 additions & 2 deletions Splito/UI/Home/Expense/AddExpenseView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -78,8 +78,12 @@ struct AddExpenseView: View {
}
.sheet(isPresented: $viewModel.showAddNoteEditor) {
NavigationStack {
AddNoteView(viewModel: AddNoteViewModel(group: viewModel.selectedGroup, expense: viewModel.expense, note: viewModel.expenseNote,
handleSaveNoteTap: viewModel.handleNoteSaveBtnTap(note:reason:)))
AddNoteView(viewModel: AddNoteViewModel(
group: viewModel.selectedGroup, expense: viewModel.expense, note: viewModel.expenseNote,
handleSaveNoteTap: { note, _ in
viewModel.handleNoteSaveBtnTap(note: note)
}
))
}
}
.sheet(isPresented: $viewModel.showImagePicker) {
Expand Down
2 changes: 1 addition & 1 deletion Splito/UI/Home/Expense/AddExpenseViewModel.swift
Original file line number Diff line number Diff line change
Expand Up @@ -215,7 +215,7 @@ extension AddExpenseViewModel {
showAddNoteEditor = true
}

func handleNoteSaveBtnTap(note: String, reason: String?) {
func handleNoteSaveBtnTap(note: String) {
showAddNoteEditor = false
self.expenseNote = note
}
Expand Down
27 changes: 21 additions & 6 deletions Splito/UI/Home/Expense/Note/AddNoteView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -16,27 +16,32 @@ struct AddNoteView: View {
@State private var tempNote: String = ""
@State private var tempPaymentReason: String = ""

@FocusState private var isFocused: Bool
@FocusState private var focusedField: AddNoteViewModel.AddNoteField?

var body: some View {
VStack(alignment: .leading, spacing: 16) {
if let paymentReason = viewModel.paymentReason {
InputFieldView(
NoteInputFieldView(
text: $tempPaymentReason, title: "Reason",
placeholder: "Enter a reason for this payment", axis: .horizontal,
submitLabel: .next,
onSubmit: {
focusedField = .note
},
onAppear: {
tempPaymentReason = paymentReason.isEmpty ? "Payment" : paymentReason
}
)
.focused($focusedField, equals: .reason)
}

InputFieldView(
NoteInputFieldView(
text: $tempNote, title: "Note", placeholder: "Enter your note here...",
onAppear: {
tempNote = viewModel.note
}
)
.focused($isFocused)
.focused($focusedField, equals: .note)

Spacer()
}
Expand All @@ -49,7 +54,11 @@ struct AddNoteView: View {
.toastView(toast: $viewModel.toast)
.backport.alert(isPresented: $viewModel.showAlert, alertStruct: viewModel.alert)
.onAppear {
isFocused = true
if viewModel.paymentReason != nil {
focusedField = .reason
} else {
focusedField = .note
}
}
.toolbar {
ToolbarItem(placement: .topBarLeading) {
Expand All @@ -71,14 +80,16 @@ struct AddNoteView: View {
}
}

private struct InputFieldView: View {
private struct NoteInputFieldView: View {

@Binding var text: String

let title: String
let placeholder: String
var axis: Axis = .vertical
var submitLabel: SubmitLabel = .return

var onSubmit: (() -> Void)?
var onAppear: (() -> Void)

var body: some View {
Expand All @@ -97,6 +108,10 @@ private struct InputFieldView: View {
RoundedRectangle(cornerRadius: 12)
.stroke(outlineColor, lineWidth: 1)
}
.submitLabel(submitLabel)
.onSubmit {
onSubmit?()
}
}
.onAppear(perform: onAppear)
}
Expand Down
9 changes: 8 additions & 1 deletion Splito/UI/Home/Expense/Note/AddNoteViewModel.swift
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ class AddNoteViewModel: BaseViewModel, ObservableObject {

if let expense, expense.note != note {
return await updateExpenseNote()
} else if let payment, payment.note != note || payment.reason != paymentReason {
} else if let payment, payment.note != note || (payment.reason ?? "") != (paymentReason ?? "") {
return await updatePaymentNote()
}

Expand Down Expand Up @@ -120,3 +120,10 @@ class AddNoteViewModel: BaseViewModel, ObservableObject {
return nil
}
}

extension AddNoteViewModel {
enum AddNoteField {
case note
case reason
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,8 @@ class GroupPaymentViewModel: BaseViewModel, ObservableObject {
@Published var paymentDate = Date()
@Published var paymentImage: UIImage?

@Published var paymentReason: String?
@Published var paymentNote: String = ""
@Published var paymentReason: String = ""
@Published private(set) var paymentImageUrl: String?

@Published var showImagePicker = false
Expand Down Expand Up @@ -155,7 +155,7 @@ class GroupPaymentViewModel: BaseViewModel, ObservableObject {
func handleNoteSaveBtnTap(note: String, reason: String?) {
showAddNoteEditor = false
self.paymentNote = note
self.paymentReason = reason
self.paymentReason = reason ?? ""
}

func handlePaymentImageTap() {
Expand Down

0 comments on commit a88fa81

Please sign in to comment.