workouttest_app/lib/bloc/session/session_bloc.dart
Tibor Bossanyi (Freelancer) 225172f950 WT 1.1.26+3 bloc migration
2022-04-15 08:47:32 +02:00

44 lines
1.3 KiB
Dart

import 'dart:async';
import 'package:aitrainer_app/bloc/settings/settings_bloc.dart';
import 'package:aitrainer_app/service/firebase_api.dart';
import 'package:aitrainer_app/util/app_language.dart';
import 'package:aitrainer_app/service/logging.dart';
import 'package:aitrainer_app/util/session.dart';
import 'package:bloc/bloc.dart';
import 'package:equatable/equatable.dart';
part 'session_event.dart';
part 'session_state.dart';
class SessionBloc extends Bloc<SessionEvent, SessionState> with Logging {
final Session session;
StreamSubscription? _sub;
SettingsBloc? settingsBloc;
SessionBloc({required this.session}) : super(SessionInitial()) {
on<SessionStart>(_onStart);
}
void _onStart(SessionStart event, Emitter<SessionState> emit) async {
log(" -------- Session starting...");
emit(SessionLoading());
this.settingsBloc = event.settingsBloc;
await session.fetchSessionAndNavigate();
FirebaseApi().setupRemoteConfig();
String lang = AppLanguage().appLocal.languageCode;
log("Change lang to $lang");
settingsBloc!.add(SettingsChangeLanguage(language: lang));
emit(SessionReady());
}
@override
Future<void> close() async {
await this.close();
_sub?.cancel();
settingsBloc?.close();
super.close();
}
}