diff --git a/src/components/MessageInput/AttachmentSelector/CommandsMenu.tsx b/src/components/MessageInput/AttachmentSelector/CommandsMenu.tsx index df0ad2cb7..6a9b580a2 100644 --- a/src/components/MessageInput/AttachmentSelector/CommandsMenu.tsx +++ b/src/components/MessageInput/AttachmentSelector/CommandsMenu.tsx @@ -59,9 +59,11 @@ export const CommandsMenu = () => { const channelConfig = messageComposer.channel.getConfig(); const commands = useMemo<(CommandResponse & { name: string })[]>( () => - (channelConfig?.commands ?? []).filter( - (command): command is CommandResponse & { name: string } => !!command.name, - ), + (channelConfig?.commands ?? []) + .filter( + (command): command is CommandResponse & { name: string } => !!command.name, + ) + .sort((a, b) => (a.name ?? '').localeCompare(b.name ?? '')), [channelConfig], ); diff --git a/src/components/Reactions/ReactionsList.tsx b/src/components/Reactions/ReactionsList.tsx index 7f9d43673..66ff15478 100644 --- a/src/components/Reactions/ReactionsList.tsx +++ b/src/components/Reactions/ReactionsList.tsx @@ -96,7 +96,8 @@ const UnMemoizedReactionsList = (props: ReactionsListProps) => { null, ); const { t } = useTranslationContext('ReactionsList'); - const { MessageReactionsDetail = DefaultMessageReactionsDetail } = useComponentContext(); + const { MessageReactionsDetail = DefaultMessageReactionsDetail } = + useComponentContext(); const { isMyMessage, message } = useMessageContext('ReactionsList'); const divRef = useRef>(null); diff --git a/src/components/Reactions/hooks/useProcessReactions.tsx b/src/components/Reactions/hooks/useProcessReactions.tsx index ef1403318..47e8c8c3d 100644 --- a/src/components/Reactions/hooks/useProcessReactions.tsx +++ b/src/components/Reactions/hooks/useProcessReactions.tsx @@ -129,7 +129,8 @@ export const useProcessReactions = (params: UseProcessReactionsParams) => { const hasReactions = existingReactions.length > 0; const totalReactionCount = useMemo( - () => Object.values(reactionGroups ?? {}).reduce((total, { count }) => total + count, 0), + () => + Object.values(reactionGroups ?? {}).reduce((total, { count }) => total + count, 0), [reactionGroups], ); diff --git a/src/components/TextareaComposer/SuggestionList/SuggestionList.tsx b/src/components/TextareaComposer/SuggestionList/SuggestionList.tsx index 292ee51b5..4395d31fa 100644 --- a/src/components/TextareaComposer/SuggestionList/SuggestionList.tsx +++ b/src/components/TextareaComposer/SuggestionList/SuggestionList.tsx @@ -118,7 +118,15 @@ export const SuggestionList = ({ const contextMenuItems = useMemo(() => { if (!component) return []; - return (items ?? []).map((item, i) => { + const sortedItems = + suggestions?.searchSource.type === 'commands' + ? [...(items ?? [])].sort((a, b) => + String((a as { name?: string }).name ?? '').localeCompare( + String((b as { name?: string }).name ?? ''), + ), + ) + : (items ?? []); + return sortedItems.map((item, i) => { const Item: ContextMenuItemComponent = ({ closeMenu: _, // eslint-disable-line @typescript-eslint/no-unused-vars openSubmenu: __, //eslint-disable-line @typescript-eslint/no-unused-vars @@ -141,6 +149,7 @@ export const SuggestionList = ({ focusedItemIndex, setFocusedItemIndex, AutocompleteSuggestionItem, + suggestions?.searchSource.type, ]); const ItemsWrapper = useCallback(