submitDeviceIntelligence method

  1. @override
Future<String> submitDeviceIntelligence(
  1. String clientId,
  2. String txnId,
  3. String userId, {
  4. String env = "Production",
})
override

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;
}