runPasskeyEnrollment function

void runPasskeyEnrollment(
  1. Store store, {
  2. required String label,
  3. void onSuccess()?,
  4. void onFinished()?,
  5. void onFailure(
    1. String message
    )?,
})

Runs the passkey ENROLLMENT ceremony (session-scoped): register/options → native authenticator (create) → register/verify.

Implementation

void runPasskeyEnrollment(
  Store<dynamic> store, {
  required String label,
  void Function()? onSuccess,
  void Function()? onFinished,
  void Function(String message)? onFailure,
}) {
  store.dispatch(PostPasskeyRegisterOptions(
    onSuccess: (resp) async {
      try {
        final parsed = _publicKeyOptions(resp.body);
        final res = await _authenticator.register(
          RegisterRequestType.fromJson(
            parsed['publicKey'] as Map<String, dynamic>,
          ),
        );
        store.dispatch(PostPasskeyRegisterVerify(
          parsed['flowId'] as String,
          label,
          res.toJson(),
          onSuccess: (_) {
            onFinished?.call();
            onSuccess?.call();
          },
          onError: (e) {
            onFinished?.call();
            onFailure?.call(e.description ?? 'Passkey setup failed.');
          },
        ));
      } catch (e) {
        onFinished?.call();
        onFailure?.call(passkeyErrorMessage(e, setup: true));
      }
    },
    onError: (e) {
      onFinished?.call();
      onFailure?.call(e.description ?? 'Passkey setup failed.');
    },
  ));
}