diff --git a/src/common/Input.js b/src/common/Input.js index 1d145514f3e..dd9813309a5 100644 --- a/src/common/Input.js +++ b/src/common/Input.js @@ -8,10 +8,10 @@ import type { ThemeData } from '../styles'; import { ThemeContext, HALF_COLOR, BORDER_COLOR } from '../styles'; export type Props = $ReadOnly<{| - // TextInput's definition changes across the RN v0.61 -> v0.62 - // upgrade; we'll handle that change after the upgrade. + // See point 2 at + // https://github.com/facebook/react-native/issues/28459#issuecomment-609957836 // $FlowFixMe - ...$PropertyType, + ...$PropertyType, placeholder: LocalizableText, onChangeText?: (text: string) => void, textInputRef?: React$Ref, diff --git a/src/common/InputWithClearButton.js b/src/common/InputWithClearButton.js index e5b332964d0..87bdeec86b4 100644 --- a/src/common/InputWithClearButton.js +++ b/src/common/InputWithClearButton.js @@ -32,10 +32,7 @@ export default class InputWithClearButton extends PureComponent { canBeCleared: false, text: '', }; - // TextInput's definition changes across the RN v0.61 -> v0.62 - // upgrade; we'll handle that change after the upgrade. - // $FlowFixMe - textInputRef = React.createRef(); + textInputRef = React.createRef(); handleChangeText = (text: string) => { this.setState({ @@ -50,6 +47,9 @@ export default class InputWithClearButton extends PureComponent { handleClear = () => { this.handleChangeText(''); if (this.textInputRef.current) { + // See point 2 at + // https://github.com/facebook/react-native/issues/28459#issuecomment-609957836 + // $FlowFixMe this.textInputRef.current.clear(); } }; diff --git a/src/common/SmartUrlInput.js b/src/common/SmartUrlInput.js index 7ea87705070..67f8461adc5 100644 --- a/src/common/SmartUrlInput.js +++ b/src/common/SmartUrlInput.js @@ -66,15 +66,15 @@ export default class SmartUrlInput extends PureComponent { state = { value: '', }; - // TextInput's definition changes across the RN v0.61 -> v0.62 - // upgrade; we'll handle that change after the upgrade. - // $FlowFixMe - textInputRef = React.createRef(); + textInputRef = React.createRef(); focusListener: void | NavigationEventSubscription; componentDidMount() { this.focusListener = this.props.navigation.addListener('didFocus', () => { if (this.textInputRef.current) { + // See point 2 at + // https://github.com/facebook/react-native/issues/28459#issuecomment-609957836 + // $FlowFixMe this.textInputRef.current.focus(); } }); @@ -96,9 +96,13 @@ export default class SmartUrlInput extends PureComponent { urlPress = () => { const { textInputRef } = this; if (textInputRef.current) { + // See point 2 at + // https://github.com/facebook/react-native/issues/28459#issuecomment-609957836 + // $FlowFixMe textInputRef.current.blur(); setTimeout(() => { if (textInputRef.current) { + // $FlowFixMe - same as above textInputRef.current.focus(); } }, 100); diff --git a/src/compose/ComposeBox.js b/src/compose/ComposeBox.js index c306800fc13..b55867fa23e 100644 --- a/src/compose/ComposeBox.js +++ b/src/compose/ComposeBox.js @@ -105,16 +105,16 @@ function randomInt(min, max) { return Math.floor(Math.random() * (max - min + 1)) + min; } -// TextInput's definition changes across the RN v0.61 -> v0.62 -// upgrade; we'll handle that change after the upgrade. -// $FlowFixMe -export const updateTextInput = (textInput: TextInput | null, text: string): void => { +export const updateTextInput = (textInput: typeof TextInput | null, text: string): void => { if (textInput === null) { // Depending on the lifecycle events this function is called from, // this might not be set yet. return; } + // See point 2 at + // https://github.com/facebook/react-native/issues/28459#issuecomment-609957836 + // $FlowFixMe textInput.setNativeProps({ text }); if (text.length === 0 && TextInputReset) { @@ -128,12 +128,8 @@ class ComposeBox extends PureComponent { static contextType = ThemeContext; context: ThemeData; - // TextInput's definition changes across the RN v0.61 -> v0.62 - // upgrade; we'll remove these fixmes after we take that upgrade. - // $FlowFixMe - messageInputRef = React.createRef(); - // $FlowFixMe - topicInputRef = React.createRef(); + messageInputRef = React.createRef(); + topicInputRef = React.createRef(); // TODO: Type-check this, once we've adjusted our `react-redux` // wrapper to do the right thing. It should be @@ -344,6 +340,9 @@ class ComposeBox extends PureComponent { } completeEditMessage(); if (this.messageInputRef.current !== null) { + // See point 2 at + // https://github.com/facebook/react-native/issues/28459#issuecomment-609957836 + // $FlowFixMe this.messageInputRef.current.blur(); } }; @@ -358,6 +357,9 @@ class ComposeBox extends PureComponent { this.setMessageInputValue(message); this.setTopicInputValue(topic); if (this.messageInputRef.current !== null) { + // See point 2 at + // https://github.com/facebook/react-native/issues/28459#issuecomment-609957836 + // $FlowFixMe this.messageInputRef.current.focus(); } }