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'; import 'package:upgrader/upgrader.dart'; part 'session_event.dart'; part 'session_state.dart'; class SessionBloc extends Bloc with Logging { final Session session; StreamSubscription? _sub; SettingsBloc? settingsBloc; SessionBloc({required this.session}) : super(SessionInitial()) { on(_onStart); } void _onStart(SessionStart event, Emitter 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)); final iTunes = ITunesSearchAPI(); final resultsFuture = iTunes.lookupByBundleId('com.aitrainer.app'); resultsFuture.then((results) { print('iTunes results: $results'); }); emit(SessionReady()); } @override Future close() async { await this.close(); _sub?.cancel(); settingsBloc?.close(); super.close(); } }