Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: show selected reaction tab in the message menu when long pressed in bottom reaction list #2955

Merged
merged 7 commits into from
Feb 18, 2025
5 changes: 4 additions & 1 deletion package/src/components/Message/Message.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -285,6 +285,7 @@ const MessageWithContext = <
threadList = false,
updateMessage,
} = props;
const [selectedReaction, setSelectedReaction] = useState<string | undefined>(undefined);
const isMessageAIGenerated = messagesContext.isMessageAIGenerated;
const isAIGenerated = useMemo(
() => isMessageAIGenerated(message),
Expand All @@ -300,10 +301,11 @@ const MessageWithContext = <
},
} = useTheme();

const showMessageOverlay = async (showMessageReactions = false) => {
const showMessageOverlay = async (showMessageReactions = false, selectedReaction?: string) => {
await dismissKeyboard();
setShowMessageReactions(showMessageReactions);
setMessageOverlayVisible(true);
setSelectedReaction(selectedReaction);
};

const dismissOverlay = () => {
Expand Down Expand Up @@ -733,6 +735,7 @@ const MessageWithContext = <
dismissOverlay={dismissOverlay}
handleReaction={ownCapabilities.sendReaction ? handleReaction : undefined}
messageActions={messageActions}
selectedReaction={selectedReaction}
showMessageReactions={showMessageReactions}
visible={messageOverlayVisible}
/>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ export const ReactionListBottomItem = <
onLongPress({
defaultHandler: () => {
if (showMessageOverlay) {
showMessageOverlay(true);
showMessageOverlay(true, reaction.type);
}
},
emitter: 'reactionList',
Expand Down
6 changes: 6 additions & 0 deletions package/src/components/MessageMenu/MessageMenu.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,10 @@ export type MessageMenuProps<
* @returns
*/
handleReaction?: (reactionType: string) => Promise<void>;
/**
* The selected reaction
*/
selectedReaction?: string;
};

export const MessageMenu = <
Expand All @@ -70,6 +74,7 @@ export const MessageMenu = <
MessageUserReactions: propMessageUserReactions,
MessageUserReactionsAvatar: propMessageUserReactionsAvatar,
MessageUserReactionsItem: propMessageUserReactionsItem,
selectedReaction,
showMessageReactions,
visible,
} = props;
Expand Down Expand Up @@ -103,6 +108,7 @@ export const MessageMenu = <
message={message}
MessageUserReactionsAvatar={MessageUserReactionsAvatar}
MessageUserReactionsItem={MessageUserReactionsItem}
selectedReaction={selectedReaction}
/>
) : (
<>
Expand Down
7 changes: 6 additions & 1 deletion package/src/components/MessageMenu/MessageUserReactions.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,10 @@ export type MessageUserReactionsProps<
* An array of reactions
*/
reactions?: Reaction[];
/**
* The selected reaction
*/
selectedReaction?: string;
};

const sort: ReactionSortBase = {
Expand Down Expand Up @@ -57,11 +61,12 @@ export const MessageUserReactions = (props: MessageUserReactionsProps) => {
MessageUserReactionsAvatar: propMessageUserReactionsAvatar,
MessageUserReactionsItem: propMessageUserReactionsItem,
reactions: propReactions,
selectedReaction: propSelectedReaction,
supportedReactions: propSupportedReactions,
} = props;
const reactionTypes = Object.keys(message?.reaction_groups ?? {});
const [selectedReaction, setSelectedReaction] = React.useState<string | undefined>(
reactionTypes[0],
propSelectedReaction ?? reactionTypes[0],
);
const {
MessageUserReactionsAvatar: contextMessageUserReactionsAvatar,
Expand Down
2 changes: 1 addition & 1 deletion package/src/contexts/messageContext/MessageContext.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@ export type MessageContextValue<
* @param showMessageReactions
* @returns void
*/
showMessageOverlay: (showMessageReactions?: boolean) => void;
showMessageOverlay: (showMessageReactions?: boolean, selectedReaction?: string) => void;
showMessageStatus: boolean;
/** Whether or not the Message is part of a Thread */
threadList: boolean;
Expand Down
Loading