import RDServiceFingerprintScanner from "./NativeRDServiceFingerprintScanner";
import type { AvailablePackageProps, DeviceInfoNativeResponseProps, DeviceInfoProps, DriverDataProps, FaceCaptureDataProps, FingerprintDataProps, OptionalInfo, PackageNameProp } from "./types";
export const AVAILABLE_PACKAGES: AvailablePackageProps = {
Secugen: 'com.secugen.rdservice',
Morpho: 'com.scl.rdservice',
Mantra: 'com.mantra.rdservice',
Startek_FM220: 'com.acpl.registersdk',
Gemalto_3M_Cogent_CSD200: 'com.rd.gemalto.com.rdserviceapp',
Integra: 'com.integra.registered.device',
Aratek: 'com.aratek.asix_gms.rdservice',
Maestros: 'rdservice.metsl.metslrdservice',
Tatvik_TMF20: 'com.tatvik.bio.tmf20',
Evolute: 'com.evolute.rdservice',
PB510: 'com.precision.pb510.rdservice',
MIS100V2_by_Mantra: 'com.mantra.mis100v2.rdservice',
NEXT_Biometrics_NB3023: 'com.nextbiometrics.rdservice',
IriTech_IriShield: 'com.iritech.rdservice',
Evolute_IRIS: 'com.evolute.iris.rdservice',
};
export const DEFAULT_PID_OPTIONS: string = ` `;
export function getDeviceInfo(): Promise {
return new Promise((resolve, reject) => {
RDServiceFingerprintScanner.getDeviceInfo()
.then((res) => {
if (res.status === -1) {
const resObj: OptionalInfo = {
status: res.status,
message: res.message,
};
resolve(resObj);
} else {
const resTyped = res as DeviceInfoNativeResponseProps;
const resObj: DeviceInfoProps = {
isWhitelisted: resTyped.isWhitelisted,
rdServiceInfoJson: JSON.parse(resTyped.rdServiceInfoJsonString),
rdServiceInfoXML: resTyped.rdServiceInfoXML,
rdServicePackage: resTyped.rdServicePackage,
status: resTyped.status,
message: resTyped.message,
};
resolve(resObj);
}
})
.catch((err) => {
reject(err);
});
});
}
export function getIsDriverFound(packageName: PackageNameProp): Promise {
return new Promise((resolve, reject) => {
if (packageName) {
RDServiceFingerprintScanner.getIsDriverFound(packageName)
.then((res) => {
resolve(res);
})
.catch((err) => {
reject(err);
});
} else {
reject('Package name cannot be empty');
}
});
}
export function openFingerPrintScanner(
packageName: PackageNameProp,
pidOptions: string = DEFAULT_PID_OPTIONS
): Promise {
return new Promise((resolve, reject) => {
if (!packageName) {
reject('Package name cannot be empty');
return;
}
RDServiceFingerprintScanner.openFingerPrintScanner(
packageName,
pidOptions
)
.then((res) => {
if ('pidDataJsonString' in res && res.pidDataJsonString) {
const resObj: FingerprintDataProps = {
pidDataJson: JSON.parse(res.pidDataJsonString),
pidDataXML: res.pidDataXML,
rdServicePackage: res.rdServicePackage,
status: res.status,
errInfo: res.errInfo,
errorCode: res.errorCode,
message: res.message,
};
resolve(resObj);
} else {
resolve(res as DriverDataProps);
}
})
.catch((err) => {
reject(err);
});
});
}
export function captureFinger(pidOptions: string = DEFAULT_PID_OPTIONS): Promise {
return new Promise((resolve, reject) => {
RDServiceFingerprintScanner.captureFinger(pidOptions)
.then((res) => {
const resObj: FingerprintDataProps = {
pidDataJson: JSON.parse(res.pidDataJsonString),
pidDataXML: res.pidDataXML,
rdServicePackage: res.rdServicePackage,
status: res.status,
errInfo: res.errInfo,
errorCode: res.errorCode,
message: res.message,
};
resolve(resObj);
})
.catch((err) => {
reject(err);
});
});
}
export function captureFace(pidOptions: string): Promise {
return new Promise((resolve, reject) => {
if (!pidOptions) {
reject("PID Options cannot be empty")
return
}
RDServiceFingerprintScanner.captureFace(pidOptions)
.then((res) => {
const resObj: FaceCaptureDataProps = {
pidDataJson: JSON.parse(res.pidDataJsonString),
pidDataXml: res.pidDataXml,
status: res.status,
errInfo: res.errInfo,
errorCode: res.errorCode,
message: res.message,
};
resolve(resObj);
})
.catch((err) => {
reject(err);
});
});
}