Skip to content

Commit 49074db

Browse files
authored
Merge pull request #5133 from woocommerce/issue/5131-low-batt-disable-update-button
2 parents 4b270f3 + a1a2488 commit 49074db

File tree

2 files changed

+26
-2
lines changed

2 files changed

+26
-2
lines changed

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

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ private extension CardReaderSettingsConnectedViewController {
7070
guard let viewModel = viewModel else {
7171
return
7272
}
73+
7374
viewModel.checkForCardReaderUpdate()
7475
}
7576

@@ -199,7 +200,13 @@ private extension CardReaderSettingsConnectedViewController {
199200
}
200201

201202
if readerUpdateAvailable == .isTrue {
202-
cell.configure(image: .infoOutlineImage, text: Localization.updateAvailable)
203+
let readerBatteryTooLow = viewModel?.readerBatteryTooLowForUpdates ?? false
204+
205+
if readerBatteryTooLow {
206+
cell.configure(image: .infoOutlineImage, text: Localization.updateAvailableLowBatt)
207+
} else {
208+
cell.configure(image: .infoOutlineImage, text: Localization.updateAvailable)
209+
}
203210
cell.backgroundColor = .warningBackground
204211
cell.imageView?.tintColor = .warning
205212
}
@@ -231,7 +238,8 @@ private extension CardReaderSettingsConnectedViewController {
231238

232239
let readerDisconnectInProgress = viewModel?.readerDisconnectInProgress ?? false
233240
let readerUpdateInProgress = viewModel?.readerUpdateInProgress ?? false
234-
cell.enableButton(readerUpdateAvailable && !readerDisconnectInProgress && !readerUpdateInProgress)
241+
let readerBatteryTooLow = viewModel?.readerBatteryTooLowForUpdates ?? false
242+
cell.enableButton(readerUpdateAvailable && !readerDisconnectInProgress && !readerUpdateInProgress && !readerBatteryTooLow)
235243
cell.showActivityIndicator(readerUpdateInProgress)
236244

237245
cell.selectionStyle = .none
@@ -378,6 +386,11 @@ private extension CardReaderSettingsConnectedViewController {
378386
comment: "Settings > Manage Card Reader > Connected Reader > A prompt to update a reader running older software"
379387
)
380388

389+
static let updateAvailableLowBatt = NSLocalizedString(
390+
"An update is available, but your reader battery is too low to update. Please charge your reader right away to continue accepting payments",
391+
comment: "Settings > Manage Card Reader > Connected Reader > A prompt to charge a reader running older software"
392+
)
393+
381394
static let updateNotNeeded = NSLocalizedString(
382395
"Congratulations! Your reader is running the latest software",
383396
comment: "Settings > Manage Card Reader > Connected Reader > A prompt to update a reader running older software"

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

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ final class CardReaderSettingsConnectedViewModel: CardReaderSettingsPresentedVie
1212

1313
private(set) var checkForReaderUpdateInProgress: Bool = false
1414
private(set) var readerUpdateAvailable: CardReaderSettingsTriState = .isUnknown
15+
private(set) var readerBatteryTooLowForUpdates: Bool = false
1516
private(set) var readerUpdateInProgress: Bool = false
1617
private(set) var readerUpdateCompletedSuccessfully: Bool = false
1718

@@ -61,6 +62,8 @@ final class CardReaderSettingsConnectedViewModel: CardReaderSettingsPresentedVie
6162
return
6263
}
6364

65+
readerBatteryTooLowForUpdates = batteryLevel < Constants.batteryLevelNeededForUpdates
66+
6467
let batteryLevelPercent = Int(100 * batteryLevel)
6568
let batteryLevelString = NumberFormatter.localizedString(from: batteryLevelPercent as NSNumber, number: .decimal)
6669
connectedReaderBatteryLevel = String.localizedStringWithFormat(Localization.batteryLabelFormat, batteryLevelString)
@@ -181,6 +184,14 @@ final class CardReaderSettingsConnectedViewModel: CardReaderSettingsPresentedVie
181184
}
182185
}
183186

187+
// MARK: - Constants
188+
//
189+
private extension CardReaderSettingsConnectedViewModel {
190+
enum Constants {
191+
static let batteryLevelNeededForUpdates = Float(0.5)
192+
}
193+
}
194+
184195
// MARK: - Localization
185196
//
186197
private extension CardReaderSettingsConnectedViewModel {

0 commit comments

Comments
 (0)