52 lines
1.5 KiB
Dart
52 lines
1.5 KiB
Dart
import 'package:be_happy/domain/entities/payment_card.dart';
|
|
import 'package:be_happy/domain/entities/subscription.dart';
|
|
|
|
import '../../domain/entities/subscription_period.dart';
|
|
|
|
abstract class SubscriptionDetailsState {}
|
|
|
|
class DetailsLoading extends SubscriptionDetailsState {}
|
|
|
|
class DetailsError extends SubscriptionDetailsState {
|
|
final String message;
|
|
|
|
DetailsError(this.message);
|
|
}
|
|
|
|
class DetailsContentState extends SubscriptionDetailsState {
|
|
final Subscription subscription;
|
|
final SubscriptionPeriod selectedPeriod;
|
|
final List<PaymentCard> cards;
|
|
final PaymentCard selectedCard;
|
|
final bool isAgreed;
|
|
final bool isAlreadyPurchased;
|
|
final bool isSuccess;
|
|
|
|
DetailsContentState({
|
|
required this.subscription,
|
|
required this.selectedPeriod,
|
|
required this.selectedCard,
|
|
this.cards = const [],
|
|
this.isAgreed = false,
|
|
this.isAlreadyPurchased = false,
|
|
this.isSuccess = false,
|
|
});
|
|
|
|
DetailsContentState copyWith({
|
|
SubscriptionPeriod? selectedPeriod,
|
|
PaymentCard? selectedCard,
|
|
bool? isAgreed,
|
|
bool? isAlreadyPurchased,
|
|
bool? isSuccess,
|
|
}) {
|
|
return DetailsContentState(
|
|
subscription: this.subscription,
|
|
selectedPeriod: selectedPeriod ?? this.selectedPeriod,
|
|
selectedCard: selectedCard ?? this.selectedCard,
|
|
isAgreed: isAgreed ?? this.isAgreed,
|
|
isAlreadyPurchased: isAlreadyPurchased ?? this.isAlreadyPurchased,
|
|
isSuccess: isSuccess ?? this.isSuccess,
|
|
);
|
|
}
|
|
}
|