59 lines
1.6 KiB
Dart
59 lines
1.6 KiB
Dart
import 'package:flutter_bloc/flutter_bloc.dart';
|
|
import '../../data/models/super_admin_models.dart';
|
|
import '../../data/repositories/super_admin_repository.dart';
|
|
|
|
abstract class TreasuryState {
|
|
const TreasuryState();
|
|
}
|
|
|
|
class TreasuryInitial extends TreasuryState {}
|
|
|
|
class TreasuryLoading extends TreasuryState {}
|
|
|
|
class TreasuryLoaded extends TreasuryState {
|
|
final List<PayoutQueueItemModel> queue;
|
|
final double? totalTreasuryBalanceJod;
|
|
|
|
const TreasuryLoaded({
|
|
required this.queue,
|
|
required this.totalTreasuryBalanceJod,
|
|
});
|
|
|
|
TreasuryLoaded copyWith({
|
|
List<PayoutQueueItemModel>? queue,
|
|
double? totalTreasuryBalanceJod,
|
|
}) {
|
|
return TreasuryLoaded(
|
|
queue: queue ?? this.queue,
|
|
totalTreasuryBalanceJod: totalTreasuryBalanceJod ?? this.totalTreasuryBalanceJod,
|
|
);
|
|
}
|
|
}
|
|
|
|
class TreasuryCubit extends Cubit<TreasuryState> {
|
|
final SuperAdminRepository repository;
|
|
|
|
TreasuryCubit({required this.repository}) : super(TreasuryInitial());
|
|
|
|
Future<void> loadTreasury() async {
|
|
emit(TreasuryLoading());
|
|
try {
|
|
final results = await Future.wait([repository.getPayoutQueue(), repository.getMacroTelemetry()]);
|
|
final queue = results[0] as List<PayoutQueueItemModel>;
|
|
final telemetry = results[1] as MacroTelemetryModel;
|
|
emit(TreasuryLoaded(
|
|
queue: queue,
|
|
totalTreasuryBalanceJod: telemetry.treasuryBalanceJod,
|
|
));
|
|
} catch (error) {
|
|
emit(TreasuryError('تعذر تحميل بيانات الخزينة: $error'));
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
class TreasuryError extends TreasuryState {
|
|
final String message;
|
|
const TreasuryError(this.message);
|
|
}
|