diff --git a/src/common/Input.js b/src/common/Input.js index 1d145514f3e..d3c51acdcc5 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. + // Should be fixed in RN v0.63 (#4245); see + // https://github.com/zulip/zulip-mobile/issues/4245#issuecomment-695104351. // $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..79a5a38904e 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) { + // Should be fixed in RN v0.63 (#4245); see + // https://github.com/zulip/zulip-mobile/issues/4245#issuecomment-695104351. + // $FlowFixMe this.textInputRef.current.clear(); } }; diff --git a/src/common/SmartUrlInput.js b/src/common/SmartUrlInput.js index 7ea87705070..95650656da2 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) { + // Should be fixed in RN v0.63 (#4245); see + // https://github.com/zulip/zulip-mobile/issues/4245#issuecomment-695104351. + // $FlowFixMe this.textInputRef.current.focus(); } }); @@ -96,9 +96,13 @@ export default class SmartUrlInput extends PureComponent { urlPress = () => { const { textInputRef } = this; if (textInputRef.current) { + // Should be fixed in RN v0.63 (#4245); see + // https://github.com/zulip/zulip-mobile/issues/4245#issuecomment-695104351. + // $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 469bf1d9f1a..63321aa8b05 100644 --- a/src/compose/ComposeBox.js +++ b/src/compose/ComposeBox.js @@ -106,16 +106,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; } + // Should be fixed in RN v0.63 (#4245); see + // https://github.com/zulip/zulip-mobile/issues/4245#issuecomment-695104351. + // $FlowFixMe textInput.setNativeProps({ text }); if (text.length === 0 && TextInputReset) { @@ -129,12 +129,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 @@ -350,6 +346,9 @@ class ComposeBox extends PureComponent { } completeEditMessage(); if (this.messageInputRef.current !== null) { + // Should be fixed in RN v0.63 (#4245); see + // https://github.com/zulip/zulip-mobile/issues/4245#issuecomment-695104351. + // $FlowFixMe this.messageInputRef.current.blur(); } }; @@ -364,6 +363,9 @@ class ComposeBox extends PureComponent { this.setMessageInputValue(message); this.setTopicInputValue(topic); if (this.messageInputRef.current !== null) { + // Should be fixed in RN v0.63 (#4245); see + // https://github.com/zulip/zulip-mobile/issues/4245#issuecomment-695104351. + // $FlowFixMe this.messageInputRef.current.focus(); } }