import 'dart:async'; import 'package:bloc/bloc.dart'; import 'package:veilid_support/veilid_support.dart'; import '../../init.dart'; import '../repository/account_repository/account_repository.dart'; class ActiveLocalAccountCubit extends Cubit { ActiveLocalAccountCubit(AccountRepository accountRepository) : _accountRepository = accountRepository, super(null) { // Subscribe to streams _initAccountRepositorySubscription(); // Initialize when we can Future.delayed(Duration.zero, () async { await eventualInitialized.future; emit(_accountRepository.getActiveLocalAccount()); }); } void _initAccountRepositorySubscription() { _accountRepositorySubscription = _accountRepository.stream.listen((change) { switch (change) { case AccountRepositoryChange.activeLocalAccount: emit(_accountRepository.getActiveLocalAccount()); break; // Ignore these case AccountRepositoryChange.localAccounts: case AccountRepositoryChange.userLogins: break; } }); } @override Future close() async { await super.close(); await _accountRepositorySubscription.cancel(); } final AccountRepository _accountRepository; late final StreamSubscription _accountRepositorySubscription; }