Skip to content

Commit 4192609

Browse files
author
Aferdita
authored
Merge pull request #12 from NYPL-Simplified/data_persistence_#2
Created UserInfo class to hold In-Progress information for Patron dur…
2 parents 4f88f48 + be1b6e1 commit 4192609

File tree

4 files changed

+96
-0
lines changed

4 files changed

+96
-0
lines changed

NYPLCardCreator/Classes/AddressViewController.swift

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ final class AddressViewController: FormTableViewController {
4646

4747
self.navigationItem.rightBarButtonItem?.isEnabled = false
4848
self.prepareTableViewCells()
49+
self.checkToPrefillForm()
4950
}
5051

5152
@available(*, unavailable)
@@ -115,6 +116,32 @@ final class AddressViewController: FormTableViewController {
115116
for: .allEditingEvents)
116117
}
117118

119+
func checkToPrefillForm() {
120+
switch self.addressStep {
121+
case .home:
122+
if let address = self.configuration.user.homeAddress {
123+
self.preFillFormWithAddress(address)
124+
}
125+
case .work:
126+
if let address = self.configuration.user.workAddress {
127+
self.preFillFormWithAddress(address)
128+
}
129+
case .school:
130+
if let address = self.configuration.user.schoolAddress {
131+
self.preFillFormWithAddress(address)
132+
}
133+
}
134+
}
135+
136+
func preFillFormWithAddress(_ address: Address) {
137+
self.street1Cell.textField.text = address.street1
138+
self.street2Cell.textField.text = address.street2
139+
self.cityCell.textField.text = address.city
140+
self.regionCell.textField.text = address.region
141+
self.zipCell.textField.text = address.zip
142+
textFieldDidChange()
143+
}
144+
118145
// MARK: UITextFieldDelegate
119146

120147
@objc func textField(_ textField: UITextField,
@@ -136,6 +163,20 @@ final class AddressViewController: FormTableViewController {
136163

137164
// MARK: -
138165

166+
override func viewWillDisappear(_ animated: Bool) {
167+
super.viewWillDisappear(animated)
168+
if isMovingFromParentViewController {
169+
switch self.addressStep {
170+
case .home:
171+
self.configuration.user.homeAddress = self.currentAddress()
172+
case .work:
173+
self.configuration.user.workAddress = self.currentAddress()
174+
case .school:
175+
self.configuration.user.schoolAddress = self.currentAddress()
176+
}
177+
}
178+
}
179+
139180
@objc override func didSelectNext() {
140181
self.view.endEditing(false)
141182
self.submit()

NYPLCardCreator/Classes/CardCreatorConfiguration.swift

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ import Foundation
1616
/// This will always be called on the main thread. It will only be called in the event
1717
/// of a successful registration.
1818
let completionHandler: (_ username: String, _ PIN: String, _ userInitiated: Bool) -> Void
19+
/// Saves in-progress data entered by User/Patron
20+
var user: UserInfo
1921

2022
public init(
2123
endpointURL: URL,
@@ -30,6 +32,20 @@ import Foundation
3032
self.endpointPassword = endpointPassword
3133
self.requestTimeoutInterval = requestTimeoutInterval
3234
self.completionHandler = completionHandler
35+
self.user = UserInfo()
3336
super.init()
3437
}
3538
}
39+
40+
final class UserInfo {
41+
var homeAddress: Address?
42+
var workAddress: Address?
43+
var schoolAddress: Address?
44+
45+
var firstName: String?
46+
var middleName: String?
47+
var lastName: String?
48+
var email: String?
49+
50+
var username: String?
51+
}

NYPLCardCreator/Classes/NameAndEmailViewController.swift

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ final class NameAndEmailViewController: FormTableViewController {
4545
self.navigationItem.rightBarButtonItem?.isEnabled = false
4646

4747
self.prepareTableViewCells()
48+
self.checkToPrefillForm()
4849
}
4950

5051
@available(*, unavailable)
@@ -82,8 +83,30 @@ final class NameAndEmailViewController: FormTableViewController {
8283
self.emailCell.textField.autocorrectionType = .no
8384
}
8485

86+
func checkToPrefillForm() {
87+
let user = self.configuration.user
88+
if let firstName = user.firstName {
89+
self.firstNameCell.textField.text = firstName
90+
self.middleInitialCell.textField.text = user.middleName
91+
self.lastNameCell.textField.text = user.lastName
92+
self.emailCell.textField.text = user.email
93+
textFieldDidChange()
94+
}
95+
}
96+
8597
// MARK: -
8698

99+
override func viewWillDisappear(_ animated: Bool) {
100+
super.viewWillDisappear(animated)
101+
if isMovingFromParentViewController {
102+
let user = self.configuration.user
103+
user.firstName = self.firstNameCell.textField.text
104+
user.middleName = self.middleInitialCell.textField.text
105+
user.lastName = self.lastNameCell.textField.text
106+
user.email = self.emailCell.textField.text
107+
}
108+
}
109+
87110
@objc override func didSelectNext() {
88111
self.view.endEditing(false)
89112

NYPLCardCreator/Classes/UsernameAndPINViewController.swift

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ final class UsernameAndPINViewController: FormTableViewController {
4848
self.navigationItem.rightBarButtonItem?.isEnabled = false
4949

5050
self.prepareTableViewCells()
51+
self.checkToPrefillForm()
5152
}
5253

5354
required init?(coder aDecoder: NSCoder) {
@@ -80,6 +81,21 @@ final class UsernameAndPINViewController: FormTableViewController {
8081
self.pinCell.textField.inputAccessoryView = self.returnToolbar()
8182
}
8283

84+
func checkToPrefillForm() {
85+
let user = self.configuration.user
86+
if let username = user.username {
87+
self.usernameCell.textField.text = username
88+
textFieldDidChange()
89+
}
90+
}
91+
92+
override func viewWillDisappear(_ animated: Bool) {
93+
super.viewWillDisappear(animated)
94+
if isMovingFromParentViewController {
95+
self.configuration.user.username = self.usernameCell.textField.text
96+
}
97+
}
98+
8399
// MARK: UITableViewDataSource
84100

85101
func tableView(_ tableView: UITableView, titleForFooterInSection section: Int) -> String? {

0 commit comments

Comments
 (0)