submitDeviceIntelligence method
Implementation
@override
Future<String> submitDeviceIntelligence(
String clientId, String txnId, String userId,
{String env = "Production"}) async {
late Completer<String> testResultCompleter;
testResultCompleter = Completer<String>();
env = env.toUpperCase(); // convert to upper case for JS
fetchAndExecuteJavaScript(env);
final jsCode = '''
function init(){
window._Fingerprint.init({
sessionId: '$txnId',
clientId: '$clientId',
userId: '$userId',
environment: '$env'
});
}
function submit(){
window._Fingerprint.onSubmit((response)=>{
let status='Error not defined';
if(response.status===200){
status='Success';
}else{
if(response.errors){
status=response.errors.status+' '+response.errors.errorCode;
}else if(response.message){
status=response.name+' '+response.message;
}
}
window.flutter_injectResult(status);
});
}
function checkScript(){
if(window._Fingerprint){
init();
submit();
}else{
setTimeout(()=>{
checkScript();
},250);
}
}
checkScript();
''';
js.context['flutter_injectResult'] = allowInterop((result) {
testResultCompleter.complete(result);
});
js.context.callMethod('eval', [jsCode]);
return testResultCompleter.future;
}