feat: diary refactor

This commit is contained in:
Alex
2024-11-27 16:23:48 +03:00
parent 421190b6c9
commit 0d19fde557
21 changed files with 1253 additions and 1229 deletions

View File

@@ -10,27 +10,41 @@ import 'package:eatvio_app/features/glossary/repositories/glossary_repository.da
import 'package:flutter_bloc/flutter_bloc.dart';
class DiaryCubit extends Cubit<DiaryState> {
late final DateTime today;
late DateTime selectedDay;
late int selectedMeal;
final DiaryRepository diaryRepository;
final GlossaryRepository glossaryRepository;
DiaryCubit({
required this.diaryRepository,
required this.glossaryRepository,
}) : super(const DiaryState.loading());
}) : super(const DiaryState.loading()) {
today = DateTime.now();
selectedDay = today;
}
getDiaryDay(String date, [bool needLoading = true]) async {
if (needLoading) emit(const DiaryState.loading());
setSelectedDay(DateTime day) async {
selectedDay = day;
await fetchDiary();
}
setSelectedMeal(int meal) {
selectedMeal = meal;
emit((state as DiaryStateLoaded).copyWith(selectedMeal: selectedMeal));
}
fetchDiary() async {
emit(const DiaryState.loading());
selectedMeal = 1;
try {
final diaryDay = await diaryRepository.getDiaryByDate(date);
final List<int> satiety = [];
for (int i = 0; i < diaryDay.meals.length; i++) {
satiety.add(diaryDay.meals[i].satiety);
}
final diaryDay = await diaryRepository.getDiaryByDate('$selectedDay');
emit(
DiaryState.loaded(
diary: diaryDay,
nutrition: await getNutrition((await diaryRepository.getDiaryByDate(date)).id),
currentSelectedSatietyRating: satiety,
nutrition: await getNutrition((await diaryRepository.getDiaryByDate('$selectedDay')).id),
selectedDay: selectedDay,
selectedMeal: selectedMeal,
),
);
} catch (e) {
@@ -40,16 +54,18 @@ class DiaryCubit extends Cubit<DiaryState> {
}
finishDiaryDay({
required String date,
required int diaryId,
required String wakeUp,
required String retire,
required String comment,
}) async {
await diaryRepository.finishDiaryDay(
diaryId: diaryId,
wakeUp: '',
retire: '',
comment: '',
wakeUp: wakeUp,
retire: retire,
comment: comment,
);
await getDiaryDay(date, false);
await fetchDiary();
}
Future<NutritionDataModel> getNutrition(int index) async {
@@ -62,7 +78,6 @@ class DiaryCubit extends Cubit<DiaryState> {
required String productName,
required String portion,
required int quantity,
required String date,
}) async {
await diaryRepository.addPortionToMeal(
diaryId: diaryId,
@@ -71,7 +86,7 @@ class DiaryCubit extends Cubit<DiaryState> {
portion: portion,
quantity: quantity,
);
await getDiaryDay(date, false);
await fetchDiary();
}
updateProductInMeal({
@@ -81,7 +96,6 @@ class DiaryCubit extends Cubit<DiaryState> {
required String productName,
required String portion,
required int quantity,
required String date,
}) async {
await diaryRepository.updateProductInMeal(
diaryId: diaryId,
@@ -91,21 +105,20 @@ class DiaryCubit extends Cubit<DiaryState> {
portion: portion,
quantity: quantity,
);
await getDiaryDay(date, false);
await fetchDiary();
}
deleteProductFromMeal({
required int diaryId,
required int mealId,
required int portionId,
required String date,
}) async {
await diaryRepository.deleteProductFromMeal(
diaryId: diaryId,
mealId: mealId,
portionId: portionId,
);
await getDiaryDay(date, false);
await fetchDiary();
}
Future<List<GlossaryModel>> getGlossaryListByQuery(String query) async {
@@ -116,39 +129,26 @@ class DiaryCubit extends Cubit<DiaryState> {
required List<File> files,
required int diaryId,
required int mealId,
required String date,
}) async {
await diaryRepository.uploadPhotos(
files: await ImageCompressUtility.compressFilesList(files),
diaryId: diaryId,
mealId: mealId,
);
await getDiaryDay(date, false);
await fetchDiary();
}
deletePhoto({
required DiaryPhotoModel photo,
required int diaryId,
required int mealId,
required String date,
}) async {
await diaryRepository.deletePhoto(
photo: photo,
diaryId: diaryId,
mealId: mealId,
);
await getDiaryDay(date, false);
}
updateCurrentSelectedSatietyRating({
required int diaryId,
required int meal,
required int value,
}) {
List<int> satiety = [...(state as DiaryStateLoaded).currentSelectedSatietyRating];
satiety[meal] = value;
diaryRepository.fillSatiety(diaryId: diaryId, meal: meal, satiety: value.toInt() - 1);
emit((state as DiaryStateLoaded).copyWith(currentSelectedSatietyRating: satiety));
await fetchDiary();
}
sendProductToModeration({

View File

@@ -17,6 +17,7 @@ class DiaryState with _$DiaryState {
const factory DiaryState.loaded({
required DiaryDayModel diary,
required NutritionDataModel nutrition,
required List<int> currentSelectedSatietyRating,
required DateTime selectedDay,
required int selectedMeal,
}) = DiaryStateLoaded;
}

View File

@@ -22,7 +22,7 @@ mixin _$DiaryState {
required TResult Function() loading,
required TResult Function(String errorMessage) error,
required TResult Function(DiaryDayModel diary, NutritionDataModel nutrition,
List<int> currentSelectedSatietyRating)
DateTime selectedDay, int selectedMeal)
loaded,
}) =>
throw _privateConstructorUsedError;
@@ -32,7 +32,7 @@ mixin _$DiaryState {
TResult? Function()? loading,
TResult? Function(String errorMessage)? error,
TResult? Function(DiaryDayModel diary, NutritionDataModel nutrition,
List<int> currentSelectedSatietyRating)?
DateTime selectedDay, int selectedMeal)?
loaded,
}) =>
throw _privateConstructorUsedError;
@@ -42,7 +42,7 @@ mixin _$DiaryState {
TResult Function()? loading,
TResult Function(String errorMessage)? error,
TResult Function(DiaryDayModel diary, NutritionDataModel nutrition,
List<int> currentSelectedSatietyRating)?
DateTime selectedDay, int selectedMeal)?
loaded,
required TResult orElse(),
}) =>
@@ -140,7 +140,7 @@ class _$DiaryStateImpl implements _DiaryState {
required TResult Function() loading,
required TResult Function(String errorMessage) error,
required TResult Function(DiaryDayModel diary, NutritionDataModel nutrition,
List<int> currentSelectedSatietyRating)
DateTime selectedDay, int selectedMeal)
loaded,
}) {
return $default();
@@ -153,7 +153,7 @@ class _$DiaryStateImpl implements _DiaryState {
TResult? Function()? loading,
TResult? Function(String errorMessage)? error,
TResult? Function(DiaryDayModel diary, NutritionDataModel nutrition,
List<int> currentSelectedSatietyRating)?
DateTime selectedDay, int selectedMeal)?
loaded,
}) {
return $default?.call();
@@ -166,7 +166,7 @@ class _$DiaryStateImpl implements _DiaryState {
TResult Function()? loading,
TResult Function(String errorMessage)? error,
TResult Function(DiaryDayModel diary, NutritionDataModel nutrition,
List<int> currentSelectedSatietyRating)?
DateTime selectedDay, int selectedMeal)?
loaded,
required TResult orElse(),
}) {
@@ -263,7 +263,7 @@ class _$DiaryStateLoadingImpl implements DiaryStateLoading {
required TResult Function() loading,
required TResult Function(String errorMessage) error,
required TResult Function(DiaryDayModel diary, NutritionDataModel nutrition,
List<int> currentSelectedSatietyRating)
DateTime selectedDay, int selectedMeal)
loaded,
}) {
return loading();
@@ -276,7 +276,7 @@ class _$DiaryStateLoadingImpl implements DiaryStateLoading {
TResult? Function()? loading,
TResult? Function(String errorMessage)? error,
TResult? Function(DiaryDayModel diary, NutritionDataModel nutrition,
List<int> currentSelectedSatietyRating)?
DateTime selectedDay, int selectedMeal)?
loaded,
}) {
return loading?.call();
@@ -289,7 +289,7 @@ class _$DiaryStateLoadingImpl implements DiaryStateLoading {
TResult Function()? loading,
TResult Function(String errorMessage)? error,
TResult Function(DiaryDayModel diary, NutritionDataModel nutrition,
List<int> currentSelectedSatietyRating)?
DateTime selectedDay, int selectedMeal)?
loaded,
required TResult orElse(),
}) {
@@ -415,7 +415,7 @@ class _$DiaryStateErrorImpl implements DiaryStateError {
required TResult Function() loading,
required TResult Function(String errorMessage) error,
required TResult Function(DiaryDayModel diary, NutritionDataModel nutrition,
List<int> currentSelectedSatietyRating)
DateTime selectedDay, int selectedMeal)
loaded,
}) {
return error(errorMessage);
@@ -428,7 +428,7 @@ class _$DiaryStateErrorImpl implements DiaryStateError {
TResult? Function()? loading,
TResult? Function(String errorMessage)? error,
TResult? Function(DiaryDayModel diary, NutritionDataModel nutrition,
List<int> currentSelectedSatietyRating)?
DateTime selectedDay, int selectedMeal)?
loaded,
}) {
return error?.call(errorMessage);
@@ -441,7 +441,7 @@ class _$DiaryStateErrorImpl implements DiaryStateError {
TResult Function()? loading,
TResult Function(String errorMessage)? error,
TResult Function(DiaryDayModel diary, NutritionDataModel nutrition,
List<int> currentSelectedSatietyRating)?
DateTime selectedDay, int selectedMeal)?
loaded,
required TResult orElse(),
}) {
@@ -511,7 +511,8 @@ abstract class _$$DiaryStateLoadedImplCopyWith<$Res> {
$Res call(
{DiaryDayModel diary,
NutritionDataModel nutrition,
List<int> currentSelectedSatietyRating});
DateTime selectedDay,
int selectedMeal});
$DiaryDayModelCopyWith<$Res> get diary;
$NutritionDataModelCopyWith<$Res> get nutrition;
@@ -532,7 +533,8 @@ class __$$DiaryStateLoadedImplCopyWithImpl<$Res>
$Res call({
Object? diary = null,
Object? nutrition = null,
Object? currentSelectedSatietyRating = null,
Object? selectedDay = null,
Object? selectedMeal = null,
}) {
return _then(_$DiaryStateLoadedImpl(
diary: null == diary
@@ -543,10 +545,14 @@ class __$$DiaryStateLoadedImplCopyWithImpl<$Res>
? _value.nutrition
: nutrition // ignore: cast_nullable_to_non_nullable
as NutritionDataModel,
currentSelectedSatietyRating: null == currentSelectedSatietyRating
? _value._currentSelectedSatietyRating
: currentSelectedSatietyRating // ignore: cast_nullable_to_non_nullable
as List<int>,
selectedDay: null == selectedDay
? _value.selectedDay
: selectedDay // ignore: cast_nullable_to_non_nullable
as DateTime,
selectedMeal: null == selectedMeal
? _value.selectedMeal
: selectedMeal // ignore: cast_nullable_to_non_nullable
as int,
));
}
@@ -577,25 +583,21 @@ class _$DiaryStateLoadedImpl implements DiaryStateLoaded {
const _$DiaryStateLoadedImpl(
{required this.diary,
required this.nutrition,
required final List<int> currentSelectedSatietyRating})
: _currentSelectedSatietyRating = currentSelectedSatietyRating;
required this.selectedDay,
required this.selectedMeal});
@override
final DiaryDayModel diary;
@override
final NutritionDataModel nutrition;
final List<int> _currentSelectedSatietyRating;
@override
List<int> get currentSelectedSatietyRating {
if (_currentSelectedSatietyRating is EqualUnmodifiableListView)
return _currentSelectedSatietyRating;
// ignore: implicit_dynamic_type
return EqualUnmodifiableListView(_currentSelectedSatietyRating);
}
final DateTime selectedDay;
@override
final int selectedMeal;
@override
String toString() {
return 'DiaryState.loaded(diary: $diary, nutrition: $nutrition, currentSelectedSatietyRating: $currentSelectedSatietyRating)';
return 'DiaryState.loaded(diary: $diary, nutrition: $nutrition, selectedDay: $selectedDay, selectedMeal: $selectedMeal)';
}
@override
@@ -606,14 +608,15 @@ class _$DiaryStateLoadedImpl implements DiaryStateLoaded {
(identical(other.diary, diary) || other.diary == diary) &&
(identical(other.nutrition, nutrition) ||
other.nutrition == nutrition) &&
const DeepCollectionEquality().equals(
other._currentSelectedSatietyRating,
_currentSelectedSatietyRating));
(identical(other.selectedDay, selectedDay) ||
other.selectedDay == selectedDay) &&
(identical(other.selectedMeal, selectedMeal) ||
other.selectedMeal == selectedMeal));
}
@override
int get hashCode => Object.hash(runtimeType, diary, nutrition,
const DeepCollectionEquality().hash(_currentSelectedSatietyRating));
int get hashCode =>
Object.hash(runtimeType, diary, nutrition, selectedDay, selectedMeal);
/// Create a copy of DiaryState
/// with the given fields replaced by the non-null parameter values.
@@ -631,10 +634,10 @@ class _$DiaryStateLoadedImpl implements DiaryStateLoaded {
required TResult Function() loading,
required TResult Function(String errorMessage) error,
required TResult Function(DiaryDayModel diary, NutritionDataModel nutrition,
List<int> currentSelectedSatietyRating)
DateTime selectedDay, int selectedMeal)
loaded,
}) {
return loaded(diary, nutrition, currentSelectedSatietyRating);
return loaded(diary, nutrition, selectedDay, selectedMeal);
}
@override
@@ -644,10 +647,10 @@ class _$DiaryStateLoadedImpl implements DiaryStateLoaded {
TResult? Function()? loading,
TResult? Function(String errorMessage)? error,
TResult? Function(DiaryDayModel diary, NutritionDataModel nutrition,
List<int> currentSelectedSatietyRating)?
DateTime selectedDay, int selectedMeal)?
loaded,
}) {
return loaded?.call(diary, nutrition, currentSelectedSatietyRating);
return loaded?.call(diary, nutrition, selectedDay, selectedMeal);
}
@override
@@ -657,12 +660,12 @@ class _$DiaryStateLoadedImpl implements DiaryStateLoaded {
TResult Function()? loading,
TResult Function(String errorMessage)? error,
TResult Function(DiaryDayModel diary, NutritionDataModel nutrition,
List<int> currentSelectedSatietyRating)?
DateTime selectedDay, int selectedMeal)?
loaded,
required TResult orElse(),
}) {
if (loaded != null) {
return loaded(diary, nutrition, currentSelectedSatietyRating);
return loaded(diary, nutrition, selectedDay, selectedMeal);
}
return orElse();
}
@@ -707,14 +710,15 @@ class _$DiaryStateLoadedImpl implements DiaryStateLoaded {
abstract class DiaryStateLoaded implements DiaryState {
const factory DiaryStateLoaded(
{required final DiaryDayModel diary,
required final NutritionDataModel nutrition,
required final List<int> currentSelectedSatietyRating}) =
_$DiaryStateLoadedImpl;
{required final DiaryDayModel diary,
required final NutritionDataModel nutrition,
required final DateTime selectedDay,
required final int selectedMeal}) = _$DiaryStateLoadedImpl;
DiaryDayModel get diary;
NutritionDataModel get nutrition;
List<int> get currentSelectedSatietyRating;
DateTime get selectedDay;
int get selectedMeal;
/// Create a copy of DiaryState
/// with the given fields replaced by the non-null parameter values.