gab-social/app/javascript/gabsocial/features/notifications/components/notification/notification-alt.js

155 lines
5.0 KiB
JavaScript
Raw Normal View History

2020-03-04 03:45:16 +00:00
import { NavLink } from 'react-router-dom'
import { injectIntl, defineMessages } from 'react-intl'
2020-03-02 22:26:25 +00:00
import ImmutablePureComponent from 'react-immutable-pure-component'
import { HotKeys } from 'react-hotkeys'
import ImmutablePropTypes from 'react-immutable-proptypes'
import StatusContainer from '../../../../containers/status_container'
import AccountContainer from '../../../../containers/account_container'
2020-03-04 03:45:16 +00:00
import Avatar from '../../../../components/avatar'
2020-03-02 22:26:25 +00:00
import Icon from '../../../../components/icon'
2020-03-04 03:45:16 +00:00
import Text from '../../../../components/text'
import DisplayName from '../../../../components/display_name'
const messages = defineMessages({
})
2020-03-02 22:26:25 +00:00
const notificationForScreenReader = (intl, message, timestamp) => {
const output = [message]
output.push(intl.formatDate(timestamp, { hour: '2-digit', minute: '2-digit', month: 'short', day: 'numeric' }))
return output.join(', ')
}
export default
@injectIntl
class Notification extends ImmutablePureComponent {
static contextTypes = {
router: PropTypes.object,
}
static propTypes = {
status: ImmutablePropTypes.map,
intl: PropTypes.object.isRequired,
notificationType: PropTypes.string.isRequired,
accounts: ImmutablePropTypes.list,
}
renderFavorite = () => {
const { status, notificationType, accounts } = this.props
2020-03-04 03:45:16 +00:00
return (
2020-03-11 23:56:18 +00:00
<div className={[_s.default, _s.px10].join(' ')}>
2020-03-04 03:45:16 +00:00
<div className={[_s.default, _s.borderBottom1PX, _s.borderColorSecondary].join(' ')}>
2020-03-11 23:56:18 +00:00
<div className={[_s.default, _s.flexRow, _s.my10, _s.py10, _s.px10].join(' ')}>
2020-03-04 03:45:16 +00:00
2020-03-11 23:56:18 +00:00
<Icon id='apps' height='20px' width='20px' className={_s.mt5} />
2020-03-04 03:45:16 +00:00
2020-03-11 23:56:18 +00:00
<div className={[_s.default, _s.ml15].join(' ')}>
2020-03-04 03:45:16 +00:00
<div className={[_s.default, _s.flexRow].join(' ')}>
{
accounts.slice(0, 6).map((account, i) => (
<NavLink
to={`/${account.get('acct')}`}
key={`fav-avatar-${i}`}
2020-03-11 23:56:18 +00:00
className={_s.mr5}
2020-03-04 03:45:16 +00:00
>
<Avatar size='30' account={account} />
</NavLink>
))
}
</div>
2020-03-11 23:56:18 +00:00
<div className={[_s.default, _s.pt10].join(' ')}>
2020-03-04 03:45:16 +00:00
<div className={[_s.default, _s.flexRow].join(' ')}>
<div className={_s.text}>
{
accounts.slice(0, 1).map((account, i) => (
<DisplayName key={i} account={account} noUsername />
))
}
</div>
<Text size='medium'>
&nbsp;and 3 others favorited your gab
</Text>
</div>
</div>
2020-03-11 23:56:18 +00:00
<div className={[_s.default, _s.pt10].join(' ')}>
2020-03-04 03:45:16 +00:00
<Text color='secondary' size='medium'>
post this at 1-14-2020 12:15pm (edited)
</Text>
</div>
</div>
</div>
</div>
</div>
)
2020-03-02 22:26:25 +00:00
}
render() {
2020-03-04 03:45:16 +00:00
const {
status,
notificationType,
accounts,
intl
} = this.props
// const linkTo = '/admin/posts/123/reblogs' // etc.
return (
<NavLink
to={`/`}
2020-03-11 23:56:18 +00:00
className={[_s.default, _s.px10, _s.backgroundSubtle_onHover].join(' ')}
2020-03-04 03:45:16 +00:00
>
<div className={[_s.default, _s.borderBottom1PX, _s.borderColorSecondary].join(' ')}>
2020-03-11 23:56:18 +00:00
<div className={[_s.default, _s.flexRow, _s.my10, _s.py10, _s.px10].join(' ')}>
2020-03-04 03:45:16 +00:00
2020-03-11 23:56:18 +00:00
<Icon id='apps' height='20px' width='20px' className={_s.mt5} />
2020-03-04 03:45:16 +00:00
2020-03-11 23:56:18 +00:00
<div className={[_s.default, _s.ml15].join(' ')}>
2020-03-04 03:45:16 +00:00
<div className={[_s.default, _s.flexRow].join(' ')}>
{
accounts.slice(0, 6).map((account, i) => (
<NavLink
to={`/${account.get('acct')}`}
key={`fav-avatar-${i}`}
2020-03-11 23:56:18 +00:00
className={_s.mr5}
2020-03-04 03:45:16 +00:00
>
<Avatar size='30' account={account} />
</NavLink>
))
}
</div>
2020-03-11 23:56:18 +00:00
<div className={[_s.default, _s.pt10].join(' ')}>
2020-03-04 03:45:16 +00:00
<div className={[_s.default, _s.flexRow].join(' ')}>
<div className={_s.text}>
{
accounts.slice(0, 1).map((account, i) => (
<DisplayName key={i} account={account} noUsername />
))
}
</div>
<Text size='medium'>
&nbsp;and 3 others favorited your gab
</Text>
</div>
</div>
2020-03-02 22:26:25 +00:00
2020-03-11 23:56:18 +00:00
<div className={[_s.default, _s.pt10].join(' ')}>
2020-03-04 03:45:16 +00:00
<Text color='secondary' size='medium'>
post this at 1-14-2020 12:15pm (edited)
</Text>
</div>
</div>
2020-03-02 22:26:25 +00:00
2020-03-04 03:45:16 +00:00
</div>
</div>
</NavLink>
)
2020-03-02 22:26:25 +00:00
}
}