155 lines
5.0 KiB
JavaScript
155 lines
5.0 KiB
JavaScript
import { NavLink } from 'react-router-dom'
|
|
import { injectIntl, defineMessages } from 'react-intl'
|
|
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'
|
|
import Avatar from '../../../../components/avatar'
|
|
import Icon from '../../../../components/icon'
|
|
import Text from '../../../../components/text'
|
|
import DisplayName from '../../../../components/display_name'
|
|
|
|
const messages = defineMessages({
|
|
|
|
})
|
|
|
|
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
|
|
|
|
return (
|
|
<div className={[_s.default, _s.px10].join(' ')}>
|
|
<div className={[_s.default, _s.borderBottom1PX, _s.borderColorSecondary].join(' ')}>
|
|
<div className={[_s.default, _s.flexRow, _s.my10, _s.py10, _s.px10].join(' ')}>
|
|
|
|
<Icon id='apps' height='20px' width='20px' className={_s.mt5} />
|
|
|
|
<div className={[_s.default, _s.ml15].join(' ')}>
|
|
<div className={[_s.default, _s.flexRow].join(' ')}>
|
|
{
|
|
accounts.slice(0, 6).map((account, i) => (
|
|
<NavLink
|
|
to={`/${account.get('acct')}`}
|
|
key={`fav-avatar-${i}`}
|
|
className={_s.mr5}
|
|
>
|
|
<Avatar size='30' account={account} />
|
|
</NavLink>
|
|
))
|
|
}
|
|
</div>
|
|
<div className={[_s.default, _s.pt10].join(' ')}>
|
|
<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'>
|
|
and 3 others favorited your gab
|
|
</Text>
|
|
</div>
|
|
</div>
|
|
|
|
<div className={[_s.default, _s.pt10].join(' ')}>
|
|
<Text color='secondary' size='medium'>
|
|
post this at 1-14-2020 12:15pm (edited)
|
|
</Text>
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
</div>
|
|
)
|
|
}
|
|
|
|
render() {
|
|
const {
|
|
status,
|
|
notificationType,
|
|
accounts,
|
|
intl
|
|
} = this.props
|
|
|
|
// const linkTo = '/admin/posts/123/reblogs' // etc.
|
|
|
|
return (
|
|
<NavLink
|
|
to={`/`}
|
|
className={[_s.default, _s.px10, _s.backgroundSubtle_onHover].join(' ')}
|
|
>
|
|
<div className={[_s.default, _s.borderBottom1PX, _s.borderColorSecondary].join(' ')}>
|
|
<div className={[_s.default, _s.flexRow, _s.my10, _s.py10, _s.px10].join(' ')}>
|
|
|
|
<Icon id='apps' height='20px' width='20px' className={_s.mt5} />
|
|
|
|
<div className={[_s.default, _s.ml15].join(' ')}>
|
|
<div className={[_s.default, _s.flexRow].join(' ')}>
|
|
{
|
|
accounts.slice(0, 6).map((account, i) => (
|
|
<NavLink
|
|
to={`/${account.get('acct')}`}
|
|
key={`fav-avatar-${i}`}
|
|
className={_s.mr5}
|
|
>
|
|
<Avatar size='30' account={account} />
|
|
</NavLink>
|
|
))
|
|
}
|
|
</div>
|
|
<div className={[_s.default, _s.pt10].join(' ')}>
|
|
<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'>
|
|
and 3 others favorited your gab
|
|
</Text>
|
|
</div>
|
|
</div>
|
|
|
|
<div className={[_s.default, _s.pt10].join(' ')}>
|
|
<Text color='secondary' size='medium'>
|
|
post this at 1-14-2020 12:15pm (edited)
|
|
</Text>
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
</NavLink>
|
|
)
|
|
}
|
|
|
|
}
|