diff --git a/lib/main.dart b/lib/main.dart index cb92177..adcc9c1 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -43,7 +43,7 @@ Future main() async { final initialisationTasks = [ Firebase.initializeApp(options: DefaultFirebaseOptions.currentPlatform) - .then((_) async => log('Firebase token: ${await FirebaseMessaging.instance.getToken() ?? "Error: no Firebase token!"}')) + .then((_) {}) .onError((error, _) => log('Error initializing Firebase: $error')), PlatformAssetBundle().load('assets/ca/lets-encrypt-r3.pem').then(addCertificateAsTrusted), PlatformAssetBundle().load('assets/ca/lets-encrypt-r10.pem').then(addCertificateAsTrusted), @@ -54,12 +54,19 @@ Future main() async { ); HydratedBloc.storage = storage; }), + AccountData().waitForPopulation(), ]; log('starting app initialisation...'); await Future.wait(initialisationTasks); log('app initialisation done!'); + unawaited( + FirebaseMessaging.instance.getToken().then( + (token) => log('Firebase token: ${token ?? "Error: no Firebase token!"}'), + ), + ); + if (kReleaseMode) { ErrorWidget.builder = (error) => PlaceholderView( icon: Icons.phonelink_erase_rounded, @@ -83,7 +90,9 @@ Future main() async { MultiBlocProvider( providers: [ BlocProvider(create: (_) => SettingsCubit()), - BlocProvider(create: (_) => AccountBloc()), + BlocProvider(create: (_) => AccountBloc( + initialStatus: AccountData().isPopulated() ? AccountStatus.loggedIn : AccountStatus.loggedOut, + )), BlocProvider(create: (_) => BreakerBloc()), BlocProvider(create: (_) => ChatListBloc()), BlocProvider(create: (_) => ChatBloc()), diff --git a/lib/state/app/modules/account/bloc/account_bloc.dart b/lib/state/app/modules/account/bloc/account_bloc.dart index 59514dd..4ad0f5d 100644 --- a/lib/state/app/modules/account/bloc/account_bloc.dart +++ b/lib/state/app/modules/account/bloc/account_bloc.dart @@ -4,7 +4,7 @@ import 'account_event.dart'; import 'account_state.dart'; class AccountBloc extends Bloc { - AccountBloc() : super(const AccountState()) { + AccountBloc({AccountStatus initialStatus = AccountStatus.undefined}) : super(AccountState(status: initialStatus)) { on((event, emit) => emit(state.copyWith(status: event.status))); }