{"version":3,"sources":["webpack:///./app/javascript/mastodon/features/account_timeline/index.jsx"],"names":["emptyList","ImmutableList","RemoteHint","_ref2","url","_jsx","TimelineHint","resource","FormattedMessage","id","defaultMessage","AccountTimeline","ImmutablePureComponent","constructor","arguments","_defineProperty","maxId","this","props","dispatch","expandAccountTimeline","accountId","withReplies","tagged","params","_load","fetchAccount","expandAccountFeaturedTimeline","fetchFeaturedTags","me","connectTimeline","concat","componentDidMount","acct","lookupAccount","componentDidUpdate","prevProps","disconnectTimeline","timeline","componentWillUnmount","render","statusIds","featuredStatusIds","isLoading","hasMore","blockedBy","suspended","isAccount","hidden","multiColumn","remote","remoteUrl","isEmpty","Column","LoadingIndicator","BundleColumnError","errorType","emptyMessage","forceEmptyState","LimitedAccountHint","remoteMessage","ColumnBackButton","StatusList","prepend","HeaderContainer","hideTabs","alwaysPrepend","append","scrollKey","onLoadMore","handleLoadMore","bindToDocument","timelineId","withCounters","PropTypes","shape","string","isRequired","func","ImmutablePropTypes","list","bool","connect","mapStateToProps","state","_ref","getIn","normalizeForLookup","path","getAccountHidden"],"mappings":"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","file":"js/features/account_timeline-63b40727cc5e070103a3.chunk.js","sourcesContent":["import PropTypes from 'prop-types';\n\nimport { FormattedMessage } from 'react-intl';\n\nimport { List as ImmutableList } from 'immutable';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport ImmutablePureComponent from 'react-immutable-pure-component';\nimport { connect } from 'react-redux';\n\nimport { TimelineHint } from 'mastodon/components/timeline_hint';\nimport BundleColumnError from 'mastodon/features/ui/components/bundle_column_error';\nimport { me } from 'mastodon/initial_state';\nimport { normalizeForLookup } from 'mastodon/reducers/accounts_map';\nimport { getAccountHidden } from 'mastodon/selectors';\n\nimport { lookupAccount, fetchAccount } from '../../actions/accounts';\nimport { fetchFeaturedTags } from '../../actions/featured_tags';\nimport { expandAccountFeaturedTimeline, expandAccountTimeline, connectTimeline, disconnectTimeline } from '../../actions/timelines';\nimport { ColumnBackButton } from '../../components/column_back_button';\nimport { LoadingIndicator } from '../../components/loading_indicator';\nimport StatusList from '../../components/status_list';\nimport Column from '../ui/components/column';\n\nimport { LimitedAccountHint } from './components/limited_account_hint';\nimport HeaderContainer from './containers/header_container';\n\nconst emptyList = ImmutableList();\n\nconst mapStateToProps = (state, { params: { acct, id, tagged }, withReplies = false }) => {\n  const accountId = id || state.getIn(['accounts_map', normalizeForLookup(acct)]);\n\n  if (accountId === null) {\n    return {\n      isLoading: false,\n      isAccount: false,\n      statusIds: emptyList,\n    };\n  } else if (!accountId) {\n    return {\n      isLoading: true,\n      statusIds: emptyList,\n    };\n  }\n\n  const path = withReplies ? `${accountId}:with_replies` : `${accountId}${tagged ? `:${tagged}` : ''}`;\n\n  return {\n    accountId,\n    remote: !!(state.getIn(['accounts', accountId, 'acct']) !== state.getIn(['accounts', accountId, 'username'])),\n    remoteUrl: state.getIn(['accounts', accountId, 'url']),\n    isAccount: !!state.getIn(['accounts', accountId]),\n    statusIds: state.getIn(['timelines', `account:${path}`, 'items'], emptyList),\n    featuredStatusIds: withReplies ? ImmutableList() : state.getIn(['timelines', `account:${accountId}:pinned${tagged ? `:${tagged}` : ''}`, 'items'], emptyList),\n    isLoading: state.getIn(['timelines', `account:${path}`, 'isLoading']),\n    hasMore: state.getIn(['timelines', `account:${path}`, 'hasMore']),\n    suspended: state.getIn(['accounts', accountId, 'suspended'], false),\n    hidden: getAccountHidden(state, accountId),\n    blockedBy: state.getIn(['relationships', accountId, 'blocked_by'], false),\n  };\n};\n\nconst RemoteHint = ({ url }) => (\n  <TimelineHint url={url} resource={<FormattedMessage id='timeline_hint.resources.statuses' defaultMessage='Older posts' />} />\n);\n\nRemoteHint.propTypes = {\n  url: PropTypes.string.isRequired,\n};\n\nclass AccountTimeline extends ImmutablePureComponent {\n\n  static propTypes = {\n    params: PropTypes.shape({\n      acct: PropTypes.string,\n      id: PropTypes.string,\n      tagged: PropTypes.string,\n    }).isRequired,\n    accountId: PropTypes.string,\n    dispatch: PropTypes.func.isRequired,\n    statusIds: ImmutablePropTypes.list,\n    featuredStatusIds: ImmutablePropTypes.list,\n    isLoading: PropTypes.bool,\n    hasMore: PropTypes.bool,\n    withReplies: PropTypes.bool,\n    blockedBy: PropTypes.bool,\n    isAccount: PropTypes.bool,\n    suspended: PropTypes.bool,\n    hidden: PropTypes.bool,\n    remote: PropTypes.bool,\n    remoteUrl: PropTypes.string,\n    multiColumn: PropTypes.bool,\n  };\n\n  _load () {\n    const { accountId, withReplies, params: { tagged }, dispatch } = this.props;\n\n    dispatch(fetchAccount(accountId));\n\n    if (!withReplies) {\n      dispatch(expandAccountFeaturedTimeline(accountId, { tagged }));\n    }\n\n    dispatch(fetchFeaturedTags(accountId));\n    dispatch(expandAccountTimeline(accountId, { withReplies, tagged }));\n\n    if (accountId === me) {\n      dispatch(connectTimeline(`account:${me}`));\n    }\n  }\n\n  componentDidMount () {\n    const { params: { acct }, accountId, dispatch } = this.props;\n\n    if (accountId) {\n      this._load();\n    } else {\n      dispatch(lookupAccount(acct));\n    }\n  }\n\n  componentDidUpdate (prevProps) {\n    const { params: { acct, tagged }, accountId, withReplies, dispatch } = this.props;\n\n    if (prevProps.accountId !== accountId && accountId) {\n      this._load();\n    } else if (prevProps.params.acct !== acct) {\n      dispatch(lookupAccount(acct));\n    } else if (prevProps.params.tagged !== tagged) {\n      if (!withReplies) {\n        dispatch(expandAccountFeaturedTimeline(accountId, { tagged }));\n      }\n      dispatch(expandAccountTimeline(accountId, { withReplies, tagged }));\n    }\n\n    if (prevProps.accountId === me && accountId !== me) {\n      dispatch(disconnectTimeline({ timeline: `account:${me}` }));\n    }\n  }\n\n  componentWillUnmount () {\n    const { dispatch, accountId } = this.props;\n\n    if (accountId === me) {\n      dispatch(disconnectTimeline({ timeline: `account:${me}` }));\n    }\n  }\n\n  handleLoadMore = maxId => {\n    this.props.dispatch(expandAccountTimeline(this.props.accountId, { maxId, withReplies: this.props.withReplies, tagged: this.props.params.tagged }));\n  };\n\n  render () {\n    const { accountId, statusIds, featuredStatusIds, isLoading, hasMore, blockedBy, suspended, isAccount, hidden, multiColumn, remote, remoteUrl } = this.props;\n\n    if (isLoading && statusIds.isEmpty()) {\n      return (\n        <Column>\n          <LoadingIndicator />\n        </Column>\n      );\n    } else if (!isLoading && !isAccount) {\n      return (\n        <BundleColumnError multiColumn={multiColumn} errorType='routing' />\n      );\n    }\n\n    let emptyMessage;\n\n    const forceEmptyState = suspended || blockedBy || hidden;\n\n    if (suspended) {\n      emptyMessage = <FormattedMessage id='empty_column.account_suspended' defaultMessage='Account suspended' />;\n    } else if (hidden) {\n      emptyMessage = <LimitedAccountHint accountId={accountId} />;\n    } else if (blockedBy) {\n      emptyMessage = <FormattedMessage id='empty_column.account_unavailable' defaultMessage='Profile unavailable' />;\n    } else if (remote && statusIds.isEmpty()) {\n      emptyMessage = <RemoteHint url={remoteUrl} />;\n    } else {\n      emptyMessage = <FormattedMessage id='empty_column.account_timeline' defaultMessage='No posts found' />;\n    }\n\n    const remoteMessage = remote ? <RemoteHint url={remoteUrl} /> : null;\n\n    return (\n      <Column>\n        <ColumnBackButton />\n\n        <StatusList\n          prepend={<HeaderContainer accountId={this.props.accountId} hideTabs={forceEmptyState} tagged={this.props.params.tagged} />}\n          alwaysPrepend\n          append={remoteMessage}\n          scrollKey='account_timeline'\n          statusIds={forceEmptyState ? emptyList : statusIds}\n          featuredStatusIds={featuredStatusIds}\n          isLoading={isLoading}\n          hasMore={!forceEmptyState && hasMore}\n          onLoadMore={this.handleLoadMore}\n          emptyMessage={emptyMessage}\n          bindToDocument={!multiColumn}\n          timelineId='account'\n          withCounters\n        />\n      </Column>\n    );\n  }\n\n}\n\nexport default connect(mapStateToProps)(AccountTimeline);\n"],"sourceRoot":""}