Sonnat Project
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

53 lines
1.8 KiB

1 year ago
11 months ago
1 year ago
11 months ago
1 year ago
11 months ago
1 year ago
10 months ago
1 year ago
10 months ago
1 year ago
11 months ago
1 year ago
11 months ago
1 year ago
  1. import 'dart:math';
  2. import 'package:data/app_api_data/app_api_repository_impl.dart';
  3. import 'package:flutter_bloc/flutter_bloc.dart';
  4. import 'package:network_core/initializer/base_initializer.dart';
  5. import 'package:network_core/network/networking/custom_exception.dart';
  6. import 'package:repositories/app_api_domain/models/single_post_model.dart';
  7. import 'package:repositories/app_api_domain/repository/app_api_repository.dart';
  8. import 'package:sonnat/core/utils/base_cubit_type.dart';
  9. import 'package:sonnat/features/single_post/view_models/comment.dart';
  10. class SinglePostCubit extends Cubit<BaseCubitType<SinglePostState>> {
  11. List<Comment> commentList = [];
  12. SinglePostModel? model;
  13. final AppApiRepository _remoteRepository = AppApiRepositoryImpl(apiService: BaseInitializer.instance.getApiService());
  14. SinglePostCubit() : super(BaseCubitType(eventName: SinglePostState.empty));
  15. void empty() => emit(BaseCubitType(eventName: SinglePostState.empty));
  16. void addComment(String comment, String author) {
  17. Comment newComment = Comment(
  18. date: DateTime.now().millisecondsSinceEpoch,
  19. text: comment,
  20. author: author,
  21. id: Random.secure().nextInt(10000),
  22. );
  23. commentList.insert(0, newComment);
  24. emit(BaseCubitType(eventName: SinglePostState.data));
  25. }
  26. void deleteComment(int id) {
  27. commentList.removeWhere((element) => element.id == id);
  28. emit(BaseCubitType(eventName: SinglePostState.data));
  29. }
  30. Future<void> getSinglePostData({required int postId}) async {
  31. try {
  32. emit(BaseCubitType(eventName: SinglePostState.loading));
  33. model = await _remoteRepository.getSinglePost(postId: postId);
  34. emit(BaseCubitType(eventName: SinglePostState.data));
  35. } on CustomException {
  36. emit(BaseCubitType(eventName: SinglePostState.error));
  37. }
  38. }
  39. }
  40. enum SinglePostState {
  41. empty,
  42. loading,
  43. error,
  44. data,
  45. }