handleInitEvent method

Initializes the ad manager and retrieves the splash ad document.

Implementation

Stream<FastSplashAdBlocState> handleInitEvent(
  FastSplashAdBlocEventPayload? payload,
) async* {
  if (canInitialize) {
    isInitializing = true;
    yield currentState.copyWith(isInitializing: true);

    if (_serviceSubscription != null) _serviceSubscription!.cancel();

    final adInfo = payload?.adInfo ?? currentState.adInfo;
    final document = await _retrieveDocument();

    _service = FastAdmobSplashAdService(adInfo: adInfo);
    _appLaunchCounter = payload?.appLaunchCounter ?? 0;

    payload = payload?.copyWith(
      lastImpressionDate: document.lastImpressionDate,
    );

    _logger.debug('lastImpressionDate: ${payload?.lastImpressionDate}');

    subxList.add(
      _service!.onAdImpression.listen((date) {
        addEvent(FastSplashAdBlocEvent.adImpression(date));
      }),
    );

    addEvent(FastSplashAdBlocEvent.initialized(payload: payload));
  }
}