feat: refactor code

This commit is contained in:
2026-06-17 12:57:28 +03:30
parent e9f294fa19
commit 519752b478
106 changed files with 3459 additions and 2309 deletions
@@ -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);
}