Fixed issue with loading context, comments from Status feature

• Fixed:
- issue with loading context, comments from Status feature by loading in feature not child

• Added:
- check for if ancestor status exists in StatusContainer
This commit is contained in:
mgabdev 2020-07-21 22:27:48 -05:00
parent 5fcc09acad
commit d6b8948191
3 changed files with 26 additions and 3 deletions

View File

@ -173,7 +173,7 @@ class Status extends ImmutablePureComponent {
// Compensate height changes // Compensate height changes
componentDidUpdate(prevProps, prevState, snapshot) { componentDidUpdate(prevProps, prevState, snapshot) {
// timeline lazy loading comments // timeline lazy loading comments
if (!prevState.loadedComments && this.state.loadedComments && this.props.status && !this.props.isChild) { if (!prevState.loadedComments && this.state.loadedComments && this.props.status && !this.props.isChild && this.props.contextType !== 'feature') {
const commentCount = this.props.status.get('replies_count') const commentCount = this.props.status.get('replies_count')
if (this.props.isComment && !this.props.ancestorStatus) { if (this.props.isComment && !this.props.ancestorStatus) {
this.props.onFetchContext(this.props.status.get('id')) this.props.onFetchContext(this.props.status.get('id'))

View File

@ -152,7 +152,7 @@ const makeMapStateToProps = () => {
ancestorStatus = getStatus(state, { ancestorStatus = getStatus(state, {
id: ancestorStatusId, id: ancestorStatusId,
}) })
descendantsIds = getDescendants(state, ancestorStatus, statusId) if (!!ancestorStatus) descendantsIds = getDescendants(state, ancestorStatus, statusId)
} }
} }

View File

@ -1,6 +1,10 @@
import ImmutablePropTypes from 'react-immutable-proptypes' import ImmutablePropTypes from 'react-immutable-proptypes'
import ImmutablePureComponent from 'react-immutable-pure-component' import ImmutablePureComponent from 'react-immutable-pure-component'
import { fetchStatus } from '../actions/statuses' import {
fetchStatus,
fetchComments,
fetchContext,
} from '../actions/statuses'
import StatusContainer from '../containers/status_container' import StatusContainer from '../containers/status_container'
import ColumnIndicator from '../components/column_indicator' import ColumnIndicator from '../components/column_indicator'
@ -14,6 +18,8 @@ const mapStateToProps = (state, props) => {
const mapDispatchToProps = (dispatch) => ({ const mapDispatchToProps = (dispatch) => ({
onFetchStatus: (id) => dispatch(fetchStatus(id)), onFetchStatus: (id) => dispatch(fetchStatus(id)),
onFetchContext: (id) => dispatch(fetchContext(id)),
onFetchComments: (id) => dispatch(fetchComments(id)),
}) })
export default export default
@ -21,7 +27,9 @@ export default
class Status extends ImmutablePureComponent { class Status extends ImmutablePureComponent {
static propTypes = { static propTypes = {
onFetchContext: PropTypes.func.isRequired,
onFetchStatus: PropTypes.func.isRequired, onFetchStatus: PropTypes.func.isRequired,
onFetchComments: PropTypes.func.isRequired,
params: PropTypes.object, params: PropTypes.object,
status: ImmutablePropTypes.map, status: ImmutablePropTypes.map,
} }
@ -36,6 +44,21 @@ class Status extends ImmutablePureComponent {
this.props.onFetchStatus(statusId) this.props.onFetchStatus(statusId)
} }
componentDidUpdate(prevProps) {
const { status } = this.props
if (prevProps.status !== status && !!status) {
const isComment = !!status.get('in_reply_to_account_id')
const hasComments = status.get('replies_count') > 0
if (isComment) {
this.props.onFetchContext(status.get('id'))
} else if (!isComment && hasComments) {
this.props.onFetchComments(status.get('id'))
}
}
}
render() { render() {
const { status } = this.props const { status } = this.props