Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/Jay-byte389/AMS/llms.txt

Use this file to discover all available pages before exploring further.

The Profile tab is the central hub for account management in AMS. It combines a visual avatar component with a scrollable menu list that links to every account-related screen in the app. All sub-screens are reachable from a single tap and support back-navigation to the profile root.

ProfileScreen Structure

ProfileScreen is a straightforward composition of two components inside a SafeAreaView:
<SafeAreaView style={styles.container}>
  <Header title="My Profile" onBackPress={...} />
  <ProfileAvatar />      {/* displays the user's avatar and name */}
  <ProfileMenuList />    {/* renders all navigable menu items */}
</SafeAreaView>
ProfileMenuList renders the following menu items using ProfileMenuItem (each with an Ionicons icon and a chevron):
IconLabelDestination
person-outlineProfileEditProfile screen
heart-outlineFavoriteHome screen
card-outlinePayment MethodPayment screen
lock-closed-outlinePrivacy PolicyPrivacyPolicy screen
settings-outlineSettingsSettings screen
help-circle-outlineHelpHelpCenter screen
log-out-outlineLogoutConfirmation modal → logoutUser thunk

All Sections at a Glance

Edit Profile

Update your full name, phone number, email, and date of birth.

Settings

Configure notification preferences, change your password, or delete your account.

Password Manager

Change your current password and link to the Forgot Password flow.

Notification Settings

Toggle individual notification channels such as sound, vibrate, and promo alerts.

Privacy Policy

Read the app’s Terms & Conditions and privacy information.

Help Center

Browse FAQ topics by category or contact support directly.

Edit Profile

Route name: EditProfile EditProfileScreen renders a ProfileAvatar component at the top followed by a form with four editable fields:
FieldDefault ValueKeyboard Type
Full Name"John Doe"Default
Phone Number"+123 567 89000"phone-pad
Email"johndoe@example.com"email-address
Date Of Birth"" (empty)Default (DD / MM / YYYY placeholder)
Tapping Update Profile calls the handleUpdate handler. The form state is managed locally with useState; values are pre-populated with stub defaults and should be wired to the Redux auth.user object for a production integration.

Settings

Route name: Settings SettingScreen renders three SettingsItem rows, each with a 28×28 SVG icon:
Navigates to NotificationSetting screen. Lets users toggle individual notification types on or off.
Navigates to PasswordManager screen. Lets users change their current password.
Renders a delete-account option (functionality not yet implemented in the current build).

Password Manager

Route name: PasswordManager PasswordManager provides a three-field password change form:
Current Password      →  masked input (PasswordInput component)
New Password          →  masked input
Confirm New Password  →  masked input
A Forgot Password? link uses React Navigation’s <Link screen="SetPassword"> to navigate directly to the SetPassword screen in the auth stack. Tapping Change Password currently navigates back to Settings. To complete the implementation, wire the handler to call updatePassword from src/services/storage.js with the new password value before navigating.

Notification Settings

Route name: NotificationSetting NotificationSettingScreen loads notification preferences from AsyncStorage on mount and renders them as a FlatList of toggle rows. Each row shows a label and a custom toggle switch. The initial data comes from src/utils/notificationData.js:
IDTitleDefault
1General NotificationEnabled
2SoundEnabled
3Sound CallEnabled
4VibrateDisabled
5Special OffersDisabled
6PaymentsEnabled
7Promo And DiscountDisabled
8CashbackEnabled
Toggling any switch updates local state and immediately persists the full settings array to AsyncStorage under the 'notificationSettings' key:
const toggleSwitch = async (id) => {
  const updated = settings.map(item =>
    item.id === id ? { ...item, enabled: !item.enabled } : item
  );
  setSettings(updated);
  await AsyncStorage.setItem('notificationSettings', JSON.stringify(updated));
};

Privacy Policy

Route name: PrivacyPolicy PrivacyPolicy renders a scrollable document with a Last update date stamp, an introductory paragraph, and a numbered Terms & Conditions list. The list items are sourced from src/utils/privacyData.js, which exports four string items:
export const privacyData = [
  'Ut lacinia justo sit amet lorem sodales accumsan...',
  'Ut lacinia justo sit amet lorem sodales accumsan...',
  'Lorem ipsum dolor sit amet, consectetur...',
  'Nunc auctor tortor in dolor luctus...',
];
Each item is rendered inside a { number }. { description } row with justified text alignment.

Help Center

Route name: HelpCenter HelpCenterScreen has a two-tab layout — FAQ and Contact Us — with a search bar in the primary-coloured header:
A horizontal category strip shows three categories from src/utils/HelpData.js:
export const categories = ['Popular Topic', 'General', 'Services'];
Below the strip, a FlatList renders all seven FAQ items from faqData. Each question row expands to show its answer when tapped (accordion behaviour driven by expandedId state).

Logout

The Logout menu item in ProfileMenuList first shows a confirmation modal with Cancel and Yes, Logout buttons. Confirming dispatches logoutUser:
const handleLogOut = async () => {
  await dispatch(logoutUser()).unwrap(); // removes @logged_in_user from AsyncStorage
  navigation.replace('Auth', { screen: 'Login' });
};
The logoutUser thunk calls AsyncStorage.removeItem('@logged_in_user'), which causes the auth session check to return null on the next app launch, sending the user back to the RegisterScreen.

Build docs developers (and LLMs) love