55 lines
1.6 KiB
Dart
55 lines
1.6 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';
|
|
import 'package:upgrader/upgrader.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());
|
|
|
|
try {
|
|
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');
|
|
});
|
|
} on Exception catch (e) {
|
|
emit(SessionFailure(message: e.toString()));
|
|
} finally {
|
|
emit(SessionReady());
|
|
}
|
|
}
|
|
|
|
@override
|
|
Future<void> close() async {
|
|
await this.close();
|
|
_sub?.cancel();
|
|
settingsBloc?.close();
|
|
super.close();
|
|
}
|
|
}
|