feat: Refactor profile completion use cases and update related imports in HomeCubit and StaffHomeModule

This commit is contained in:
Achintha Isuru
2026-02-28 22:46:55 -05:00
parent ce095924bc
commit e05ca7c045
3 changed files with 30 additions and 26 deletions

View File

@@ -1,11 +1,10 @@
import 'package:bloc/bloc.dart'; import 'package:bloc/bloc.dart';
import 'package:equatable/equatable.dart'; import 'package:equatable/equatable.dart';
import 'package:krow_core/core.dart'; import 'package:krow_core/core.dart';
import 'package:krow_domain/krow_domain.dart';
import 'package:krow_data_connect/krow_data_connect.dart'; import 'package:krow_data_connect/krow_data_connect.dart';
import 'package:krow_domain/krow_domain.dart';
import 'package:staff_home/src/domain/usecases/get_home_shifts.dart';
import 'package:staff_home/src/domain/repositories/home_repository.dart'; import 'package:staff_home/src/domain/repositories/home_repository.dart';
import 'package:staff_home/src/domain/usecases/get_home_shifts.dart';
part 'home_state.dart'; part 'home_state.dart';
@@ -14,18 +13,18 @@ class HomeCubit extends Cubit<HomeState> with BlocErrorHandler<HomeState> {
final GetHomeShifts _getHomeShifts; final GetHomeShifts _getHomeShifts;
final HomeRepository _repository; final HomeRepository _repository;
/// Use case that checks whether the staff member's personal info is complete. /// Use case that checks whether the staff member's profile is complete.
/// ///
/// Used to determine whether profile-gated features (such as shift browsing) /// Used to determine whether profile-gated features (such as shift browsing)
/// should be enabled on the home screen. /// should be enabled on the home screen.
final GetPersonalInfoCompletionUseCase _getPersonalInfoCompletion; final GetProfileCompletionUseCase _getProfileCompletion;
HomeCubit({ HomeCubit({
required HomeRepository repository, required HomeRepository repository,
required GetPersonalInfoCompletionUseCase getPersonalInfoCompletion, required GetProfileCompletionUseCase getProfileCompletion,
}) : _getHomeShifts = GetHomeShifts(repository), }) : _getHomeShifts = GetHomeShifts(repository),
_repository = repository, _repository = repository,
_getPersonalInfoCompletion = getPersonalInfoCompletion, _getProfileCompletion = getProfileCompletion,
super(const HomeState.initial()); super(const HomeState.initial());
Future<void> loadShifts() async { Future<void> loadShifts() async {
@@ -37,7 +36,7 @@ class HomeCubit extends Cubit<HomeState> with BlocErrorHandler<HomeState> {
// Fetch shifts, name, benefits and profile completion status concurrently // Fetch shifts, name, benefits and profile completion status concurrently
final results = await Future.wait([ final results = await Future.wait([
_getHomeShifts.call(), _getHomeShifts.call(),
_getPersonalInfoCompletion.call(), _getProfileCompletion.call(),
_repository.getBenefits(), _repository.getBenefits(),
_repository.getStaffName(), _repository.getStaffName(),
]); ]);

View File

@@ -24,9 +24,9 @@ class StaffHomeModule extends Module {
() => StaffConnectorRepositoryImpl(), () => StaffConnectorRepositoryImpl(),
); );
// Use case for checking personal info profile completion // Use case for checking profile completion
i.addLazySingleton<GetPersonalInfoCompletionUseCase>( i.addLazySingleton<GetProfileCompletionUseCase>(
() => GetPersonalInfoCompletionUseCase( () => GetProfileCompletionUseCase(
repository: i.get<StaffConnectorRepository>(), repository: i.get<StaffConnectorRepository>(),
), ),
); );
@@ -35,7 +35,7 @@ class StaffHomeModule extends Module {
i.addSingleton( i.addSingleton(
() => HomeCubit( () => HomeCubit(
repository: i.get<HomeRepository>(), repository: i.get<HomeRepository>(),
getPersonalInfoCompletion: i.get<GetPersonalInfoCompletionUseCase>(), getProfileCompletion: i.get<GetProfileCompletionUseCase>(),
), ),
); );
} }

View File

@@ -2,7 +2,9 @@ import 'package:core_localization/core_localization.dart';
import 'package:design_system/design_system.dart'; import 'package:design_system/design_system.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter_modular/flutter_modular.dart';
import 'package:geolocator/geolocator.dart'; import 'package:geolocator/geolocator.dart';
import 'package:krow_core/core.dart';
import 'package:krow_domain/krow_domain.dart'; import 'package:krow_domain/krow_domain.dart';
import '../../blocs/shifts/shifts_bloc.dart'; import '../../blocs/shifts/shifts_bloc.dart';
@@ -315,20 +317,23 @@ class _FindShiftsTabState extends State<FindShiftsTab> {
children: [ children: [
// Incomplete profile banner // Incomplete profile banner
if (!widget.profileComplete) ...[ if (!widget.profileComplete) ...[
Container( GestureDetector(
padding: const EdgeInsets.all(UiConstants.space4), onTap: () => Modular.to.toProfile(),
child: UiNoticeBanner( child: Container(
icon: UiIcons.sparkles, padding: const EdgeInsets.all(UiConstants.space4),
title: context child: UiNoticeBanner(
.t icon: UiIcons.sparkles,
.staff_shifts title: context
.find_shifts .t
.incomplete_profile_banner_title, .staff_shifts
description: context .find_shifts
.t .incomplete_profile_banner_title,
.staff_shifts description: context
.find_shifts .t
.incomplete_profile_banner_message, .staff_shifts
.find_shifts
.incomplete_profile_banner_message,
),
), ),
), ),
], ],