Files
eatvio_app/lib/features/plans/repositories/plan_repository.dart

69 lines
2.3 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/models/chosen_plan_model.dart';
import 'package:eatvio_app/features/plans/services/plan_service.dart';
import 'package:sentry_flutter/sentry_flutter.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, s) {
await Sentry.captureException(e, stackTrace: s);
rethrow;
}
}
Future<void> likePlan(String slug) async {
try {
await planService.likePlan(slug: slug);
} catch (e, s) {
await Sentry.captureException(e, stackTrace: s);
rethrow;
}
}
Future<void> addToFavorite(String slug) async {
try {
await planService.addToFavorite(slug: slug);
} catch (e, s) {
await Sentry.captureException(e, stackTrace: s);
rethrow;
}
}
Future<void> removeFromFavorite(String slug) async {
try {
await planService.removeFromFavorite(slug: slug);
} catch (e, s) {
await Sentry.captureException(e, stackTrace: s);
rethrow;
}
}
Future<ChosenPlanModel> chosePlan(String slug, Map<String, dynamic> option ) async {
try {
return await planService.chosePlan(slug: slug, option: option);
} catch (e, s) {
await Sentry.captureException(e, stackTrace: s);
rethrow;
}
}
void emitLikesStateToFeed(LikesState state) => _planLikeStateStreamController.add(state);
void emitFavoriteStateToFeed(FavoriteState state) => _planFavoriteStateStreamController.add(state);
void emitCommentsStateToFeed(CommentsState state) => _planCommentsStateStreamController.add(state);
}