diff --git a/GME Remit.xcodeproj/project.pbxproj b/GME Remit.xcodeproj/project.pbxproj index 579be186..b4786fb1 100644 --- a/GME Remit.xcodeproj/project.pbxproj +++ b/GME Remit.xcodeproj/project.pbxproj @@ -616,6 +616,7 @@ 73FE8846228A58DE00A5EB56 /* OrderContainer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 73FE8845228A58DE00A5EB56 /* OrderContainer.swift */; }; 73FE8848228A595500A5EB56 /* Order.swift in Sources */ = {isa = PBXBuildFile; fileRef = 73FE8847228A595500A5EB56 /* Order.swift */; }; 89493C13242057E20066567F /* PhoneCardBankListCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 89493C12242057E20066567F /* PhoneCardBankListCell.swift */; }; + 894B61E62424A8F9004A463D /* DomesticBankListTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 894B61E52424A8F9004A463D /* DomesticBankListTableViewCell.swift */; }; 917C3001C903ECEF46A5D6D0 /* Pods_GMERemittanceUITests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E4028C5A57499BB54764190C /* Pods_GMERemittanceUITests.framework */; }; 9F983C0C2024883D001DCB3F /* UIColor+Ext.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F983C0B2024883D001DCB3F /* UIColor+Ext.swift */; }; 9FA00FBE1FEE69AF0049753E /* UIView+Ext.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9FA00FBD1FEE69AF0049753E /* UIView+Ext.swift */; }; @@ -3058,6 +3059,7 @@ 73FE8847228A595500A5EB56 /* Order.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Order.swift; sourceTree = ""; }; 745256B2A0B78E97CD1E1E4C /* Pods-GMERemittanceTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-GMERemittanceTests.release.xcconfig"; path = "Pods/Target Support Files/Pods-GMERemittanceTests/Pods-GMERemittanceTests.release.xcconfig"; sourceTree = ""; }; 89493C12242057E20066567F /* PhoneCardBankListCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PhoneCardBankListCell.swift; sourceTree = ""; }; + 894B61E52424A8F9004A463D /* DomesticBankListTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DomesticBankListTableViewCell.swift; sourceTree = ""; }; 9F983C0B2024883D001DCB3F /* UIColor+Ext.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIColor+Ext.swift"; sourceTree = ""; }; 9FA00FBD1FEE69AF0049753E /* UIView+Ext.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIView+Ext.swift"; sourceTree = ""; }; 9FB54C10200879B9003454E2 /* Profile.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = Profile.storyboard; sourceTree = ""; }; @@ -8059,6 +8061,7 @@ 73A621322330742C000FFB5B /* View */ = { isa = PBXGroup; children = ( + 894B61E42424A8E0004A463D /* Cell */, 73A621332330742C000FFB5B /* ViewModel */, 73A621362330742C000FFB5B /* DomesticRemitViewController.swift */, 73A621372330742C000FFB5B /* DomesticRemit.storyboard */, @@ -9130,6 +9133,14 @@ path = Cell; sourceTree = ""; }; + 894B61E42424A8E0004A463D /* Cell */ = { + isa = PBXGroup; + children = ( + 894B61E52424A8F9004A463D /* DomesticBankListTableViewCell.swift */, + ); + path = Cell; + sourceTree = ""; + }; 9F3ADCE62004B80F0037A3A3 /* Profile */ = { isa = PBXGroup; children = ( @@ -16157,6 +16168,7 @@ 73469F992293C1B00062946B /* SelectPaymentServiceType.swift in Sources */, 73EC6C12236984B200060448 /* InternationalTopupService.swift in Sources */, 73469F9D2293C1B00062946B /* SelectPaymentPresenter.swift in Sources */, + 894B61E62424A8F9004A463D /* DomesticBankListTableViewCell.swift in Sources */, 7327568323B0456400BF66C5 /* ManageAgreementPresenter.swift in Sources */, 739A7784228BB2B40018A1A9 /* DetailOrderInteractor.swift in Sources */, 736A8C452277EB2A00337A50 /* BiometricNotificationPresenter.swift in Sources */, diff --git a/GME Remit/Modules/PowerCallModules/LocalTopup/PhoneCardRecharge/User Interface/View/PhoneCardRechargeViewController.swift b/GME Remit/Modules/PowerCallModules/LocalTopup/PhoneCardRecharge/User Interface/View/PhoneCardRechargeViewController.swift index 70f4ef4c..d362eb9f 100644 --- a/GME Remit/Modules/PowerCallModules/LocalTopup/PhoneCardRecharge/User Interface/View/PhoneCardRechargeViewController.swift +++ b/GME Remit/Modules/PowerCallModules/LocalTopup/PhoneCardRecharge/User Interface/View/PhoneCardRechargeViewController.swift @@ -119,8 +119,6 @@ class PhoneCardRechargeViewController: UIViewController { super.viewWillAppear(animated) setupNormalNavigation() self.title = "local_top_up_text".localized() - -// tableView.frame = CGRect(x: tableView.frame.origin.x, y: tableView.frame.origin.y, width: tableView.frame.size.width, height: tableView.size.height+) } override func viewDidAppear(_ animated: Bool) { diff --git a/GME Remit/Modules/RemittanceModules/DomesticModules/DomesticRemit/User Interface/View/Cell/DomesticBankListTableViewCell.swift b/GME Remit/Modules/RemittanceModules/DomesticModules/DomesticRemit/User Interface/View/Cell/DomesticBankListTableViewCell.swift new file mode 100644 index 00000000..c9a10cfd --- /dev/null +++ b/GME Remit/Modules/RemittanceModules/DomesticModules/DomesticRemit/User Interface/View/Cell/DomesticBankListTableViewCell.swift @@ -0,0 +1,48 @@ +// +// DomesticBankListTableViewCell.swift +// GME Remit +// +// Created by Jeongbae Kong on 2020/03/20. +// Copyright © 2020 Gobal Money Express Co. Ltd. All rights reserved. +// + +import UIKit + +class DomesticBankListTableViewCell: UITableViewCell { + + @IBOutlet private weak var bankNameLabel: UILabel! + @IBOutlet private weak var checkMarkImageView: UIImageView! + @IBOutlet private weak var domesticBankListBackgroundView: UIView! + + override func awakeFromNib() { + super.awakeFromNib() + // Initialization code + } + + func setModel(_ model: Account) { + + checkMarkImageView.isHidden = true + + if model.type == "wallet" { + bankNameLabel.text = model.bankName + } else { + guard let account = model.accountNumMasked else { + return bankNameLabel.text = model.bankName + } + bankNameLabel.text = "\(model.bankName ?? "") \(account)" + } + } + + override func setSelected(_ selected: Bool, animated: Bool) { + super.setSelected(selected, animated: animated) + if selected { + domesticBankListBackgroundView.layer.borderWidth = 1 + domesticBankListBackgroundView.layer.borderColor = UIColor.themeRed.cgColor + checkMarkImageView.isHidden = false + + } else { + domesticBankListBackgroundView.layer.borderColor = UIColor.clear.cgColor + checkMarkImageView.isHidden = true + } + } +} diff --git a/GME Remit/Modules/RemittanceModules/DomesticModules/DomesticRemit/User Interface/View/DomesticRemit.storyboard b/GME Remit/Modules/RemittanceModules/DomesticModules/DomesticRemit/User Interface/View/DomesticRemit.storyboard index 80ed5877..fe5e87a8 100644 --- a/GME Remit/Modules/RemittanceModules/DomesticModules/DomesticRemit/User Interface/View/DomesticRemit.storyboard +++ b/GME Remit/Modules/RemittanceModules/DomesticModules/DomesticRemit/User Interface/View/DomesticRemit.storyboard @@ -32,16 +32,85 @@ - + - + - + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + @@ -98,31 +167,31 @@ - + - + - + @@ -443,7 +512,7 @@ - + @@ -511,6 +580,7 @@ + @@ -542,6 +612,7 @@ + @@ -554,6 +625,9 @@ + + + diff --git a/GME Remit/Modules/RemittanceModules/DomesticModules/DomesticRemit/User Interface/View/DomesticRemitViewController.swift b/GME Remit/Modules/RemittanceModules/DomesticModules/DomesticRemit/User Interface/View/DomesticRemitViewController.swift index 08558c9e..9d230c20 100644 --- a/GME Remit/Modules/RemittanceModules/DomesticModules/DomesticRemit/User Interface/View/DomesticRemitViewController.swift +++ b/GME Remit/Modules/RemittanceModules/DomesticModules/DomesticRemit/User Interface/View/DomesticRemitViewController.swift @@ -44,6 +44,7 @@ class DomesticRemitViewController: UIViewController { @IBOutlet private weak var serviceFeeTitleLabel: UILabel! @IBOutlet private weak var balanceMainContainerView: UIStackView! + @IBOutlet weak var tableView: UITableView! @IBOutlet private weak var autodebitAccountDropDownImageView: UIImageView! @IBOutlet private weak var balanceContainerView: UIView! @IBOutlet private weak var bankDropDownImageView: UIImageView! @@ -61,6 +62,8 @@ class DomesticRemitViewController: UIViewController { override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) title = "local_transfer_text".localized() + let indexPath = IndexPath(row: 0, section: 0) + self.tableView.selectRow(at: indexPath, animated: false, scrollPosition: .top) } override func viewWillDisappear(_ animated: Bool) { @@ -151,6 +154,7 @@ extension DomesticRemitViewController { viewWillAppear: viewWillAppear, showBalanceTrigger: balanceButton.rx.tap.asDriver(), showRecentHistoryTrigger: recentHistoryButton.rx.tap.asDriver(), + selectedBankIndex: tableView.rx.itemSelected.map( { $0.row }).asDriverOnErrorJustComplete(), selectAutodebit: autoDebitTextField.rx.controlEvent(.editingDidBegin).asDriver(), selectBankTrigger: bankTextField.rx.controlEvent(.editingDidBegin).asDriver(), amount: amountTextField.rx.text.orEmpty.asDriver(), @@ -163,6 +167,8 @@ extension DomesticRemitViewController { let output = viewModel.transform(input: input) + + // output output.isError .drive( @@ -236,6 +242,14 @@ extension DomesticRemitViewController { }) .disposed(by: disposeBag) + output + .fetchBankList.drive( + tableView.rx.items(cellIdentifier: "DomesticBankListTableViewCell") + ) { (_, element: Account, cell: DomesticBankListTableViewCell) in + cell.setModel(element) + } + .disposed(by: disposeBag) + output.isAvailableRemit .drive(onNext: { isAvailable in self.amountTextField.validCondition = {_ in return isAvailable } diff --git a/GME Remit/Modules/RemittanceModules/DomesticModules/DomesticRemit/User Interface/View/ViewModel/DomesticRemitViewModel.swift b/GME Remit/Modules/RemittanceModules/DomesticModules/DomesticRemit/User Interface/View/ViewModel/DomesticRemitViewModel.swift index 2fb7de8c..38e5eac2 100644 --- a/GME Remit/Modules/RemittanceModules/DomesticModules/DomesticRemit/User Interface/View/ViewModel/DomesticRemitViewModel.swift +++ b/GME Remit/Modules/RemittanceModules/DomesticModules/DomesticRemit/User Interface/View/ViewModel/DomesticRemitViewModel.swift @@ -16,6 +16,7 @@ class DomesticRemitViewModel: ViewModelType { let viewWillAppear: Driver let showBalanceTrigger: Driver let showRecentHistoryTrigger: Driver + let selectedBankIndex: Driver let selectAutodebit: Driver let selectBankTrigger: Driver let amount: Driver @@ -30,6 +31,7 @@ class DomesticRemitViewModel: ViewModelType { let isError: Driver let isProgress: Driver let selectedAutodebit: Driver + let fetchBankList: Driver<[Account]> let selectedServiceFee: Driver let selectedBank: Driver let selectedRecipient: Driver @@ -54,6 +56,7 @@ class DomesticRemitViewModel: ViewModelType { private let getInitialDataLinker = BehaviorSubject(value: nil) private let getBalanceLinker = BehaviorSubject(value: nil) private let successRemitLinker = PublishSubject>() + private let getBankListLinker = BehaviorSubject<[Account]>(value: []) func transform(input: Input) -> Output { @@ -74,6 +77,16 @@ class DomesticRemitViewModel: ViewModelType { self.presenter?.fetchBalance(type: type, fintechUseNumber: fintechUseNumber) }).disposed(by: disposeBag) + input.selectedBankIndex + .withLatestFrom(getBankListLinker.asDriverOnErrorJustComplete()) { (indexPath, bank) -> Account in + return bank[indexPath] + } + .drive(onNext: {[weak self] in + self?.getBalanceLinker.onNext(nil) + self?.selectedAutodebitLinker.onNext($0) + }) + .disposed(by: disposeBag) + input.selectAutodebit.drive(onNext: { self.getBalanceLinker.onNext(nil) self.presenter?.showTablePresenter(type: .autodebit) @@ -181,6 +194,7 @@ class DomesticRemitViewModel: ViewModelType { isError: errorLinker.asDriverOnErrorJustComplete(), isProgress: progressLinker.asDriverOnErrorJustComplete(), selectedAutodebit: selectedAutodebitLinker.asDriverOnErrorJustComplete(), + fetchBankList: getBankListLinker.asDriverOnErrorJustComplete(), selectedServiceFee: selectedServiceFeeLinker.asDriverOnErrorJustComplete(), selectedBank: selectedBankLinker.asDriverOnErrorJustComplete(), selectedRecipient: selectedHistoryLinker.asDriverOnErrorJustComplete(), @@ -206,6 +220,10 @@ extension DomesticRemitViewModel: DomesticRemitViewModelInterface { func setModel(with model: DomesticRemitModel) { getInitialDataLinker.onNext(model) + guard let accounts = model.accounts else { return } + + getBankListLinker.onNext(accounts) + if model.accounts?.count != 0 { selectedData(with: model.accounts?[0], type: .autodebit) }