diff --git a/src/pages/home/report/ReportActionsView.js b/src/pages/home/report/ReportActionsView.js index e60546bbcb40c..68ea17082fc4e 100755 --- a/src/pages/home/report/ReportActionsView.js +++ b/src/pages/home/report/ReportActionsView.js @@ -67,6 +67,7 @@ class ReportActionsView extends React.Component { super(props); this.didLayout = false; + this.didSubscribeToReportTypingEvents = false; this.unsubscribeVisibilityListener = null; @@ -100,7 +101,6 @@ class ReportActionsView extends React.Component { this.setState({newMarkerSequenceNumber: 0}); }); - Report.subscribeToReportTypingEvents(this.props.report.reportID); this.keyboardEvent = Keyboard.addListener('keyboardDidShow', () => { if (!ReportActionComposeFocusManager.isFocused()) { return; @@ -234,6 +234,17 @@ class ReportActionsView extends React.Component { if (didManuallyMarkReportAsUnread) { this.setState({newMarkerSequenceNumber: this.props.report.lastReadSequenceNumber + 1}); } + + // Ensures subscription event succeeds when the report/workspace room is created optimistically. + // Check if the optimistic `OpenReport` or `AddWorkspaceRoom` has succeeded by confirming + // any `pendingFields.createChat` or `pendingFields.addWorkspaceRoom` fields are set to null. + // Existing reports created will have empty fields for `pendingFields`. + const didCreateReportSuccessfully = !this.props.report.pendingFields + || (!this.props.report.pendingFields.addWorkspaceRoom && !this.props.report.pendingFields.createChat); + if (!this.didSubscribeToReportTypingEvents && didCreateReportSuccessfully) { + Report.subscribeToReportTypingEvents(this.props.report.reportID); + this.didSubscribeToReportTypingEvents = true; + } } componentWillUnmount() {