submit method

  1. @override
Future<SubmitResponse> submit(
  1. String userId
)
override

Implementation

@override
Future<SubmitResponse> submit(String userId) async {
  late Completer<Map<String, dynamic>> testResultCompleter;
  testResultCompleter = Completer<Map<String, dynamic>>();

  String jsCode = '''
function submit() {
    if (window.isInitialized) {
      window.DeviceIntelligence.setUserId( '$userId');
      window.DeviceIntelligence.onSubmit((eventId, 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.isInitialized=false;
        window.flutter_injectResult(status, eventId);

      });
    } else {
      const waitForInit = setInterval(() => {
        if (window.isInitialized) {
          clearInterval(waitForInit);
          submit();
        }
      }, 250);
    }
  }
  submit()
''';

  js.context['flutter_injectResult'] = allowInterop((result, eventId) {
    testResultCompleter
        .complete({'message': result, 'eventId': eventId ?? ''});
  });

  js.context.callMethod('eval', [jsCode]);

  final result = await testResultCompleter.future;

  return SubmitResponse(
      message: result['message'], eventId: result['eventId']);
}