From 2d1e6a6accf59726c7a7e64217222313ff3b189e Mon Sep 17 00:00:00 2001 From: Achintha Isuru Date: Sun, 22 Feb 2026 10:40:43 -0500 Subject: [PATCH] feat: Display staff profile completion status on the home screen. --- .../src/presentation/blocs/home_cubit.dart | 40 +++++++++++++------ .../staff/home/lib/src/staff_home_module.dart | 22 +++++++++- 2 files changed, 48 insertions(+), 14 deletions(-) diff --git a/apps/mobile/packages/features/staff/home/lib/src/presentation/blocs/home_cubit.dart b/apps/mobile/packages/features/staff/home/lib/src/presentation/blocs/home_cubit.dart index c6b06a7b..dec87db2 100644 --- a/apps/mobile/packages/features/staff/home/lib/src/presentation/blocs/home_cubit.dart +++ b/apps/mobile/packages/features/staff/home/lib/src/presentation/blocs/home_cubit.dart @@ -2,6 +2,7 @@ import 'package:bloc/bloc.dart'; import 'package:equatable/equatable.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:staff_home/src/domain/usecases/get_home_shifts.dart'; import 'package:staff_home/src/domain/repositories/home_repository.dart'; @@ -13,10 +14,19 @@ class HomeCubit extends Cubit with BlocErrorHandler { final GetHomeShifts _getHomeShifts; final HomeRepository _repository; - HomeCubit(HomeRepository repository) - : _getHomeShifts = GetHomeShifts(repository), - _repository = repository, - super(const HomeState.initial()); + /// Use case that checks whether the staff member's personal info is complete. + /// + /// Used to determine whether profile-gated features (such as shift browsing) + /// should be enabled on the home screen. + final GetPersonalInfoCompletionUseCase _getPersonalInfoCompletion; + + HomeCubit({ + required HomeRepository repository, + required GetPersonalInfoCompletionUseCase getPersonalInfoCompletion, + }) : _getHomeShifts = GetHomeShifts(repository), + _repository = repository, + _getPersonalInfoCompletion = getPersonalInfoCompletion, + super(const HomeState.initial()); Future loadShifts() async { if (isClosed) return; @@ -24,24 +34,30 @@ class HomeCubit extends Cubit with BlocErrorHandler { await handleError( emit: emit, action: () async { - final result = await _getHomeShifts.call(); + // Fetch shifts, name, and profile completion status concurrently + final shiftsAndProfile = await Future.wait([ + _getHomeShifts.call(), + _getPersonalInfoCompletion.call(), + ]); + + final homeResult = shiftsAndProfile[0] as HomeShifts; + final isProfileComplete = shiftsAndProfile[1] as bool; final name = await _repository.getStaffName(); + if (isClosed) return; emit( state.copyWith( status: HomeStatus.loaded, - todayShifts: result.today, - tomorrowShifts: result.tomorrow, - recommendedShifts: result.recommended, + todayShifts: homeResult.today, + tomorrowShifts: homeResult.tomorrow, + recommendedShifts: homeResult.recommended, staffName: name, - // Mock profile status for now, ideally fetched from a user repository - isProfileComplete: false, + isProfileComplete: isProfileComplete, ), ); }, onError: (String errorKey) { - if (isClosed) - return state; // Avoid state emission if closed, though emit handles it gracefully usually + if (isClosed) return state; return state.copyWith(status: HomeStatus.error, errorMessage: errorKey); }, ); diff --git a/apps/mobile/packages/features/staff/home/lib/src/staff_home_module.dart b/apps/mobile/packages/features/staff/home/lib/src/staff_home_module.dart index 80710549..5add2498 100644 --- a/apps/mobile/packages/features/staff/home/lib/src/staff_home_module.dart +++ b/apps/mobile/packages/features/staff/home/lib/src/staff_home_module.dart @@ -1,6 +1,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_modular/flutter_modular.dart'; import 'package:krow_core/core.dart'; +import 'package:krow_data_connect/krow_data_connect.dart'; import 'package:staff_home/src/data/repositories/home_repository_impl.dart'; import 'package:staff_home/src/domain/repositories/home_repository.dart'; import 'package:staff_home/src/presentation/blocs/home_cubit.dart'; @@ -14,11 +15,28 @@ import 'package:staff_home/src/presentation/pages/worker_home_page.dart'; class StaffHomeModule extends Module { @override void binds(Injector i) { - // Repository + // Repository - provides home data (shifts, staff name) i.addLazySingleton(() => HomeRepositoryImpl()); + // StaffConnectorRepository for profile completion queries + i.addLazySingleton( + () => StaffConnectorRepositoryImpl(), + ); + + // Use case for checking personal info profile completion + i.addLazySingleton( + () => GetPersonalInfoCompletionUseCase( + repository: i.get(), + ), + ); + // Presentation layer - Cubit - i.addSingleton(HomeCubit.new); + i.addSingleton( + () => HomeCubit( + repository: i.get(), + getPersonalInfoCompletion: i.get(), + ), + ); } @override