Skip to content

Commit fa59a2f

Browse files
committed
8750 Start search again when try again tapped
1 parent 2812cc3 commit fa59a2f

File tree

7 files changed

+23
-19
lines changed

7 files changed

+23
-19
lines changed

WooCommerce/Classes/ViewModels/CardPresentPayments/CardPresentModalConnectingFailed.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import Yosemite
44
/// Modal presented when an error occurs while connecting to a reader
55
///
66
final class CardPresentModalConnectingFailed: CardPresentPaymentsModalViewModel {
7-
private let continueSearchAction: () -> Void
7+
private let retrySearchAction: () -> Void
88
private let cancelSearchAction: () -> Void
99

1010
let textMode: PaymentsModalTextMode = .reducedTopInfo
@@ -31,9 +31,9 @@ final class CardPresentModalConnectingFailed: CardPresentPaymentsModalViewModel
3131
}
3232

3333
init(error: Error,
34-
continueSearch: @escaping () -> Void,
34+
retrySearch: @escaping () -> Void,
3535
cancelSearch: @escaping () -> Void) {
36-
self.continueSearchAction = continueSearch
36+
self.retrySearchAction = retrySearch
3737
self.cancelSearchAction = cancelSearch
3838

3939
switch error {
@@ -45,7 +45,7 @@ final class CardPresentModalConnectingFailed: CardPresentPaymentsModalViewModel
4545
}
4646

4747
func didTapPrimaryButton(in viewController: UIViewController?) {
48-
continueSearchAction()
48+
retrySearchAction()
4949
}
5050

5151
func didTapSecondaryButton(in viewController: UIViewController?) {

WooCommerce/Classes/ViewRelated/CardPresentPayments/BuiltInCardReaderConnectionController.swift

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -231,6 +231,13 @@ private extension BuiltInCardReaderConnectionController {
231231
/// discovered changes, so some care around state must be taken here.
232232
///
233233

234+
/// To avoid interrupting connecting to a known reader, ensure we are
235+
/// in the searching state before proceeding further
236+
///
237+
guard case .searching = self.state else {
238+
return
239+
}
240+
234241
/// If we have a found reader, advance to `connectToReader`
235242
///
236243
if cardReaders.isNotEmpty {
@@ -441,19 +448,14 @@ private extension BuiltInCardReaderConnectionController {
441448
self.state = .retry
442449
}
443450

444-
// TODO: Consider removing this in favour of retry only – continue doesn't make sense for a built-in reader
445-
let continueSearch = {
446-
self.state = .searching
447-
}
448-
449451
let cancelSearch = {
450452
self.state = .cancel(.connectionError)
451453
}
452454

453455
guard case CardReaderServiceError.connection(let underlyingError) = error else {
454456
return alertsPresenter.present(
455457
viewModel: alertsProvider.connectingFailed(error: error,
456-
continueSearch: continueSearch,
458+
retrySearch: retrySearch,
457459
cancelSearch: cancelSearch))
458460
}
459461

@@ -475,7 +477,7 @@ private extension BuiltInCardReaderConnectionController {
475477
alertsPresenter.present(
476478
viewModel: alertsProvider.connectingFailed(
477479
error: error,
478-
continueSearch: continueSearch,
480+
retrySearch: retrySearch,
479481
cancelSearch: cancelSearch))
480482
} else {
481483
alertsPresenter.present(

WooCommerce/Classes/ViewRelated/CardPresentPayments/CardReaderConnectionController.swift

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -645,7 +645,7 @@ private extension CardReaderConnectionController {
645645
guard case CardReaderServiceError.connection(let underlyingError) = error else {
646646
return alertsPresenter.present(
647647
viewModel: alertsProvider.connectingFailed(error: error,
648-
continueSearch: continueSearch,
648+
retrySearch: continueSearch,
649649
cancelSearch: cancelSearch))
650650
}
651651

@@ -668,10 +668,12 @@ private extension CardReaderConnectionController {
668668
retrySearch: retrySearch,
669669
cancelSearch: cancelSearch))
670670
default:
671+
// We continueSearch here from a button labeled `Try again`, rather than retrying from the beginning,
672+
// this is because the original reader can be re-discovered in the same process.
671673
alertsPresenter.present(
672674
viewModel: alertsProvider.connectingFailed(
673675
error: error,
674-
continueSearch: continueSearch,
676+
retrySearch: continueSearch,
675677
cancelSearch: cancelSearch))
676678
}
677679
}

WooCommerce/Classes/ViewRelated/Dashboard/Settings/CardReadersV2/BluetoothReaderConnectionAlertsProvider.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,9 @@ struct BluetoothReaderConnectionAlertsProvider: BluetoothReaderConnnectionAlerts
1616
}
1717

1818
func connectingFailed(error: Error,
19-
continueSearch: @escaping () -> Void,
19+
retrySearch: @escaping () -> Void,
2020
cancelSearch: @escaping () -> Void) -> CardPresentPaymentsModalViewModel {
21-
CardPresentModalConnectingFailed(error: error, continueSearch: continueSearch, cancelSearch: cancelSearch)
21+
CardPresentModalConnectingFailed(error: error, retrySearch: retrySearch, cancelSearch: cancelSearch)
2222
}
2323

2424
func connectingFailedNonRetryable(error: Error, close: @escaping () -> Void) -> CardPresentPaymentsModalViewModel {

WooCommerce/Classes/ViewRelated/Dashboard/Settings/CardReadersV2/BuiltInReaderConnectionAlertsProvider.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,10 @@ struct BuiltInReaderConnectionAlertsProvider: CardReaderConnectionAlertsProvidin
1616
}
1717

1818
func connectingFailed(error: Error,
19-
continueSearch: @escaping () -> Void,
19+
retrySearch: @escaping () -> Void,
2020
cancelSearch: @escaping () -> Void) -> CardPresentPaymentsModalViewModel {
2121
CardPresentModalBuiltInConnectingFailed(error: error,
22-
continueSearch: continueSearch,
22+
continueSearch: retrySearch,
2323
cancelSearch: cancelSearch)
2424
}
2525

WooCommerce/Classes/ViewRelated/Dashboard/Settings/CardReadersV2/CardReaderConnectionAlertsProviding.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ protocol CardReaderConnectionAlertsProviding {
2323
/// or cancel
2424
///
2525
func connectingFailed(error: Error,
26-
continueSearch: @escaping () -> Void,
26+
retrySearch: @escaping () -> Void,
2727
cancelSearch: @escaping () -> Void) -> CardPresentPaymentsModalViewModel
2828

2929
/// Defines an alert indicating connecting failed, in a way which must be resolved outside

WooCommerce/Classes/ViewRelated/Dashboard/Settings/CardReadersV2/CardReaderSettingsAlerts.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -190,7 +190,7 @@ private extension CardReaderSettingsAlerts {
190190
func connectingFailed(error: Error,
191191
continueSearch: @escaping () -> Void,
192192
cancelSearch: @escaping () -> Void) -> CardPresentPaymentsModalViewModel {
193-
CardPresentModalConnectingFailed(error: error, continueSearch: continueSearch, cancelSearch: cancelSearch)
193+
CardPresentModalConnectingFailed(error: error, retrySearch: continueSearch, cancelSearch: cancelSearch)
194194
}
195195

196196
func connectingFailedUpdateAddress(openWCSettings: ((UIViewController) -> Void)?,

0 commit comments

Comments
 (0)