Skip to content

Commit 0371448

Browse files
authored
IOS-8947 Reset env (#397)
1 parent c786fca commit 0371448

File tree

2 files changed

+17
-3
lines changed

2 files changed

+17
-3
lines changed

TangemSdk/TangemSdk/Common/Core/CardSession.swift

+12-3
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ public class CardSession {
3333
}
3434

3535
// initial environment to be able to reset a current one
36-
private let _environment: SessionEnvironment
36+
private var _environment: SessionEnvironment
3737
public internal(set) var environment: SessionEnvironment
3838

3939
private let reader: CardReader
@@ -350,6 +350,7 @@ public class CardSession {
350350

351351
private func sessionDidStop(completion: (() -> Void)?) {
352352
nfcReaderSubscriptions = []
353+
resetEnvironment()
353354
preflightReadMode = .fullCardRead
354355
sendSubscription = []
355356
viewDelegate.sessionStopped(completion: completion)
@@ -422,7 +423,7 @@ public class CardSession {
422423
case .preflightFiltered:
423424
self.viewDelegate.wrongCard(message: error.localizedDescription)
424425
// We have to return environment to initial state to reset all the changes
425-
self.environment = self._environment
426+
self.resetEnvironment()
426427
DispatchQueue.global().asyncAfter(deadline: .now() + 2) {
427428
guard self.reader.isReady else {
428429
onSessionStarted(self, .userCancelled)
@@ -584,6 +585,11 @@ public class CardSession {
584585
resetCodesController!.cardIdDisplayFormat = config.cardIdDisplayFormat
585586
resetCodesController!.start(codeType: type, cardId: cardId, completion: completion)
586587
}
588+
589+
private func resetEnvironment() {
590+
_environment.resetCodes()
591+
environment = _environment
592+
}
587593
}
588594
//MARK: - JSON RPC
589595
extension CardSession {
@@ -596,7 +602,10 @@ extension CardSession {
596602
do {
597603
request = try JSONRPCRequest(jsonString: jsonRequest)
598604
let runnable = try jsonConverter.convert(request: request)
599-
runnable.run(in: self) { completion($0.toJsonResponse(id: request.id).json) }
605+
runnable.run(in: self) {
606+
completion($0.toJsonResponse(id: request.id).json)
607+
self.resetEnvironment()
608+
}
600609
} catch {
601610
completion(error.toJsonResponse(id: request?.id).json)
602611
}

TangemSdk/TangemSdk/Common/Core/SessionEnvironment.swift

+5
Original file line numberDiff line numberDiff line change
@@ -52,4 +52,9 @@ public struct SessionEnvironment {
5252
return passcode.value != type.defaultValue.sha256()
5353
}
5454
}
55+
56+
mutating func resetCodes() {
57+
accessCode = .init(.accessCode)
58+
passcode = .init(.passcode)
59+
}
5560
}

0 commit comments

Comments
 (0)