diff --git a/native/chat/chat-input-bar.react.js b/native/chat/chat-input-bar.react.js --- a/native/chat/chat-input-bar.react.js +++ b/native/chat/chat-input-bar.react.js @@ -361,19 +361,6 @@ return ChatInputBar.systemKeyboardShowing(this.props); } - componentDidMount() { - const { isActive } = this.props; - if (isActive) { - this.props.addEditInputMessageListener(); - } - } - - componentWillUnmount() { - if (this.props.isActive) { - this.props.removeEditInputMessageListener(); - } - } - componentDidUpdate(prevProps: Props) { if ( this.props.textEdited && @@ -1400,25 +1387,37 @@ React.useEffect(() => { const { navigation } = props; - if (!navigation) { - return noop; + + if (isActive) { + addEditInputMessageListener(); } - const clearBeforeRemoveListener = navigation.addListener( + const clearBeforeRemoveListener = navigation?.addListener( 'beforeRemove', onNavigationBeforeRemove, ); - const clearFocusListener = navigation.addListener( + const clearFocusListener = navigation?.addListener( 'focus', onNavigationFocus, ); - const clearBlurListener = navigation.addListener('blur', onNavigationBlur); + const clearBlurListener = navigation?.addListener('blur', onNavigationBlur); return () => { - clearBeforeRemoveListener(); - clearFocusListener(); - clearBlurListener(); + if (isActive) { + removeEditInputMessageListener(); + } + clearBeforeRemoveListener?.(); + clearFocusListener?.(); + clearBlurListener?.(); }; - }, [onNavigationBeforeRemove, onNavigationBlur, onNavigationFocus, props]); + }, [ + addEditInputMessageListener, + isActive, + onNavigationBeforeRemove, + onNavigationBlur, + onNavigationFocus, + props, + removeEditInputMessageListener, + ]); return (