45 lines
1.2 KiB
Dart
45 lines
1.2 KiB
Dart
import 'dart:async';
|
|
|
|
import 'package:aitrainer_app/bloc/settings/settings_bloc.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;
|
|
|
|
SessionBloc({required this.session}) : super(SessionInitial());
|
|
|
|
@override
|
|
Stream<SessionState> mapEventToState(
|
|
SessionEvent event,
|
|
) async* {
|
|
try {
|
|
if (event is SessionStart) {
|
|
log(" -------- Session starting...");
|
|
yield SessionLoading();
|
|
// ignore: close_sinks
|
|
SettingsBloc settingsBloc = event.settingsBloc;
|
|
await session.fetchSessionAndNavigate();
|
|
String lang = AppLanguage().appLocal.languageCode;
|
|
log("Change lang to $lang");
|
|
settingsBloc.add(SettingsChangeLanguage(language: lang));
|
|
yield SessionReady();
|
|
}
|
|
} on Exception catch (ex) {
|
|
yield SessionFailure(message: ex.toString());
|
|
}
|
|
}
|
|
|
|
@override
|
|
Future<void> close() async {
|
|
await this.close();
|
|
super.close();
|
|
}
|
|
}
|