44 lines
1.3 KiB
Dart
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();
|
|
}
|
|
}
|