library staff_authentication; import 'package:flutter_modular/flutter_modular.dart'; import 'package:krow_data_connect/krow_data_connect.dart'; import 'package:staff_authentication/src/data/repositories_impl/auth_repository_impl.dart'; import 'package:staff_authentication/src/domain/repositories/auth_repository_interface.dart'; import 'package:staff_authentication/src/domain/usecases/sign_in_with_phone_usecase.dart'; import 'package:staff_authentication/src/domain/usecases/verify_otp_usecase.dart'; import 'package:staff_authentication/src/presentation/blocs/auth_bloc.dart'; import 'package:staff_authentication/src/presentation/blocs/profile_setup/profile_setup_bloc.dart'; import 'package:staff_authentication/src/presentation/pages/get_started_page.dart'; import 'package:staff_authentication/src/presentation/pages/phone_verification_page.dart'; import 'package:staff_authentication/src/presentation/pages/profile_setup_page.dart'; import 'package:staff_authentication/src/domain/ui_entities/auth_mode.dart'; export 'src/domain/ui_entities/auth_mode.dart'; export 'src/presentation/pages/get_started_page.dart'; export 'src/presentation/pages/phone_verification_page.dart'; export 'src/presentation/pages/profile_setup_page.dart'; export 'package:core_localization/core_localization.dart'; /// A [Module] for the staff authentication feature. class StaffAuthenticationModule extends Module { @override List get imports => [DataConnectModule()]; @override void binds(Injector i) { // Repositories i.addLazySingleton( () => AuthRepositoryImpl(mock: i.get()), ); // UseCases i.addLazySingleton(SignInWithPhoneUseCase.new); i.addLazySingleton(VerifyOtpUseCase.new); // BLoCs i.addLazySingleton( () => AuthBloc( signInUseCase: i.get(), verifyOtpUseCase: i.get(), ), ); i.add(ProfileSetupBloc.new); } @override void routes(r) { r.child('/', child: (_) => const GetStartedPage()); r.child( '/phone-verification', child: (context) { final Map? data = r.args.data; final String? modeName = data?['mode']; final AuthMode mode = AuthMode.values.firstWhere( (e) => e.name == modeName, orElse: () => AuthMode.login, ); return PhoneVerificationPage(mode: mode); }, ); r.child('/profile-setup', child: (_) => const ProfileSetupPage()); } }