/* * File: navigationUtils.ts * Description: Navigation utilities for Settings module * Design & Developed by Tech4Biz Solutions * Copyright (c) Spurrin Innovations. All rights reserved. */ import { SettingsNavigationProp } from './navigationTypes'; import { UserProfile, UserPreferences } from '../../../shared/types'; /** * SettingsNavigationUtils - Utility functions for Settings module navigation * * This module provides helper functions for common navigation patterns * within the Settings module, ensuring consistent navigation behavior. */ /** * Navigate to Settings screen * @param navigation - Navigation prop from React Navigation * @param params - Optional parameters for the settings screen */ export const navigateToSettings = ( navigation: SettingsNavigationProp, params?: { section?: 'profile' | 'security' | 'notifications' | 'clinical' | 'privacy' | 'accessibility' | 'about' | 'help'; refresh?: boolean; } ): void => { navigation.navigate('Settings', params); }; /** * Navigate to Profile Edit screen * @param navigation - Navigation prop from React Navigation * @param profile - Optional profile data to pre-populate * @param fromScreen - Optional source screen for back navigation */ export const navigateToProfileEdit = ( navigation: SettingsNavigationProp, profile?: UserProfile, fromScreen?: keyof import('./navigationTypes').SettingsStackParamList ): void => { navigation.navigate('ProfileEdit', { profile, fromScreen, }); }; /** * Navigate to Security Settings screen * @param navigation - Navigation prop from React Navigation * @param showBiometricSetup - Optional flag to show biometric setup * @param fromScreen - Optional source screen for back navigation */ export const navigateToSecuritySettings = ( navigation: SettingsNavigationProp, showBiometricSetup?: boolean, fromScreen?: keyof import('./navigationTypes').SettingsStackParamList ): void => { navigation.navigate('SecuritySettings', { showBiometricSetup, fromScreen, }); }; /** * Navigate to Notification Settings screen * @param navigation - Navigation prop from React Navigation * @param preferences - Optional notification preferences to pre-populate * @param fromScreen - Optional source screen for back navigation */ export const navigateToNotificationSettings = ( navigation: SettingsNavigationProp, preferences?: UserPreferences['notificationPreferences'], fromScreen?: keyof import('./navigationTypes').SettingsStackParamList ): void => { navigation.navigate('NotificationSettings', { preferences, fromScreen, }); }; /** * Navigate to Clinical Preferences screen * @param navigation - Navigation prop from React Navigation * @param preferences - Optional clinical preferences to pre-populate * @param fromScreen - Optional source screen for back navigation */ export const navigateToClinicalPreferences = ( navigation: SettingsNavigationProp, preferences?: UserPreferences['clinicalPreferences'], fromScreen?: keyof import('./navigationTypes').SettingsStackParamList ): void => { navigation.navigate('ClinicalPreferences', { preferences, fromScreen, }); }; /** * Navigate to Privacy Settings screen * @param navigation - Navigation prop from React Navigation * @param preferences - Optional privacy preferences to pre-populate * @param fromScreen - Optional source screen for back navigation */ export const navigateToPrivacySettings = ( navigation: SettingsNavigationProp, preferences?: UserPreferences['privacyPreferences'], fromScreen?: keyof import('./navigationTypes').SettingsStackParamList ): void => { navigation.navigate('PrivacySettings', { preferences, fromScreen, }); }; /** * Navigate to Accessibility Settings screen * @param navigation - Navigation prop from React Navigation * @param preferences - Optional accessibility preferences to pre-populate * @param fromScreen - Optional source screen for back navigation */ export const navigateToAccessibilitySettings = ( navigation: SettingsNavigationProp, preferences?: UserPreferences['accessibilityPreferences'], fromScreen?: keyof import('./navigationTypes').SettingsStackParamList ): void => { navigation.navigate('AccessibilitySettings', { preferences, fromScreen, }); }; /** * Navigate to About screen * @param navigation - Navigation prop from React Navigation * @param showChangelog - Optional flag to show changelog * @param showLicenses - Optional flag to show licenses */ export const navigateToAbout = ( navigation: SettingsNavigationProp, showChangelog?: boolean, showLicenses?: boolean ): void => { navigation.navigate('About', { showChangelog, showLicenses, }); }; /** * Navigate to Help & Support screen * @param navigation - Navigation prop from React Navigation * @param topic - Optional help topic to navigate to * @param showContact - Optional flag to show contact form */ export const navigateToHelpSupport = ( navigation: SettingsNavigationProp, topic?: 'faq' | 'troubleshooting' | 'contact' | 'feedback', showContact?: boolean ): void => { navigation.navigate('HelpSupport', { topic, showContact, }); }; /** * Go back to previous screen * @param navigation - Navigation prop from React Navigation */ export const goBack = (navigation: SettingsNavigationProp): void => { if (navigation.canGoBack()) { navigation.goBack(); } }; /** * Reset navigation stack to Settings screen * @param navigation - Navigation prop from React Navigation * @param params - Optional parameters for the settings screen */ export const resetToSettings = ( navigation: SettingsNavigationProp, params?: { section?: 'profile' | 'security' | 'notifications' | 'clinical' | 'privacy' | 'accessibility' | 'about' | 'help'; refresh?: boolean; } ): void => { navigation.reset({ index: 0, routes: [{ name: 'Settings', params }], }); }; /** * Replace current screen with Settings screen * @param navigation - Navigation prop from React Navigation * @param params - Optional parameters for the settings screen */ export const replaceWithSettings = ( navigation: SettingsNavigationProp, params?: { section?: 'profile' | 'security' | 'notifications' | 'clinical' | 'privacy' | 'accessibility' | 'about' | 'help'; refresh?: boolean; } ): void => { navigation.replace('Settings', params); }; /** * Navigate to Settings and clear back stack * @param navigation - Navigation prop from React Navigation * @param params - Optional parameters for the settings screen */ export const navigateToSettingsAndClearStack = ( navigation: SettingsNavigationProp, params?: { section?: 'profile' | 'security' | 'notifications' | 'clinical' | 'privacy' | 'accessibility' | 'about' | 'help'; refresh?: boolean; } ): void => { navigation.reset({ index: 0, routes: [{ name: 'Settings', params }], }); }; /** * Navigate to Profile Edit and clear back stack * @param navigation - Navigation prop from React Navigation * @param profile - Optional profile data to pre-populate */ export const navigateToProfileEditAndClearStack = ( navigation: SettingsNavigationProp, profile?: UserProfile ): void => { navigation.reset({ index: 0, routes: [{ name: 'ProfileEdit', params: { profile } }], }); }; /** * Navigate to Security Settings and clear back stack * @param navigation - Navigation prop from React Navigation * @param showBiometricSetup - Optional flag to show biometric setup */ export const navigateToSecuritySettingsAndClearStack = ( navigation: SettingsNavigationProp, showBiometricSetup?: boolean ): void => { navigation.reset({ index: 0, routes: [{ name: 'SecuritySettings', params: { showBiometricSetup } }], }); }; /* * End of File: navigationUtils.ts * Design & Developed by Tech4Biz Solutions * Copyright (c) Spurrin Innovations. All rights reserved. */