Skip to content

Commit

Permalink
feat: add moderation system message type
Browse files Browse the repository at this point in the history
  • Loading branch information
nikolaiwarner committed Jun 12, 2020
1 parent 5958651 commit c7e077c
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 2 deletions.
31 changes: 30 additions & 1 deletion app/containers/messages.js
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ function MessagesContainer (props) {
</div>
)
} else {
const defaultSystemName = 'Cabalbot'
let prevMessage = {}
return (
<div className='messages'>
Expand All @@ -71,7 +72,6 @@ function MessagesContainer (props) {
let item = (<div />)
prevMessage = message
if (message.type === 'status') {
const defaultSystemName = 'Cabalbot'
item = (
<div className='messages__item messages__item--system'>
<div className='messages__item__avatar'>
Expand All @@ -86,6 +86,35 @@ function MessagesContainer (props) {
</div>
)
}
if (message.type === 'chat/moderation') {
const { role, type, issuerid, receiverid, reason } = message.content
const issuer = props.getUsers({ addr: props.addr })[issuerid]
const receiver = props.getUsers({ addr: props.addr })[receiverid]
const issuerName = issuer && issuer.name ? issuer.name : issuerid.slice(0, 8)
const receiverName = receiver && receiver.name ? receiver.name : receiverid.slice(0, 8)
item = (
<div className='messages__item messages__item--system'>
<div className='messages__item__avatar'>
<div className='messages__item__avatar__img'>
<Avatar name={message.key || defaultSystemName} />
</div>
</div>
<div className='messages__item__metadata'>
<div className='messages__item__metadata__name'>{message.name || defaultSystemName}{renderDate(formattedTime)}</div>
<div className='text'>
Moderation:
{role === 'hide' &&
<span><span onClick={onClickProfile.bind(this, issuer)}>{issuerName}</span> {(type === 'add' ? 'hid' : 'unhid')} <span onClick={onClickProfile.bind(this, receiver)}>{receiverName}</span></span>}
{role !== 'hide' &&
<span><span onClick={onClickProfile.bind(this, issuer)}>{issuerName}</span> {(type === 'add' ? 'added' : 'removed')} <span onClick={onClickProfile.bind(this, receiver)}>{receiverName}</span> as {role}</span>}
{!!reason &&
<span>({reason})</span>
}
</div>
</div>
</div>
)
}
if (message.type === 'chat/text') {
item = (
<div className='messages__item'>
Expand Down
3 changes: 2 additions & 1 deletion app/containers/sidebar.js
Original file line number Diff line number Diff line change
Expand Up @@ -181,7 +181,8 @@ class SidebarScreen extends React.Component {
const deduplicatedNicks = []
users && users.forEach((user) => {
const userIndex = deduplicatedNicks.findIndex((u) => u.name === user.name)
if (user.name && userIndex > -1) {
const moderated = user.isHidden || user.isAdmin || user.isModerator
if (user.name && userIndex > -1 && !moderated) {
deduplicatedNicks[userIndex].users.push(user)
} else {
deduplicatedNicks.push({
Expand Down

0 comments on commit c7e077c

Please sign in to comment.