feat: Implement privacy and security feature in staff profile, including navigation and module setup

This commit is contained in:
Achintha Isuru
2026-02-18 13:56:44 -05:00
parent 96849baf46
commit e05fe01a2d
8 changed files with 48 additions and 28 deletions

View File

@@ -192,6 +192,20 @@ class StaffProfilePage extends StatelessWidget {
], ],
), ),
const SizedBox(height: UiConstants.space6), 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( SectionTitle(
i18n.header.title.contains("Perfil") ? "Ajustes" : "Settings", i18n.header.title.contains("Perfil") ? "Ajustes" : "Settings",
), ),

View File

@@ -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<dynamic> toPrivacySecurityPage() {
return pushNamed('/privacy-security');
}
}

View File

@@ -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';
}

View File

@@ -1,14 +1,16 @@
import 'package:flutter/material.dart';
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/privacy_settings_repository_impl.dart'; import 'data/repositories_impl/privacy_settings_repository_impl.dart';
import 'src/domain/repositories/privacy_settings_repository_interface.dart'; import 'domain/repositories/privacy_settings_repository_interface.dart';
import 'src/domain/usecases/get_privacy_policy_usecase.dart'; import 'domain/usecases/get_privacy_policy_usecase.dart';
import 'src/domain/usecases/get_privacy_settings_usecase.dart'; import 'domain/usecases/get_privacy_settings_usecase.dart';
import 'src/domain/usecases/get_terms_usecase.dart'; import 'domain/usecases/get_terms_usecase.dart';
import 'src/domain/usecases/update_location_sharing_usecase.dart'; import 'domain/usecases/update_location_sharing_usecase.dart';
import 'src/presentation/blocs/privacy_security_bloc.dart'; import 'presentation/blocs/privacy_security_bloc.dart';
import 'src/presentation/pages/privacy_security_page.dart'; import 'presentation/pages/privacy_security_page.dart';
/// Module for privacy security feature /// Module for privacy security feature
/// ///
@@ -17,7 +19,7 @@ import 'src/presentation/pages/privacy_security_page.dart';
/// - Route definitions delegated to core routing /// - Route definitions delegated to core routing
class PrivacySecurityModule extends Module { class PrivacySecurityModule extends Module {
@override @override
void binds(i) { void binds(Injector i) {
// Repository // Repository
i.addSingleton<PrivacySettingsRepositoryInterface>( i.addSingleton<PrivacySettingsRepositoryInterface>(
() => PrivacySettingsRepositoryImpl( () => PrivacySettingsRepositoryImpl(
@@ -59,12 +61,14 @@ class PrivacySecurityModule extends Module {
} }
@override @override
@override void routes(RouteManager r) {
void routes(r) {
// Route is handled by core routing (StaffPaths.privacySecurity) // Route is handled by core routing (StaffPaths.privacySecurity)
r.child( r.child(
'/', StaffPaths.childRoute(
child: (context) => const PrivacySecurityPage(), StaffPaths.privacySecurity,
StaffPaths.privacySecurity,
),
child: (BuildContext context) => const PrivacySecurityPage(),
); );
} }
} }

View File

@@ -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_action_tile_widget.dart';
export 'src/presentation/widgets/settings_section_header_widget.dart'; export 'src/presentation/widgets/settings_section_header_widget.dart';
export 'src/presentation/widgets/settings_divider_widget.dart'; export 'src/presentation/widgets/settings_divider_widget.dart';
export 'staff_privacy_security_module.dart'; export 'src/staff_privacy_security_module.dart';

View File

@@ -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/blocs/staff_main_cubit.dart';
import 'package:staff_main/src/presentation/pages/staff_main_page.dart'; import 'package:staff_main/src/presentation/pages/staff_main_page.dart';
import 'package:staff_payments/staff_payements.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/staff_profile.dart';
import 'package:staff_profile_experience/staff_profile_experience.dart'; import 'package:staff_profile_experience/staff_profile_experience.dart';
import 'package:staff_profile_info/staff_profile_info.dart'; import 'package:staff_profile_info/staff_profile_info.dart';
@@ -93,6 +94,10 @@ class StaffMainModule extends Module {
StaffPaths.childRoute(StaffPaths.main, StaffPaths.availability), StaffPaths.childRoute(StaffPaths.main, StaffPaths.availability),
module: StaffAvailabilityModule(), module: StaffAvailabilityModule(),
); );
r.module(
StaffPaths.childRoute(StaffPaths.main, StaffPaths.privacySecurity),
module: PrivacySecurityModule(),
);
r.module( r.module(
StaffPaths.childRoute(StaffPaths.main, StaffPaths.shiftDetailsRoute), StaffPaths.childRoute(StaffPaths.main, StaffPaths.shiftDetailsRoute),
module: ShiftDetailsModule(), module: ShiftDetailsModule(),

View File

@@ -20,6 +20,8 @@ dependencies:
path: ../../../design_system path: ../../../design_system
core_localization: core_localization:
path: ../../../core_localization path: ../../../core_localization
krow_core:
path: ../../../krow_core
# Features # Features
staff_home: staff_home:
@@ -52,6 +54,8 @@ dependencies:
path: ../availability path: ../availability
staff_clock_in: staff_clock_in:
path: ../clock_in path: ../clock_in
staff_privacy_security:
path: ../profile_sections/settings/privacy_security
dev_dependencies: dev_dependencies:
flutter_test: flutter_test:

View File

@@ -1290,6 +1290,13 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.12.1" 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: stream_channel:
dependency: transitive dependency: transitive
description: description: