import 'package:equatable/equatable.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import '../../../core/network/api_client.dart'; import '../models/discovery_asset_model.dart'; import '../repositories/discovery_repository.dart'; class DiscoveryState extends Equatable { final List assets; final bool isLoading; const DiscoveryState({ this.assets = const [], this.isLoading = false, }); DiscoveryState copyWith({ List? assets, bool? isLoading, }) { return DiscoveryState( assets: assets ?? this.assets, isLoading: isLoading ?? this.isLoading, ); } @override List get props => [assets, isLoading]; } class DiscoveryCubit extends Cubit { final DiscoveryRepository repository; DiscoveryCubit({ DiscoveryRepository? repository, ApiClient? apiClient, }) : repository = repository ?? DiscoveryRepository(apiClient: apiClient!), super(const DiscoveryState()); Future loadDiscovery({int limit = 15}) async { if (state.isLoading) return; emit(state.copyWith(isLoading: true)); try { final list = await repository.getDiscoveryAssets(limit: limit); emit(DiscoveryState(assets: list, isLoading: false)); } catch (_) { emit(state.copyWith(isLoading: false)); } } }