WalletBloc constructor
WalletBloc()
Implementation
WalletBloc() : super(const WalletState()) {
on<CheckCode>((event, emit) async {
final res = await paymentRepository.checkCode(
context: event.context, code: event.code);
res.fold((l) {
event.onSuccess.call();
Navigator.pop(event.context);
}, (r) {
emit(state.copyWith(isLoading: false));
AppHelper.errorSnackBar(
context: event.context,
message: r,
);
});
});
on<GetWallets>((event, emit) async {
emit(state.copyWith(list: [], isLoading: true));
final res = await paymentRepository.fetchCards(context: event.context);
res.fold((list) async {
emit(state.copyWith(isLoading: false, list: list));
}, (r) {
emit(state.copyWith(isLoading: false));
AppHelper.errorSnackBar(
context: event.context,
message: r,
);
});
});
on<CreateCard>((event, emit) async {
emit(state.copyWith(isButtonLoading: true));
final res = await paymentRepository.crateCard(
context: event.context,
number: event.number,
date: event.expiredDate);
res.fold((l) async {
event.onSuccess.call();
emit(state.copyWith(isButtonLoading: false));
}, (r) {
emit(state.copyWith(isButtonLoading: false));
AppHelper.errorSnackBar(
context: event.context,
message: r,
);
});
});
on<DeleteCard>((event, emit) async {
final res = await paymentRepository.deleteCard(
context: event.context,
cardId: event.cardId,
);
res.fold((l) {
List<CardModel> list = List.from(state.list);
for (int i = 0; i < list.length; i++) {
if (event.cardId == list[i].id) {
list.removeAt(i);
break;
}
}
emit(state.copyWith(list: list));
}, (r) {
AppHelper.errorSnackBar(
context: event.context,
message: r,
);
});
});
on<TopUp>((event, emit) async {
emit(state.copyWith(isButtonLoading: true));
final res = await paymentRepository.topUp(
context: event.context, cartId: event.cardId, amount: event.amount);
res.fold((l) {
event.onSuccess.call();
Navigator.pop(event.context);
emit(state.copyWith(isButtonLoading: false));
}, (r) {
emit(state.copyWith(isButtonLoading: false));
AppHelper.errorSnackBar(
context: event.context,
message: r,
);
});
});
on<Withdraw>((event, emit) async {
emit(state.copyWith(isButtonLoading: true));
final res = await paymentRepository.withdraw(
context: event.context, cartId: event.cardId, amount: event.amount);
res.fold((l) {
event.onSuccess.call();
Navigator.pop(event.context);
emit(state.copyWith(isButtonLoading: false));
}, (r) {
emit(state.copyWith(isButtonLoading: false));
AppHelper.errorSnackBar(
context: event.context,
message: r,
);
});
});
on<SelectIndex>((event, emit) {
emit(state.copyWith(selectIndex: event.index));
});
on<GetTransaction>((event, emit) async {
if (event.isRefresh ?? false) {
event.controller?.resetNoData();
emit(state.copyWith(listTransactions: []));
}
final res = await paymentRepository.fetchTransactions(
context: event.context, skip: state.listTransactions.length);
res.fold((l) async {
final List<TransactionModel> list = List.from(state.listTransactions);
list.addAll(l);
emit(state.copyWith(listTransactions: list));
if (event.isRefresh ?? false) {
event.controller?.refreshCompleted();
return;
} else if (l.isEmpty) {
event.controller?.loadNoData();
return;
}
event.controller?.loadComplete();
}, (r) {
if (event.isRefresh ?? false) {
event.controller?.refreshFailed();
}
event.controller?.loadFailed();
AppHelper.errorSnackBar(
context: event.context,
message: r,
);
});
});
}