Rumahjo-Android-APP/lib/data/cubits/property/fetch_top_rated_properties_cubit.dart

74 lines
2.2 KiB
Dart
Raw Normal View History

2024-09-07 00:58:50 +00:00
// ignore_for_file: public_member_api_docs, sort_constructors_first
import 'package:ebroker/data/Repositories/property_repository.dart';
import 'package:ebroker/data/model/data_output.dart';
import 'package:ebroker/data/model/property_model.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
abstract class FetchTopRatedPropertiesState {}
class FetchTopRatedPropertiesInitial extends FetchTopRatedPropertiesState {}
class FetchTopRatedPropertiesInProgress extends FetchTopRatedPropertiesState {}
class FetchTopRatedPropertiesSuccess extends FetchTopRatedPropertiesState {
final int total;
final int offset;
final bool isLoadingMore;
final bool hasError;
final List<PropertyModel> properties;
FetchTopRatedPropertiesSuccess({
required this.total,
required this.offset,
required this.isLoadingMore,
required this.hasError,
required this.properties,
});
FetchTopRatedPropertiesSuccess copyWith({
int? total,
int? offset,
bool? isLoadingMore,
bool? hasMoreData,
List<PropertyModel>? properties,
}) =>
FetchTopRatedPropertiesSuccess(
total: total ?? this.total,
offset: offset ?? this.offset,
isLoadingMore: isLoadingMore ?? this.isLoadingMore,
hasError: hasMoreData ?? hasError,
properties: properties ?? this.properties,
);
}
class FetchTopRatedPropertiesFailure extends FetchTopRatedPropertiesState {
final String errorMessage;
FetchTopRatedPropertiesFailure(this.errorMessage);
}
class FetchTopRatedPropertiesCubit extends Cubit<FetchTopRatedPropertiesState> {
FetchTopRatedPropertiesCubit() : super(FetchTopRatedPropertiesInitial());
final PropertyRepository _propertyRepository = PropertyRepository();
Future<void> fetchTopRatedProperty() async {
try {
emit(FetchTopRatedPropertiesInProgress());
DataOutput<PropertyModel> result =
await _propertyRepository.fetchTopRatedProperty();
emit(
FetchTopRatedPropertiesSuccess(
total: result.total,
hasError: false,
isLoadingMore: false,
offset: 0,
properties: result.modelList,
),
);
} catch (e) {
emit(FetchTopRatedPropertiesFailure(e.toString()));
}
}
}