reminder_service.dart 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. import 'package:appflowy_backend/dispatch/dispatch.dart';
  2. import 'package:appflowy_backend/protobuf/flowy-error/errors.pb.dart';
  3. import 'package:appflowy_backend/protobuf/flowy-user/reminder.pb.dart';
  4. import 'package:dartz/dartz.dart';
  5. /// Interface for a Reminder Service that handles
  6. /// communication to the backend
  7. ///
  8. abstract class IReminderService {
  9. Future<Either<FlowyError, List<ReminderPB>>> fetchReminders();
  10. Future<Either<FlowyError, Unit>> removeReminder({required String reminderId});
  11. Future<Either<FlowyError, Unit>> addReminder({required ReminderPB reminder});
  12. Future<Either<FlowyError, Unit>> updateReminder({
  13. required ReminderPB reminder,
  14. });
  15. }
  16. class ReminderService implements IReminderService {
  17. const ReminderService();
  18. @override
  19. Future<Either<FlowyError, Unit>> addReminder({
  20. required ReminderPB reminder,
  21. }) async {
  22. final unitOrFailure = await UserEventCreateReminder(reminder).send();
  23. return unitOrFailure.swap();
  24. }
  25. @override
  26. Future<Either<FlowyError, Unit>> updateReminder({
  27. required ReminderPB reminder,
  28. }) async {
  29. final unitOrFailure = await UserEventUpdateReminder(reminder).send();
  30. return unitOrFailure.swap();
  31. }
  32. @override
  33. Future<Either<FlowyError, List<ReminderPB>>> fetchReminders() async {
  34. final resultOrFailure = await UserEventGetAllReminders().send();
  35. return resultOrFailure.swap().fold((l) => left(l), (r) => right(r.items));
  36. }
  37. @override
  38. Future<Either<FlowyError, Unit>> removeReminder({
  39. required String reminderId,
  40. }) async {
  41. final request = ReminderIdentifierPB(id: reminderId);
  42. final unitOrFailure = await UserEventRemoveReminder(request).send();
  43. return unitOrFailure.swap();
  44. }
  45. }