sendInitializedEvent method

Future<bool> sendInitializedEvent({
  1. Duration maximumDelay = const Duration(seconds: 1),
})
override

Sending the initialized event to notify the parent app that the initial loading has completed

Implementation

Future<bool> sendInitializedEvent({Duration maximumDelay = const Duration(seconds: 1)}) async{
  if(_simulator != null) return _simulator!.sendInitializedEvent(maximumDelay: maximumDelay);

  final internalMessage = NUIMiniProgramInternalMessage(type: NUIMiniProgramEventType.INITIALIZED, data: "initialized");
  final initMessage = NUIMiniProgramMessage(channel: NUIMiniProgramMessage.DEFAULT_CHANNEL, data: jsonEncode(internalMessage));
  try {
    final completer = Completer<bool>();
    Future.delayed(maximumDelay, () => true).then((value) {
      if(!completer.isCompleted){
        print("NUIMiniProgramWebJSEngine: Reached maximum delay for connection initialization");
        completer.complete(false);
      }
    });

    sendAndAwaitCrossEvent(initMessage).then((value) {
      print("NUIMiniProgramWebJSEngine: Received initialized response from host");
      if(!completer.isCompleted){
        completer.complete(true);
      }
    });

    final init = await completer.future;
    if(init){
      _connectionInitialized = true;
      print("NUIMiniProgramWebJSEngine: Connection initialized");
      return true;
    }
    return false;
  }catch(e){
    print("[NUIMiniProgramJSEngine] Failed to send initialized event with error : $e");
    return false;
  }
}