elCaribe app - customization and branding
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||
import 'package:news/data/models/NewsModel.dart';
|
||||
import 'package:news/data/repositories/LikeAndDisLikeNews/LikeAndDisLikeNewsRepository.dart';
|
||||
import 'package:news/utils/strings.dart';
|
||||
|
||||
abstract class LikeAndDisLikeState {}
|
||||
|
||||
class LikeAndDisLikeInitial extends LikeAndDisLikeState {}
|
||||
|
||||
class LikeAndDisLikeFetchInProgress extends LikeAndDisLikeState {}
|
||||
|
||||
class LikeAndDisLikeFetchSuccess extends LikeAndDisLikeState {
|
||||
final List<NewsModel> likeAndDisLike;
|
||||
final int totalLikeAndDisLikeCount;
|
||||
final bool hasMoreFetchError;
|
||||
final bool hasMore;
|
||||
|
||||
LikeAndDisLikeFetchSuccess({required this.likeAndDisLike, required this.totalLikeAndDisLikeCount, required this.hasMoreFetchError, required this.hasMore});
|
||||
}
|
||||
|
||||
class LikeAndDisLikeFetchFailure extends LikeAndDisLikeState {
|
||||
final String errorMessage;
|
||||
|
||||
LikeAndDisLikeFetchFailure(this.errorMessage);
|
||||
}
|
||||
|
||||
class LikeAndDisLikeCubit extends Cubit<LikeAndDisLikeState> {
|
||||
final LikeAndDisLikeRepository likeAndDisLikeRepository;
|
||||
int perPageLimit = 25;
|
||||
|
||||
LikeAndDisLikeCubit(this.likeAndDisLikeRepository) : super(LikeAndDisLikeInitial());
|
||||
|
||||
void getLike({required String langId}) async {
|
||||
try {
|
||||
emit(LikeAndDisLikeFetchInProgress());
|
||||
final result = await likeAndDisLikeRepository.getLike(limit: perPageLimit.toString(), offset: "0", langId: langId);
|
||||
emit(LikeAndDisLikeFetchSuccess(
|
||||
likeAndDisLike: result['LikeAndDisLike'], totalLikeAndDisLikeCount: result[TOTAL], hasMoreFetchError: false, hasMore: (result['LikeAndDisLike'] as List<NewsModel>).length < result[TOTAL]));
|
||||
} catch (e) {
|
||||
emit(LikeAndDisLikeFetchFailure(e.toString()));
|
||||
}
|
||||
}
|
||||
|
||||
bool isNewsLikeAndDisLike(String newsId) {
|
||||
if (state is LikeAndDisLikeFetchSuccess) {
|
||||
final likeAndDisLike = (state as LikeAndDisLikeFetchSuccess).likeAndDisLike;
|
||||
return likeAndDisLike.indexWhere((element) => (element.id == newsId || element.newsId == newsId)) != -1;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void resetState() {
|
||||
emit(LikeAndDisLikeFetchInProgress());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
import 'package:news/data/repositories/LikeAndDisLikeNews/LikeAndDisLikeNewsRepository.dart';
|
||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||
import 'package:news/data/models/NewsModel.dart';
|
||||
import 'package:news/utils/api.dart';
|
||||
|
||||
abstract class UpdateLikeAndDisLikeStatusState {}
|
||||
|
||||
class UpdateLikeAndDisLikeStatusInitial extends UpdateLikeAndDisLikeStatusState {}
|
||||
|
||||
class UpdateLikeAndDisLikeStatusInProgress extends UpdateLikeAndDisLikeStatusState {}
|
||||
|
||||
class UpdateLikeAndDisLikeStatusSuccess extends UpdateLikeAndDisLikeStatusState {
|
||||
final NewsModel news;
|
||||
final bool wasLikeAndDisLikeNewsProcess; //to check that process of favorite done or not
|
||||
UpdateLikeAndDisLikeStatusSuccess(this.news, this.wasLikeAndDisLikeNewsProcess);
|
||||
}
|
||||
|
||||
class UpdateLikeAndDisLikeStatusFailure extends UpdateLikeAndDisLikeStatusState {
|
||||
final String errorMessage;
|
||||
|
||||
UpdateLikeAndDisLikeStatusFailure(this.errorMessage);
|
||||
}
|
||||
|
||||
class UpdateLikeAndDisLikeStatusCubit extends Cubit<UpdateLikeAndDisLikeStatusState> {
|
||||
final LikeAndDisLikeRepository likeAndDisLikeRepository;
|
||||
|
||||
UpdateLikeAndDisLikeStatusCubit(this.likeAndDisLikeRepository) : super(UpdateLikeAndDisLikeStatusInitial());
|
||||
|
||||
void setLikeAndDisLikeNews({required NewsModel news, required String status}) {
|
||||
emit(UpdateLikeAndDisLikeStatusInProgress());
|
||||
likeAndDisLikeRepository.setLike(newsId: (news.newsId != null) ? news.newsId! : news.id!, status: status).then((value) {
|
||||
emit(UpdateLikeAndDisLikeStatusSuccess(news, status == "1" ? true : false));
|
||||
}).catchError((e) {
|
||||
ApiMessageAndCodeException apiMessageAndCodeException = e;
|
||||
emit(UpdateLikeAndDisLikeStatusFailure(apiMessageAndCodeException.errorMessage.toString()));
|
||||
});
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user