@softcol/biometrics
Version:
Collection of utility methods for eLogic Biometrics
40 lines (31 loc) • 1.6 kB
text/typescript
import { TransactionsService } from './transactions.service';
import { defaultOnRetry, defaultOnSuccess } from '../constants';
import { EBiometricsEnvironment, EBiometricsInput, EBiometricsProvider, EBiometricsQueue, EBiometricsState, EBiometricsTheme } from '../models';
export class ValidatorService {
private _transactionsService: TransactionsService
constructor() {
this._transactionsService = new TransactionsService();
}
private _error(message: string): void {
throw new Error(message);
}
async getState(input: EBiometricsInput): Promise<EBiometricsState> {
if (!input.target) this._error('You must provide the target element ID');
if (!input.account) this._error('You must provide the account UUID');
if (!input.params) this._error('You must provide the params');
input.theme = input.theme ?? EBiometricsTheme.light;
input.provider = input.provider ?? EBiometricsProvider.softcol;
input.queue = input.queue ?? EBiometricsQueue.simple;
input.environment = input.environment ?? EBiometricsEnvironment.development;
input.extraInfo = input.extraInfo ?? '';
input.onRetry = input.onRetry ?? defaultOnRetry;
input.onSuccess = input.onSuccess ?? defaultOnSuccess;
const state = input as EBiometricsState;
const transaction = await this._transactionsService.create(state);
state.id = transaction.id
const targetEl = document.getElementById(state.target);
if (!targetEl) this._error(`Could not find HTML element with ID: ${state.target}`);
state.targetEl = targetEl as HTMLElement;
return state;
}
}