fetchAndExecuteJavaScript function
Implementation
Future<void> fetchAndExecuteJavaScript(
String txnId, String clientId, String env) async {
void execInit() {
String jsCode = '''
window.isInitialized = false;
function init(){
window.DeviceIntelligence.init({
credentialId: '$clientId',
userId: '',
environment: '$env'
});
window.isInitialized = true;
}
if( window.DeviceIntelligence){
init();
}
''';
globalContext.callMethod('eval'.toJS, jsCode.toJS);
}
void loadScript() {
String url =
'https://di.prd.bureau.id/v1.2.5/bureau-device-intelligence.js';
if (env == 'SANDBOX') {
url = 'https://di.stg.bureau.id/v1.2.5/bureau-device-intelligence.js';
}
final script =
web.document.createElement('script') as web.HTMLScriptElement;
script.src = url;
script.addEventListener(
'load',
((web.Event event) {
execInit();
}).toJS);
web.document.body?.appendChild(script);
}
try {
String checkScriptLoaded = '''
!!window.DeviceIntelligence;
''';
final jsResult = globalContext.callMethod<JSAny?>(
'eval'.toJS, checkScriptLoaded.toJS);
bool isScriptLoaded =
jsResult != null && (jsResult as JSBoolean).toDart;
if (!isScriptLoaded) {
loadScript();
} else {
execInit();
}
} catch (e) {
if (kDebugMode) {
print('Error fetching or executing JavaScript: $e');
}
}
}