import 'package:appflowy/startup/startup.dart'; import 'package:appflowy/user/application/auth/auth_service.dart'; import 'package:appflowy/user/domain/auth_state.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:freezed_annotation/freezed_annotation.dart'; part 'splash_bloc.freezed.dart'; class SplashBloc extends Bloc { SplashBloc() : super(SplashState.initial()) { on((event, emit) async { await event.map( getUser: (val) async { final response = await getIt().getUser(); final authState = response.fold( (error) => AuthState.unauthenticated(error), (user) => AuthState.authenticated(user), ); emit(state.copyWith(auth: authState)); }, ); }); } } @freezed class SplashEvent with _$SplashEvent { const factory SplashEvent.getUser() = _GetUser; } @freezed class SplashState with _$SplashState { const factory SplashState({ required AuthState auth, }) = _SplashState; factory SplashState.initial() => const SplashState( auth: AuthState.initial(), ); }