[FIX] Emoji picker not opening in some cases (#4735)

This commit is contained in:
Diego Mello 2022-12-08 15:38:16 -03:00 committed by GitHub
parent a2722f07b0
commit 0290d8e0a9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 18 additions and 14 deletions

View File

@ -14,12 +14,12 @@ import { IEmoji, TAnyMessageModel } from '../../definitions';
import Touch from '../Touch'; import Touch from '../Touch';
export interface IHeader { export interface IHeader {
handleReaction: (emoji: IEmoji, message: TAnyMessageModel) => void; handleReaction: (emoji: IEmoji | null, message: TAnyMessageModel) => void;
message: TAnyMessageModel; message: TAnyMessageModel;
isMasterDetail: boolean; isMasterDetail: boolean;
} }
type TOnReaction = ({ emoji }: { emoji: IEmoji }) => void; type TOnReaction = ({ emoji }: { emoji?: IEmoji }) => void;
interface THeaderItem { interface THeaderItem {
item: IEmoji; item: IEmoji;
@ -94,8 +94,10 @@ const Header = React.memo(({ handleReaction, message, isMasterDetail }: IHeader)
const quantity = Math.trunc(size / (ITEM_SIZE + ITEM_MARGIN * 2) - 1); const quantity = Math.trunc(size / (ITEM_SIZE + ITEM_MARGIN * 2) - 1);
const onReaction: TOnReaction = ({ emoji }) => { const onReaction: TOnReaction = ({ emoji }) => {
handleReaction(emoji, message); handleReaction(emoji || null, message);
addFrequentlyUsed(emoji); if (emoji) {
addFrequentlyUsed(emoji);
}
}; };
const renderItem = ({ item }: { item: IEmoji }) => <HeaderItem item={item} onReaction={onReaction} theme={theme} />; const renderItem = ({ item }: { item: IEmoji }) => <HeaderItem item={item} onReaction={onReaction} theme={theme} />;

View File

@ -285,10 +285,10 @@ const MessageActions = React.memo(
} }
}; };
const handleReaction: IHeader['handleReaction'] = (shortname, message) => { const handleReaction: IHeader['handleReaction'] = (emoji, message) => {
logEvent(events.ROOM_MSG_ACTION_REACTION); logEvent(events.ROOM_MSG_ACTION_REACTION);
if (shortname) { if (emoji) {
onReactionPress(shortname, message.id); onReactionPress(emoji, message.id);
} else { } else {
setTimeout(() => reactionInit(message), ACTION_SHEET_ANIMATION_DURATION); setTimeout(() => reactionInit(message), ACTION_SHEET_ANIMATION_DURATION);
} }

View File

@ -833,13 +833,15 @@ class RoomView extends React.Component<IRoomViewProps, IRoomViewState> {
showReactionPicker = () => { showReactionPicker = () => {
const { showActionSheet } = this.props; const { showActionSheet } = this.props;
const { selectedMessage } = this.state; const { selectedMessage } = this.state;
showActionSheet({ setTimeout(() => {
children: ( showActionSheet({
<ReactionPicker message={selectedMessage} onEmojiSelected={this.onReactionPress} reactionClose={this.onReactionClose} /> children: (
), <ReactionPicker message={selectedMessage} onEmojiSelected={this.onReactionPress} reactionClose={this.onReactionClose} />
snaps: [400], ),
enableContentPanningGesture: false snaps: [400],
}); enableContentPanningGesture: false
});
}, 100);
}; };
onReactionInit = (message: TAnyMessageModel) => { onReactionInit = (message: TAnyMessageModel) => {