Files
eatvio_app/lib/features/plans/repositories/plan_repository.dart
2024-12-16 20:31:23 +07:00

57 lines
1.7 KiB
Dart

import 'dart:async';
import 'package:eatvio_app/features/diets/repositories/diet_repository.dart';
import 'package:eatvio_app/features/feed/models/plan_pagination_model.dart';
import 'package:eatvio_app/features/plans/services/plan_service.dart';
class PlanRepository {
final PlanService planService;
PlanRepository({required this.planService});
final _planLikeStateStreamController = StreamController<LikesState>.broadcast();
final _planFavoriteStateStreamController = StreamController<FavoriteState>.broadcast();
final _planCommentsStateStreamController = StreamController<CommentsState>.broadcast();
Stream get planLikeState => _planLikeStateStreamController.stream;
Stream get planFavoriteState => _planFavoriteStateStreamController.stream;
Stream get planCommentsState => _planCommentsStateStreamController.stream;
Future<PlanModel> getPlan(String slug) async {
try {
return planService.getPlan(slug);
} catch (e) {
rethrow;
}
}
Future<void> likePlan(String slug) async {
try {
await planService.likePlan(slug: slug);
} catch (e) {
rethrow;
}
}
Future<void> addToFavorite(String slug) async {
try {
await planService.addToFavorite(slug: slug);
} catch (e) {
rethrow;
}
}
Future<void> removeFromFavorite(String slug) async {
try {
await planService.removeFromFavorite(slug: slug);
} catch (e) {
rethrow;
}
}
void emitLikesStateToFeed(LikesState state) => _planLikeStateStreamController.add(state);
void emitFavoriteStateToFeed(FavoriteState state) => _planFavoriteStateStreamController.add(state);
void emitCommentsStateToFeed(CommentsState state) => _planCommentsStateStreamController.add(state);
}