forked from eatvio/eatvio_app
52 lines
1.8 KiB
Dart
52 lines
1.8 KiB
Dart
import 'package:eatvio_app/features/diary/entities/diary_day_entity.dart';
|
|
import 'package:eatvio_app/features/diary/entities/diary_future_diet_day_entity.dart';
|
|
import 'package:eatvio_app/features/diary/models/consultant_review_model.dart';
|
|
import 'package:eatvio_app/features/diary/models/nutrition_model.dart';
|
|
import 'package:eatvio_app/features/diary/presentation/diary_edit_access.dart';
|
|
import 'package:freezed_annotation/freezed_annotation.dart';
|
|
|
|
part 'diary_state.freezed.dart';
|
|
|
|
@freezed
|
|
abstract class DiaryState with _$DiaryState {
|
|
const factory DiaryState() = _DiaryState;
|
|
|
|
const factory DiaryState.loading() = DiaryStateLoading;
|
|
|
|
const factory DiaryState.error({required String errorMessage}) =
|
|
DiaryStateError;
|
|
|
|
const factory DiaryState.loaded({
|
|
required DiaryDayEntity diary,
|
|
required NutritionDataModel nutrition,
|
|
required DateTime selectedDay,
|
|
required int selectedMeal,
|
|
int? chosenPlanCurrentDay,
|
|
String? chosenPlanName,
|
|
int? chosenPlanDuration,
|
|
ConsultantReviewModel? consultantReview,
|
|
@Default(false) bool isConsultantView,
|
|
@Default(false) bool isDiaryFinished,
|
|
@Default(false) bool isDiaryCommented,
|
|
@Default(false) bool isWakeUpAndRetireEnabled,
|
|
@Default(false) bool isMoodEnabled,
|
|
@Default(false) bool isLoadingAddingProductInMeal,
|
|
}) = DiaryStateLoaded;
|
|
|
|
const factory DiaryState.loadedTomorrowWithDiet({
|
|
required DiaryFutureDietDayEntity diary,
|
|
required DateTime selectedDay,
|
|
required int selectedMeal,
|
|
}) = DiaryStateLoadedTomorrowWithDiet;
|
|
}
|
|
|
|
extension DiaryStateLoadedEditAccess on DiaryStateLoaded {
|
|
bool get canEditDiary => canEditDiaryDay(
|
|
isConsultantView: isConsultantView,
|
|
isDiaryCommented: isDiaryCommented,
|
|
isDiaryFinished: isDiaryFinished,
|
|
closed: diary.closed,
|
|
diaryDate: diary.date,
|
|
);
|
|
}
|