Skip to content

2.1.0

Latest

Choose a tag to compare

@TheKalpeshPawar TheKalpeshPawar released this 04 Apr 17:44
a77c7cb

What's Changed

Full Changelog: 2.0.5...breaking-changes

Breaking Changes

PasscodeManager API overhaul:

  • Constructor no longer takes CoroutineScope. Now takes isExternalAuthEnabled: Boolean parameter.
  • PasscodeAction sealed interface removed. Use direct methods instead:
    • passcodeManager.changePasscode()
    • passcodeManager.logOut()
    • passcodeManager.disableExternalAuth()
    • passcodeManager.notifyExternalAuthSuccess()
    • passcodeManager.setExternalAuthEnabled(enabled)
  • PasscodeEvent sealed interface removed. Use PasscodeResult via onResult callback.
  • 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 single onResult: (PasscodeResult) -> Unit.
  • biometricButton parameter renamed to externalAuthButton.

PasscodeStorageAdapter:

  • saveRegistrationData(), loadRegistrationData(), deleteRegistrationData() are deprecated. Use BiometricStorageAdapter from the biometrics library instead.

Naming:

  • All Biometric* names in PasscodeAction, PasscodeEvent, PasscodeStep, PasscodeState renamed to External* 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.UserCancelled added — when blocks on AuthenticationResult must handle this new variant.
  • RegistrationResult.UserCancelled added — when blocks on RegistrationResult must handle this new variant.