diff --git a/app/javascript/flavours/glitch/components/account.js b/app/javascript/flavours/glitch/components/account.js
index df17f18970..80f20b8adf 100644
--- a/app/javascript/flavours/glitch/components/account.js
+++ b/app/javascript/flavours/glitch/components/account.js
@@ -99,7 +99,7 @@ export default class Account extends ImmutablePureComponent {
{hidingNotificationsButton}
);
- } else if (!account.get('moved')) {
+ } else if (!account.get('moved') || following) {
buttons = ;
}
}
diff --git a/app/javascript/flavours/glitch/features/account/components/header.js b/app/javascript/flavours/glitch/features/account/components/header.js
index f346bd108b..a208f1a8e5 100644
--- a/app/javascript/flavours/glitch/features/account/components/header.js
+++ b/app/javascript/flavours/glitch/features/account/components/header.js
@@ -10,6 +10,7 @@ import IconButton from 'flavours/glitch/components/icon_button';
import emojify from 'flavours/glitch/util/emoji';
import { me } from 'flavours/glitch/util/initial_state';
import { processBio } from 'flavours/glitch/util/bio_metadata';
+import classNames from 'classnames';
const messages = defineMessages({
unfollow: { id: 'account.unfollow', defaultMessage: 'Unfollow' },
@@ -75,11 +76,15 @@ export default class Header extends ImmutablePureComponent {
}
}
+ if (account.get('moved') && !account.getIn(['relationship', 'following'])) {
+ actionBtn = '';
+ }
+
const { text, metadata } = processBio(account.get('note'));
return (
-
+
+ {account.get('moved') && }
+
{
+ if (e.button === 0) {
+ e.preventDefault();
+ this.context.router.history.push(`/accounts/${this.props.to.get('id')}`);
+ }
+
+ e.stopPropagation();
+ }
+
+ render () {
+ const { from, to } = this.props;
+ const displayNameHtml = { __html: from.get('display_name_html') };
+
+ return (
+
+ );
+ }
+
+}
diff --git a/app/javascript/flavours/glitch/reducers/accounts.js b/app/javascript/flavours/glitch/reducers/accounts.js
index 9ca05881a3..1c55813473 100644
--- a/app/javascript/flavours/glitch/reducers/accounts.js
+++ b/app/javascript/flavours/glitch/reducers/accounts.js
@@ -63,6 +63,11 @@ const normalizeAccount = (state, account) => {
account.display_name_html = emojify(escapeTextContentForBrowser(displayName));
account.note_emojified = emojify(account.note);
+ if (account.moved) {
+ state = normalizeAccount(state, account.moved);
+ account.moved = account.moved.id;
+ }
+
return state.set(account.id, fromJS(account));
};
diff --git a/app/javascript/flavours/glitch/selectors/index.js b/app/javascript/flavours/glitch/selectors/index.js
index d26d1b727f..e47ec5183c 100644
--- a/app/javascript/flavours/glitch/selectors/index.js
+++ b/app/javascript/flavours/glitch/selectors/index.js
@@ -4,14 +4,18 @@ import { List as ImmutableList } from 'immutable';
const getAccountBase = (state, id) => state.getIn(['accounts', id], null);
const getAccountCounters = (state, id) => state.getIn(['accounts_counters', id], null);
const getAccountRelationship = (state, id) => state.getIn(['relationships', id], null);
+const getAccountMoved = (state, id) => state.getIn(['accounts', state.getIn(['accounts', id, 'moved'])]);
export const makeGetAccount = () => {
- return createSelector([getAccountBase, getAccountCounters, getAccountRelationship], (base, counters, relationship) => {
+ return createSelector([getAccountBase, getAccountCounters, getAccountRelationship, getAccountMoved], (base, counters, relationship, moved) => {
if (base === null) {
return null;
}
- return base.merge(counters).set('relationship', relationship);
+ return base.merge(counters).withMutations(map => {
+ map.set('relationship', relationship);
+ map.set('moved', moved);
+ });
});
};