Browse Source

edit auto fill

pull/1/head
InKwon James Kim 5 years ago
parent
commit
d97e223cf9
  1. 44
      GME Remit/Modules/RegisterModules/UserAuthentication/NewRegisterStep1/User Interface/Presenter/NewRegisterStep1Presenter.swift
  2. 2
      GME Remit/Modules/RegisterModules/UserAuthentication/NewRegisterStep1/User Interface/View/NewRegisterStep1.storyboard
  3. 60
      GME Remit/Modules/RegisterModules/UserAuthentication/NewRegisterStep1/User Interface/View/NewRegisterStep1ViewController.swift

44
GME Remit/Modules/RegisterModules/UserAuthentication/NewRegisterStep1/User Interface/Presenter/NewRegisterStep1Presenter.swift

@ -77,9 +77,9 @@ class NewRegisterStep1Presenter: ViewModelType {
private let gpsAddress = PublishSubject<String>() private let gpsAddress = PublishSubject<String>()
private let model = PublishSubject<KYCInformation>() private let model = PublishSubject<KYCInformation>()
private var personalInformation = BehaviorSubject<PersonalInformation?>(value: nil)
private var primaryInformation = BehaviorSubject<PrimaryInformation?>(value: nil)
private var pictureInformation = BehaviorSubject<PictureInformation?>(value: nil)
private var storedPersonalInfo = PublishSubject<PersonalInformation?>()
private var storedPrimaryInfo = PublishSubject<PrimaryInformation?>()
private var pictureInformation = PublishSubject<PictureInformation?>()
func transform(input: Input) -> Output { func transform(input: Input) -> Output {
input.viewWillAppear.drive(onNext: { [weak self] in input.viewWillAppear.drive(onNext: { [weak self] in
@ -128,18 +128,19 @@ class NewRegisterStep1Presenter: ViewModelType {
address: address address: address
) : nil ) : nil
} }
.withLatestFrom(personalInformation.asDriverOnErrorJustComplete()) { (new, exist)
.withLatestFrom(storedPersonalInfo.asDriverOnErrorJustComplete()) { [weak self] (new, stored)
-> PersonalInformation? in -> PersonalInformation? in
guard let newInfo = new, let existInfo = exist else {
guard let newInfo = new, let storedInfo = stored else {
return new return new
} }
if newInfo != existInfo {
self.personalInformation.onNext(nil)
return nil
if newInfo == storedInfo {
self?.storedPersonalInfo.onNext(newInfo)
} else {
self?.storedPersonalInfo.onNext(nil)
} }
self.personalInformation.onNext(newInfo)
return new return new
} }
@ -181,17 +182,18 @@ class NewRegisterStep1Presenter: ViewModelType {
primaryInfo?.refferalCode = referralCode primaryInfo?.refferalCode = referralCode
return primaryInfo return primaryInfo
} }
.withLatestFrom(primaryInformation.asDriverOnErrorJustComplete()) { (new, exist)
.withLatestFrom(storedPrimaryInfo.asDriverOnErrorJustComplete()) { [weak self] (new, stored)
-> PrimaryInformation? in -> PrimaryInformation? in
guard let newInfo = new, let existInfo = exist else {
guard let newInfo = new, let storedInfo = stored else {
return new return new
} }
if newInfo != existInfo {
self.primaryInformation.onNext(nil)
return nil
if newInfo == storedInfo {
self?.storedPrimaryInfo.onNext(new)
} else {
self?.storedPrimaryInfo.onNext(nil)
} }
self.primaryInformation.onNext(new)
return new return new
} }
@ -199,14 +201,14 @@ class NewRegisterStep1Presenter: ViewModelType {
.drive(onNext: {[weak self] in .drive(onNext: {[weak self] in
// TODO: try to save to server the personal information. // TODO: try to save to server the personal information.
// if success save then set personalInformation. // if success save then set personalInformation.
self?.personalInformation.onNext($0)
self?.storedPersonalInfo.onNext($0)
}).disposed(by: disposeBag) }).disposed(by: disposeBag)
input.primaryInfoSave.withLatestFrom(primaryInfo) { $1 } input.primaryInfoSave.withLatestFrom(primaryInfo) { $1 }
.drive(onNext: {[weak self] in .drive(onNext: {[weak self] in
// TODO: try to save to server the primary information. // TODO: try to save to server the primary information.
// if success save then set personalInformation. // if success save then set personalInformation.
self?.primaryInformation.onNext($0)
self?.storedPrimaryInfo.onNext($0)
}).disposed(by: disposeBag) }).disposed(by: disposeBag)
return Output( return Output(
@ -218,8 +220,8 @@ class NewRegisterStep1Presenter: ViewModelType {
banks: model.map {$0.banks}.asDriverOnErrorJustComplete(), banks: model.map {$0.banks}.asDriverOnErrorJustComplete(),
idTypes: model.map {$0.idTypes}.asDriverOnErrorJustComplete(), idTypes: model.map {$0.idTypes}.asDriverOnErrorJustComplete(),
branches: model.map {$0.branches}.asDriverOnErrorJustComplete(), branches: model.map {$0.branches}.asDriverOnErrorJustComplete(),
isSetPersonalInformation: personalInformation.map {$0 != nil}.asDriverOnErrorJustComplete(),
isSetPrimaryInformation: primaryInformation.map {$0 != nil}.asDriverOnErrorJustComplete(),
isSetPersonalInformation: storedPersonalInfo.map {$0 != nil}.asDriverOnErrorJustComplete(),
isSetPrimaryInformation: storedPrimaryInfo.map {$0 != nil}.asDriverOnErrorJustComplete(),
isSetPictureInformation: pictureInformation.map {$0 != nil}.asDriverOnErrorJustComplete() isSetPictureInformation: pictureInformation.map {$0 != nil}.asDriverOnErrorJustComplete()
) )
} }
@ -229,11 +231,11 @@ class NewRegisterStep1Presenter: ViewModelType {
extension NewRegisterStep1Presenter: NewRegisterStep1InteractorOutput { extension NewRegisterStep1Presenter: NewRegisterStep1InteractorOutput {
func setModel(with model: KYCInformation) { func setModel(with model: KYCInformation) {
if let personalInfo = model.personalInformation, personalInfo.isFilledFully() { if let personalInfo = model.personalInformation, personalInfo.isFilledFully() {
personalInformation.onNext(personalInfo)
storedPersonalInfo.onNext(personalInfo)
} }
if let primaryInfo = model.primaryInformation, primaryInfo.isFilledFully() { if let primaryInfo = model.primaryInformation, primaryInfo.isFilledFully() {
primaryInformation.onNext(primaryInfo)
storedPrimaryInfo.onNext(primaryInfo)
} }
self.model.onNext(model) self.model.onNext(model)

2
GME Remit/Modules/RegisterModules/UserAuthentication/NewRegisterStep1/User Interface/View/NewRegisterStep1.storyboard

@ -71,7 +71,7 @@
</constraints> </constraints>
<color key="textColor" name="ThemeText"/> <color key="textColor" name="ThemeText"/>
<fontDescription key="fontDescription" name="SanFranciscoDisplay-Regular" family="San Francisco Display" pointSize="14"/> <fontDescription key="fontDescription" name="SanFranciscoDisplay-Regular" family="San Francisco Display" pointSize="14"/>
<textInputTraits key="textInputTraits"/>
<textInputTraits key="textInputTraits" autocapitalizationType="allCharacters" keyboardType="alphabet" textContentType="name"/>
<userDefinedRuntimeAttributes> <userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="boolean" keyPath="isShowTitle" value="NO"/> <userDefinedRuntimeAttribute type="boolean" keyPath="isShowTitle" value="NO"/>
<userDefinedRuntimeAttribute type="boolean" keyPath="isUseTitle" value="NO"/> <userDefinedRuntimeAttribute type="boolean" keyPath="isUseTitle" value="NO"/>

60
GME Remit/Modules/RegisterModules/UserAuthentication/NewRegisterStep1/User Interface/View/NewRegisterStep1ViewController.swift

@ -335,39 +335,55 @@ extension NewRegisterStep1ViewController {
}).disposed(by: disposeBag) }).disposed(by: disposeBag)
output.isSetPersonalInformation.drive(onNext: {[weak self] isSet in
if isSet {
self?.personalSaveButton.animateHidden(isHidden: true) {
self?.bankInformationContainerView.animateHidden(isHidden: false)
}
} else {
self?.bankInformationContainerView.animateHidden(isHidden: true) {
self?.personalSaveButton.animateHidden(isHidden: false)
output.isSetPersonalInformation
.distinctUntilChanged()
.drive(onNext: {[weak self] isSet in
DispatchQueue.main.async {
if isSet {
self?.personalSaveButton.animateHidden(isHidden: true) {
self?.bankInformationContainerView.animateHidden(isHidden: false)
}
} else {
self?.bankInformationContainerView.animateHidden(isHidden: true) {
self?.personalSaveButton.animateHidden(isHidden: false)
}
} }
} }
}).disposed(by: disposeBag) }).disposed(by: disposeBag)
output.isSetPrimaryInformation.drive(onNext: {[weak self] isSet in
if isSet {
self?.bankSaveButton.animateHidden(isHidden: true) {
self?.uploadPicturesContainerView.animateHidden(isHidden: false)
}
} else {
self?.uploadPicturesContainerView.animateHidden(isHidden: true) {
self?.bankSaveButton.animateHidden(isHidden: false)
output.isSetPrimaryInformation
.distinctUntilChanged()
.drive(onNext: {[weak self] isSet in
DispatchQueue.main.async {
if isSet {
self?.bankSaveButton.animateHidden(isHidden: true) {
self?.uploadPicturesContainerView.animateHidden(isHidden: false)
}
} else {
self?.uploadPicturesContainerView.animateHidden(isHidden: true) {
self?.bankSaveButton.animateHidden(isHidden: false)
}
} }
} }
}).disposed(by: disposeBag) }).disposed(by: disposeBag)
isValidPersonalInfo.asDriverOnErrorJustComplete().drive(onNext: {[weak self] in
self?.personalSaveButton.isEnabled = $0
self?.personalSaveButton.backgroundColor = $0 ? .themeRed : .lightGray
isValidPersonalInfo
.distinctUntilChanged()
.asDriverOnErrorJustComplete().drive(onNext: {[weak self] isEnable in
DispatchQueue.main.async {
self?.personalSaveButton.isEnabled = isEnable
self?.personalSaveButton.backgroundColor = isEnable ? .themeRed : .lightGray
}
}).disposed(by: disposeBag) }).disposed(by: disposeBag)
isValidPrimaryInfo.asDriverOnErrorJustComplete().drive(onNext: {[weak self] in
self?.bankSaveButton.isEnabled = $0
self?.bankSaveButton.backgroundColor = $0 ? .themeRed : .lightGray
isValidPrimaryInfo
.distinctUntilChanged()
.asDriverOnErrorJustComplete().drive(onNext: {[weak self] isEnable in
DispatchQueue.main.async {
self?.bankSaveButton.isEnabled = isEnable
self?.bankSaveButton.backgroundColor = isEnable ? .themeRed : .lightGray
}
}).disposed(by: disposeBag) }).disposed(by: disposeBag)
} }

Loading…
Cancel
Save