Skip to content

Commit

Permalink
refact: THE BEAST HAS BEEN DEFEATED! refactor complete!
Browse files Browse the repository at this point in the history
  • Loading branch information
fiizzy committed Apr 6, 2024
1 parent 4c3053e commit 162ae3f
Show file tree
Hide file tree
Showing 17 changed files with 261 additions and 699 deletions.
2 changes: 2 additions & 0 deletions lib/features/auth/data/models/user_model.g.dart

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions lib/features/events/data/models/calentre_event.g.dart

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

135 changes: 12 additions & 123 deletions lib/features/events/presentation/bloc/event/event_bloc.dart
Original file line number Diff line number Diff line change
@@ -1,24 +1,17 @@
import 'package:calentre/config/constants/time_list.dart';
import 'package:calentre/config/enums/weekdays.dart';
import 'package:calentre/features/events/data/models/calentre_event.dart';
import 'package:calentre/features/events/presentation/bloc/event/event_event.dart';
import 'package:calentre/features/events/presentation/bloc/event/event_state.dart';
import 'package:calentre/features/events/presentation/helpers/add_new_time_field.dart';
import 'package:calentre/features/events/presentation/helpers/remove_extra_time_field.dart';
import 'package:calentre/features/events/presentation/helpers/validate_time_selection.dart';
import 'package:calentre/features/events/presentation/helpers/update_current_day_details.dart';
import 'package:flutter_bloc/flutter_bloc.dart';

//For night
// complete add re-assigning (abstract function to return a list containing [_calentreState, validation state])
//complete remove re-assiging
//complete else statement when hasError is false

class CalentreEventBloc extends Bloc<CalentreEventEvent, CalentreEventState> {
class CalentreEventBloc
extends Bloc<CalentreEventEvent, CalentreEventBaseState> {
//initialize all states relating to the CalentreEvent Bloc
CalentreEventState _calentreEventState = CalentreEventState.initial();
DayScheduleValidationState _dayScheduleValidationState =
DayScheduleValidationState.initial();
// final List<Map<WeekDays, List<bool>>> _errorList = [];

CalentreEventBloc() : super(CalentreEventState.initial()) {
on<UpdateCalentreEventDetailsEvent>(onUpdateFormFields);
Expand Down Expand Up @@ -51,10 +44,6 @@ class CalentreEventBloc extends Bloc<CalentreEventEvent, CalentreEventState> {
_calentreEventState, _dayScheduleValidationState, event);
_calentreEventState = states[0];
_dayScheduleValidationState = states[1];

print("Outside case switch Monday ${_calentreEventState.days}");
print(
"Outside case switch Monday ${_dayScheduleValidationState.errorList}");
}

void onRemoveTimeField(
Expand All @@ -67,114 +56,14 @@ class CalentreEventBloc extends Bloc<CalentreEventEvent, CalentreEventState> {

void onUpdateDaySchedule(
UpdateDayScheduleEvent event, Emitter<CalentreEventBaseState> emit) {
//check if the state has error
//if error emit DayScheduleValidationState
// if !error
//case switch the day of the week, and then clone the _calentreBloc with the correct response
// List<TimeSlot> mondaySchedule = [..._calentreEventState.days.monday!];
// List<TimeSlot> tuesdaySchedule = [..._calentreEventState.days.tuesday!];
// List<TimeSlot> wednesdaySchedule = _calentreEventState.days.wednesday!;
// List<TimeSlot>? thursdaySchedule = _calentreEventState.days.thursday!;
// List<TimeSlot>? fridaySchedule = _calentreEventState.days.friday!;
// List<TimeSlot>? saturdaySchedule = _calentreEventState.days.saturday!;
// List<TimeSlot>? sundaySchedule = _calentreEventState.days.sunday;

print("startTime ${event.startTime}");
print("EndTime ${event.endTime}");
final hasError = validateTimeSelection(
day: event.day,
startTime: event.startTime,
endTime: event.endTime,
index: event.index);

// switch (event.day) {
// case WeekDays.monday:
// mondaySchedule.insert(
// event.index, TimeSlot(start: event.startTime, end: event.endTime));
// final updatedList = List<TimeSlot>.from(mondaySchedule);
// emit(_calentreEventState.clone(days: Days(monday: updatedList)));
// break;
// case WeekDays.tuesday:
// tuesdaySchedule.insert(
// event.index, TimeSlot(start: event.startTime, end: event.endTime));
// break;
// default:
// }
print("Has error is ${hasError}");

// if (hasError) {
switch (event.day) {
case WeekDays.monday:
List<Map<WeekDays, List<bool>>> errorList = [
..._dayScheduleValidationState.errorList
];

if (hasError) {
//used to expand the errorlist to avoid rangError

errorList[0][WeekDays.monday]?[event.index] = true;

print(
"Emitted state shoudl be ${_dayScheduleValidationState.errorList}");
emit(_dayScheduleValidationState.clone(
_dayScheduleValidationState,
message: "Start Time must be less than End Time",
index: event.index,
day: event.day,
errorList: errorList,
));
} else {
//update the day schedule here and emit the neccessary states
List<TimeSlot> mondaySchedule = [..._calentreEventState.days.monday!];
print("Monday schedule is $mondaySchedule");
mondaySchedule.insert(event.index,
TimeSlot(start: event.startTime, end: event.endTime));
final updatedList = List<TimeSlot>.from(mondaySchedule);
emit(_calentreEventState.clone(state,
days: Days(monday: updatedList)));
print("before ${errorList}");
//set the error list to false
errorList[0][WeekDays.monday]?[event.index] = false;
print("after ${_dayScheduleValidationState.errorList}");
print("Update schedule is ${_calentreEventState.days.monday}");
// _dayScheduleValidationState.errorList[0]
// [WeekDays.monday]![event.index] = false;
// emit(UpdateDayScheduleState(
// index: event.index,
// day: event.day,
// errorList: errorList)); //remove errorList
emit(_dayScheduleValidationState.clone(_dayScheduleValidationState));
}

break;
case WeekDays.tuesday:
// _dayScheduleValidationState.errorList[1]
// [WeekDays.tuesday]![event.index] = true;

emit(_dayScheduleValidationState.clone(
_dayScheduleValidationState,
message: "Start Time must be less than End Time",
index: event.index,
day: event.day,
errorList: _dayScheduleValidationState.errorList,
));
break;
default:
}
// }

//to delete now
// else {
// // _dayScheduleValidationState.errorList[0][WeekDays.monday]![event.index] =
// // false;
// print("Emitted without error ${_dayScheduleValidationState.errorList}");
// emit(UpdateDayScheduleState(
// index: event.index,
// day: event.day,
// errorList: _dayScheduleValidationState.errorList));
// emit(_dayScheduleValidationState.clone());
// }

// state.
final states = updateCurrentDayDetailsHelper(
_calentreEventState, _dayScheduleValidationState, event);
_calentreEventState = states[0];
_dayScheduleValidationState = states[1];
emit(_calentreEventState);
emit(_dayScheduleValidationState.clone(_dayScheduleValidationState));
}
}


//Delete UpdatedDayScheduleState
4 changes: 2 additions & 2 deletions lib/features/events/presentation/bloc/event/event_event.dart
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,8 @@ class UpdateCalentreEventDetailsEvent extends CalentreEventEvent {
class UpdateDayScheduleEvent extends CalentreEventEvent {
final int index;
final WeekDays day;
final String startTime;
final String endTime;
final String? startTime;
final String? endTime;
UpdateDayScheduleEvent({
required this.index,
required this.day,
Expand Down
17 changes: 1 addition & 16 deletions lib/features/events/presentation/bloc/event/event_state.dart
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ class CalentreEventState extends CalentreEventBaseState {
days: Days(
monday: [
TimeSlot(
start: TimeList().timeList.first, end: TimeList().timeList[0])
start: TimeList().timeList.first, end: TimeList().timeList[1])
],
tuesday: [
TimeSlot(
Expand Down Expand Up @@ -114,21 +114,6 @@ class CalentreEventState extends CalentreEventBaseState {
];
}

//remove this state. Doesn't serve any purpose
class UpdateDayScheduleState extends CalentreEventBaseState {
final int index;
final WeekDays day;
final List<Map<WeekDays, List<bool>>> errorList;
UpdateDayScheduleState(
{required this.index, required this.day, required this.errorList});

@override
List<Object> get props => [
index,
day,
];
}

class DayScheduleValidationState extends CalentreEventBaseState {
final String message;
final int index;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,17 +1,10 @@
import 'package:calentre/config/enums/weekdays.dart';
import 'package:calentre/features/events/presentation/bloc/event/event_bloc.dart';
import 'package:calentre/features/events/presentation/bloc/event/event_event.dart';
import 'package:calentre/features/events/presentation/bloc/set_availability_event.dart';
import 'package:calentre/features/events/presentation/bloc/set_availability_state.dart';
import 'package:calentre/features/events/presentation/helpers/validate_time_selection.dart';
import 'package:calentre/injection_container.dart';
import 'package:flutter_bloc/flutter_bloc.dart';

///Handles all availability.
///Each day of the week uses a unique instance of the [SetAvailablityBloc]
class SetAvailabilityBloc
extends Bloc<SetAvailabilityEvents, SetAvailabilityStates> {
final _calentreEventBloc = sl.get<CalentreEventBloc>();
int listLength = 0;
bool checkBoxState = true;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
import 'package:calentre/config/enums/weekdays.dart';

class SetAvailabilityEvents {
const SetAvailabilityEvents();
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
import 'package:calentre/config/enums/weekdays.dart';
import 'package:equatable/equatable.dart';

class SetAvailabilityStates extends Equatable {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@ class TimeDropDownBloc extends Bloc<TimeDropDownEvent, TimeDropDownState> {

void onTriggerRebuild(
RebuildTimeDropDownEvent event, Emitter<TimeDropDownState> emit) {
print("FormDropDownBloc rebuild triggered");
emit(RebuildTimeDropDownState());
}
}
Loading

0 comments on commit 162ae3f

Please sign in to comment.