aboutsummaryrefslogtreecommitdiff
path: root/app/javascript/mastodon/features/account_timeline/index.js
diff options
context:
space:
mode:
authorEugen Rochko <eugen@zeonfederated.com>2019-04-07 04:59:13 +0200
committerGitHub <noreply@github.com>2019-04-07 04:59:13 +0200
commit67b3b62b98b89f24097a2757e42bc94f1bce123c (patch)
tree4d2b100537676e349c8d9863e6ae600cf7ac7219 /app/javascript/mastodon/features/account_timeline/index.js
parent0e8819f0e8729cda54231ed7a76dd10eb2083bdf (diff)
downloadmastodon-67b3b62b98b89f24097a2757e42bc94f1bce123c.tar
mastodon-67b3b62b98b89f24097a2757e42bc94f1bce123c.tar.gz
mastodon-67b3b62b98b89f24097a2757e42bc94f1bce123c.tar.bz2
mastodon-67b3b62b98b89f24097a2757e42bc94f1bce123c.zip
Improve blocked view of profiles (#10491)
* Revert "Fix filtering of favourited_by, reblogged_by, followers and following (#10447)" This reverts commit 120544067fcca4bf6e71ba1ffb276c451c17c656. * Revert "Hide blocking accounts from blocked users (#10442)" This reverts commit 62bafa20a112ccdddaedb25723fc819dbbcd8e9a. * Improve blocked view of profiles - Change "You are blocked" to "Profile unavailable" - Hide following/followers in API when blocked - Disable follow button and show "Profile unavailable" on public profile as well
Diffstat (limited to 'app/javascript/mastodon/features/account_timeline/index.js')
-rw-r--r--app/javascript/mastodon/features/account_timeline/index.js22
1 files changed, 16 insertions, 6 deletions
diff --git a/app/javascript/mastodon/features/account_timeline/index.js b/app/javascript/mastodon/features/account_timeline/index.js
index 883f40d77..a01f1dd9a 100644
--- a/app/javascript/mastodon/features/account_timeline/index.js
+++ b/app/javascript/mastodon/features/account_timeline/index.js
@@ -14,14 +14,17 @@ import ImmutablePureComponent from 'react-immutable-pure-component';
import { FormattedMessage } from 'react-intl';
import { fetchAccountIdentityProofs } from '../../actions/identity_proofs';
+const emptyList = ImmutableList();
+
const mapStateToProps = (state, { params: { accountId }, withReplies = false }) => {
const path = withReplies ? `${accountId}:with_replies` : accountId;
return {
- statusIds: state.getIn(['timelines', `account:${path}`, 'items'], ImmutableList()),
- featuredStatusIds: withReplies ? ImmutableList() : state.getIn(['timelines', `account:${accountId}:pinned`, 'items'], ImmutableList()),
+ statusIds: state.getIn(['timelines', `account:${path}`, 'items'], emptyList),
+ featuredStatusIds: withReplies ? ImmutableList() : state.getIn(['timelines', `account:${accountId}:pinned`, 'items'], emptyList),
isLoading: state.getIn(['timelines', `account:${path}`, 'isLoading']),
- hasMore: state.getIn(['timelines', `account:${path}`, 'hasMore']),
+ hasMore: state.getIn(['timelines', `account:${path}`, 'hasMore']),
+ blockedBy: state.getIn(['relationships', accountId, 'blocked_by'], false),
};
};
@@ -37,6 +40,7 @@ class AccountTimeline extends ImmutablePureComponent {
isLoading: PropTypes.bool,
hasMore: PropTypes.bool,
withReplies: PropTypes.bool,
+ blockedBy: PropTypes.bool,
};
componentWillMount () {
@@ -44,9 +48,11 @@ class AccountTimeline extends ImmutablePureComponent {
this.props.dispatch(fetchAccount(accountId));
this.props.dispatch(fetchAccountIdentityProofs(accountId));
+
if (!withReplies) {
this.props.dispatch(expandAccountFeaturedTimeline(accountId));
}
+
this.props.dispatch(expandAccountTimeline(accountId, { withReplies }));
}
@@ -54,9 +60,11 @@ class AccountTimeline extends ImmutablePureComponent {
if ((nextProps.params.accountId !== this.props.params.accountId && nextProps.params.accountId) || nextProps.withReplies !== this.props.withReplies) {
this.props.dispatch(fetchAccount(nextProps.params.accountId));
this.props.dispatch(fetchAccountIdentityProofs(nextProps.params.accountId));
+
if (!nextProps.withReplies) {
this.props.dispatch(expandAccountFeaturedTimeline(nextProps.params.accountId));
}
+
this.props.dispatch(expandAccountTimeline(nextProps.params.accountId, { withReplies: nextProps.params.withReplies }));
}
}
@@ -66,7 +74,7 @@ class AccountTimeline extends ImmutablePureComponent {
}
render () {
- const { shouldUpdateScroll, statusIds, featuredStatusIds, isLoading, hasMore } = this.props;
+ const { shouldUpdateScroll, statusIds, featuredStatusIds, isLoading, hasMore, blockedBy } = this.props;
if (!statusIds && isLoading) {
return (
@@ -76,6 +84,8 @@ class AccountTimeline extends ImmutablePureComponent {
);
}
+ const emptyMessage = blockedBy ? <FormattedMessage id='empty_column.account_unavailable' defaultMessage='Profile unavailable' /> : <FormattedMessage id='empty_column.account_timeline' defaultMessage='No toots here!' />;
+
return (
<Column>
<ColumnBackButton />
@@ -84,13 +94,13 @@ class AccountTimeline extends ImmutablePureComponent {
prepend={<HeaderContainer accountId={this.props.params.accountId} />}
alwaysPrepend
scrollKey='account_timeline'
- statusIds={statusIds}
+ statusIds={blockedBy ? emptyList : statusIds}
featuredStatusIds={featuredStatusIds}
isLoading={isLoading}
hasMore={hasMore}
onLoadMore={this.handleLoadMore}
shouldUpdateScroll={shouldUpdateScroll}
- emptyMessage={<FormattedMessage id='empty_column.account_timeline' defaultMessage='No toots here!' />}
+ emptyMessage={emptyMessage}
/>
</Column>
);