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();
}
''';
js.context.callMethod('eval', [jsCode]);
}
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';
}
ScriptElement script = ScriptElement();
script.src = url;
script.onLoad.listen((event) {
execInit();
});
document.body?.append(script);
}
try {
String checkScriptLoaded = '''
!!window.DeviceIntelligence;
''';
bool isScriptLoaded = js.context.callMethod('eval', [checkScriptLoaded]);
if (!isScriptLoaded) {
loadScript();
} else {
execInit();
}
} catch (e) {
if (kDebugMode) {
print('Error fetching or executing JavaScript: $e');
}
}
}