66 lines
2.5 KiB
Dart
66 lines
2.5 KiB
Dart
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<Module> get imports => [DataConnectModule()];
|
|
|
|
@override
|
|
void binds(Injector i) {
|
|
// Repositories
|
|
i.addLazySingleton<AuthRepositoryInterface>(
|
|
() => AuthRepositoryImpl(mock: i.get<AuthRepositoryMock>()),
|
|
);
|
|
|
|
// UseCases
|
|
i.addLazySingleton(SignInWithPhoneUseCase.new);
|
|
i.addLazySingleton(VerifyOtpUseCase.new);
|
|
|
|
// BLoCs
|
|
i.addLazySingleton<AuthBloc>(
|
|
() => AuthBloc(
|
|
signInUseCase: i.get<SignInWithPhoneUseCase>(),
|
|
verifyOtpUseCase: i.get<VerifyOtpUseCase>(),
|
|
),
|
|
);
|
|
i.add<ProfileSetupBloc>(ProfileSetupBloc.new);
|
|
}
|
|
|
|
@override
|
|
void routes(r) {
|
|
r.child('/', child: (_) => const GetStartedPage());
|
|
r.child(
|
|
'/phone-verification',
|
|
child: (context) {
|
|
final Map<String, dynamic>? 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());
|
|
}
|
|
}
|