Skip to content

Commit 3321fb4

Browse files
authored
Merge pull request #5473 from woocommerce/issue/5333-battery-level-updating
[Mobile Payments] Implement didReportBatteryLevel delegate to get battery level updates from readers
2 parents 1da71a3 + 23d91df commit 3321fb4

File tree

3 files changed

+27
-1
lines changed

3 files changed

+27
-1
lines changed

Hardware/Hardware/CardReader/CardReader.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/// Models a Card Reader. This is the public struct that clients of
22
/// Hardware are expected to consume.
3-
/// CardReader is meant to be inmutable.
3+
/// CardReader is meant to be immutable.
44
public struct CardReader {
55

66
/// The CardReader serial number

Hardware/Hardware/CardReader/StripeCardReader/StripeCardReaderService.swift

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -521,6 +521,31 @@ extension StripeCardReaderService: BluetoothReaderDelegate {
521521
break
522522
}
523523
}
524+
525+
/// Receive changes in the reader battery level. Note that the SDK will call this delegate
526+
/// not more frequently than every 10 minutes and will not report battery level during payment collection.
527+
/// See `https://github.com/stripe/stripe-terminal-ios/issues/121#issuecomment-966589886`
528+
///
529+
public func reader(_ reader: Reader, didReportBatteryLevel batteryLevel: Float, status: BatteryStatus, isCharging: Bool) {
530+
let connectedReaders = connectedReadersSubject.value
531+
532+
guard let connectedReader = connectedReaders.first else {
533+
return
534+
}
535+
536+
let connectedReaderWithUpdatedBatteryLevel = CardReader(
537+
serial: connectedReader.serial,
538+
vendorIdentifier: connectedReader.vendorIdentifier,
539+
name: connectedReader.name,
540+
status: connectedReader.status,
541+
softwareVersion: connectedReader.softwareVersion,
542+
batteryLevel: batteryLevel,
543+
readerType: connectedReader.readerType,
544+
locationId: connectedReader.locationId
545+
)
546+
547+
connectedReadersSubject.send([connectedReaderWithUpdatedBatteryLevel])
548+
}
524549
}
525550

526551
// MARK: - Terminal delegate

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,7 @@ final class CardReaderSettingsConnectedViewModel: CardReaderSettingsPresentedVie
102102
updateReaderID()
103103
updateBatteryLevel()
104104
updateSoftwareVersion()
105+
didUpdate?()
105106
}
106107

107108
private func updateReaderID() {

0 commit comments

Comments
 (0)