50 lines
1.7 KiB
Dart
50 lines
1.7 KiB
Dart
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<NewsModel> 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<AuthorNewsState> {
|
|
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()));
|
|
}
|
|
}
|
|
}
|