small refactor to reduce the #available checks needed

This commit is contained in:
Michele Balistreri 2020-12-03 08:32:00 +03:00
parent b3d56547fb
commit 6da5774757
2 changed files with 5 additions and 19 deletions

View File

@ -1,12 +1,7 @@
import Foundation import Foundation
import Keycard import Keycard
@available(iOS 13.0, *)
class SmartCard { class SmartCard {
func nfcIsSupported() -> Bool {
return KeycardController.isAvailable
}
func initialize(channel: CardChannel, pin: String, resolve: RCTPromiseResolveBlock, reject: RCTPromiseRejectBlock) throws -> Void { func initialize(channel: CardChannel, pin: String, resolve: RCTPromiseResolveBlock, reject: RCTPromiseRejectBlock) throws -> Void {
let puk = self.randomPUK() let puk = self.randomPUK()
let pairingPassword = self.randomPairingPassword(); let pairingPassword = self.randomPairingPassword();

View File

@ -3,21 +3,12 @@ import Keycard
@objc(StatusKeycard) @objc(StatusKeycard)
class StatusKeycard: NSObject { class StatusKeycard: NSObject {
@available(iOS 13.0, *) let smartCard = SmartCard()
private(set) lazy var smartCard: SmartCard? = nil
override init() {
super.init()
if #available(iOS 13.0, *) {
self.smartCard = SmartCard()
}
}
@objc @objc
func nfcIsSupported(_ resolve: RCTPromiseResolveBlock, rejecter reject: RCTPromiseRejectBlock) -> Void { func nfcIsSupported(_ resolve: RCTPromiseResolveBlock, rejecter reject: RCTPromiseRejectBlock) -> Void {
if #available(iOS 13.0, *) { if #available(iOS 13.0, *) {
resolve(smartCard?.nfcIsSupported()) resolve(KeycardController.isAvailable)
} else { } else {
resolve(false) resolve(false)
} }
@ -37,17 +28,17 @@ class StatusKeycard: NSObject {
@objc @objc
func `init`(_ pin: String, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) -> Void { func `init`(_ pin: String, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) -> Void {
keycardInvokation(reject) { [unowned self] channel in if #available(iOS 13.0, *) { try self.smartCard?.initialize(channel: channel, pin: pin, resolve: resolve, reject: reject) } } keycardInvokation(reject) { [unowned self] channel in try self.smartCard.initialize(channel: channel, pin: pin, resolve: resolve, reject: reject) }
} }
@objc @objc
func signPinless(_ hash: String, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) -> Void { func signPinless(_ hash: String, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) -> Void {
keycardInvokation(reject) { [unowned self] channel in if #available(iOS 13.0, *) { try self.smartCard?.signPinless(channel: channel, hash: hash, resolve: resolve, reject: reject)} } keycardInvokation(reject) { [unowned self] channel in try self.smartCard.signPinless(channel: channel, hash: hash, resolve: resolve, reject: reject) }
} }
@objc @objc
func pair(_ pairingPassword: String, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) -> Void { func pair(_ pairingPassword: String, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) -> Void {
keycardInvokation(reject) { [unowned self] channel in if #available(iOS 13.0, *) { try self.smartCard?.pair(channel: channel, pairingPassword: pairingPassword, resolve: resolve, reject: reject)} } keycardInvokation(reject) { [unowned self] channel in try self.smartCard.pair(channel: channel, pairingPassword: pairingPassword, resolve: resolve, reject: reject) }
} }
@objc @objc