feat: Refactor code structure and optimize performance across multiple modules

This commit is contained in:
Achintha Isuru
2025-11-17 23:29:28 -05:00
parent 831570f2e0
commit a64cbd9edf
1508 changed files with 105319 additions and 0 deletions

View File

@@ -0,0 +1,85 @@
import 'dart:developer';
import 'package:flutter/foundation.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:krow/core/application/di/injectable.dart';
import 'package:krow/core/data/enums/state_status.dart';
import 'package:krow/features/profile/inclusive/data/models/inclusive_info_model.dart';
import 'package:krow/features/profile/inclusive/data/staff_inclusivity_repository.dart';
part 'inclusive_info_event.dart';
part 'inclusive_info_state.dart';
class InclusiveInfoBloc extends Bloc<InclusiveInfoEvent, InclusiveInfoState> {
InclusiveInfoBloc() : super(const InclusiveInfoState()) {
on<InitializeInclusiveInfoEvent>((event, emit) async {
emit(
state.copyWith(
isInEditMode: event.isInEditMode,
status: event.isInEditMode ? StateStatus.loading : StateStatus.idle,
),
);
if (!state.isInEditMode) {
emit(
state.copyWith(
areAccommodationsRequired: true,
),
);
return;
}
try {
await for (final inclusivityData
in getIt<StaffInclusivityRepository>().getStaffInclusivityInfo()) {
emit(
state.copyWith(
areAccommodationsRequired:
inclusivityData.areAccommodationsRequired,
accommodationsDetails: inclusivityData.accommodationsDetails,
status: StateStatus.idle,
),
);
}
} catch (except) {
log(except.toString());
}
emit(
state.copyWith(
areAccommodationsRequired: state.areAccommodationsRequired ?? true,
status: state.status == StateStatus.loading
? StateStatus.idle
: state.status,
),
);
});
on<ToggleRequiresAccommodations>((event, emit) {
emit(state.copyWith(areAccommodationsRequired: event.index == 0));
});
on<ChangeAccommodationsDetails>((event, emit) {
emit(state.copyWith(accommodationsDetails: event.details));
});
on<SaveInclusiveInfoChanges>((event, emit) async {
emit(state.copyWith(status: StateStatus.loading));
try {
await getIt<StaffInclusivityRepository>().updateStaffMobilityInfo(
InclusiveInfoModel(
areAccommodationsRequired: state.areAccommodationsRequired ?? false,
accommodationsDetails: state.accommodationsDetails,
),
);
} catch (except) {
emit(state.copyWith(status: StateStatus.idle));
log(except.toString());
}
emit(state.copyWith(status: StateStatus.success));
});
}
}

View File

@@ -0,0 +1,24 @@
part of 'inclusive_info_bloc.dart';
@immutable
sealed class InclusiveInfoEvent {}
class InitializeInclusiveInfoEvent extends InclusiveInfoEvent {
InitializeInclusiveInfoEvent({required this.isInEditMode});
final bool isInEditMode;
}
class ToggleRequiresAccommodations extends InclusiveInfoEvent {
ToggleRequiresAccommodations(this.index);
final int index;
}
class ChangeAccommodationsDetails extends InclusiveInfoEvent {
ChangeAccommodationsDetails(this.details);
final String details;
}
class SaveInclusiveInfoChanges extends InclusiveInfoEvent {}

View File

@@ -0,0 +1,37 @@
part of 'inclusive_info_bloc.dart';
@immutable
class InclusiveInfoState {
const InclusiveInfoState({
this.areAccommodationsRequired,
this.accommodationsDetails = '',
this.isInEditMode = true,
this.status = StateStatus.idle,
});
final bool? areAccommodationsRequired;
final String accommodationsDetails;
final bool isInEditMode;
final StateStatus status;
bool get isFilled {
return (areAccommodationsRequired != null && !areAccommodationsRequired!) ||
accommodationsDetails.isNotEmpty;
}
InclusiveInfoState copyWith({
bool? areAccommodationsRequired,
String? accommodationsDetails,
bool? isInEditMode,
StateStatus? status,
}) {
return InclusiveInfoState(
areAccommodationsRequired:
areAccommodationsRequired ?? this.areAccommodationsRequired,
accommodationsDetails:
accommodationsDetails ?? this.accommodationsDetails,
isInEditMode: isInEditMode ?? this.isInEditMode,
status: status ?? this.status,
);
}
}