fetchAndExecuteJavaScript function

Future<void> fetchAndExecuteJavaScript(
  1. String txnId,
  2. String clientId,
  3. String env
)

Implementation

Future<void> fetchAndExecuteJavaScript(String txnId,String clientId,String env) async {

  void execInit(){
      String jsCode= '''
           window.isInitialized = false;
           function init(){
                window._Fingerprint.init({
                    sessionId: '$txnId',
                    clientId: '$clientId',
                    userId: '',
                    environment: '$env'
              });
              window.isInitialized = true;
           }
           if( window._Fingerprint){
             init();
           }
      ''';
      js.context.callMethod('eval', [jsCode]);
    }

  void loadScript(){
        String url = 'https://fingerprint.app.bureau.id/index.js';
        if (env == 'SANDBOX') {
          url = 'https://fingerprint.app.stg.bureau.id/index.js';
        }
        ScriptElement script = ScriptElement();
        script.src = url;
        script.onLoad.listen((event) {
          execInit();
        });
        document.body?.append(script);
    }


  try {

    String checkScriptLoaded = '''
            !!window._Fingerprint;
    ''';
    bool isScriptLoaded = js.context.callMethod('eval', [checkScriptLoaded]);

    if(!isScriptLoaded){
      loadScript();
    }else{
      execInit();
    }


  } catch (e) {
    if (kDebugMode) {
      print('Error fetching or executing JavaScript: $e');
    }
  }
}