import 'package:equatable/equatable.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import '../../core/network/api_client.dart'; import 'wallet.dart'; enum WalletStatus { initial, loading, loaded, error } class WalletState extends Equatable { final WalletStatus status; final Wallet? wallet; final String name; // نام نمایشی (برای نوار بالای لابی) final String avatar; // seed آواتار const WalletState({ this.status = WalletStatus.initial, this.wallet, this.name = '', this.avatar = '', }); @override List get props => [status, wallet, name, avatar]; } class WalletCubit extends Cubit { final ApiClient _api; WalletCubit(this._api) : super(const WalletState()); Future load() async { emit(WalletState( status: WalletStatus.loading, wallet: state.wallet, name: state.name, avatar: state.avatar)); try { final results = await Future.wait([ _api.dio.get('/wallet'), _api.dio.get('/me'), ]); final user = (results[1].data['user'] ?? {}) as Map; final name = (user['first_name'] as String?)?.trim(); final avatar = (user['avatar'] as String?)?.trim(); emit(WalletState( status: WalletStatus.loaded, wallet: Wallet.fromJson(Map.from(results[0].data)), name: (name == null || name.isEmpty) ? 'بازیکن' : name, avatar: (avatar == null || avatar.isEmpty) ? 'hakem-1' : avatar, )); } catch (_) { emit(const WalletState(status: WalletStatus.error)); } } /// دریافت سکه روزانه و سپس به‌روزرسانی کیف‌پول. Future claimDaily() async { try { final res = await _api.dio.post('/rewards/daily'); await load(); return (res.data['amount'] ?? 0) as int; } catch (_) { return null; } } }