registerBiometric method

Future<Map<String, dynamic>> registerBiometric(
  1. List args
)

Implementation

Future<Map<String, dynamic>> registerBiometric(List<dynamic> args) async {
  final data = processArgs(args);

  final missingRequiredFields = validateRequiredFields(data, [
    "publicKey",
    "credentialId",
  ]);

  if (missingRequiredFields.isNotEmpty) {
    return RegisterBiometricModel(
      success: false,
      message: "Registration Failed. Missing required fields",
      device: await getDeviceInfo(),
      errorCodes: [
        Status.jsMissingFields.name,
      ],
    ).toMap();
  }

  final String publicKey = data["publicKey"];
  final String credentialId = data["credentialId"];
  final result = await sl<BiometricService>().register(
    publicKey,
    credentialId,
  );
  if (result == BiometricStatus.success) {
    await sl<StorageService>().writeBioPublicKey(publicKey, credentialId);
  }
  return RegisterBiometricModel(
    success: result == BiometricStatus.success,
    message: (result == BiometricStatus.success)
        ? "Registration Success"
        : result == BiometricStatus.bioNotAvailable
            ? "No biometrics found in the device"
            : "Registration Failed.",
    device: await getDeviceInfo(),
    errorCodes: [
      if (result != BiometricStatus.success) result.name,
    ],
  ).toMap();
}