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
@@ -1,4 +1,3 @@
import 'dart:async';
import 'dart:collection';
import 'package:aitrainer_app/bloc/menu/menu_bloc.dart';
@@ -30,7 +29,153 @@ class TestSetExecuteBloc extends Bloc<TestSetExecuteEvent, TestSetExecuteState>
List<ExercisePlanDetail>? exercisePlanDetails;
TestSetExecuteBloc() : super(TestSetExecuteInitial());
TestSetExecuteBloc() : super(TestSetExecuteInitial()) {
on<TestSetExecuteLoad>(_onLoad);
on<TestSetExecuteDeleteActive>(_onDeleteActive);
on<TestSetExecuteDeleteAllActive>(_onDeleteAllActive);
on<TestSetExecuteExerciseFinished>(_onExerciseFinished);
on<TestSetExecuteNewExercise>(_onNewExercise);
on<TestSetExecuteDeleteExercise>(_onDeleteExercise);
on<TestSetExecuteFinish>(_onFinish);
}
void _onLoad(TestSetExecuteLoad event, Emitter<TestSetExecuteState> emit) {
emit(TestSetExecuteLoading());
initExercisePlan();
if (exerciseTypeId != null) {
int step = 0;
if (exercisePlanDetails != null) {
exercisePlanDetails!.forEach((element) {
if (element.exerciseTypeId == this.exerciseTypeId) {
scrollOffset = (step * 85).toDouble() + 10;
}
step++;
});
}
}
emit(TestSetExecuteReady());
}
void _onDeleteActive(TestSetExecuteDeleteActive event, Emitter<TestSetExecuteState> emit) async {
emit(TestSetExecuteLoading());
print("Delete: ${exercisePlan!.type} paralellTest: $paralellTest");
if (exercisePlan != null && ExerciseAbility.mini_test_set.equalsStringTo(exercisePlan!.type!)) {
exercisePlan = null;
if (exercisePlanDetails != null) {
exercisePlanDetails!.removeRange(0, exercisePlanDetails!.length - 1);
}
await Cache().deleteActiveExercisePlan();
}
emit(TestSetExecuteReady());
}
void _onDeleteAllActive(TestSetExecuteDeleteAllActive event, Emitter<TestSetExecuteState> emit) async {
emit(TestSetExecuteLoading());
if (exercisePlan != null) {
print("DeleteAll Test Set: ${exercisePlan!.type}");
exercisePlan = null;
if (exercisePlanDetails != null) {
exercisePlanDetails!.removeRange(0, exercisePlanDetails!.length - 1);
}
await Cache().deleteActiveExercisePlan();
}
emit(TestSetExecuteReady());
}
void _onExerciseFinished(TestSetExecuteExerciseFinished event, Emitter<TestSetExecuteState> emit) {
emit(TestSetExecuteLoading());
exercisePlanDetails!.forEach((element) {
if (element.exerciseTypeId == event.exerciseTypeId) {
element.repeats = event.quantity.toInt();
element.weightEquation = event.unitQuantity.toString();
if (element.exercises == null) {
element.exercises = [];
}
final Exercise exercise = Exercise();
exercise.customerId = Cache().userLoggedIn!.customerId!;
exercise.exerciseTypeId = event.exerciseTypeId;
exercise.quantity = event.quantity;
exercise.unit = element.exerciseType!.unit;
exercise.unitQuantity = event.unitQuantity;
exercise.dateAdd = DateTime.now();
element.exercises!.add(exercise);
setPlanDetailState(element);
}
});
Cache().saveActiveExercisePlan(exercisePlan!, exercisePlanDetails!);
if (this.isDone100Percent()) {
add(TestSetExecuteFinish());
} else {
emit(TestSetExecuteReady());
}
emit(TestSetExecuteReady());
}
void _onNewExercise(TestSetExecuteNewExercise event, Emitter<TestSetExecuteState> emit) async {
emit(TestSetExecuteLoading());
if (exercisePlan == null) {
exercisePlan = ExercisePlan(Cache().userLoggedIn!.name! + " Custom Test", Cache().userLoggedIn!.customerId!);
exercisePlan!.private = true;
exercisePlan!.dateAdd = DateTime.now();
exercisePlan!.type = ExerciseAbility.paralell_test.enumToString();
ExercisePlan savedExercisePlan = await ExercisePlanApi().saveExercisePlan(exercisePlan!);
exercisePlan = savedExercisePlan;
exercisePlanDetails = [];
}
if (!this.existsInPlanDetails(event.exerciseTypeId)) {
ExercisePlanDetail exercisePlanDetail = ExercisePlanDetail(event.exerciseTypeId);
if (exercisePlan!.exercisePlanId != null) {
exercisePlanDetail.exercisePlanId = exercisePlan!.exercisePlanId!;
}
final ExerciseType exerciseType = Cache().getExerciseTypeById(event.exerciseTypeId)!;
exercisePlanDetail.serie = exerciseType.unitQuantityUnit == null ? 1 : 4;
exercisePlanDetail.exerciseType = exerciseType;
exercisePlanDetail.exerciseTypeId = event.exerciseTypeId;
ExercisePlanDetail savedDetail = await ExercisePlanApi().saveExercisePlanDetail(exercisePlanDetail);
exercisePlanDetail.exercisePlanDetailId = savedDetail.exercisePlanDetailId;
exercisePlanDetail.state = ExercisePlanDetailState.start;
exercisePlanDetail.exercises = [];
if (exercisePlanDetails == null) {
exercisePlanDetails = [];
}
exercisePlanDetails!.add(exercisePlanDetail);
await Cache().saveActiveExercisePlan(exercisePlan!, exercisePlanDetails!);
paralellTest = true;
}
emit(TestSetExecuteReady());
}
void _onDeleteExercise(TestSetExecuteDeleteExercise event, Emitter<TestSetExecuteState> emit) {
emit(TestSetExecuteLoading());
ExercisePlanDetail? deleteDetail;
if (exercisePlanDetails != null) {
exercisePlanDetails!.forEach((element) {
if (element.exerciseTypeId == event.exerciseTypeId) {
deleteDetail = element;
}
});
if (deleteDetail != null) {
exercisePlanDetails!.remove(deleteDetail);
if (exercisePlanDetails!.isEmpty) {
exercisePlan = null;
exercisePlanDetails = null;
Cache().deleteActiveExercisePlan();
}
}
}
emit(TestSetExecuteReady());
}
void _onFinish(TestSetExecuteFinish event, Emitter<TestSetExecuteState> emit) {
emit(TestSetExecuteLoading());
Cache().deleteActiveExercisePlan();
isDone100 = isDone100Percent();
// Animation
// Home
emit(TestSetExecuteReady());
}
void setExerciseTypeId(int id) => exerciseTypeId = id;
@@ -59,135 +204,6 @@ class TestSetExecuteBloc extends Bloc<TestSetExecuteEvent, TestSetExecuteState>
}
}
@override
Stream<TestSetExecuteState> mapEventToState(
TestSetExecuteEvent event,
) async* {
try {
if (event is TestSetExecuteLoad) {
yield TestSetExecuteLoading();
initExercisePlan();
if (exerciseTypeId != null) {
int step = 0;
if (exercisePlanDetails != null) {
exercisePlanDetails!.forEach((element) {
if (element.exerciseTypeId == this.exerciseTypeId) {
scrollOffset = (step * 85).toDouble() + 10;
}
step++;
});
}
}
yield TestSetExecuteReady();
} else if (event is TestSetExecuteDeleteActive) {
print("Delete: ${exercisePlan!.type} paralellTest: $paralellTest");
if (exercisePlan != null && ExerciseAbility.mini_test_set.equalsStringTo(exercisePlan!.type!)) {
exercisePlan = null;
if (exercisePlanDetails != null) {
exercisePlanDetails!.removeRange(0, exercisePlanDetails!.length - 1);
}
await Cache().deleteActiveExercisePlan();
}
} else if (event is TestSetExecuteDeleteAllActive) {
if (exercisePlan != null) {
print("DeleteAll Test Set: ${exercisePlan!.type}");
exercisePlan = null;
if (exercisePlanDetails != null) {
exercisePlanDetails!.removeRange(0, exercisePlanDetails!.length - 1);
}
await Cache().deleteActiveExercisePlan();
}
} else if (event is TestSetExecuteExerciseFinished) {
yield TestSetExecuteLoading();
exercisePlanDetails!.forEach((element) {
if (element.exerciseTypeId == event.exerciseTypeId) {
element.repeats = event.quantity.toInt();
element.weightEquation = event.unitQuantity.toString();
if (element.exercises == null) {
element.exercises = [];
}
final Exercise exercise = Exercise();
exercise.customerId = Cache().userLoggedIn!.customerId!;
exercise.exerciseTypeId = event.exerciseTypeId;
exercise.quantity = event.quantity;
exercise.unit = element.exerciseType!.unit;
exercise.unitQuantity = event.unitQuantity;
exercise.dateAdd = DateTime.now();
element.exercises!.add(exercise);
setPlanDetailState(element);
}
});
Cache().saveActiveExercisePlan(exercisePlan!, exercisePlanDetails!);
if (this.isDone100Percent()) {
add(TestSetExecuteFinish());
} else {
yield TestSetExecuteReady();
}
} else if (event is TestSetExecuteNewExercise) {
yield TestSetExecuteLoading();
if (exercisePlan == null) {
exercisePlan = ExercisePlan(Cache().userLoggedIn!.name! + " Custom Test", Cache().userLoggedIn!.customerId!);
exercisePlan!.private = true;
exercisePlan!.dateAdd = DateTime.now();
exercisePlan!.type = ExerciseAbility.paralell_test.enumToString();
ExercisePlan savedExercisePlan = await ExercisePlanApi().saveExercisePlan(exercisePlan!);
exercisePlan = savedExercisePlan;
exercisePlanDetails = [];
}
if (!this.existsInPlanDetails(event.exerciseTypeId)) {
ExercisePlanDetail exercisePlanDetail = ExercisePlanDetail(event.exerciseTypeId);
if (exercisePlan!.exercisePlanId != null) {
exercisePlanDetail.exercisePlanId = exercisePlan!.exercisePlanId!;
}
final ExerciseType exerciseType = Cache().getExerciseTypeById(event.exerciseTypeId)!;
exercisePlanDetail.serie = exerciseType.unitQuantityUnit == null ? 1 : 4;
exercisePlanDetail.exerciseType = exerciseType;
exercisePlanDetail.exerciseTypeId = event.exerciseTypeId;
ExercisePlanDetail savedDetail = await ExercisePlanApi().saveExercisePlanDetail(exercisePlanDetail);
exercisePlanDetail.exercisePlanDetailId = savedDetail.exercisePlanDetailId;
exercisePlanDetail.state = ExercisePlanDetailState.start;
exercisePlanDetail.exercises = [];
if (exercisePlanDetails == null) {
exercisePlanDetails = [];
}
exercisePlanDetails!.add(exercisePlanDetail);
await Cache().saveActiveExercisePlan(exercisePlan!, exercisePlanDetails!);
paralellTest = true;
}
yield TestSetExecuteReady();
} else if (event is TestSetExecuteDeleteExercise) {
yield TestSetExecuteLoading();
ExercisePlanDetail? deleteDetail;
if (exercisePlanDetails != null) {
exercisePlanDetails!.forEach((element) {
if (element.exerciseTypeId == event.exerciseTypeId) {
deleteDetail = element;
}
});
if (deleteDetail != null) {
exercisePlanDetails!.remove(deleteDetail);
if (exercisePlanDetails!.isEmpty) {
exercisePlan = null;
exercisePlanDetails = null;
Cache().deleteActiveExercisePlan();
}
}
}
yield TestSetExecuteReady();
} else if (event is TestSetExecuteFinish) {
Cache().deleteActiveExercisePlan();
isDone100 = isDone100Percent();
// Animation
// Home
yield TestSetExecuteFinished();
}
} on Exception catch (e) {
yield TestSetExecuteError(message: e.toString());
}
}
bool hasBegun() {
if (exercisePlanDetails == null ||
exercisePlanDetails!.isEmpty ||