import 'package:cake_wallet/ionia/ionia_create_state.dart'; import 'package:cake_wallet/ionia/ionia_service.dart'; import 'package:mobx/mobx.dart'; import 'package:cake_wallet/ionia/ionia_gift_card.dart'; part 'ionia_account_view_model.g.dart'; class IoniaAccountViewModel = IoniaAccountViewModelBase with _$IoniaAccountViewModel; abstract class IoniaAccountViewModelBase with Store { IoniaAccountViewModelBase({required this.ioniaService}) : email = '', giftCards = [], merchantState = InitialIoniaMerchantLoadingState() { ioniaService.getUserEmail().then((email) => this.email = email); updateUserGiftCards(); } final IoniaService ioniaService; @observable String email; @observable List giftCards; @observable IoniaMerchantState merchantState; @computed int get countOfMerch => giftCards.where((giftCard) => !giftCard.isEmpty).length; @computed List get activeMechs => giftCards.where((giftCard) => !giftCard.isEmpty).toList(); @computed List get redeemedMerchs => giftCards.where((giftCard) => giftCard.isEmpty).toList(); @action void logout() { ioniaService.logout(); } @action Future updateUserGiftCards() async { merchantState = IoniaLoadingMerchantState(); giftCards = await ioniaService.getCurrentUserGiftCardSummaries(); merchantState = IoniaLoadedMerchantState(); } }