some fix
# Conflicts: # lib/presentation/navigation/app_router.dart # pubspec.yaml
This commit is contained in:
@@ -1,198 +1,198 @@
|
||||
import 'dart:async';
|
||||
|
||||
import 'package:be_happy/domain/usecase/add_payment_card_usecase.dart';
|
||||
import 'package:be_happy/domain/usecase/get_profile_usecase.dart';
|
||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||
import 'package:url_launcher/url_launcher.dart';
|
||||
|
||||
import '../../core/result.dart';
|
||||
import '../../core/failures.dart';
|
||||
import '../../domain/entities/payment_card.dart';
|
||||
import '../../domain/usecase/get_payment_cards_usecase.dart';
|
||||
import '../../domain/usecase/remove_payment_card_usecase.dart';
|
||||
import '../../domain/usecase/set_main_payment_card_usecase.dart';
|
||||
import '../event/payment_methods_event.dart';
|
||||
import '../state/payment_methods_state.dart';
|
||||
|
||||
class PaymentMethodsBloc extends Bloc<PaymentMethodsEvent, PaymentMethodsState> {
|
||||
final GetPaymentCardsUsecase _getPaymentCardsUsecase;
|
||||
final RemovePaymentCardUsecase _removePaymentCardUsecase;
|
||||
final SetMainPaymentCardUsecase _setMainPaymentCardUsecase;
|
||||
final GetProfileUseCase _getProfileUseCase;
|
||||
final AddPaymentCardUsecase _addPaymentCardUsecase;
|
||||
|
||||
PaymentMethodsBloc(
|
||||
this._getPaymentCardsUsecase,
|
||||
this._removePaymentCardUsecase,
|
||||
this._setMainPaymentCardUsecase,
|
||||
this._getProfileUseCase,
|
||||
this._addPaymentCardUsecase,
|
||||
) : super(PaymentMethodsState(status: PaymentMethodsStatus.initial)) {
|
||||
on<PaymentMethodsStarted>(_onStarted);
|
||||
on<PaymentMethodsDeleteCard>(_onDeleteCard);
|
||||
on<PaymentMethodsSetMainCard>(_onSetMainCard);
|
||||
on<AddPayemntCardPressed>(_onAddPayemntCardPressed);
|
||||
}
|
||||
|
||||
Future<void> _onStarted(
|
||||
PaymentMethodsStarted event,
|
||||
Emitter<PaymentMethodsState> emit,
|
||||
) async {
|
||||
emit(state.copyWith(status: PaymentMethodsStatus.loading));
|
||||
|
||||
try {
|
||||
final result = await _getPaymentCardsUsecase();
|
||||
final profile = await _getProfileUseCase();
|
||||
|
||||
|
||||
if (result is Success<List<PaymentCard>>) {
|
||||
|
||||
print("BALANCE: ${profile.balance} BYN");
|
||||
emit(state.copyWith(
|
||||
status: PaymentMethodsStatus.success,
|
||||
cards: result.data ?? [],
|
||||
balance: profile.balance,
|
||||
));
|
||||
} else if (result is Failure) {
|
||||
String errorMessage = 'Не удалось загрузить карты';
|
||||
|
||||
/*if (result.failure is AuthFailure) {
|
||||
errorMessage = 'Ошибка авторизации';
|
||||
} else if (result.failure is UnknownFailure) {
|
||||
errorMessage = result.failure.message ?? 'Неизвестная ошибка';
|
||||
}*/
|
||||
|
||||
emit(state.copyWith(
|
||||
status: PaymentMethodsStatus.failure,
|
||||
errorMessage: errorMessage,
|
||||
));
|
||||
}
|
||||
} catch (e) {
|
||||
emit(state.copyWith(
|
||||
status: PaymentMethodsStatus.failure,
|
||||
errorMessage: e.toString(),
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> _onDeleteCard(
|
||||
PaymentMethodsDeleteCard event,
|
||||
Emitter<PaymentMethodsState> emit,
|
||||
) async {
|
||||
emit(state.copyWith(
|
||||
status: PaymentMethodsStatus.loading,
|
||||
isDeleting: true,
|
||||
));
|
||||
|
||||
try {
|
||||
final result = await _removePaymentCardUsecase(event.cardId);
|
||||
|
||||
if (result is Success) {
|
||||
emit(state.copyWith(isDeleting: false, status: PaymentMethodsStatus.success));
|
||||
add(PaymentMethodsStarted());
|
||||
} else if (result is Failure) {
|
||||
String errorMessage = 'Не удалось удалить карту';
|
||||
|
||||
if (result.failure is AuthFailure) {
|
||||
errorMessage = 'Ошибка авторизации';
|
||||
} else if (result.failure is UnknownFailure) {
|
||||
errorMessage = result.failure.message ?? 'Неизвестная ошибка';
|
||||
}
|
||||
|
||||
emit(state.copyWith(
|
||||
isDeleting: false,
|
||||
errorMessage: errorMessage,
|
||||
));
|
||||
}
|
||||
} catch (e) {
|
||||
emit(state.copyWith(
|
||||
isDeleting: false,
|
||||
errorMessage: e.toString(),
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> _onSetMainCard(
|
||||
PaymentMethodsSetMainCard event,
|
||||
Emitter<PaymentMethodsState> emit,
|
||||
) async {
|
||||
emit(state.copyWith(isSettingMain: true));
|
||||
|
||||
try {
|
||||
final result = await _setMainPaymentCardUsecase(event.cardId);
|
||||
|
||||
if (result is Success) {
|
||||
emit(state.copyWith(isSettingMain: false));
|
||||
add(PaymentMethodsStarted());
|
||||
} else if (result is Failure) {
|
||||
String errorMessage = 'Не удалось установить основную карту';
|
||||
|
||||
if (result.failure is AuthFailure) {
|
||||
errorMessage = 'Ошибка авторизации';
|
||||
} else if (result.failure is UnknownFailure) {
|
||||
errorMessage = result.failure.message ?? 'Неизвестная ошибка';
|
||||
}
|
||||
|
||||
emit(state.copyWith(
|
||||
isSettingMain: false,
|
||||
errorMessage: errorMessage,
|
||||
));
|
||||
}
|
||||
} catch (e) {
|
||||
emit(state.copyWith(
|
||||
isSettingMain: false,
|
||||
errorMessage: e.toString(),
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
FutureOr<void> _onAddPayemntCardPressed(
|
||||
AddPayemntCardPressed event,
|
||||
Emitter<PaymentMethodsState> emit
|
||||
) async {
|
||||
emit(state.copyWith(status: PaymentMethodsStatus.loading));
|
||||
|
||||
try {
|
||||
final result = await _addPaymentCardUsecase();
|
||||
|
||||
if (result is Success<Map<String, dynamic>>) {
|
||||
final formUrlString = result.data?['formUrl'] as String?;
|
||||
|
||||
if (formUrlString != null && formUrlString.isNotEmpty) {
|
||||
final url = Uri.parse(formUrlString);
|
||||
|
||||
if (await canLaunchUrl(url)) {
|
||||
launchUrl(
|
||||
url,
|
||||
mode: LaunchMode.externalApplication,
|
||||
);
|
||||
emit(state.copyWith(status: PaymentMethodsStatus.success));
|
||||
} else {
|
||||
emit(state.copyWith(
|
||||
status: PaymentMethodsStatus.failure,
|
||||
errorMessage: 'Не удалось открыть ссылку для оплаты',
|
||||
));
|
||||
}
|
||||
} else {
|
||||
emit(state.copyWith(
|
||||
status: PaymentMethodsStatus.failure,
|
||||
errorMessage: 'Ссылка для привязки карты не получена от сервера',
|
||||
));
|
||||
}
|
||||
|
||||
} else if (result is Failure) {
|
||||
String errorMessage = 'Ошибка при добавлении карты';
|
||||
|
||||
emit(state.copyWith(
|
||||
status: PaymentMethodsStatus.failure,
|
||||
errorMessage: errorMessage,
|
||||
));
|
||||
}
|
||||
|
||||
} catch (e) {
|
||||
emit(state.copyWith(
|
||||
status: PaymentMethodsStatus.failure,
|
||||
errorMessage: e.toString(),
|
||||
));
|
||||
}
|
||||
}}
|
||||
import 'dart:async';
|
||||
|
||||
import 'package:be_happy/domain/usecase/add_payment_card_usecase.dart';
|
||||
import 'package:be_happy/domain/usecase/get_profile_usecase.dart';
|
||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||
import 'package:url_launcher/url_launcher.dart';
|
||||
|
||||
import '../../core/result.dart';
|
||||
import '../../core/failures.dart';
|
||||
import '../../domain/entities/payment_card.dart';
|
||||
import '../../domain/usecase/get_payment_cards_usecase.dart';
|
||||
import '../../domain/usecase/remove_payment_card_usecase.dart';
|
||||
import '../../domain/usecase/set_main_payment_card_usecase.dart';
|
||||
import '../event/payment_methods_event.dart';
|
||||
import '../state/payment_methods_state.dart';
|
||||
|
||||
class PaymentMethodsBloc extends Bloc<PaymentMethodsEvent, PaymentMethodsState> {
|
||||
final GetPaymentCardsUsecase _getPaymentCardsUsecase;
|
||||
final RemovePaymentCardUsecase _removePaymentCardUsecase;
|
||||
final SetMainPaymentCardUsecase _setMainPaymentCardUsecase;
|
||||
final GetProfileUseCase _getProfileUseCase;
|
||||
final AddPaymentCardUsecase _addPaymentCardUsecase;
|
||||
|
||||
PaymentMethodsBloc(
|
||||
this._getPaymentCardsUsecase,
|
||||
this._removePaymentCardUsecase,
|
||||
this._setMainPaymentCardUsecase,
|
||||
this._getProfileUseCase,
|
||||
this._addPaymentCardUsecase,
|
||||
) : super(PaymentMethodsState(status: PaymentMethodsStatus.initial)) {
|
||||
on<PaymentMethodsStarted>(_onStarted);
|
||||
on<PaymentMethodsDeleteCard>(_onDeleteCard);
|
||||
on<PaymentMethodsSetMainCard>(_onSetMainCard);
|
||||
on<AddPayemntCardPressed>(_onAddPayemntCardPressed);
|
||||
}
|
||||
|
||||
Future<void> _onStarted(
|
||||
PaymentMethodsStarted event,
|
||||
Emitter<PaymentMethodsState> emit,
|
||||
) async {
|
||||
emit(state.copyWith(status: PaymentMethodsStatus.loading));
|
||||
|
||||
try {
|
||||
final result = await _getPaymentCardsUsecase();
|
||||
final profile = await _getProfileUseCase();
|
||||
|
||||
|
||||
if (result is Success<List<PaymentCard>>) {
|
||||
|
||||
print("BALANCE: ${profile.balance} BYN");
|
||||
emit(state.copyWith(
|
||||
status: PaymentMethodsStatus.success,
|
||||
cards: result.data ?? [],
|
||||
balance: profile.balance,
|
||||
));
|
||||
} else if (result is Failure) {
|
||||
String errorMessage = 'Не удалось загрузить карты';
|
||||
|
||||
/*if (result.failure is AuthFailure) {
|
||||
errorMessage = 'Ошибка авторизации';
|
||||
} else if (result.failure is UnknownFailure) {
|
||||
errorMessage = result.failure.message ?? 'Неизвестная ошибка';
|
||||
}*/
|
||||
|
||||
emit(state.copyWith(
|
||||
status: PaymentMethodsStatus.failure,
|
||||
errorMessage: errorMessage,
|
||||
));
|
||||
}
|
||||
} catch (e) {
|
||||
emit(state.copyWith(
|
||||
status: PaymentMethodsStatus.failure,
|
||||
errorMessage: e.toString(),
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> _onDeleteCard(
|
||||
PaymentMethodsDeleteCard event,
|
||||
Emitter<PaymentMethodsState> emit,
|
||||
) async {
|
||||
emit(state.copyWith(
|
||||
status: PaymentMethodsStatus.loading,
|
||||
isDeleting: true,
|
||||
));
|
||||
|
||||
try {
|
||||
final result = await _removePaymentCardUsecase(event.cardId);
|
||||
|
||||
if (result is Success) {
|
||||
emit(state.copyWith(isDeleting: false, status: PaymentMethodsStatus.success));
|
||||
add(PaymentMethodsStarted());
|
||||
} else if (result is Failure) {
|
||||
String errorMessage = 'Не удалось удалить карту';
|
||||
|
||||
if (result.failure is AuthFailure) {
|
||||
errorMessage = 'Ошибка авторизации';
|
||||
} else if (result.failure is UnknownFailure) {
|
||||
errorMessage = result.failure.message ?? 'Неизвестная ошибка';
|
||||
}
|
||||
|
||||
emit(state.copyWith(
|
||||
isDeleting: false,
|
||||
errorMessage: errorMessage,
|
||||
));
|
||||
}
|
||||
} catch (e) {
|
||||
emit(state.copyWith(
|
||||
isDeleting: false,
|
||||
errorMessage: e.toString(),
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> _onSetMainCard(
|
||||
PaymentMethodsSetMainCard event,
|
||||
Emitter<PaymentMethodsState> emit,
|
||||
) async {
|
||||
emit(state.copyWith(isSettingMain: true));
|
||||
|
||||
try {
|
||||
final result = await _setMainPaymentCardUsecase(event.cardId);
|
||||
|
||||
if (result is Success) {
|
||||
emit(state.copyWith(isSettingMain: false));
|
||||
add(PaymentMethodsStarted());
|
||||
} else if (result is Failure) {
|
||||
String errorMessage = 'Не удалось установить основную карту';
|
||||
|
||||
if (result.failure is AuthFailure) {
|
||||
errorMessage = 'Ошибка авторизации';
|
||||
} else if (result.failure is UnknownFailure) {
|
||||
errorMessage = result.failure.message ?? 'Неизвестная ошибка';
|
||||
}
|
||||
|
||||
emit(state.copyWith(
|
||||
isSettingMain: false,
|
||||
errorMessage: errorMessage,
|
||||
));
|
||||
}
|
||||
} catch (e) {
|
||||
emit(state.copyWith(
|
||||
isSettingMain: false,
|
||||
errorMessage: e.toString(),
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
FutureOr<void> _onAddPayemntCardPressed(
|
||||
AddPayemntCardPressed event,
|
||||
Emitter<PaymentMethodsState> emit
|
||||
) async {
|
||||
emit(state.copyWith(status: PaymentMethodsStatus.loading));
|
||||
|
||||
try {
|
||||
final result = await _addPaymentCardUsecase();
|
||||
|
||||
if (result is Success<Map<String, dynamic>>) {
|
||||
final formUrlString = result.data?['formUrl'] as String?;
|
||||
|
||||
if (formUrlString != null && formUrlString.isNotEmpty) {
|
||||
final url = Uri.parse(formUrlString);
|
||||
|
||||
if (await canLaunchUrl(url)) {
|
||||
launchUrl(
|
||||
url,
|
||||
mode: LaunchMode.externalApplication,
|
||||
);
|
||||
emit(state.copyWith(status: PaymentMethodsStatus.success));
|
||||
} else {
|
||||
emit(state.copyWith(
|
||||
status: PaymentMethodsStatus.failure,
|
||||
errorMessage: 'Не удалось открыть ссылку для оплаты',
|
||||
));
|
||||
}
|
||||
} else {
|
||||
emit(state.copyWith(
|
||||
status: PaymentMethodsStatus.failure,
|
||||
errorMessage: 'Ссылка для привязки карты не получена от сервера',
|
||||
));
|
||||
}
|
||||
|
||||
} else if (result is Failure) {
|
||||
String errorMessage = 'Ошибка при добавлении карты';
|
||||
|
||||
emit(state.copyWith(
|
||||
status: PaymentMethodsStatus.failure,
|
||||
errorMessage: errorMessage,
|
||||
));
|
||||
}
|
||||
|
||||
} catch (e) {
|
||||
emit(state.copyWith(
|
||||
status: PaymentMethodsStatus.failure,
|
||||
errorMessage: e.toString(),
|
||||
));
|
||||
}
|
||||
}}
|
||||
|
||||
Reference in New Issue
Block a user