fix payment card change. fix adding a new payment card
This commit is contained in:
@@ -1,5 +1,3 @@
|
||||
import 'dart:async';
|
||||
|
||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||
import 'package:url_launcher/url_launcher.dart';
|
||||
|
||||
@@ -12,25 +10,23 @@ import '../../domain/usecase/set_main_payment_card_usecase.dart';
|
||||
import '../event/payment_method_sheet_event.dart';
|
||||
import '../state/payment_method_sheet_state.dart';
|
||||
|
||||
class PaymentMethodSheetBloc
|
||||
extends Bloc<PaymentMethodSheetEvent, PaymentMethodSheetState> {
|
||||
class PaymentMethodSheetBloc extends Bloc<PaymentMethodSheetEvent, PaymentMethodSheetState> {
|
||||
final GetPaymentCardsUsecase _getPaymentCardsUsecase;
|
||||
final GetProfileUseCase _getProfileUseCase;
|
||||
final SetMainPaymentCardUsecase _setMainPaymentCardUsecase;
|
||||
final AddPaymentCardUsecase _addPaymentCardUsecase;
|
||||
|
||||
|
||||
PaymentMethodSheetBloc(this._getPaymentCardsUsecase,
|
||||
this._setMainPaymentCardUsecase, this._getProfileUseCase,
|
||||
this._addPaymentCardUsecase)
|
||||
: super(
|
||||
PaymentMethodSheetState(status: PaymentMethodSheetStatus.initial)) {
|
||||
PaymentMethodSheetBloc(this._getPaymentCardsUsecase, this._setMainPaymentCardUsecase, this._getProfileUseCase, this._addPaymentCardUsecase)
|
||||
: super(PaymentMethodSheetState(status: PaymentMethodSheetStatus.initial)) {
|
||||
on<PaymentMethodSheetStarted>(_onStarted);
|
||||
on<AddCardButtonPressed>(_onAddCardButtonPressed);
|
||||
on<SelectPaymentCardRequested>(_onSelectCard);
|
||||
on<AddPaymentCardRequested>(_onAddPaymentCardRequested);
|
||||
}
|
||||
|
||||
Future<void> _onStarted(PaymentMethodSheetStarted event,
|
||||
Emitter<PaymentMethodSheetState> emit,) async {
|
||||
Future<void> _onStarted(
|
||||
PaymentMethodSheetStarted event,
|
||||
Emitter<PaymentMethodSheetState> emit,
|
||||
) async {
|
||||
emit(state.copyWith(status: PaymentMethodSheetStatus.loading));
|
||||
|
||||
try {
|
||||
@@ -57,10 +53,10 @@ class PaymentMethodSheetBloc
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> _onSelectCard(SelectPaymentCardRequested event,
|
||||
Emitter<PaymentMethodSheetState> emit,) async {
|
||||
// Включаем локальный лоадер на шторке, либо просто ждем ответа
|
||||
Future<void> _onSelectCard(
|
||||
SelectPaymentCardRequested event,
|
||||
Emitter<PaymentMethodSheetState> emit,
|
||||
) async {
|
||||
emit(state.copyWith(status: PaymentMethodSheetStatus.loading));
|
||||
|
||||
final result = await _setMainPaymentCardUsecase(event.card.id);
|
||||
@@ -73,8 +69,7 @@ class PaymentMethodSheetBloc
|
||||
cards: cardsResult.data ?? [],
|
||||
));
|
||||
} else {
|
||||
emit(state.copyWith(status: PaymentMethodSheetStatus.failure,
|
||||
errorMessage: 'Ошибка обновления списка карт'));
|
||||
emit(state.copyWith(status: PaymentMethodSheetStatus.failure, errorMessage: 'Ошибка обновления списка карт'));
|
||||
}
|
||||
} else {
|
||||
emit(state.copyWith(
|
||||
@@ -84,7 +79,6 @@ class PaymentMethodSheetBloc
|
||||
}
|
||||
}
|
||||
|
||||
// Выносим загрузку в отдельный метод для переиспользования
|
||||
Future<void> _loadCards(Emitter<PaymentMethodSheetState> emit) async {
|
||||
try {
|
||||
final result = await _getPaymentCardsUsecase();
|
||||
@@ -107,8 +101,12 @@ class PaymentMethodSheetBloc
|
||||
}
|
||||
}
|
||||
|
||||
FutureOr<void> _onAddCardButtonPressed(AddCardButtonPressed event,
|
||||
Emitter<PaymentMethodSheetState> emit) async {
|
||||
Future<void> _onAddPaymentCardRequested(
|
||||
AddPaymentCardRequested event,
|
||||
Emitter<PaymentMethodSheetState> emit,
|
||||
) async {
|
||||
emit(state.copyWith(status: PaymentMethodSheetStatus.loading));
|
||||
|
||||
try {
|
||||
final result = await _addPaymentCardUsecase();
|
||||
|
||||
@@ -118,9 +116,8 @@ class PaymentMethodSheetBloc
|
||||
if (formUrlString != null && formUrlString.isNotEmpty) {
|
||||
final url = Uri.parse(formUrlString);
|
||||
|
||||
if (await canLaunchUrl(url)
|
||||
) {
|
||||
launchUrl(
|
||||
if (await canLaunchUrl(url)) {
|
||||
await launchUrl(
|
||||
url,
|
||||
mode: LaunchMode.externalApplication,
|
||||
);
|
||||
@@ -138,11 +135,9 @@ class PaymentMethodSheetBloc
|
||||
));
|
||||
}
|
||||
} else if (result is Failure) {
|
||||
String errorMessage = 'Ошибка при добавлении карты';
|
||||
|
||||
emit(state.copyWith(
|
||||
status: PaymentMethodSheetStatus.failure,
|
||||
errorMessage: errorMessage,
|
||||
errorMessage: 'Ошибка при добавлении карты',
|
||||
));
|
||||
}
|
||||
} catch (e) {
|
||||
|
||||
Reference in New Issue
Block a user