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 && @@ -1405,24 +1392,33 @@ ); React.useEffect(() => { - const { navigation } = props; - if (!navigation) { - return undefined; + if (isActive) { + addEditInputMessageListener(); } - const clearBeforeRemoveListener = navigation.addListener( + return () => { + if (isActive) { + removeEditInputMessageListener(); + } + }; + }, [addEditInputMessageListener, isActive, removeEditInputMessageListener]); + + React.useEffect(() => { + const { navigation } = props; + + 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(); + clearBeforeRemoveListener?.(); + clearFocusListener?.(); + clearBlurListener?.(); }; }, [onNavigationBeforeRemove, onNavigationBlur, onNavigationFocus, props]);