From 8cfcc528765af2ae79ddf02350ee2c8ab7e91fd9 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 2 Dec 2016 15:05:50 +0100 Subject: [PATCH] Make all account links into permalinks (open public except on left click) --- .../components/components/account.jsx | 6 ++--- .../components/components/permalink.jsx | 27 +++++++++++++++++++ .../compose/components/navigation_bar.jsx | 9 ++++--- .../notifications/components/notification.jsx | 4 +-- 4 files changed, 37 insertions(+), 9 deletions(-) create mode 100644 app/assets/javascripts/components/components/permalink.jsx diff --git a/app/assets/javascripts/components/components/account.jsx b/app/assets/javascripts/components/components/account.jsx index 558b38b42..d63ad646e 100644 --- a/app/assets/javascripts/components/components/account.jsx +++ b/app/assets/javascripts/components/components/account.jsx @@ -2,7 +2,7 @@ import PureRenderMixin from 'react-addons-pure-render-mixin'; import ImmutablePropTypes from 'react-immutable-proptypes'; import Avatar from './avatar'; import DisplayName from './display_name'; -import { Link } from 'react-router'; +import Permalink from './permalink'; import IconButton from './icon_button'; import { defineMessages, injectIntl } from 'react-intl'; @@ -78,10 +78,10 @@ const Account = React.createClass({ return (
- +
- +
{buttons} diff --git a/app/assets/javascripts/components/components/permalink.jsx b/app/assets/javascripts/components/components/permalink.jsx new file mode 100644 index 000000000..ae2fb0d29 --- /dev/null +++ b/app/assets/javascripts/components/components/permalink.jsx @@ -0,0 +1,27 @@ +const Permalink = React.createClass({ + + contextTypes: { + router: React.PropTypes.object + }, + + propTypes: { + href: React.PropTypes.string.isRequired, + to: React.PropTypes.string.isRequired + }, + + handleClick (e) { + if (e.button === 0) { + e.preventDefault(); + this.context.router.push(this.props.to); + } + }, + + render () { + const { href, children, ...other } = this.props; + + return {children}; + } + +}); + +export default Permalink; diff --git a/app/assets/javascripts/components/features/compose/components/navigation_bar.jsx b/app/assets/javascripts/components/features/compose/components/navigation_bar.jsx index 4ba6d2290..df94c30d2 100644 --- a/app/assets/javascripts/components/features/compose/components/navigation_bar.jsx +++ b/app/assets/javascripts/components/features/compose/components/navigation_bar.jsx @@ -1,10 +1,11 @@ -import PureRenderMixin from 'react-addons-pure-render-mixin'; +import PureRenderMixin from 'react-addons-pure-render-mixin'; import ImmutablePropTypes from 'react-immutable-proptypes'; -import Avatar from '../../../components/avatar'; +import Avatar from '../../../components/avatar'; import IconButton from '../../../components/icon_button'; import DisplayName from '../../../components/display_name'; -import { Link } from 'react-router'; +import Permalink from '../../../components/permalink'; import { FormattedMessage } from 'react-intl'; +import { Link } from 'react-router'; const NavigationBar = React.createClass({ propTypes: { @@ -16,7 +17,7 @@ const NavigationBar = React.createClass({ render () { return (
- +
{this.props.account.get('acct')} diff --git a/app/assets/javascripts/components/features/notifications/components/notification.jsx b/app/assets/javascripts/components/features/notifications/components/notification.jsx index a8208f02c..9f4cf9e4d 100644 --- a/app/assets/javascripts/components/features/notifications/components/notification.jsx +++ b/app/assets/javascripts/components/features/notifications/components/notification.jsx @@ -3,7 +3,7 @@ import ImmutablePropTypes from 'react-immutable-proptypes'; import StatusContainer from '../../../containers/status_container'; import AccountContainer from '../../../containers/account_container'; import { FormattedMessage } from 'react-intl'; -import { Link } from 'react-router'; +import Permalink from '../../../components/permalink'; const messageStyle = { marginLeft: '68px', @@ -83,7 +83,7 @@ const Notification = React.createClass({ const { notification } = this.props; const account = notification.get('account'); const displayName = account.get('display_name').length > 0 ? account.get('display_name') : account.get('username'); - const link = {displayName}; + const link = {displayName}; switch(notification.get('type')) { case 'follow':