WT 1.1.26+3 bloc migration

This commit is contained in:
Tibor Bossanyi (Freelancer)
2022-04-15 08:47:32 +02:00
parent 60df0bcf2d
commit 225172f950
47 changed files with 1527 additions and 1620 deletions
+58 -57
View File
@@ -1,6 +1,4 @@
import 'dart:async';
import 'dart:collection';
import 'package:aitrainer_app/bloc/menu/menu_bloc.dart';
import 'package:aitrainer_app/model/cache.dart';
import 'package:aitrainer_app/model/exercise_ability.dart';
@@ -32,9 +30,16 @@ class TestSetEditBloc extends Bloc<TestSetEditEvent, TestSetEditState> {
final HashMap<int, List<ExerciseType>?> _displayPlanDetails = HashMap();
int? sliderIndex;
TestSetEditBloc(
{required this.templateName, required this.templateNameTranslation, required this.workoutTreeRepository, required this.menuBloc})
TestSetEditBloc({required this.templateName, required this.templateNameTranslation, required this.workoutTreeRepository, required this.menuBloc})
: super(TestSetEditInitial()) {
this._init();
on<TestSetEditChangeExerciseType>(_onChangeExerciseType);
on<TestSetEditDeleteExerciseType>(_onDeleteExerciseType);
on<TestSetEditAddExerciseType>(_onAddExerciseType);
on<TestSetEditSubmit>(_onSubmit);
}
void _init() {
if (Cache().exercisePlanTemplates.isNotEmpty) {
Cache().exercisePlanTemplates.forEach((element) {
final ExercisePlanTemplate template = element as ExercisePlanTemplate;
@@ -65,60 +70,56 @@ class TestSetEditBloc extends Bloc<TestSetEditEvent, TestSetEditState> {
}
}
@override
Stream<TestSetEditState> mapEventToState(TestSetEditEvent event) async* {
try {
if (event is TestSetEditChangeExerciseType) {
yield TestSetEditLoading();
ExerciseType? exerciseType;
if (_exercisePlanDetails[event.indexKey] == null) {
exerciseType = displayPlanDetails[event.indexKey][0];
} else {
exerciseType = displayPlanDetails[event.indexKey][event.index];
}
_exercisePlanDetails[event.indexKey] = exerciseType;
this.sliderIndex = event.index;
yield TestSetEditReady();
} else if (event is TestSetEditDeleteExerciseType) {
yield TestSetEditLoading();
_exercisePlanDetails[event.indexKey] = null;
yield TestSetEditReady();
} else if (event is TestSetEditAddExerciseType) {
yield TestSetEditLoading();
ExerciseType exerciseType = displayPlanDetails[event.indexKey][0];
_exercisePlanDetails[event.indexKey] = exerciseType;
yield TestSetEditReady();
} else if (event is TestSetEditSubmit) {
yield TestSetEditLoading();
ExercisePlan exercisePlan = ExercisePlan(templateNameTranslation, Cache().userLoggedIn!.customerId!);
exercisePlan.private = true;
exercisePlan.type = ExerciseAbility.mini_test_set.enumToString();
exercisePlan.dateAdd = DateTime.now();
ExercisePlan savedExercisePlan = await ExercisePlanApi().saveExercisePlan(exercisePlan);
List<ExercisePlanDetail> details = [];
for (var entry in _exercisePlanDetails.entries) {
if (entry.value != null) {
ExercisePlanDetail exercisePlanDetail = ExercisePlanDetail(entry.value!.exerciseTypeId);
exercisePlanDetail.exercisePlanId = savedExercisePlan.exercisePlanId!;
exercisePlanDetail.serie = 1;
ExercisePlanDetail savedDetail = await ExercisePlanApi().saveExercisePlanDetail(exercisePlanDetail);
exercisePlanDetail.exercisePlanDetailId = savedDetail.exercisePlanDetailId;
exercisePlanDetail.exercises = [];
details.add(exercisePlanDetail);
}
}
Cache().saveActiveExercisePlan(exercisePlan, details);
Track().track(TrackingEvent.test_set_edit, eventValue: templateName);
yield TestSetEditSaved();
} else if (event is TestSetEditAddError) {
yield TestSetEditError(message: event.message);
}
} on Exception catch (e) {
yield TestSetEditError(message: e.toString());
void _onChangeExerciseType(TestSetEditChangeExerciseType event, Emitter<TestSetEditState> emit) {
emit(TestSetEditLoading());
ExerciseType? exerciseType;
if (_exercisePlanDetails[event.indexKey] == null) {
exerciseType = displayPlanDetails[event.indexKey][0];
} else {
exerciseType = displayPlanDetails[event.indexKey][event.index];
}
_exercisePlanDetails[event.indexKey] = exerciseType;
this.sliderIndex = event.index;
emit(TestSetEditReady());
}
void _onDeleteExerciseType(TestSetEditDeleteExerciseType event, Emitter<TestSetEditState> emit) {
emit(TestSetEditLoading());
_exercisePlanDetails[event.indexKey] = null;
emit(TestSetEditReady());
}
void _onAddExerciseType(TestSetEditAddExerciseType event, Emitter<TestSetEditState> emit) {
emit(TestSetEditLoading());
ExerciseType exerciseType = displayPlanDetails[event.indexKey][0];
_exercisePlanDetails[event.indexKey] = exerciseType;
emit(TestSetEditReady());
}
void _onSubmit(TestSetEditSubmit event, Emitter<TestSetEditState> emit) async {
emit(TestSetEditLoading());
ExercisePlan exercisePlan = ExercisePlan(templateNameTranslation, Cache().userLoggedIn!.customerId!);
exercisePlan.private = true;
exercisePlan.type = ExerciseAbility.mini_test_set.enumToString();
exercisePlan.dateAdd = DateTime.now();
ExercisePlan savedExercisePlan = await ExercisePlanApi().saveExercisePlan(exercisePlan);
List<ExercisePlanDetail> details = [];
for (var entry in _exercisePlanDetails.entries) {
if (entry.value != null) {
ExercisePlanDetail exercisePlanDetail = ExercisePlanDetail(entry.value!.exerciseTypeId);
exercisePlanDetail.exercisePlanId = savedExercisePlan.exercisePlanId!;
exercisePlanDetail.serie = 1;
ExercisePlanDetail savedDetail = await ExercisePlanApi().saveExercisePlanDetail(exercisePlanDetail);
exercisePlanDetail.exercisePlanDetailId = savedDetail.exercisePlanDetailId;
exercisePlanDetail.exercises = [];
details.add(exercisePlanDetail);
}
}
Cache().saveActiveExercisePlan(exercisePlan, details);
Track().track(TrackingEvent.test_set_edit, eventValue: templateName);
emit(TestSetEditSaved());
}
List get exerciseTypes => this._exerciseTypes;