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,51 @@
import 'dart:async';
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/benefits/domain/benefits_repository.dart';
import 'package:krow/features/profile/benefits/domain/entities/benefit_entity.dart';
part 'benefits_event.dart';
part 'benefits_state.dart';
class BenefitsBloc extends Bloc<BenefitsEvent, BenefitsState> {
BenefitsBloc() : super(const BenefitsState()) {
on<InitializeBenefits>((event, emit) async {
emit(state.copyWith(status: StateStatus.loading));
final benefits = await _repository.getStaffBenefits();
emit(state.copyWith(status: StateStatus.idle, benefits: benefits));
});
on<SendBenefitRequest>((event, emit) async {
emit(state.copyWith(status: StateStatus.loading));
final result = await _repository.requestBenefit(benefit: event.benefit);
int index = -1;
List<BenefitEntity>? updatedBenefits;
if (result != null) {
index = state.benefits.indexWhere(
(benefit) => benefit.name == result.name,
);
if (index >= 0) {
updatedBenefits = List.from(state.benefits)..[index] = result;
}
}
emit(
state.copyWith(
benefits: updatedBenefits,
status: StateStatus.idle,
),
);
event.requestCompleter.complete(result ?? event.benefit);
});
}
final BenefitsRepository _repository = getIt<BenefitsRepository>();
}

View File

@@ -0,0 +1,20 @@
part of 'benefits_bloc.dart';
@immutable
sealed class BenefitsEvent {
const BenefitsEvent();
}
class InitializeBenefits extends BenefitsEvent {
const InitializeBenefits();
}
class SendBenefitRequest extends BenefitsEvent {
const SendBenefitRequest({
required this.benefit,
required this.requestCompleter,
});
final BenefitEntity benefit;
final Completer<BenefitEntity> requestCompleter;
}

View File

@@ -0,0 +1,26 @@
part of 'benefits_bloc.dart';
@immutable
class BenefitsState {
const BenefitsState({
this.status = StateStatus.idle,
this.benefits = const [],
this.exception,
});
final StateStatus status;
final List<BenefitEntity> benefits;
final Exception? exception;
BenefitsState copyWith({
StateStatus? status,
List<BenefitEntity>? benefits,
Exception? exception,
}) {
return BenefitsState(
status: status ?? this.status,
benefits: benefits ?? this.benefits,
exception: exception,
);
}
}