import 'package:flutter_bloc/flutter_bloc.dart'; import '../../../core/api/api_exception.dart'; import '../../../core/ui/view_status.dart'; import '../data/rewards_repository.dart'; class RewardsState { const RewardsState({ this.status = ViewStatus.idle, this.referrals, this.coupons = const [], this.error, }); final ViewStatus status; final ReferralSummary? referrals; final List coupons; final String? error; } class RewardsCubit extends Cubit { RewardsCubit(this._repo) : super(const RewardsState()); final RewardsRepository _repo; Future load() async { emit(const RewardsState(status: ViewStatus.loading)); try { // النداءان متوازيان: لا سبب لانتظار أحدهما الآخر. final results = await Future.wait([ _repo.referrals(), _repo.coupons(), ]); if (isClosed) return; emit(RewardsState( status: ViewStatus.success, referrals: results[0] as ReferralSummary, coupons: results[1] as List, )); } on ApiException catch (e) { if (!isClosed) { emit(RewardsState(status: ViewStatus.error, error: e.message)); } } } }