react-native-passcode-auth/errors.js
2019-04-17 13:00:21 +02:00

72 lines
2.1 KiB
JavaScript

const { codes, errors } = require('./data/errors');
class AuthError extends Error {
constructor(name) {
super();
this.name = name || 'PassAuthError';
}
}
const getError = code => {
switch (code) {
case codes.iOSCodes.LAErrorAuthenticationFailed:
case codes.androidModuleCodes.AUTHENTICATION_FAILED:
return errors.AUTHENTICATION_FAILED;
case codes.iOSCodes.LAErrorUserCancel:
case codes.androidApiCodes.FINGERPRINT_ERROR_USER_CANCELED:
case codes.androidModuleCodes.AUTHENTICATION_CANCELED:
return errors.USER_CANCELED;
case codes.iOSCodes.LAErrorSystemCancel:
case codes.androidApiCodes.FINGERPRINT_ERROR_CANCELED:
return errors.SYSTEM_CANCELED;
case codes.iOSCodes.LAErrorTouchIDNotAvailable: // does this mean hw not present rather than not available?
case codes.androidApiCodes.FINGERPRINT_ERROR_HW_UNAVAILABLE:
case codes.androidModuleCodes.NOT_AVAILABLE:
return errors.NOT_AVAILABLE;
case codes.iOSCodes.RCTTouchIDNotSupported:
case codes.androidModuleCodes.NOT_SUPPORTED:
return errors.NOT_SUPPORTED;
case codes.iOSCodes.LAErrorTouchIDNotEnrolled:
case codes.androidApiCodes.FINGERPRINT_ERROR_NO_FINGERPRINTS:
case codes.androidModuleCodes.NOT_ENROLLED:
return errors.NOT_ENROLLED;
// android only
case codes.androidApiCodes.FINGERPRINT_ERROR_TIMEOUT:
return errors.TIMEOUT;
case codes.androidApiCodes.FINGERPRINT_ERROR_UNABLE_TO_PROCESS:
return errors.PROCESSING_ERROR;
case codes.androidApiCodes.FINGERPRINT_ERROR_LOCKOUT:
return errors.LOCKOUT;
case codes.androidApiCodes.FINGERPRINT_ERROR_LOCKOUT_PERMANENT:
return errors.LOCKOUT_PERMANENT;
case codes.androidApiCodes.FINGERPRINT_ERROR_HW_NOT_PRESENT:
case codes.androidModuleCodes.NOT_PRESENT:
return errors.NOT_PRESENT;
// ios only
case codes.iOSCodes.LAErrorPasscodeNotSet:
return errors.FALLBACK_NOT_ENROLLED;
case codes.iOSCodes.LAErrorUserFallback:
return errors.USER_FALLBACK;
default:
return errors.UNKNOWN_ERROR;
}
};
module.exports = {
getError,
AuthError
};