startLivenessCapture method
Future<void>
startLivenessCapture(
)
Implementation
Future<void> startLivenessCapture() async {
if (state.isLoading) {
_pendingCaptureRequest = true;
return;
}
if (!state.isAvailable) {
String errorMessage = 'Liveness detection not available on this device';
if (_context != null) {
errorMessage = ApiErrorStrings(_context!).anErrorOccurred;
}
state = state.copyWith(
state: LivenessState.error,
sessionState: LivenessSessionState.error,
errorMessage: errorMessage,
);
return;
}
try {
_pendingCaptureRequest = false;
state = state.copyWith(
state: LivenessState.loading,
sessionState: LivenessSessionState.initializing,
isLoading: true,
errorMessage: null,
);
final apiClient = _ref.read(apiClientProvider);
final response = await apiClient.perform(StartLivenessCaptureRequest());
final session = response.livenessSession;
state = state.copyWith(
state: LivenessState.sessionReady,
sessionState: LivenessSessionState.ready,
session: session,
isLoading: false,
);
onLivenessStarted();
await BynnPlatformInterface.instance.startLivenessDetection(
sessionId: session.sessionId,
accessKeyId: session.credentials.id,
secretAccessKey: session.credentials.accessKey,
sessionToken: session.credentials.token,
region: 'eu-west-1',
);
await _handleLivenessCompleted();
} catch (e) {
String errorMessage = e.toString();
if (_context != null) {
errorMessage = AgeVerificationStrings(_context!).somethingWentWrong;
}
state = state.copyWith(
state: LivenessState.error,
sessionState: LivenessSessionState.error,
errorMessage: errorMessage,
isLoading: false,
);
}
}