68 lines
2.5 KiB
Dart
68 lines
2.5 KiB
Dart
library client_authentication;
|
|
|
|
import 'package:firebase_auth/firebase_auth.dart' as firebase;
|
|
import 'package:flutter_modular/flutter_modular.dart';
|
|
import 'package:krow_data_connect/krow_data_connect.dart';
|
|
import 'src/data/repositories_impl/auth_repository_impl.dart';
|
|
import 'src/domain/repositories/auth_repository_interface.dart';
|
|
import 'src/domain/usecases/sign_in_with_email_use_case.dart';
|
|
import 'src/domain/usecases/sign_in_with_social_use_case.dart';
|
|
import 'src/domain/usecases/sign_out_use_case.dart';
|
|
import 'src/domain/usecases/sign_up_with_email_use_case.dart';
|
|
import 'src/presentation/blocs/client_auth_bloc.dart';
|
|
import 'src/presentation/pages/client_get_started_page.dart';
|
|
import 'src/presentation/pages/client_sign_in_page.dart';
|
|
import 'src/presentation/pages/client_sign_up_page.dart';
|
|
|
|
export 'src/presentation/pages/client_get_started_page.dart';
|
|
export 'src/presentation/pages/client_sign_in_page.dart';
|
|
export 'src/presentation/pages/client_sign_up_page.dart';
|
|
export 'src/presentation/navigation/client_auth_navigator.dart';
|
|
export 'package:core_localization/core_localization.dart';
|
|
|
|
/// A [Module] for the client authentication feature.
|
|
class ClientAuthenticationModule extends Module {
|
|
@override
|
|
List<Module> get imports => [DataConnectModule()];
|
|
|
|
@override
|
|
void binds(Injector i) {
|
|
// Repositories
|
|
i.addLazySingleton<AuthRepositoryInterface>(
|
|
() => AuthRepositoryImpl(
|
|
firebaseAuth: firebase.FirebaseAuth.instance,
|
|
dataConnect: ExampleConnector.instance,
|
|
),
|
|
);
|
|
|
|
// UseCases
|
|
i.addLazySingleton(
|
|
() => SignInWithEmailUseCase(i.get<AuthRepositoryInterface>()),
|
|
);
|
|
i.addLazySingleton(
|
|
() => SignUpWithEmailUseCase(i.get<AuthRepositoryInterface>()),
|
|
);
|
|
i.addLazySingleton(
|
|
() => SignInWithSocialUseCase(i.get<AuthRepositoryInterface>()),
|
|
);
|
|
i.addLazySingleton(() => SignOutUseCase(i.get<AuthRepositoryInterface>()));
|
|
|
|
// BLoCs
|
|
i.addLazySingleton<ClientAuthBloc>(
|
|
() => ClientAuthBloc(
|
|
signInWithEmail: i.get<SignInWithEmailUseCase>(),
|
|
signUpWithEmail: i.get<SignUpWithEmailUseCase>(),
|
|
signInWithSocial: i.get<SignInWithSocialUseCase>(),
|
|
signOut: i.get<SignOutUseCase>(),
|
|
),
|
|
);
|
|
}
|
|
|
|
@override
|
|
void routes(r) {
|
|
r.child('/', child: (_) => const ClientGetStartedPage());
|
|
r.child('/client-sign-in', child: (_) => const ClientSignInPage());
|
|
r.child('/client-sign-up', child: (_) => const ClientSignUpPage());
|
|
}
|
|
}
|