feat: refactor code
This commit is contained in:
@@ -0,0 +1,15 @@
|
||||
abstract class DailyStatus {}
|
||||
|
||||
class DailyInitial extends DailyStatus {}
|
||||
|
||||
class DailyLoading extends DailyStatus {}
|
||||
|
||||
class DailySuccess extends DailyStatus {
|
||||
final int amount;
|
||||
DailySuccess(this.amount);
|
||||
}
|
||||
|
||||
class DailyError extends DailyStatus {
|
||||
final String message;
|
||||
DailyError(this.message);
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||
|
||||
import '../../../../core/resources/data_state.dart';
|
||||
import '../../../../core/usecase/use_case.dart';
|
||||
import '../../domain/use_cases/claim_daily_usecase.dart';
|
||||
import '../../domain/use_cases/get_wallet_usecase.dart';
|
||||
import 'daily_status.dart';
|
||||
import 'wallet_event.dart';
|
||||
import 'wallet_state.dart';
|
||||
import 'wallet_status.dart';
|
||||
|
||||
class WalletBloc extends Bloc<WalletEvent, WalletBlocState> {
|
||||
final GetWalletUseCase getWalletUseCase;
|
||||
final ClaimDailyUseCase claimDailyUseCase;
|
||||
|
||||
WalletBloc(this.getWalletUseCase, this.claimDailyUseCase)
|
||||
: super(WalletBlocState.initial()) {
|
||||
on<LoadWalletEvent>((event, emit) async {
|
||||
emit(state.copyWith(walletStatus: WalletLoading()));
|
||||
final res = await getWalletUseCase(const NoParams());
|
||||
if (res is DataSuccess) {
|
||||
emit(state.copyWith(walletStatus: WalletLoaded(res.data!)));
|
||||
} else {
|
||||
emit(state.copyWith(walletStatus: WalletError(res.error!)));
|
||||
}
|
||||
});
|
||||
|
||||
on<ClaimDailyEvent>((event, emit) async {
|
||||
emit(state.copyWith(dailyStatus: DailyLoading()));
|
||||
final res = await claimDailyUseCase(const NoParams());
|
||||
if (res is DataSuccess) {
|
||||
emit(state.copyWith(dailyStatus: DailySuccess(res.data!)));
|
||||
// پس از دریافت، کیفپول بهروزرسانی شود.
|
||||
final w = await getWalletUseCase(const NoParams());
|
||||
if (w is DataSuccess) {
|
||||
emit(state.copyWith(walletStatus: WalletLoaded(w.data!)));
|
||||
}
|
||||
} else {
|
||||
emit(state.copyWith(dailyStatus: DailyError(res.error!)));
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
abstract class WalletEvent {}
|
||||
|
||||
class LoadWalletEvent extends WalletEvent {}
|
||||
|
||||
class ClaimDailyEvent extends WalletEvent {}
|
||||
@@ -0,0 +1,23 @@
|
||||
import 'daily_status.dart';
|
||||
import 'wallet_status.dart';
|
||||
|
||||
class WalletBlocState {
|
||||
final WalletStatus walletStatus;
|
||||
final DailyStatus dailyStatus;
|
||||
|
||||
WalletBlocState({required this.walletStatus, required this.dailyStatus});
|
||||
|
||||
factory WalletBlocState.initial() => WalletBlocState(
|
||||
walletStatus: WalletInitial(),
|
||||
dailyStatus: DailyInitial(),
|
||||
);
|
||||
|
||||
WalletBlocState copyWith({
|
||||
WalletStatus? walletStatus,
|
||||
DailyStatus? dailyStatus,
|
||||
}) =>
|
||||
WalletBlocState(
|
||||
walletStatus: walletStatus ?? this.walletStatus,
|
||||
dailyStatus: dailyStatus ?? this.dailyStatus,
|
||||
);
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
import '../../domain/entities/wallet_entity.dart';
|
||||
|
||||
abstract class WalletStatus {}
|
||||
|
||||
class WalletInitial extends WalletStatus {}
|
||||
|
||||
class WalletLoading extends WalletStatus {}
|
||||
|
||||
class WalletLoaded extends WalletStatus {
|
||||
final WalletEntity wallet;
|
||||
WalletLoaded(this.wallet);
|
||||
}
|
||||
|
||||
class WalletError extends WalletStatus {
|
||||
final String message;
|
||||
WalletError(this.message);
|
||||
}
|
||||
Reference in New Issue
Block a user