From f5b4201ba61db4ecc92024f73bd8bba67b8af0d8 Mon Sep 17 00:00:00 2001 From: PaulNguyen Date: Mon, 21 Nov 2022 16:21:24 +0700 Subject: [PATCH 1/2] home swipe to edit --- .../Scences/AddExpense/AddExpenseForm.swift | 8 ++++- GoMoney/Scences/Home/HomeViewController.swift | 35 ++++++++++++++++--- GoMoney/ViewModel/Home/HomeViewModel.swift | 10 ++++++ 3 files changed, 47 insertions(+), 6 deletions(-) diff --git a/GoMoney/Scences/AddExpense/AddExpenseForm.swift b/GoMoney/Scences/AddExpense/AddExpenseForm.swift index 54ef9ff..fed8141 100644 --- a/GoMoney/Scences/AddExpense/AddExpenseForm.swift +++ b/GoMoney/Scences/AddExpense/AddExpenseForm.swift @@ -198,7 +198,13 @@ class AddExpenseForm: UIView { dateField.text = DateFormatter.dmy().string(from: transaction.occuredOn) categoryField.text = transaction.tag?.name - amountField.text = String(transaction.amount) + + let amountString = String(transaction.amount) + .replacingOccurrences(of: ",", with: "") + .replacingOccurrences(of: ".", with: "") + let formated = amountString.splitFromEnd(by: 3).joined(separator: ",") + amountField.text = formated + noteField.text = transaction.note } diff --git a/GoMoney/Scences/Home/HomeViewController.swift b/GoMoney/Scences/Home/HomeViewController.swift index 1423727..63cb8b2 100644 --- a/GoMoney/Scences/Home/HomeViewController.swift +++ b/GoMoney/Scences/Home/HomeViewController.swift @@ -211,14 +211,19 @@ extension HomeViewController: UITableViewDataSource, UITableViewDelegate { return swipe } - func tableView(_: UITableView, leadingSwipeActionsConfigurationForRowAt _: IndexPath) -> UISwipeActionsConfiguration? { + func tableView(_: UITableView, leadingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? { let edit = UIContextualAction(style: .normal, title: "Edit") { _, _, completionHandler in - // TODO: Go to edit - let vc = GMMainViewController() + if let transaction = self.viewModel.transactions?[indexPath.row] { + let vc = EditViewController() + vc.transaction = transaction + vc.onApply = { [weak self] newTrans in + self?.applyTransaction(transaction: transaction, newTrans: newTrans) + } - self.navigationController?.pushViewController(vc, animated: true) + self.present(vc, animated: true) - completionHandler(true) + completionHandler(true) + } } edit.image = UIImage(systemName: "highlighter") @@ -229,6 +234,26 @@ extension HomeViewController: UITableViewDataSource, UITableViewDelegate { return swipe } + private func applyTransaction(transaction: Expense, newTrans: Expense) { + viewModel.applyTransaction(transaction: transaction, newTrans: newTrans) { [weak self] err in + DispatchQueue.main.async { + if let err = err { + self?.alert( + title: "Error", + message: err.localizedDescription, + actionTitle: "Cancel" + ) + } else { + self?.notifyDataDidChange() + self?.snackBar( + message: "Transaction updated successfully!", + actionText: "OK" + ) + } + } + } + } + private func toggleEmptyView() { let empty = viewModel.transactions?.count == 0 let contents = [backImage, chartView, recentExpenseLabel, tableView, floatingButton] diff --git a/GoMoney/ViewModel/Home/HomeViewModel.swift b/GoMoney/ViewModel/Home/HomeViewModel.swift index 338d9e6..e714800 100644 --- a/GoMoney/ViewModel/Home/HomeViewModel.swift +++ b/GoMoney/ViewModel/Home/HomeViewModel.swift @@ -68,4 +68,14 @@ class HomeViewModel { } completion?(nil) } + + func applyTransaction(transaction: Expense, newTrans: Expense, completion: @escaping (Error?) -> Void) { + DataService.shared.updateExpense( + oldTrans: transaction, + newTrans: newTrans, + completion: { err in + completion(err) + } + ) + } } From 7bf75080287d2977e33107d2a76f0218e2acf3c4 Mon Sep 17 00:00:00 2001 From: PaulNguyen Date: Mon, 21 Nov 2022 16:34:25 +0700 Subject: [PATCH 2/2] fix double amount cause redundant zero --- GoMoney/Scences/AddExpense/AddExpenseForm.swift | 2 +- GoMoney/Scences/Home/HomeViewController.swift | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/GoMoney/Scences/AddExpense/AddExpenseForm.swift b/GoMoney/Scences/AddExpense/AddExpenseForm.swift index fed8141..d0b22d9 100644 --- a/GoMoney/Scences/AddExpense/AddExpenseForm.swift +++ b/GoMoney/Scences/AddExpense/AddExpenseForm.swift @@ -199,7 +199,7 @@ class AddExpenseForm: UIView { dateField.text = DateFormatter.dmy().string(from: transaction.occuredOn) categoryField.text = transaction.tag?.name - let amountString = String(transaction.amount) + let amountString = String(Int(transaction.amount)) .replacingOccurrences(of: ",", with: "") .replacingOccurrences(of: ".", with: "") let formated = amountString.splitFromEnd(by: 3).joined(separator: ",") diff --git a/GoMoney/Scences/Home/HomeViewController.swift b/GoMoney/Scences/Home/HomeViewController.swift index 63cb8b2..f66c55f 100644 --- a/GoMoney/Scences/Home/HomeViewController.swift +++ b/GoMoney/Scences/Home/HomeViewController.swift @@ -244,7 +244,7 @@ extension HomeViewController: UITableViewDataSource, UITableViewDelegate { actionTitle: "Cancel" ) } else { - self?.notifyDataDidChange() + self?.loadData() self?.snackBar( message: "Transaction updated successfully!", actionText: "OK"