handleInitEvent method

Stream<FastAppInfoBlocState> handleInitEvent(
  1. FastAppInfoDocument appInfoDocument
)

Implementation

Stream<FastAppInfoBlocState> handleInitEvent(
  FastAppInfoDocument appInfoDocument,
) async* {
  if (canInitialize) {
    _logger.debug('Initializing...');

    isInitializing = true;
    yield currentState.copyWith(isInitializing: true);

    // Determine the user language and country code from the device locale.
    final (deviceLanguageCode, deviceCountryCode) =
        await getPreferredLocale();

    final persistedDocument = await _retrievePersistedAppInfo();
    final packageInfo = await PackageInfo.fromPlatform();
    final osVersion = await _getOsVersion();
    final osName = await getOsName();
    final appVersion = packageInfo.version;
    final appBuildNumber = packageInfo.buildNumber;
    var document = appInfoDocument;

    _logger
      ..info('OS name', osName)
      ..info('OS version', osVersion)
      ..info('App build', appBuildNumber)
      ..info('App version', appVersion)
      ..info('Device language code', deviceLanguageCode)
      ..info('Device country code', deviceCountryCode);

    document = document.copyWith(
      // Values controlled by the persisted document.
      previousDatabaseVersion: persistedDocument.databaseVersion,
      appLaunchCounter: persistedDocument.appLaunchCounter,

      // Values controlled by the device.
      deviceLanguageCode: deviceLanguageCode,
      deviceCountryCode: deviceCountryCode,
      appBuildNumber: appBuildNumber,
      appVersion: appVersion,
      osVersion: osVersion,
    );

    addEvent(FastAppInfoBlocEvent.initialized(document));
  }
}