import Avatar from 'flavours/glitch/components/avatar';
import DisplayName from 'flavours/glitch/components/display_name';
import Permalink from 'flavours/glitch/components/permalink';
+import IconButton from 'flavours/glitch/components/icon_button';
import Button from 'flavours/glitch/components/button';
import { FormattedMessage, injectIntl, defineMessages } from 'react-intl';
import { autoPlayGif, me, unfollowModal } from 'flavours/glitch/util/initial_state';
unmute: { id: 'account.unmute_short', defaultMessage: 'Unmute' },
unfollowConfirm: { id: 'confirmations.unfollow.confirm', defaultMessage: 'Unfollow' },
edit_profile: { id: 'account.edit_profile', defaultMessage: 'Edit profile' },
+ dismissSuggestion: { id: 'suggestions.dismiss', defaultMessage: 'Dismiss suggestion' },
});
const makeMapStateToProps = () => {
onFollow: PropTypes.func.isRequired,
onBlock: PropTypes.func.isRequired,
onMute: PropTypes.func.isRequired,
+ onDismiss: PropTypes.func,
};
handleMouseEnter = ({ currentTarget }) => {
window.open('/settings/profile', '_blank');
}
+ handleDismiss = (e) => {
+ const { account, onDismiss } = this.props;
+ onDismiss(account.get('id'));
+
+ e.preventDefault();
+ e.stopPropagation();
+ }
+
render() {
const { account, intl } = this.props;
<div className='account-card'>
<Permalink href={account.get('url')} to={`/@${account.get('acct')}`} className='account-card__permalink'>
<div className='account-card__header'>
+ {this.props.onDismiss && <IconButton className='media-modal__close' title={intl.formatMessage(messages.dismissSuggestion)} icon='times' onClick={this.handleDismiss} size={20} />}
+
<img
src={
autoPlayGif ? account.get('header') : account.get('header_static')
import AccountCard from 'flavours/glitch/features/directory/components/account_card';
import LoadingIndicator from 'flavours/glitch/components/loading_indicator';
import { connect } from 'react-redux';
-import { fetchSuggestions } from 'flavours/glitch/actions/suggestions';
+import { fetchSuggestions, dismissSuggestion } from 'flavours/glitch/actions/suggestions';
const mapStateToProps = state => ({
suggestions: state.getIn(['suggestions', 'items']),
dispatch(fetchSuggestions(true));
}
+ handleDismiss = (accountId) => {
+ const { dispatch } = this.props;
+ dispatch(dismissSuggestion(accountId));
+ }
+
render () {
const { isLoading, suggestions } = this.props;
return (
<div className='explore__suggestions'>
{isLoading ? <LoadingIndicator /> : suggestions.map(suggestion => (
- <AccountCard key={suggestion.get('account')} id={suggestion.get('account')} />
+ <AccountCard key={suggestion.get('account')} id={suggestion.get('account')} onDismiss={suggestion.get('source') === 'past_interactions' ? this.handleDismiss : null} />
))}
</div>
);