diff --git a/secant/Features/BackupFlow/RecoveryPhraseValidation.swift b/secant/Features/BackupFlow/RecoveryPhraseValidation.swift index c39a188..3368e4b 100644 --- a/secant/Features/BackupFlow/RecoveryPhraseValidation.swift +++ b/secant/Features/BackupFlow/RecoveryPhraseValidation.swift @@ -157,13 +157,18 @@ extension RecoveryPhraseValidationReducer { if state.isComplete { let value: RecoveryPhraseValidationAction = state.isValid ? .succeed : .fail + let effect = Effect(value: value) + .delay(for: 1, scheduler: environment.mainQueue) + .eraseToEffect() - return .concatenate( - Effect(value: .failureFeedback), - Effect(value: value) - .delay(for: 1, scheduler: environment.mainQueue) - .eraseToEffect() - ) + if value == .succeed { + return effect + } else { + return .concatenate( + Effect(value: .failureFeedback), + effect + ) + } } return .none diff --git a/secantTests/RecoveryPhraseValidationTests/RecoveryPhraseValidationTests.swift b/secantTests/RecoveryPhraseValidationTests/RecoveryPhraseValidationTests.swift index 0873b8a..d9e3da0 100644 --- a/secantTests/RecoveryPhraseValidationTests/RecoveryPhraseValidationTests.swift +++ b/secantTests/RecoveryPhraseValidationTests/RecoveryPhraseValidationTests.swift @@ -15,7 +15,8 @@ class RecoveryPhraseValidationTests: XCTestCase { let testEnvironment = BackupPhraseEnvironment( mainQueue: testScheduler.eraseToAnyScheduler(), newPhrase: { Effect(value: .init(words: RecoveryPhrase.placeholder.words)) }, - pasteboard: .test + pasteboard: .test, + feedbackGenerator: .silent ) func testPickWordsFromMissingIndices() throws { @@ -374,6 +375,10 @@ class RecoveryPhraseValidationTests: XCTestCase { Self.testScheduler.advance(by: 2) + store.receive(.failureFeedback) { + XCTAssertTrue($0.isComplete) + } + store.receive(.fail) { $0.route = .failure XCTAssertFalse($0.isValid)