import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:news/data/models/NewsModel.dart'; import 'package:news/utils/api.dart'; import 'package:news/utils/strings.dart'; abstract class AuthorNewsState {} class AuthorNewsInitial extends AuthorNewsState {} class AuthorNewsFetchInProgress extends AuthorNewsState {} class AuthorNewsFetchSuccess extends AuthorNewsState { final List AuthorNewsList; final UserAuthorModel authorData; final int totalAuthorNewsCount; final bool hasMoreFetchError; final bool hasMore; AuthorNewsFetchSuccess({required this.AuthorNewsList, required this.authorData, required this.totalAuthorNewsCount, required this.hasMoreFetchError, required this.hasMore}); } class AuthorNewsFetchFailed extends AuthorNewsState { final String errorMessage; AuthorNewsFetchFailed(this.errorMessage); } class AuthorNewsCubit extends Cubit { AuthorNewsCubit() : super(AuthorNewsInitial()); void getAuthorNews({required String authorId}) async { try { emit(AuthorNewsInitial()); final apiUrl = "${Api.getAuthorNewsApi}/${authorId}"; final result = await Api.sendApiRequest(body: null, url: apiUrl, isGet: true); (!result[ERROR]) ? emit(AuthorNewsFetchSuccess( AuthorNewsList: (result[DATA][NEWS][DATA] as List).map((e) => NewsModel.fromJson(e)).toList(), authorData: UserAuthorModel.fromJson(result[DATA][USER]), totalAuthorNewsCount: result[DATA][NEWS][TOTAL], hasMore: false, hasMoreFetchError: false)) : emit(AuthorNewsFetchFailed(result[MESSAGE])); } catch (e) { emit(AuthorNewsFetchFailed(e.toString())); } } }