77 lines
3.0 KiB
Dart
77 lines
3.0 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 GetUserDraftedNewsState {}
|
|
|
|
class GetUserDraftedNewsInitial extends GetUserDraftedNewsState {}
|
|
|
|
class GetUserDraftedNewsFetchInProgress extends GetUserDraftedNewsState {}
|
|
|
|
class GetUserDraftedNewsFetchSuccess extends GetUserDraftedNewsState {
|
|
final List<NewsModel> GetUserDraftedNews;
|
|
final int totalGetUserDraftedNewsCount;
|
|
final bool hasMoreFetchError;
|
|
final bool hasMore;
|
|
|
|
GetUserDraftedNewsFetchSuccess({required this.GetUserDraftedNews, required this.totalGetUserDraftedNewsCount, required this.hasMoreFetchError, required this.hasMore});
|
|
}
|
|
|
|
class GetUserDraftedNewsFetchFailure extends GetUserDraftedNewsState {
|
|
final String errorMessage;
|
|
|
|
GetUserDraftedNewsFetchFailure(this.errorMessage);
|
|
}
|
|
|
|
class GetUserDraftedNewsCubit extends Cubit<GetUserDraftedNewsState> {
|
|
GetUserDraftedNewsCubit() : super(GetUserDraftedNewsInitial());
|
|
|
|
void getGetUserDraftedNews({int? userId}) async {
|
|
try {
|
|
emit(GetUserDraftedNewsFetchInProgress());
|
|
final apiUrl = "${Api.getDraftNewsApi}/${userId}";
|
|
final result = await Api.sendApiRequest(body: null, url: apiUrl);
|
|
(!result[ERROR])
|
|
? emit(GetUserDraftedNewsFetchSuccess(
|
|
GetUserDraftedNews: (result[DATA][NEWS][DATA] as List).map((e) => NewsModel.fromJson(e)).toList(),
|
|
totalGetUserDraftedNewsCount: result[DATA][NEWS][TOTAL],
|
|
hasMoreFetchError: false,
|
|
hasMore: (result[DATA][NEWS][DATA] as List).length < result[DATA][NEWS][TOTAL]))
|
|
: emit(GetUserDraftedNewsFetchFailure(result[MESSAGE]));
|
|
} catch (e) {
|
|
emit(GetUserDraftedNewsFetchFailure(e.toString()));
|
|
}
|
|
}
|
|
|
|
bool hasMoreGetUserDraftedNews() {
|
|
return (state is GetUserDraftedNewsFetchSuccess) ? (state as GetUserDraftedNewsFetchSuccess).hasMore : false;
|
|
}
|
|
|
|
void deleteNews(int index) {
|
|
if (state is GetUserDraftedNewsFetchSuccess) {
|
|
List<NewsModel> newsList = List.from((state as GetUserDraftedNewsFetchSuccess).GetUserDraftedNews)..removeAt(index);
|
|
|
|
emit(GetUserDraftedNewsFetchSuccess(
|
|
GetUserDraftedNews: newsList,
|
|
hasMore: (state as GetUserDraftedNewsFetchSuccess).hasMore,
|
|
hasMoreFetchError: false,
|
|
totalGetUserDraftedNewsCount: (state as GetUserDraftedNewsFetchSuccess).totalGetUserDraftedNewsCount - 1));
|
|
}
|
|
}
|
|
|
|
void deleteImageId(int index) {
|
|
if (state is GetUserDraftedNewsFetchSuccess) {
|
|
List<NewsModel> newsList = (state as GetUserDraftedNewsFetchSuccess).GetUserDraftedNews;
|
|
|
|
newsList[index].imageDataList!.removeAt(index);
|
|
|
|
emit(GetUserDraftedNewsFetchSuccess(
|
|
GetUserDraftedNews: newsList,
|
|
hasMore: (state as GetUserDraftedNewsFetchSuccess).hasMore,
|
|
hasMoreFetchError: false,
|
|
totalGetUserDraftedNewsCount: (state as GetUserDraftedNewsFetchSuccess).totalGetUserDraftedNewsCount));
|
|
}
|
|
}
|
|
}
|