Use krow_core routes; remove navigator
Replace the local navigation extension with centralized helpers from krow_core: add krow_core dependency and imports, remove src/presentation/navigation/client_auth_navigator.dart and its export, and update Module routes to use ClientPaths constants. Update page callbacks to use Modular.to.toClientSignIn/toClientSignUp/toClientHome instead of the old push/navigate extension and replace hard-coded route strings with ClientPaths. This centralizes route definitions and removes duplicated navigation logic.
This commit is contained in:
@@ -2,6 +2,7 @@ library client_authentication;
|
|||||||
|
|
||||||
import 'package:firebase_auth/firebase_auth.dart' as firebase;
|
import 'package:firebase_auth/firebase_auth.dart' as firebase;
|
||||||
import 'package:flutter_modular/flutter_modular.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_data_connect/krow_data_connect.dart';
|
||||||
import 'src/data/repositories_impl/auth_repository_impl.dart';
|
import 'src/data/repositories_impl/auth_repository_impl.dart';
|
||||||
import 'src/domain/repositories/auth_repository_interface.dart';
|
import 'src/domain/repositories/auth_repository_interface.dart';
|
||||||
@@ -17,7 +18,6 @@ import 'src/presentation/pages/client_sign_up_page.dart';
|
|||||||
export 'src/presentation/pages/client_get_started_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_in_page.dart';
|
||||||
export 'src/presentation/pages/client_sign_up_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';
|
export 'package:core_localization/core_localization.dart';
|
||||||
|
|
||||||
/// A [Module] for the client authentication feature.
|
/// A [Module] for the client authentication feature.
|
||||||
@@ -60,8 +60,8 @@ class ClientAuthenticationModule extends Module {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
void routes(RouteManager r) {
|
void routes(RouteManager r) {
|
||||||
r.child('/', child: (_) => const ClientGetStartedPage());
|
r.child(ClientPaths.root, child: (_) => const ClientGetStartedPage());
|
||||||
r.child('/client-sign-in', child: (_) => const ClientSignInPage());
|
r.child(ClientPaths.signIn, child: (_) => const ClientSignInPage());
|
||||||
r.child('/client-sign-up', child: (_) => const ClientSignUpPage());
|
r.child(ClientPaths.signUp, child: (_) => const ClientSignUpPage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,26 +0,0 @@
|
|||||||
import 'package:flutter_modular/flutter_modular.dart';
|
|
||||||
|
|
||||||
/// Typed navigation for the Client Authentication feature.
|
|
||||||
///
|
|
||||||
/// This extension on [IModularNavigator] provides named methods for
|
|
||||||
/// navigating between authentication pages, reducing magic strings and
|
|
||||||
/// improving maintainability.
|
|
||||||
extension ClientAuthNavigator on IModularNavigator {
|
|
||||||
/// Navigates to the sign in page using a push named route.
|
|
||||||
void pushClientSignIn() {
|
|
||||||
pushNamed('/client-sign-in');
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Navigates to the sign up page using a push named route.
|
|
||||||
void pushClientSignUp() {
|
|
||||||
pushNamed('/client-sign-up');
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Navigates to the main client home dashboard.
|
|
||||||
///
|
|
||||||
/// Uses absolute path navigation to the client main shell,
|
|
||||||
/// which will display the home tab by default.
|
|
||||||
void navigateClientHome() {
|
|
||||||
navigate('/client-main/home');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -2,7 +2,7 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:flutter_modular/flutter_modular.dart';
|
import 'package:flutter_modular/flutter_modular.dart';
|
||||||
import 'package:core_localization/core_localization.dart';
|
import 'package:core_localization/core_localization.dart';
|
||||||
import 'package:design_system/design_system.dart';
|
import 'package:design_system/design_system.dart';
|
||||||
import '../navigation/client_auth_navigator.dart';
|
import 'package:krow_core/core.dart';
|
||||||
|
|
||||||
class ClientGetStartedPage extends StatelessWidget {
|
class ClientGetStartedPage extends StatelessWidget {
|
||||||
const ClientGetStartedPage({super.key});
|
const ClientGetStartedPage({super.key});
|
||||||
@@ -96,7 +96,7 @@ class ClientGetStartedPage extends StatelessWidget {
|
|||||||
.client_authentication
|
.client_authentication
|
||||||
.get_started_page
|
.get_started_page
|
||||||
.sign_in_button,
|
.sign_in_button,
|
||||||
onPressed: () => Modular.to.pushClientSignIn(),
|
onPressed: () => Modular.to.toClientSignIn(),
|
||||||
fullWidth: true,
|
fullWidth: true,
|
||||||
),
|
),
|
||||||
|
|
||||||
@@ -108,7 +108,7 @@ class ClientGetStartedPage extends StatelessWidget {
|
|||||||
.client_authentication
|
.client_authentication
|
||||||
.get_started_page
|
.get_started_page
|
||||||
.create_account_button,
|
.create_account_button,
|
||||||
onPressed: () => Modular.to.pushClientSignUp(),
|
onPressed: () => Modular.to.toClientSignUp(),
|
||||||
fullWidth: true,
|
fullWidth: true,
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -4,14 +4,13 @@ import 'package:design_system/design_system.dart';
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||||
import 'package:flutter_modular/flutter_modular.dart';
|
import 'package:flutter_modular/flutter_modular.dart';
|
||||||
|
import 'package:krow_core/core.dart';
|
||||||
|
|
||||||
import '../blocs/client_auth_bloc.dart';
|
import '../blocs/client_auth_bloc.dart';
|
||||||
import '../blocs/client_auth_event.dart';
|
import '../blocs/client_auth_event.dart';
|
||||||
import '../blocs/client_auth_state.dart';
|
import '../blocs/client_auth_state.dart';
|
||||||
import '../navigation/client_auth_navigator.dart';
|
|
||||||
import '../widgets/client_sign_in_page/client_sign_in_form.dart';
|
import '../widgets/client_sign_in_page/client_sign_in_form.dart';
|
||||||
import '../widgets/common/auth_divider.dart';
|
import '../widgets/common/auth_divider.dart';
|
||||||
import '../widgets/common/auth_social_button.dart';
|
|
||||||
|
|
||||||
/// Page for client users to sign in to their account.
|
/// Page for client users to sign in to their account.
|
||||||
///
|
///
|
||||||
@@ -43,7 +42,7 @@ class ClientSignInPage extends StatelessWidget {
|
|||||||
child: BlocConsumer<ClientAuthBloc, ClientAuthState>(
|
child: BlocConsumer<ClientAuthBloc, ClientAuthState>(
|
||||||
listener: (BuildContext context, ClientAuthState state) {
|
listener: (BuildContext context, ClientAuthState state) {
|
||||||
if (state.status == ClientAuthStatus.authenticated) {
|
if (state.status == ClientAuthStatus.authenticated) {
|
||||||
Modular.to.navigateClientHome();
|
Modular.to.toClientHome();
|
||||||
} else if (state.status == ClientAuthStatus.error) {
|
} else if (state.status == ClientAuthStatus.error) {
|
||||||
final String errorMessage = state.errorMessage != null
|
final String errorMessage = state.errorMessage != null
|
||||||
? translateErrorKey(state.errorMessage!)
|
? translateErrorKey(state.errorMessage!)
|
||||||
@@ -107,7 +106,7 @@ class ClientSignInPage extends StatelessWidget {
|
|||||||
),
|
),
|
||||||
const SizedBox(width: UiConstants.space1),
|
const SizedBox(width: UiConstants.space1),
|
||||||
GestureDetector(
|
GestureDetector(
|
||||||
onTap: () => Modular.to.pushClientSignUp(),
|
onTap: () => Modular.to.toClientSignUp(),
|
||||||
child: Text(
|
child: Text(
|
||||||
i18n.sign_up_link,
|
i18n.sign_up_link,
|
||||||
style: UiTypography.body2m.textLink,
|
style: UiTypography.body2m.textLink,
|
||||||
|
|||||||
@@ -4,11 +4,11 @@ import 'package:design_system/design_system.dart';
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||||
import 'package:flutter_modular/flutter_modular.dart';
|
import 'package:flutter_modular/flutter_modular.dart';
|
||||||
|
import 'package:krow_core/core.dart';
|
||||||
|
|
||||||
import '../blocs/client_auth_bloc.dart';
|
import '../blocs/client_auth_bloc.dart';
|
||||||
import '../blocs/client_auth_event.dart';
|
import '../blocs/client_auth_event.dart';
|
||||||
import '../blocs/client_auth_state.dart';
|
import '../blocs/client_auth_state.dart';
|
||||||
import '../navigation/client_auth_navigator.dart';
|
|
||||||
import '../widgets/client_sign_up_page/client_sign_up_form.dart';
|
import '../widgets/client_sign_up_page/client_sign_up_form.dart';
|
||||||
import '../widgets/common/auth_divider.dart';
|
import '../widgets/common/auth_divider.dart';
|
||||||
import '../widgets/common/auth_social_button.dart';
|
import '../widgets/common/auth_social_button.dart';
|
||||||
@@ -47,7 +47,7 @@ class ClientSignUpPage extends StatelessWidget {
|
|||||||
child: BlocConsumer<ClientAuthBloc, ClientAuthState>(
|
child: BlocConsumer<ClientAuthBloc, ClientAuthState>(
|
||||||
listener: (BuildContext context, ClientAuthState state) {
|
listener: (BuildContext context, ClientAuthState state) {
|
||||||
if (state.status == ClientAuthStatus.authenticated) {
|
if (state.status == ClientAuthStatus.authenticated) {
|
||||||
Modular.to.navigateClientHome();
|
Modular.to.toClientHome();
|
||||||
} else if (state.status == ClientAuthStatus.error) {
|
} else if (state.status == ClientAuthStatus.error) {
|
||||||
final String errorMessage = state.errorMessage != null
|
final String errorMessage = state.errorMessage != null
|
||||||
? translateErrorKey(state.errorMessage!)
|
? translateErrorKey(state.errorMessage!)
|
||||||
@@ -116,7 +116,7 @@ class ClientSignUpPage extends StatelessWidget {
|
|||||||
),
|
),
|
||||||
const SizedBox(width: UiConstants.space1),
|
const SizedBox(width: UiConstants.space1),
|
||||||
GestureDetector(
|
GestureDetector(
|
||||||
onTap: () => Modular.to.pushClientSignIn(),
|
onTap: () => Modular.to.toClientSignIn(),
|
||||||
child: Text(
|
child: Text(
|
||||||
i18n.sign_in_link,
|
i18n.sign_in_link,
|
||||||
style: UiTypography.body2m.textLink,
|
style: UiTypography.body2m.textLink,
|
||||||
|
|||||||
@@ -27,6 +27,8 @@ dependencies:
|
|||||||
path: ../../../data_connect
|
path: ../../../data_connect
|
||||||
krow_domain:
|
krow_domain:
|
||||||
path: ../../../domain
|
path: ../../../domain
|
||||||
|
krow_core:
|
||||||
|
path: ../../../core
|
||||||
|
|
||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
flutter_test:
|
flutter_test:
|
||||||
|
|||||||
Reference in New Issue
Block a user