Skip to content
This repository was archived by the owner on Dec 14, 2021. It is now read-only.

Commit bee0241

Browse files
chamini2sashei
authored andcommitted
make finger print auth action flatter (#529)
* change FingerprintAuthAction to have flatter structure * update usage of FingerprintAuthAction * rename OnAuthSuccess to OnSuccess and OnAuthError to OnError * styling
1 parent 6f5140e commit bee0241

16 files changed

+54
-99
lines changed

app/src/main/java/mozilla/lockbox/action/FingerprintAuthAction.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@
77
package mozilla.lockbox.action
88

99
import mozilla.lockbox.flux.Action
10-
import mozilla.lockbox.model.FingerprintAuthCallback
1110

1211
sealed class FingerprintAuthAction : Action {
13-
data class OnAuthentication(val authCallback: FingerprintAuthCallback) : FingerprintAuthAction()
12+
object OnSuccess : FingerprintAuthAction()
13+
object OnError : FingerprintAuthAction()
1414
object OnCancel : FingerprintAuthAction()
1515
}

app/src/main/java/mozilla/lockbox/model/FingerprintAuthCallback.kt

Lines changed: 0 additions & 12 deletions
This file was deleted.

app/src/main/java/mozilla/lockbox/presenter/AutofillLockedPresenter.kt

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ import mozilla.lockbox.action.FingerprintAuthAction
1515
import mozilla.lockbox.action.RouteAction
1616
import mozilla.lockbox.flux.Dispatcher
1717
import mozilla.lockbox.flux.Presenter
18-
import mozilla.lockbox.model.FingerprintAuthCallback
1918
import mozilla.lockbox.store.FingerprintStore
2019
import mozilla.lockbox.store.LockedStore
2120
import mozilla.lockbox.store.SettingStore
@@ -49,12 +48,8 @@ class AutofillLockedPresenter(
4948
lockedStore.onAuthentication
5049
.subscribe {
5150
when (it) {
52-
is FingerprintAuthAction.OnAuthentication -> {
53-
when (it.authCallback) {
54-
is FingerprintAuthCallback.OnAuth -> unlock()
55-
is FingerprintAuthCallback.OnError -> unlockFallback()
56-
}
57-
}
51+
is FingerprintAuthAction.OnSuccess -> unlock()
52+
is FingerprintAuthAction.OnError -> unlockFallback()
5853
is FingerprintAuthAction.OnCancel -> dispatcher.dispatch(AutofillAction.Cancel)
5954
}
6055
}

app/src/main/java/mozilla/lockbox/presenter/FingerprintDialogPresenter.kt

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,19 +9,17 @@ package mozilla.lockbox.presenter
99
import io.reactivex.Observable
1010
import io.reactivex.rxkotlin.addTo
1111
import mozilla.lockbox.action.FingerprintAuthAction
12-
import mozilla.lockbox.action.FingerprintAuthAction.OnAuthentication
1312
import mozilla.lockbox.action.FingerprintSensorAction
1413
import mozilla.lockbox.flux.Dispatcher
1514
import mozilla.lockbox.flux.Presenter
16-
import mozilla.lockbox.model.FingerprintAuthCallback
1715
import mozilla.lockbox.store.FingerprintStore
1816
import mozilla.lockbox.store.FingerprintStore.AuthenticationState
1917

2018
interface FingerprintDialogView {
2119
fun onSucceeded()
2220
fun onFailed(error: String?)
2321
fun onError(error: String?)
24-
val authCallback: Observable<FingerprintAuthCallback>
22+
val authCallback: Observable<FingerprintAuthAction>
2523
val onDismiss: Observable<Unit>
2624
}
2725

@@ -37,7 +35,7 @@ class FingerprintDialogPresenter(
3735
.addTo(compositeDisposable)
3836

3937
view.authCallback
40-
.subscribe { dispatcher.dispatch(OnAuthentication(it)) }
38+
.subscribe(dispatcher::dispatch)
4139
.addTo(compositeDisposable)
4240

4341
view.onDismiss

app/src/main/java/mozilla/lockbox/presenter/FingerprintOnboardingPresenter.kt

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,17 +17,16 @@ import mozilla.lockbox.action.SettingAction
1717
import mozilla.lockbox.flux.Dispatcher
1818
import mozilla.lockbox.flux.Presenter
1919
import mozilla.lockbox.log
20-
import mozilla.lockbox.model.FingerprintAuthCallback
21-
import mozilla.lockbox.store.SettingStore
2220
import mozilla.lockbox.store.FingerprintStore
2321
import mozilla.lockbox.store.FingerprintStore.AuthenticationState
22+
import mozilla.lockbox.store.SettingStore
2423

2524
interface FingerprintOnboardingView {
2625
fun onSucceeded()
2726
fun onFailed(error: String?)
2827
fun onError(error: String?)
2928
val onSkipClick: Observable<Unit>
30-
val authCallback: Observable<FingerprintAuthCallback>
29+
val authCallback: Observable<FingerprintAuthAction>
3130
}
3231

3332
@ExperimentalCoroutinesApi
@@ -44,9 +43,9 @@ class FingerprintOnboardingPresenter(
4443

4544
view.authCallback
4645
.subscribe {
47-
dispatcher.dispatch(FingerprintAuthAction.OnAuthentication(it))
46+
dispatcher.dispatch(it)
4847
val unlock = when (it) {
49-
is FingerprintAuthCallback.OnAuth -> true
48+
is FingerprintAuthAction.OnSuccess -> true
5049
else -> false
5150
}
5251
dispatcher.dispatch(SettingAction.UnlockWithFingerprint(unlock))

app/src/main/java/mozilla/lockbox/presenter/LockedPresenter.kt

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ import mozilla.lockbox.action.RouteAction
1515
import mozilla.lockbox.action.UnlockingAction
1616
import mozilla.lockbox.flux.Dispatcher
1717
import mozilla.lockbox.flux.Presenter
18-
import mozilla.lockbox.model.FingerprintAuthCallback
1918
import mozilla.lockbox.store.FingerprintStore
2019
import mozilla.lockbox.store.LockedStore
2120
import mozilla.lockbox.store.SettingStore
@@ -68,11 +67,9 @@ class LockedPresenter(
6867

6968
lockedStore.onAuthentication
7069
.subscribe {
71-
if (it is FingerprintAuthAction.OnAuthentication) {
72-
when (it.authCallback) {
73-
is FingerprintAuthCallback.OnAuth -> unlock()
74-
is FingerprintAuthCallback.OnError -> unlockFallback()
75-
}
70+
when (it) {
71+
is FingerprintAuthAction.OnSuccess -> unlock()
72+
is FingerprintAuthAction.OnError -> unlockFallback()
7673
}
7774
}
7875
.addTo(compositeDisposable)

app/src/main/java/mozilla/lockbox/presenter/SettingPresenter.kt

Lines changed: 7 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ import mozilla.lockbox.adapter.TextSettingConfiguration
2727
import mozilla.lockbox.adapter.ToggleSettingConfiguration
2828
import mozilla.lockbox.flux.Dispatcher
2929
import mozilla.lockbox.flux.Presenter
30-
import mozilla.lockbox.model.FingerprintAuthCallback
3130
import mozilla.lockbox.store.FingerprintStore
3231
import mozilla.lockbox.store.SettingStore
3332

@@ -94,20 +93,13 @@ class SettingPresenter(
9493
override fun onViewReady() {
9594
settingStore.onEnablingFingerprint
9695
.subscribe {
97-
if (it is FingerprintAuthAction.OnAuthentication) {
98-
when (it.authCallback) {
99-
is FingerprintAuthCallback.OnAuth ->
100-
dispatcher.dispatch(
101-
SettingAction.UnlockWithFingerprint(true)
102-
)
103-
is FingerprintAuthCallback.OnError -> {
104-
dispatcher.dispatch(
105-
SettingAction.UnlockWithFingerprint(false)
106-
)
107-
}
108-
}
109-
} else {
110-
dispatcher.dispatch(SettingAction.UnlockWithFingerprint(false))
96+
when (it) {
97+
is FingerprintAuthAction.OnSuccess ->
98+
dispatcher.dispatch(SettingAction.UnlockWithFingerprint(true))
99+
is FingerprintAuthAction.OnError ->
100+
dispatcher.dispatch(SettingAction.UnlockWithFingerprint(false))
101+
is FingerprintAuthAction.OnCancel ->
102+
dispatcher.dispatch(SettingAction.UnlockWithFingerprint(false))
111103
}
112104

113105
dispatcher.dispatch(SettingAction.UnlockWithFingerprintPendingAuth(false))

app/src/main/java/mozilla/lockbox/view/FingerprintAuthDialogFragment.kt

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,26 +7,26 @@
77
package mozilla.lockbox.view
88

99
import android.os.Bundle
10-
import androidx.annotation.StringRes
1110
import android.view.LayoutInflater
1211
import android.view.View
1312
import android.view.ViewGroup
13+
import androidx.annotation.StringRes
1414
import com.jakewharton.rxbinding2.view.clicks
1515
import io.reactivex.Observable
1616
import io.reactivex.disposables.CompositeDisposable
1717
import io.reactivex.rxkotlin.addTo
1818
import io.reactivex.subjects.PublishSubject
1919
import kotlinx.android.synthetic.main.fragment_fingerprint_dialog.view.*
2020
import mozilla.lockbox.R
21-
import mozilla.lockbox.model.FingerprintAuthCallback
21+
import mozilla.lockbox.action.FingerprintAuthAction
2222
import mozilla.lockbox.presenter.FingerprintDialogPresenter
2323
import mozilla.lockbox.presenter.FingerprintDialogView
2424
import mozilla.lockbox.support.Constant
2525

2626
class FingerprintAuthDialogFragment : DialogFragment(), FingerprintDialogView {
2727
private val compositeDisposable = CompositeDisposable()
28-
private val _authCallback = PublishSubject.create<FingerprintAuthCallback>()
29-
override val authCallback: Observable<FingerprintAuthCallback> get() = _authCallback
28+
private val _authCallback = PublishSubject.create<FingerprintAuthAction>()
29+
override val authCallback: Observable<FingerprintAuthAction> get() = _authCallback
3030
private val _dismiss = PublishSubject.create<Unit>()
3131
override val onDismiss: Observable<Unit> get() = _dismiss
3232
private var isEnablingDismissed: Boolean = true
@@ -67,7 +67,7 @@ class FingerprintAuthDialogFragment : DialogFragment(), FingerprintDialogView {
6767
view!!.imageView.run {
6868
setImageResource(R.drawable.ic_fingerprint_success)
6969
postDelayed({
70-
_authCallback.onNext(FingerprintAuthCallback.OnAuth)
70+
_authCallback.onNext(FingerprintAuthAction.OnSuccess)
7171
isEnablingDismissed = false
7272
dismissAllowingStateLoss()
7373
}, Constant.FingerprintTimeout.successDelayMillis)
@@ -82,7 +82,7 @@ class FingerprintAuthDialogFragment : DialogFragment(), FingerprintDialogView {
8282
override fun onError(error: String?) {
8383
showError(error ?: getString(R.string.fingerprint_sensor_error))
8484
view!!.imageView.postDelayed({
85-
_authCallback.onNext(FingerprintAuthCallback.OnError)
85+
_authCallback.onNext(FingerprintAuthAction.OnError)
8686
dismiss()
8787
}, Constant.FingerprintTimeout.errorTimeoutMillis)
8888
}

app/src/main/java/mozilla/lockbox/view/FingerprintOnboardingFragment.kt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,15 @@ import io.reactivex.subjects.PublishSubject
1010
import kotlinx.android.synthetic.main.fragment_fingerprint_onboarding.view.*
1111
import kotlinx.coroutines.ExperimentalCoroutinesApi
1212
import mozilla.lockbox.R
13+
import mozilla.lockbox.action.FingerprintAuthAction
1314
import mozilla.lockbox.presenter.FingerprintOnboardingPresenter
1415
import mozilla.lockbox.presenter.FingerprintOnboardingView
15-
import mozilla.lockbox.model.FingerprintAuthCallback
1616
import mozilla.lockbox.support.Constant
1717

1818
@ExperimentalCoroutinesApi
1919
class FingerprintOnboardingFragment : Fragment(), FingerprintOnboardingView {
20-
private val _authCallback = PublishSubject.create<FingerprintAuthCallback>()
21-
override val authCallback: Observable<FingerprintAuthCallback> get() = _authCallback
20+
private val _authCallback = PublishSubject.create<FingerprintAuthAction>()
21+
override val authCallback: Observable<FingerprintAuthAction> get() = _authCallback
2222

2323
override val onSkipClick: Observable<Unit>
2424
get() = view!!.skipButton.clicks()
@@ -41,7 +41,7 @@ class FingerprintOnboardingFragment : Fragment(), FingerprintOnboardingView {
4141

4242
view!!.sensorDescription.removeCallbacks(resetErrorTextRunnable)
4343
view!!.iconFingerprint.postDelayed({
44-
_authCallback.onNext(FingerprintAuthCallback.OnAuth)
44+
_authCallback.onNext(FingerprintAuthAction.OnSuccess)
4545
isEnablingDismissed = false
4646
}, Constant.FingerprintTimeout.successDelayMillis)
4747
}
@@ -53,7 +53,7 @@ class FingerprintOnboardingFragment : Fragment(), FingerprintOnboardingView {
5353
override fun onError(error: String?) {
5454
showError(error ?: getString(R.string.fingerprint_sensor_error))
5555
view!!.postDelayed(
56-
{ _authCallback.onNext(FingerprintAuthCallback.OnError) },
56+
{ _authCallback.onNext(FingerprintAuthAction.OnError) },
5757
Constant.FingerprintTimeout.errorTimeoutMillis
5858
)
5959
}

app/src/test/java/mozilla/lockbox/presenter/AutofillLockedPresenterTest.kt

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ import mozilla.lockbox.action.RouteAction
2020
import mozilla.lockbox.extensions.assertLastValue
2121
import mozilla.lockbox.flux.Action
2222
import mozilla.lockbox.flux.Dispatcher
23-
import mozilla.lockbox.model.FingerprintAuthCallback
2423
import mozilla.lockbox.store.FingerprintStore
2524
import mozilla.lockbox.store.LockedStore
2625
import mozilla.lockbox.store.SettingStore
@@ -102,21 +101,21 @@ class AutofillLockedPresenterTest : DisposingTest() {
102101

103102
@Test
104103
fun `on successful fingerprint authentication`() {
105-
lockedStore.authenticationStub.onNext(FingerprintAuthAction.OnAuthentication(FingerprintAuthCallback.OnAuth))
104+
lockedStore.authenticationStub.onNext(FingerprintAuthAction.OnSuccess)
106105
dispatcherObserver.assertLastValue(DataStoreAction.Unlock)
107106
}
108107

109108
@Test
110109
fun `on unsuccessful fingerprint authentication when there is no other security`() {
111110
fingerprintStore.keyguardDeviceSecureStub = false
112-
lockedStore.authenticationStub.onNext(FingerprintAuthAction.OnAuthentication(FingerprintAuthCallback.OnError))
111+
lockedStore.authenticationStub.onNext(FingerprintAuthAction.OnError)
113112
dispatcherObserver.assertLastValue(DataStoreAction.Unlock)
114113
}
115114

116115
@Test
117116
fun `on unsuccessful fingerprint authentication when there is other security`() {
118117
fingerprintStore.keyguardDeviceSecureStub = true
119-
lockedStore.authenticationStub.onNext(FingerprintAuthAction.OnAuthentication(FingerprintAuthCallback.OnError))
118+
lockedStore.authenticationStub.onNext(FingerprintAuthAction.OnError)
120119
assertTrue(view.unlockFallbackCalled)
121120
}
122121

0 commit comments

Comments
 (0)