Skip to content

Commit 1c14f1f

Browse files
WIP: Clean up view model
1 parent 16a19b9 commit 1c14f1f

File tree

2 files changed

+34
-44
lines changed

2 files changed

+34
-44
lines changed

Kickstarter-iOS/Features/PledgeShippingLocation/PledgeShippingLocationViewController.swift

Lines changed: 13 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -123,19 +123,19 @@ final class PledgeShippingLocationViewController: UIViewController {
123123
self.delegate?.pledgeShippingLocationViewControllerLayoutDidUpdate(self, shimmerLoadingViewIsHidden)
124124
}
125125

126-
self.viewModel.outputs.notifyDelegateOfSelectedShippingRule
126+
self.viewModel.outputs.notifyDelegateOfSelectedShippingLocation
127127
.observeForUI()
128-
.observeValues { [weak self] shippingRule in
128+
.observeValues { [weak self] location in
129129
guard let self = self else { return }
130130

131-
self.delegate?.pledgeShippingLocationViewController(self, didSelect: shippingRule.location)
131+
self.delegate?.pledgeShippingLocationViewController(self, didSelect: location)
132132
}
133133

134134
self.viewModel.outputs.presentShippingRules
135135
.observeForUI()
136-
.observeValues { [weak self] project, shippingRules, selectedShippingRule in
136+
.observeValues { [weak self] project, shippingRules, location in
137137
self?.presentShippingRules(
138-
project, shippingRules: shippingRules, selectedShippingRule: selectedShippingRule
138+
project, shippingRules: shippingRules, selectedLocation: location
139139
)
140140
}
141141

@@ -169,41 +169,29 @@ final class PledgeShippingLocationViewController: UIViewController {
169169
// MARK: - Functions
170170

171171
private func presentShippingRules(
172-
_: Project, shippingRules: [ShippingRule], selectedShippingRule: ShippingRule
172+
_: Project, shippingRules: [ShippingRule], selectedLocation: Location
173173
) {
174174
let viewController = ShippingLocationsViewController(
175175
withLocations: shippingRules.map { $0.location },
176-
selectedLocation: selectedShippingRule.location
177-
) { _ in
178-
// TODO:
176+
selectedLocation: selectedLocation
177+
) { location in
178+
179+
self.viewModel.inputs.shippingLocationUpdated(to: location)
179180
}
180181
self.presentViewControllerWithSheetOverlay(viewController, offset: Layout.Sheet.offset)
181-
182-
/*
183-
let viewController = ShippingRulesTableViewController.instantiate()
184-
viewController.configureWith(
185-
project, shippingRules: shippingRules,
186-
selectedShippingRule: selectedShippingRule
187-
)
188-
viewController.delegate = self
189-
190-
let navigationController = UINavigationController(rootViewController: viewController)
191-
192-
self.presentViewControllerWithSheetOverlay(navigationController, offset: Layout.Sheet.offset)
193-
*/
194182
}
195183
}
196184

197185
extension PledgeShippingLocationViewController: ShippingRulesTableViewControllerDelegate {
198186
func shippingRulesTableViewControllerCancelButtonTapped() {
199-
self.viewModel.inputs.shippingRulesCancelButtonTapped()
187+
// self.viewModel.inputs.shippingLocationCancelButtonTapped()
200188
}
201189

202190
func shippingRulesTableViewController(
203191
_: ShippingRulesTableViewController,
204-
didSelect shippingRule: ShippingRule
192+
didSelect _: ShippingRule
205193
) {
206-
self.viewModel.inputs.shippingRuleUpdated(to: shippingRule)
194+
// self.viewModel.inputs.shippingLocationUpdated(to: lo)
207195
}
208196
}
209197

Library/ViewModels/PledgeShippingLocationViewModel.swift

Lines changed: 21 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -12,16 +12,16 @@ public struct PledgeShippingLocationViewData {
1212
public protocol PledgeShippingLocationViewModelInputs {
1313
func configureWith(data: PledgeShippingLocationViewData)
1414
func shippingLocationButtonTapped()
15-
func shippingRulesCancelButtonTapped()
16-
func shippingRuleUpdated(to rule: ShippingRule)
15+
func shippingLocationCancelButtonTapped()
16+
func shippingLocationUpdated(to rule: Location)
1717
func viewDidLoad()
1818
}
1919

2020
public protocol PledgeShippingLocationViewModelOutputs {
2121
var adaptableStackViewIsHidden: Signal<Bool, Never> { get }
2222
var dismissShippingRules: Signal<Void, Never> { get }
23-
var presentShippingRules: Signal<(Project, [ShippingRule], ShippingRule), Never> { get }
24-
var notifyDelegateOfSelectedShippingRule: Signal<ShippingRule, Never> { get }
23+
var presentShippingRules: Signal<(Project, [ShippingRule], Location), Never> { get }
24+
var notifyDelegateOfSelectedShippingLocation: Signal<Location, Never> { get }
2525
var shimmerLoadingViewIsHidden: Signal<Bool, Never> { get }
2626
var shippingLocationButtonTitle: Signal<String, Never> { get }
2727
var shippingRulesError: Signal<String, Never> { get }
@@ -76,29 +76,30 @@ public final class PledgeShippingLocationViewModel: PledgeShippingLocationViewMo
7676
selectedLocationId
7777
)
7878
.map(determineShippingRule)
79+
.map { $0?.location }
7980

8081
self.shippingRulesError = shippingRulesEvent.errors().map { _ in
8182
Strings.We_were_unable_to_load_the_shipping_destinations()
8283
}
8384

84-
self.notifyDelegateOfSelectedShippingRule = Signal.merge(
85+
self.notifyDelegateOfSelectedShippingLocation = Signal.merge(
8586
initialShippingRule.skipNil(),
86-
self.shippingRuleUpdatedSignal
87+
self.shippingLocationUpdatedSignal
8788
)
8889

8990
self.presentShippingRules = Signal.combineLatest(
9091
project,
9192
shippingRulesEvent.values(),
92-
self.notifyDelegateOfSelectedShippingRule
93+
self.notifyDelegateOfSelectedShippingLocation
9394
)
9495
.takeWhen(self.shippingLocationButtonTappedSignal)
9596

96-
self.shippingLocationButtonTitle = self.notifyDelegateOfSelectedShippingRule
97-
.map { $0.location.localizedName }
97+
self.shippingLocationButtonTitle = self.notifyDelegateOfSelectedShippingLocation
98+
.map { $0.localizedName }
9899

99100
self.dismissShippingRules = Signal.merge(
100-
self.shippingRulesCancelButtonTappedProperty.signal,
101-
self.shippingRuleUpdatedSignal.signal
101+
self.shippingLocationCancelButtonTappedProperty.signal,
102+
self.shippingLocationUpdatedSignal.signal
102103
.ignoreValues()
103104
.ksr_debounce(.milliseconds(300), on: AppEnvironment.current.scheduler)
104105
)
@@ -115,14 +116,15 @@ public final class PledgeShippingLocationViewModel: PledgeShippingLocationViewMo
115116
self.shippingLocationButtonTappedObserver.send(value: ())
116117
}
117118

118-
private let shippingRulesCancelButtonTappedProperty = MutableProperty(())
119-
public func shippingRulesCancelButtonTapped() {
120-
self.shippingRulesCancelButtonTappedProperty.value = ()
119+
private let shippingLocationCancelButtonTappedProperty = MutableProperty(())
120+
public func shippingLocationCancelButtonTapped() {
121+
self.shippingLocationCancelButtonTappedProperty.value = ()
121122
}
122123

123-
private let (shippingRuleUpdatedSignal, shippingRuleUpdatedObserver) = Signal<ShippingRule, Never>.pipe()
124-
public func shippingRuleUpdated(to rule: ShippingRule) {
125-
self.shippingRuleUpdatedObserver.send(value: rule)
124+
private let (shippingLocationUpdatedSignal, shippingLocationUpdatedObserver) = Signal<Location, Never>
125+
.pipe()
126+
public func shippingLocationUpdated(to location: Location) {
127+
self.shippingLocationUpdatedObserver.send(value: location)
126128
}
127129

128130
private let viewDidLoadProperty = MutableProperty(())
@@ -132,8 +134,8 @@ public final class PledgeShippingLocationViewModel: PledgeShippingLocationViewMo
132134

133135
public let adaptableStackViewIsHidden: Signal<Bool, Never>
134136
public let dismissShippingRules: Signal<Void, Never>
135-
public let presentShippingRules: Signal<(Project, [ShippingRule], ShippingRule), Never>
136-
public let notifyDelegateOfSelectedShippingRule: Signal<ShippingRule, Never>
137+
public let presentShippingRules: Signal<(Project, [ShippingRule], Location), Never>
138+
public let notifyDelegateOfSelectedShippingLocation: Signal<Location, Never>
137139
public let shimmerLoadingViewIsHidden: Signal<Bool, Never>
138140
public let shippingLocationButtonTitle: Signal<String, Never>
139141
public let shippingRulesError: Signal<String, Never>

0 commit comments

Comments
 (0)