From e05fe01a2dad8516e491a3ed6c239ac2bbbfcc65 Mon Sep 17 00:00:00 2001 From: Achintha Isuru Date: Wed, 18 Feb 2026 13:56:44 -0500 Subject: [PATCH] feat: Implement privacy and security feature in staff profile, including navigation and module setup --- .../pages/staff_profile_page.dart | 14 +++++++++ .../privacy_security_navigator.dart | 9 ------ .../navigation/privacy_security_paths.dart | 5 ---- .../staff_privacy_security_module.dart | 30 +++++++++++-------- .../lib/staff_privacy_security.dart | 2 +- .../staff_main/lib/src/staff_main_module.dart | 5 ++++ .../features/staff/staff_main/pubspec.yaml | 4 +++ apps/mobile/pubspec.lock | 7 +++++ 8 files changed, 48 insertions(+), 28 deletions(-) delete mode 100644 apps/mobile/packages/features/staff/profile_sections/settings/privacy_security/lib/src/presentation/navigation/privacy_security_navigator.dart delete mode 100644 apps/mobile/packages/features/staff/profile_sections/settings/privacy_security/lib/src/presentation/navigation/privacy_security_paths.dart rename apps/mobile/packages/features/staff/profile_sections/settings/privacy_security/lib/{ => src}/staff_privacy_security_module.dart (63%) diff --git a/apps/mobile/packages/features/staff/profile/lib/src/presentation/pages/staff_profile_page.dart b/apps/mobile/packages/features/staff/profile/lib/src/presentation/pages/staff_profile_page.dart index f16beaec..e5569d53 100644 --- a/apps/mobile/packages/features/staff/profile/lib/src/presentation/pages/staff_profile_page.dart +++ b/apps/mobile/packages/features/staff/profile/lib/src/presentation/pages/staff_profile_page.dart @@ -192,6 +192,20 @@ class StaffProfilePage extends StatelessWidget { ], ), const SizedBox(height: UiConstants.space6), + SectionTitle( + i18n.header.title.contains("Perfil") ? "Soporte" : "Support", + ), + ProfileMenuGrid( + crossAxisCount: 3, + children: [ + ProfileMenuItem( + icon: UiIcons.shield, + label: i18n.header.title.contains("Perfil") ? "Privacidad" : "Privacy & Security", + onTap: () => Modular.to.toPrivacySecurity(), + ), + ], + ), + const SizedBox(height: UiConstants.space6), SectionTitle( i18n.header.title.contains("Perfil") ? "Ajustes" : "Settings", ), diff --git a/apps/mobile/packages/features/staff/profile_sections/settings/privacy_security/lib/src/presentation/navigation/privacy_security_navigator.dart b/apps/mobile/packages/features/staff/profile_sections/settings/privacy_security/lib/src/presentation/navigation/privacy_security_navigator.dart deleted file mode 100644 index a823b0fd..00000000 --- a/apps/mobile/packages/features/staff/profile_sections/settings/privacy_security/lib/src/presentation/navigation/privacy_security_navigator.dart +++ /dev/null @@ -1,9 +0,0 @@ -import 'package:flutter_modular/flutter_modular.dart'; - -/// Extension on IModularNavigator for privacy security navigation -extension PrivacySecurityNavigator on IModularNavigator { - /// Navigate to privacy security page - Future toPrivacySecurityPage() { - return pushNamed('/privacy-security'); - } -} diff --git a/apps/mobile/packages/features/staff/profile_sections/settings/privacy_security/lib/src/presentation/navigation/privacy_security_paths.dart b/apps/mobile/packages/features/staff/profile_sections/settings/privacy_security/lib/src/presentation/navigation/privacy_security_paths.dart deleted file mode 100644 index d922dc29..00000000 --- a/apps/mobile/packages/features/staff/profile_sections/settings/privacy_security/lib/src/presentation/navigation/privacy_security_paths.dart +++ /dev/null @@ -1,5 +0,0 @@ -/// Navigation route paths for privacy security feature -class PrivacySecurityPaths { - /// Route to privacy security main page - static const String privacySecurity = '/privacy-security'; -} diff --git a/apps/mobile/packages/features/staff/profile_sections/settings/privacy_security/lib/staff_privacy_security_module.dart b/apps/mobile/packages/features/staff/profile_sections/settings/privacy_security/lib/src/staff_privacy_security_module.dart similarity index 63% rename from apps/mobile/packages/features/staff/profile_sections/settings/privacy_security/lib/staff_privacy_security_module.dart rename to apps/mobile/packages/features/staff/profile_sections/settings/privacy_security/lib/src/staff_privacy_security_module.dart index 55d89e00..eac36681 100644 --- a/apps/mobile/packages/features/staff/profile_sections/settings/privacy_security/lib/staff_privacy_security_module.dart +++ b/apps/mobile/packages/features/staff/profile_sections/settings/privacy_security/lib/src/staff_privacy_security_module.dart @@ -1,14 +1,16 @@ +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 'src/data/repositories_impl/privacy_settings_repository_impl.dart'; -import 'src/domain/repositories/privacy_settings_repository_interface.dart'; -import 'src/domain/usecases/get_privacy_policy_usecase.dart'; -import 'src/domain/usecases/get_privacy_settings_usecase.dart'; -import 'src/domain/usecases/get_terms_usecase.dart'; -import 'src/domain/usecases/update_location_sharing_usecase.dart'; -import 'src/presentation/blocs/privacy_security_bloc.dart'; -import 'src/presentation/pages/privacy_security_page.dart'; +import 'data/repositories_impl/privacy_settings_repository_impl.dart'; +import 'domain/repositories/privacy_settings_repository_interface.dart'; +import 'domain/usecases/get_privacy_policy_usecase.dart'; +import 'domain/usecases/get_privacy_settings_usecase.dart'; +import 'domain/usecases/get_terms_usecase.dart'; +import 'domain/usecases/update_location_sharing_usecase.dart'; +import 'presentation/blocs/privacy_security_bloc.dart'; +import 'presentation/pages/privacy_security_page.dart'; /// Module for privacy security feature /// @@ -17,7 +19,7 @@ import 'src/presentation/pages/privacy_security_page.dart'; /// - Route definitions delegated to core routing class PrivacySecurityModule extends Module { @override - void binds(i) { + void binds(Injector i) { // Repository i.addSingleton( () => PrivacySettingsRepositoryImpl( @@ -59,12 +61,14 @@ class PrivacySecurityModule extends Module { } @override - @override - void routes(r) { + void routes(RouteManager r) { // Route is handled by core routing (StaffPaths.privacySecurity) r.child( - '/', - child: (context) => const PrivacySecurityPage(), + StaffPaths.childRoute( + StaffPaths.privacySecurity, + StaffPaths.privacySecurity, + ), + child: (BuildContext context) => const PrivacySecurityPage(), ); } } diff --git a/apps/mobile/packages/features/staff/profile_sections/settings/privacy_security/lib/staff_privacy_security.dart b/apps/mobile/packages/features/staff/profile_sections/settings/privacy_security/lib/staff_privacy_security.dart index 92c7c856..d6630e8c 100644 --- a/apps/mobile/packages/features/staff/profile_sections/settings/privacy_security/lib/staff_privacy_security.dart +++ b/apps/mobile/packages/features/staff/profile_sections/settings/privacy_security/lib/staff_privacy_security.dart @@ -11,4 +11,4 @@ export 'src/presentation/widgets/settings_switch_tile_widget.dart'; export 'src/presentation/widgets/settings_action_tile_widget.dart'; export 'src/presentation/widgets/settings_section_header_widget.dart'; export 'src/presentation/widgets/settings_divider_widget.dart'; -export 'staff_privacy_security_module.dart'; +export 'src/staff_privacy_security_module.dart'; 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 c40027f1..ef0de90f 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 @@ -12,6 +12,7 @@ import 'package:staff_home/staff_home.dart'; import 'package:staff_main/src/presentation/blocs/staff_main_cubit.dart'; import 'package:staff_main/src/presentation/pages/staff_main_page.dart'; import 'package:staff_payments/staff_payements.dart'; +import 'package:staff_privacy_security/staff_privacy_security.dart'; import 'package:staff_profile/staff_profile.dart'; import 'package:staff_profile_experience/staff_profile_experience.dart'; import 'package:staff_profile_info/staff_profile_info.dart'; @@ -93,6 +94,10 @@ class StaffMainModule extends Module { StaffPaths.childRoute(StaffPaths.main, StaffPaths.availability), module: StaffAvailabilityModule(), ); + r.module( + StaffPaths.childRoute(StaffPaths.main, StaffPaths.privacySecurity), + module: PrivacySecurityModule(), + ); r.module( StaffPaths.childRoute(StaffPaths.main, StaffPaths.shiftDetailsRoute), module: ShiftDetailsModule(), diff --git a/apps/mobile/packages/features/staff/staff_main/pubspec.yaml b/apps/mobile/packages/features/staff/staff_main/pubspec.yaml index 2f3788f1..44865ecf 100644 --- a/apps/mobile/packages/features/staff/staff_main/pubspec.yaml +++ b/apps/mobile/packages/features/staff/staff_main/pubspec.yaml @@ -20,6 +20,8 @@ dependencies: path: ../../../design_system core_localization: path: ../../../core_localization + krow_core: + path: ../../../krow_core # Features staff_home: @@ -52,6 +54,8 @@ dependencies: path: ../availability staff_clock_in: path: ../clock_in + staff_privacy_security: + path: ../profile_sections/settings/privacy_security dev_dependencies: flutter_test: diff --git a/apps/mobile/pubspec.lock b/apps/mobile/pubspec.lock index 25c3fd23..5a9b3aaf 100644 --- a/apps/mobile/pubspec.lock +++ b/apps/mobile/pubspec.lock @@ -1290,6 +1290,13 @@ packages: url: "https://pub.dev" source: hosted version: "1.12.1" + staff_privacy_security: + dependency: transitive + description: + path: "packages/features/staff/profile_sections/settings/privacy_security" + relative: true + source: path + version: "0.0.1" stream_channel: dependency: transitive description: