From ccf8930126bb710e49404bb39dc94b63f70081f8 Mon Sep 17 00:00:00 2001 From: Achintha Isuru Date: Wed, 4 Feb 2026 18:36:37 -0500 Subject: [PATCH] Use StaffPaths and core imports across staff modules Centralize and standardize routing by introducing StaffPaths constants (shiftDetailsRoute, formI9, formW4) and using StaffPaths.childRoute in multiple staff feature modules instead of hardcoded paths. Add package:krow_core/core.dart imports where needed, clean up minor formatting/constructor spacing, make some route callbacks explicitly typed, replace shiftDetails string interpolation with the new constant, and remove a debug print from phone verification. These changes unify route definitions and add explicit tax-form routes (I-9 and W-4). --- .../core/lib/src/routing/staff/route_paths.dart | 17 ++++++++++++++++- .../pages/phone_verification_page.dart | 1 - .../lib/src/staff_availability_module.dart | 10 +++++++--- .../clock_in/lib/src/staff_clock_in_module.dart | 13 ++++++++----- .../staff/home/lib/src/staff_home_module.dart | 10 ++++++---- .../staff/payments/lib/src/payments_module.dart | 12 ++++++++---- .../profile/lib/src/staff_profile_module.dart | 11 ++++++----- .../lib/src/staff_certificates_module.dart | 6 +++++- .../lib/src/staff_documents_module.dart | 6 +++++- .../lib/src/staff_tax_forms_module.dart | 12 ++++++++---- .../lib/src/staff_bank_account_module.dart | 6 +++++- .../lib/src/staff_time_card_module.dart | 6 +++++- .../attire/lib/src/attire_module.dart | 6 +++++- .../staff_main/lib/src/staff_main_module.dart | 2 +- 14 files changed, 85 insertions(+), 33 deletions(-) diff --git a/apps/mobile/packages/core/lib/src/routing/staff/route_paths.dart b/apps/mobile/packages/core/lib/src/routing/staff/route_paths.dart index 1006cb68..5defb0ca 100644 --- a/apps/mobile/packages/core/lib/src/routing/staff/route_paths.dart +++ b/apps/mobile/packages/core/lib/src/routing/staff/route_paths.dart @@ -91,6 +91,11 @@ class StaffPaths { // SHIFT MANAGEMENT // ========================================================================== + /// Shift details route. + /// + /// View detailed information for a specific shift. + static const String shiftDetailsRoute = '/worker-main/shift-details'; + /// Shift details page (dynamic). /// /// View detailed information for a specific shift. @@ -98,7 +103,7 @@ class StaffPaths { /// /// Example: `/worker-main/shift-details/shift123` static String shiftDetails(String shiftId) => - '/worker-main/shift-details/$shiftId'; + '$shiftDetailsRoute/$shiftId'; // ========================================================================== // ONBOARDING & PROFILE SECTIONS @@ -153,6 +158,16 @@ class StaffPaths { /// Manage W-4, tax withholding, and related tax documents. static const String taxForms = '/worker-main/tax-forms'; + /// Form I-9 - Employment Eligibility Verification. + /// + /// Complete and manage I-9 employment verification form. + static const String formI9 = '/worker-main/tax-forms/i9'; + + /// Form W-4 - Employee's Withholding Certificate. + /// + /// Complete and manage W-4 tax withholding form. + static const String formW4 = '/worker-main/tax-forms/w4'; + /// Time card - view detailed time tracking records. /// /// Access detailed time entries and timesheets. diff --git a/apps/mobile/packages/features/staff/authentication/lib/src/presentation/pages/phone_verification_page.dart b/apps/mobile/packages/features/staff/authentication/lib/src/presentation/pages/phone_verification_page.dart index ddd5333c..830ded01 100644 --- a/apps/mobile/packages/features/staff/authentication/lib/src/presentation/pages/phone_verification_page.dart +++ b/apps/mobile/packages/features/staff/authentication/lib/src/presentation/pages/phone_verification_page.dart @@ -48,7 +48,6 @@ class _PhoneVerificationPageState extends State { required String phoneNumber, }) { final String normalized = phoneNumber.replaceAll(RegExp(r'\\D'), ''); - print('Phone verification input: "$normalized" len=${normalized.length}'); if (normalized.length == 10) { BlocProvider.of( context, diff --git a/apps/mobile/packages/features/staff/availability/lib/src/staff_availability_module.dart b/apps/mobile/packages/features/staff/availability/lib/src/staff_availability_module.dart index 35aba337..88458885 100644 --- a/apps/mobile/packages/features/staff/availability/lib/src/staff_availability_module.dart +++ b/apps/mobile/packages/features/staff/availability/lib/src/staff_availability_module.dart @@ -1,5 +1,6 @@ import 'package:firebase_auth/firebase_auth.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_availability/src/presentation/pages/availability_page.dart'; @@ -23,18 +24,21 @@ class StaffAvailabilityModule extends Module { firebaseAuth: FirebaseAuth.instance, ), ); - + // UseCases i.add(GetWeeklyAvailabilityUseCase.new); i.add(UpdateDayAvailabilityUseCase.new); i.add(ApplyQuickSetUseCase.new); - + // BLoC i.add(AvailabilityBloc.new); } @override void routes(RouteManager r) { - r.child('/', child: (_) => const AvailabilityPage()); + r.child( + StaffPaths.childRoute(StaffPaths.availability, StaffPaths.availability), + child: (_) => const AvailabilityPage(), + ); } } diff --git a/apps/mobile/packages/features/staff/clock_in/lib/src/staff_clock_in_module.dart b/apps/mobile/packages/features/staff/clock_in/lib/src/staff_clock_in_module.dart index 1af0bce2..37164a81 100644 --- a/apps/mobile/packages/features/staff/clock_in/lib/src/staff_clock_in_module.dart +++ b/apps/mobile/packages/features/staff/clock_in/lib/src/staff_clock_in_module.dart @@ -1,4 +1,6 @@ +import 'package:flutter/cupertino.dart'; import 'package:flutter_modular/flutter_modular.dart'; +import 'package:krow_core/core.dart'; import 'package:krow_data_connect/krow_data_connect.dart'; import 'data/repositories_impl/clock_in_repository_impl.dart'; @@ -15,9 +17,7 @@ class StaffClockInModule extends Module { void binds(Injector i) { // Repositories i.add( - () => ClockInRepositoryImpl( - dataConnect: ExampleConnector.instance, - ), + () => ClockInRepositoryImpl(dataConnect: ExampleConnector.instance), ); // Use Cases @@ -31,7 +31,10 @@ class StaffClockInModule extends Module { } @override - void routes(r) { - r.child('/', child: (context) => const ClockInPage()); + void routes(RouteManager r) { + r.child( + StaffPaths.childRoute(StaffPaths.clockIn, StaffPaths.clockIn), + child: (BuildContext context) => const ClockInPage(), + ); } } 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 8eeab6bb..80710549 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,5 +1,6 @@ import 'package:flutter/material.dart'; import 'package:flutter_modular/flutter_modular.dart'; +import 'package:krow_core/core.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,9 +15,7 @@ class StaffHomeModule extends Module { @override void binds(Injector i) { // Repository - i.addLazySingleton( - () => HomeRepositoryImpl(), - ); + i.addLazySingleton(() => HomeRepositoryImpl()); // Presentation layer - Cubit i.addSingleton(HomeCubit.new); @@ -24,6 +23,9 @@ class StaffHomeModule extends Module { @override void routes(RouteManager r) { - r.child('/', child: (BuildContext context) => const WorkerHomePage()); + r.child( + StaffPaths.childRoute(StaffPaths.home, StaffPaths.home), + child: (BuildContext context) => const WorkerHomePage(), + ); } } diff --git a/apps/mobile/packages/features/staff/payments/lib/src/payments_module.dart b/apps/mobile/packages/features/staff/payments/lib/src/payments_module.dart index e7cbf17d..f1b82f98 100644 --- a/apps/mobile/packages/features/staff/payments/lib/src/payments_module.dart +++ b/apps/mobile/packages/features/staff/payments/lib/src/payments_module.dart @@ -1,4 +1,5 @@ import 'package:flutter_modular/flutter_modular.dart'; +import 'package:krow_core/core.dart'; import 'package:krow_data_connect/krow_data_connect.dart'; import 'domain/repositories/payments_repository.dart'; import 'domain/usecases/get_payment_summary_usecase.dart'; @@ -10,19 +11,22 @@ import 'presentation/pages/payments_page.dart'; class StaffPaymentsModule extends Module { @override void binds(Injector i) { - // Repositories + // Repositories i.add(PaymentsRepositoryImpl.new); - + // Use Cases i.add(GetPaymentSummaryUseCase.new); i.add(GetPaymentHistoryUseCase.new); - + // Blocs i.add(PaymentsBloc.new); } @override void routes(RouteManager r) { - r.child('/', child: (context) => const PaymentsPage()); + r.child( + StaffPaths.childRoute(StaffPaths.payments, StaffPaths.payments), + child: (context) => const PaymentsPage(), + ); } } diff --git a/apps/mobile/packages/features/staff/profile/lib/src/staff_profile_module.dart b/apps/mobile/packages/features/staff/profile/lib/src/staff_profile_module.dart index 014ca130..992c80f1 100644 --- a/apps/mobile/packages/features/staff/profile/lib/src/staff_profile_module.dart +++ b/apps/mobile/packages/features/staff/profile/lib/src/staff_profile_module.dart @@ -1,5 +1,6 @@ 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:firebase_auth/firebase_auth.dart'; @@ -40,15 +41,15 @@ class StaffProfileModule extends Module { // Presentation layer - Cubit depends on use cases i.add( - () => ProfileCubit( - i.get(), - i.get(), - ), + () => ProfileCubit(i.get(), i.get()), ); } @override void routes(RouteManager r) { - r.child('/', child: (BuildContext context) => const StaffProfilePage()); + r.child( + StaffPaths.childRoute(StaffPaths.profile, StaffPaths.profile), + child: (BuildContext context) => const StaffProfilePage(), + ); } } diff --git a/apps/mobile/packages/features/staff/profile_sections/compliance/certificates/lib/src/staff_certificates_module.dart b/apps/mobile/packages/features/staff/profile_sections/compliance/certificates/lib/src/staff_certificates_module.dart index a084e798..d9d39a6b 100644 --- a/apps/mobile/packages/features/staff/profile_sections/compliance/certificates/lib/src/staff_certificates_module.dart +++ b/apps/mobile/packages/features/staff/profile_sections/compliance/certificates/lib/src/staff_certificates_module.dart @@ -1,5 +1,6 @@ import 'package:firebase_auth/firebase_auth.dart'; import 'package:flutter_modular/flutter_modular.dart'; +import 'package:krow_core/core.dart'; import 'package:krow_data_connect/krow_data_connect.dart'; import 'data/repositories_impl/certificates_repository_impl.dart'; @@ -23,6 +24,9 @@ class StaffCertificatesModule extends Module { @override void routes(RouteManager r) { - r.child('/', child: (_) => const CertificatesPage()); + r.child( + StaffPaths.childRoute(StaffPaths.certificates, StaffPaths.certificates), + child: (_) => const CertificatesPage(), + ); } } diff --git a/apps/mobile/packages/features/staff/profile_sections/compliance/documents/lib/src/staff_documents_module.dart b/apps/mobile/packages/features/staff/profile_sections/compliance/documents/lib/src/staff_documents_module.dart index 6bf03d0d..b0d63374 100644 --- a/apps/mobile/packages/features/staff/profile_sections/compliance/documents/lib/src/staff_documents_module.dart +++ b/apps/mobile/packages/features/staff/profile_sections/compliance/documents/lib/src/staff_documents_module.dart @@ -1,5 +1,6 @@ import 'package:firebase_auth/firebase_auth.dart'; import 'package:flutter_modular/flutter_modular.dart'; +import 'package:krow_core/core.dart'; import 'package:krow_data_connect/krow_data_connect.dart'; import 'data/repositories_impl/documents_repository_impl.dart'; import 'domain/repositories/documents_repository.dart'; @@ -22,6 +23,9 @@ class StaffDocumentsModule extends Module { @override void routes(RouteManager r) { - r.child('/', child: (_) => DocumentsPage()); + r.child( + StaffPaths.childRoute(StaffPaths.documents, StaffPaths.documents), + child: (_) => DocumentsPage(), + ); } } diff --git a/apps/mobile/packages/features/staff/profile_sections/compliance/tax_forms/lib/src/staff_tax_forms_module.dart b/apps/mobile/packages/features/staff/profile_sections/compliance/tax_forms/lib/src/staff_tax_forms_module.dart index 7b390a17..95fdd71e 100644 --- a/apps/mobile/packages/features/staff/profile_sections/compliance/tax_forms/lib/src/staff_tax_forms_module.dart +++ b/apps/mobile/packages/features/staff/profile_sections/compliance/tax_forms/lib/src/staff_tax_forms_module.dart @@ -1,5 +1,6 @@ import 'package:firebase_auth/firebase_auth.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:krow_domain/krow_domain.dart'; import 'data/repositories/tax_forms_repository_impl.dart'; @@ -23,7 +24,7 @@ class StaffTaxFormsModule extends Module { dataConnect: ExampleConnector.instance, ), ); - + // Use Cases i.addLazySingleton(GetTaxFormsUseCase.new); i.addLazySingleton(SubmitI9FormUseCase.new); @@ -37,13 +38,16 @@ class StaffTaxFormsModule extends Module { @override void routes(RouteManager r) { - r.child('/', child: (_) => const TaxFormsPage()); r.child( - '/i9', + StaffPaths.childRoute(StaffPaths.taxForms, StaffPaths.taxForms), + child: (_) => const TaxFormsPage(), + ); + r.child( + StaffPaths.childRoute(StaffPaths.taxForms, StaffPaths.formI9), child: (_) => FormI9Page(form: r.args.data as TaxForm?), ); r.child( - '/w4', + StaffPaths.childRoute(StaffPaths.taxForms, StaffPaths.formW4), child: (_) => FormW4Page(form: r.args.data as TaxForm?), ); } diff --git a/apps/mobile/packages/features/staff/profile_sections/finances/staff_bank_account/lib/src/staff_bank_account_module.dart b/apps/mobile/packages/features/staff/profile_sections/finances/staff_bank_account/lib/src/staff_bank_account_module.dart index 5b934782..2312e299 100644 --- a/apps/mobile/packages/features/staff/profile_sections/finances/staff_bank_account/lib/src/staff_bank_account_module.dart +++ b/apps/mobile/packages/features/staff/profile_sections/finances/staff_bank_account/lib/src/staff_bank_account_module.dart @@ -1,5 +1,6 @@ import 'package:firebase_auth/firebase_auth.dart' as auth; 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_bank_account/src/data/repositories/bank_account_repository_impl.dart'; @@ -38,6 +39,9 @@ class StaffBankAccountModule extends Module { @override void routes(RouteManager r) { - r.child('/', child: (_) => const BankAccountPage()); + r.child( + StaffPaths.childRoute(StaffPaths.bankAccount, StaffPaths.bankAccount), + child: (_) => const BankAccountPage(), + ); } } diff --git a/apps/mobile/packages/features/staff/profile_sections/finances/time_card/lib/src/staff_time_card_module.dart b/apps/mobile/packages/features/staff/profile_sections/finances/time_card/lib/src/staff_time_card_module.dart index 4f7e7856..b47632a6 100644 --- a/apps/mobile/packages/features/staff/profile_sections/finances/time_card/lib/src/staff_time_card_module.dart +++ b/apps/mobile/packages/features/staff/profile_sections/finances/time_card/lib/src/staff_time_card_module.dart @@ -2,6 +2,7 @@ library staff_time_card; import 'package:firebase_auth/firebase_auth.dart'; import 'package:flutter_modular/flutter_modular.dart'; +import 'package:krow_core/core.dart'; import 'package:krow_data_connect/krow_data_connect.dart'; import 'data/repositories_impl/time_card_repository_impl.dart'; @@ -39,6 +40,9 @@ class StaffTimeCardModule extends Module { @override void routes(RouteManager r) { - r.child('/', child: (context) => const TimeCardPage()); + r.child( + StaffPaths.childRoute(StaffPaths.timeCard, StaffPaths.timeCard), + child: (context) => const TimeCardPage(), + ); } } diff --git a/apps/mobile/packages/features/staff/profile_sections/onboarding/attire/lib/src/attire_module.dart b/apps/mobile/packages/features/staff/profile_sections/onboarding/attire/lib/src/attire_module.dart index 3302ae28..7da0bc6a 100644 --- a/apps/mobile/packages/features/staff/profile_sections/onboarding/attire/lib/src/attire_module.dart +++ b/apps/mobile/packages/features/staff/profile_sections/onboarding/attire/lib/src/attire_module.dart @@ -1,4 +1,5 @@ import 'package:flutter_modular/flutter_modular.dart'; +import 'package:krow_core/core.dart'; import 'package:krow_data_connect/krow_data_connect.dart'; import 'data/repositories_impl/attire_repository_impl.dart'; @@ -28,6 +29,9 @@ class StaffAttireModule extends Module { @override void routes(RouteManager r) { - r.child('/', child: (_) => const AttirePage()); + r.child( + StaffPaths.childRoute(StaffPaths.attire, StaffPaths.attire), + child: (_) => const AttirePage(), + ); } } diff --git a/apps/mobile/packages/features/staff/staff_main/lib/src/staff_main_module.dart b/apps/mobile/packages/features/staff/staff_main/lib/src/staff_main_module.dart index c79f5cca..c40027f1 100644 --- a/apps/mobile/packages/features/staff/staff_main/lib/src/staff_main_module.dart +++ b/apps/mobile/packages/features/staff/staff_main/lib/src/staff_main_module.dart @@ -94,7 +94,7 @@ class StaffMainModule extends Module { module: StaffAvailabilityModule(), ); r.module( - '/shift-details', + StaffPaths.childRoute(StaffPaths.main, StaffPaths.shiftDetailsRoute), module: ShiftDetailsModule(), ); }