Files
saqel/apps/super_admin_app/lib/logic/cubits/treasury_cubit.dart
T

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);
}