What's Changed
- Biometrics button on passcode screen by @TheKalpeshPawar in #67
- Handel cancellation of bio metric prompt by user && Critical bug fixes by @TheKalpeshPawar in #70
- Simplify PasscodeManager API and decouple passcode/biometrics libraries by @TheKalpeshPawar in #73
Full Changelog: 2.0.5...breaking-changes
Breaking Changes
PasscodeManager API overhaul:
- Constructor no longer takes
CoroutineScope. Now takesisExternalAuthEnabled: Booleanparameter. PasscodeActionsealed interface removed. Use direct methods instead:passcodeManager.changePasscode()passcodeManager.logOut()passcodeManager.disableExternalAuth()passcodeManager.notifyExternalAuthSuccess()passcodeManager.setExternalAuthEnabled(enabled)
PasscodeEventsealed interface removed. UsePasscodeResultviaonResultcallback.trySendAction()removed.rememberPasscodeManager()removed. Scope as a singleton via your DI framework..initialize()removed. Initialization happens in constructor.
PasscodeScreen signature changed:
- 7 individual callbacks (
onPasscodeConfirm,onForgotButton,onPasscodeCreation,onPasscodeChanged,onPasscodeRejected,onDisableExternalAuth,onExternalAuthError) replaced by singleonResult: (PasscodeResult) -> Unit. biometricButtonparameter renamed toexternalAuthButton.
PasscodeStorageAdapter:
saveRegistrationData(),loadRegistrationData(),deleteRegistrationData()are deprecated. UseBiometricStorageAdapterfrom the biometrics library instead.
Naming:
- All
Biometric*names inPasscodeAction,PasscodeEvent,PasscodeStep,PasscodeStaterenamed toExternal*equivalents (e.g.isBiometricEnabled->isExternalAuthEnabled,DisableBiometrics->DisableExternalAuth).
Migration
Before:
// Constructor
PasscodeManager(adapter, MainScope()).initialize(isExternalAuthEnabled)
// Sending actions
passcodeManager.trySendAction(PasscodeAction.ChangePasscode)
passcodeManager.trySendAction(PasscodeAction.BiometricUnlockSuccess)
// PasscodeScreen
PasscodeScreen(
passcodeManager = passcodeManager,
onPasscodeConfirm = { navigate(Home) },
onPasscodeCreation = { navigate(Setup) },
onForgotButton = { navigate(Login) },
// ... 4 more callbacks
)After:
// Constructor
PasscodeManager(adapter, isExternalAuthEnabled)
// Direct methods
passcodeManager.changePasscode()
passcodeManager.notifyExternalAuthSuccess()
// PasscodeScreen
PasscodeScreen(
passcodeManager = passcodeManager,
onResult = { result ->
when (result) {
PasscodeResult.Verified -> navigate(Home)
PasscodeResult.Created -> navigate(Setup)
PasscodeResult.Forgotten -> navigate(Login)
PasscodeResult.Changed -> navigate(Home)
PasscodeResult.ExternalAuthDisabled -> popBack()
PasscodeResult.Rejected -> { }
}
},
)Biometrics Library:
AuthenticationResult.UserCancelledadded —whenblocks onAuthenticationResultmust handle this new variant.RegistrationResult.UserCancelledadded —whenblocks onRegistrationResultmust handle this new variant.