gab-social/app/javascript/gabsocial/features/notifications/containers/notification_container.js
2020-03-03 22:45:16 -05:00

75 lines
1.9 KiB
JavaScript

import { openModal } from '../../../actions/modal'
import { mentionCompose } from '../../../actions/compose'
import {
reblog,
favourite,
unreblog,
unfavourite,
} from '../../../actions/interactions'
import {
hideStatus,
revealStatus,
} from '../../../actions/statuses'
import { boostModal, me } from '../../../initial_state'
import { makeGetNotification, makeGetStatus } from '../../../selectors'
import Notification from '../components/notification/notification-alt'
const makeMapStateToProps = () => {
const getNotification = makeGetNotification()
const getStatus = makeGetStatus()
const mapStateToProps = (state, props) => {
const notification = getNotification(state, props.notification, props.accountId)
const account = state.getIn(['accounts', me])
return {
accounts: [account, account, account],
notification: notification,
status: notification.get('status') ? getStatus(state, { id: notification.get('status') }) : null,
}
}
return mapStateToProps
}
const mapDispatchToProps = dispatch => ({
onMention: (account, router) => {
dispatch(mentionCompose(account, router))
},
onModalReblog (status) {
dispatch(reblog(status))
},
onReblog (status, e) {
if (status.get('reblogged')) {
dispatch(unreblog(status))
} else {
if (e.shiftKey || !boostModal) {
this.onModalReblog(status)
} else {
dispatch(openModal('BOOST', { status, onReblog: this.onModalReblog }))
}
}
},
onFavourite (status) {
if (status.get('favourited')) {
dispatch(unfavourite(status))
} else {
dispatch(favourite(status))
}
},
onToggleHidden (status) {
if (status.get('hidden')) {
dispatch(revealStatus(status.get('id')))
} else {
dispatch(hideStatus(status.get('id')))
}
},
})
export default connect(makeMapStateToProps, mapDispatchToProps)(Notification)