@@ -33,6 +33,7 @@ import {clearDelegateErrorsByField, openSecuritySettingsPage, removeDelegate} fr
3333import { getLatestError } from '@libs/ErrorUtils' ;
3434import getClickedTargetLocation from '@libs/getClickedTargetLocation' ;
3535import Navigation from '@libs/Navigation/Navigation' ;
36+ import { sortAlphabetically } from '@libs/OptionsListUtils' ;
3637import { getPersonalDetailByEmail } from '@libs/PersonalDetailsUtils' ;
3738import type { AnchorPosition } from '@styles/index' ;
3839import colors from '@styles/theme/colors' ;
@@ -60,7 +61,7 @@ function SecuritySettingsPage() {
6061 const illustrations = useMemoizedLazyIllustrations ( [ 'LockClosed' ] ) ;
6162 const securitySettingsIllustration = useSecuritySettingsSectionIllustration ( ) ;
6263 const styles = useThemeStyles ( ) ;
63- const { translate, formatPhoneNumber} = useLocalize ( ) ;
64+ const { localeCompare , translate, formatPhoneNumber} = useLocalize ( ) ;
6465 const waitForNavigate = useWaitForNavigation ( ) ;
6566 const { shouldUseNarrowLayout} = useResponsiveLayout ( ) ;
6667 const { windowWidth} = useWindowDimensions ( ) ;
@@ -240,8 +241,8 @@ function SecuritySettingsPage() {
240241 ] ) ;
241242
242243 const delegateMenuItems : MenuItemProps [ ] = useMemo (
243- ( ) =>
244- delegates
244+ ( ) => {
245+ const menuItems = delegates
245246 . filter ( ( d ) => ! d . optimisticAccountID )
246247 . map ( ( { email, role, pendingAction, pendingFields} ) => {
247248 const personalDetail = getPersonalDetailByEmail ( email ) ;
@@ -284,14 +285,16 @@ function SecuritySettingsPage() {
284285 onPress,
285286 success : selectedEmail === email ,
286287 } ;
287- } ) ,
288+ } ) ;
289+ return sortAlphabetically ( menuItems , 'title' , localeCompare ) ;
290+ } ,
288291 // eslint-disable-next-line react-hooks/exhaustive-deps
289- [ delegates , translate , styles , personalDetails , errorFields , windowWidth , selectedEmail , icons . FallbackAvatar , icons . ThreeDots ] ,
292+ [ delegates , translate , styles , personalDetails , errorFields , windowWidth , selectedEmail , icons . FallbackAvatar , icons . ThreeDots , localeCompare ] ,
290293 ) ;
291294
292295 const delegatorMenuItems : MenuItemProps [ ] = useMemo (
293- ( ) =>
294- delegators . map ( ( { email, role} ) => {
296+ ( ) => {
297+ const menuItems = delegators . map ( ( { email, role} ) => {
295298 const personalDetail = getPersonalDetailByEmail ( email ) ;
296299 const formattedEmail = formatPhoneNumber ( email ) ;
297300
@@ -306,9 +309,11 @@ function SecuritySettingsPage() {
306309 wrapperStyle : [ styles . sectionMenuItemTopDescription ] ,
307310 interactive : false ,
308311 } ;
309- } ) ,
312+ } ) ;
313+ return sortAlphabetically ( menuItems , 'title' , localeCompare ) ;
314+ } ,
310315 // eslint-disable-next-line react-hooks/exhaustive-deps
311- [ delegators , styles , translate , personalDetails , icons . FallbackAvatar ] ,
316+ [ delegators , styles , translate , personalDetails , icons . FallbackAvatar , localeCompare ] ,
312317 ) ;
313318
314319 const delegatePopoverMenuItems : PopoverMenuItem [ ] = [
0 commit comments