src/android/PromptInfo.java
package de.niklasmerz.cordova.biometric;
import android.os.Bundle;
import org.json.JSONArray;
class PromptInfo {
private static final String DISABLE_BACKUP = "disableBackup";
private static final String TITLE = "title";
private static final String SUBTITLE = "subtitle";
private static final String DESCRIPTION = "description";
private static final String FALLBACK_BUTTON_TITLE = "fallbackButtonTitle";
private static final String CANCEL_BUTTON_TITLE = "cancelButtonTitle";
private static final String CONFIRMATION_REQUIRED = "confirmationRequired";
private static final String INVALIDATE_ON_ENROLLMENT = "invalidateOnEnrollment";
private static final String SECRET = "secret";
private static final String BIOMETRIC_ACTIVITY_TYPE = "biometricActivityType";
static final String SECRET_EXTRA = "secret";
private Bundle bundle = new Bundle();
Bundle getBundle() {
return bundle;
}
String getTitle() {
return bundle.getString(TITLE);
}
String getSubtitle() {
return bundle.getString(SUBTITLE);
}
String getDescription() {
return bundle.getString(DESCRIPTION);
}
boolean isDeviceCredentialAllowed() {
return !bundle.getBoolean(DISABLE_BACKUP);
}
String getFallbackButtonTitle() {
return bundle.getString(FALLBACK_BUTTON_TITLE);
}
String getCancelButtonTitle() {
return bundle.getString(CANCEL_BUTTON_TITLE);
}
boolean getConfirmationRequired() {
return bundle.getBoolean(CONFIRMATION_REQUIRED);
}
String getSecret() {
return bundle.getString(SECRET);
}
boolean invalidateOnEnrollment() {
return bundle.getBoolean(INVALIDATE_ON_ENROLLMENT);
}
BiometricActivityType getType() {
return BiometricActivityType.fromValue(bundle.getInt(BIOMETRIC_ACTIVITY_TYPE));
}
public static final class Builder {
private static final String TAG = "PromptInfo.Builder";
private Bundle bundle;
private boolean disableBackup = false;
private String title;
private String subtitle = null;
private String description = null;
private String fallbackButtonTitle = "Use backup";
private String cancelButtonTitle = "Cancel";
private boolean confirmationRequired = true;
private boolean invalidateOnEnrollment = false;
private String secret = null;
private BiometricActivityType type = null;
Builder(String applicationLabel) {
if (applicationLabel == null) {
title = "Biometric Sign On";
} else {
title = applicationLabel + " Biometric Sign On";
}
}
Builder(Bundle bundle) {
this.bundle = bundle;
}
public PromptInfo build() {
PromptInfo promptInfo = new PromptInfo();
if (this.bundle != null) {
promptInfo.bundle = bundle;
return promptInfo;
}
Bundle bundle = new Bundle();
bundle.putString(SUBTITLE, this.subtitle);
bundle.putString(TITLE, this.title);
bundle.putString(DESCRIPTION, this.description);
bundle.putString(FALLBACK_BUTTON_TITLE, this.fallbackButtonTitle);
bundle.putString(CANCEL_BUTTON_TITLE, this.cancelButtonTitle);
bundle.putString(SECRET, this.secret);
bundle.putBoolean(DISABLE_BACKUP, this.disableBackup);
bundle.putBoolean(CONFIRMATION_REQUIRED, this.confirmationRequired);
bundle.putBoolean(INVALIDATE_ON_ENROLLMENT, this.invalidateOnEnrollment);
bundle.putInt(BIOMETRIC_ACTIVITY_TYPE, this.type.getValue());
promptInfo.bundle = bundle;
return promptInfo;
}
void parseArgs(JSONArray jsonArgs, BiometricActivityType type) {
this.type = type;
Args args = new Args(jsonArgs);
disableBackup = args.getBoolean(DISABLE_BACKUP, disableBackup);
title = args.getString(TITLE, title);
subtitle = args.getString(SUBTITLE, subtitle);
description = args.getString(DESCRIPTION, description);
fallbackButtonTitle = args.getString(FALLBACK_BUTTON_TITLE, fallbackButtonTitle);
cancelButtonTitle = args.getString(CANCEL_BUTTON_TITLE, cancelButtonTitle);
confirmationRequired = args.getBoolean(CONFIRMATION_REQUIRED, confirmationRequired);
invalidateOnEnrollment = args.getBoolean(INVALIDATE_ON_ENROLLMENT, false);
secret = args.getString(SECRET, null);
}
}
}