{"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","handleLoadMore","maxId","this","props","dispatch","expandAccountTimeline","accountId","withReplies","tagged","params","_load","fetchAccount","expandAccountFeaturedTimeline","fetchFeaturedTags","me","connectTimeline","componentDidMount","acct","lookupAccount","componentDidUpdate","prevProps","disconnectTimeline","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","bindToDocument","timelineId","propTypes","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-d88889047ccce976f8d5.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 } />\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(`account:${me}`));\n }\n }\n\n componentWillUnmount () {\n const { dispatch, accountId } = this.props;\n\n if (accountId === me) {\n dispatch(disconnectTimeline(`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 \n \n \n );\n } else if (!isLoading && !isAccount) {\n return (\n \n );\n }\n\n let emptyMessage;\n\n const forceEmptyState = suspended || blockedBy || hidden;\n\n if (suspended) {\n emptyMessage = ;\n } else if (hidden) {\n emptyMessage = ;\n } else if (blockedBy) {\n emptyMessage = ;\n } else if (remote && statusIds.isEmpty()) {\n emptyMessage = ;\n } else {\n emptyMessage = ;\n }\n\n const remoteMessage = remote ? : null;\n\n return (\n \n \n\n }\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 />\n \n );\n }\n\n}\n\nexport default connect(mapStateToProps)(AccountTimeline);\n"],"sourceRoot":""}