From 8e50efb3c18a3fe22815f335947723fb20b30cdf Mon Sep 17 00:00:00 2001 From: Connor Turland Date: Wed, 4 Jan 2017 18:11:44 -0500 Subject: [PATCH] render messages nicer --- app/assets/stylesheets/junto.css.erb | 21 +++++++++++++-------- frontend/src/components/MapChat/Message.js | 9 ++++++--- frontend/src/components/MapChat/index.js | 18 +++++++++++++++++- 3 files changed, 36 insertions(+), 12 deletions(-) diff --git a/app/assets/stylesheets/junto.css.erb b/app/assets/stylesheets/junto.css.erb index f738705f..9dd94a91 100644 --- a/app/assets/stylesheets/junto.css.erb +++ b/app/assets/stylesheets/junto.css.erb @@ -271,7 +271,7 @@ } .chat-box .chat-messages { width: 100%; - padding: 16px 0px 0px 0px; + padding: 16px 0px; overflow-y: auto; flex-grow: 1; } @@ -296,7 +296,7 @@ text-decoration: underline; } .chat-box .chat-messages .chat-message .chat-message-user { - width: 15%; + width: 12%; float: left; overflow: hidden; color: #BBB; @@ -304,20 +304,25 @@ } .chat-box .chat-messages .chat-message .chat-message-user img { border: 2px solid #424242; - width: 32px; - height: 32px; - border-radius: 18px; + width: 26px; + height: 26px; + border-radius: 14px; +} +.chat-box .chat-messages .chat-message .chat-message-meta { + padding: 0 8px; + float: left; +} +.chat-box .chat-messages .chat-message .chat-message-username { + color: #4fc059; } .chat-box .chat-messages .chat-message .chat-message-text { - width: 73%; + width: 80%; float: left; - margin-top: 12px; padding: 2px 8px 0; text-align: left; word-wrap: break-word; } .chat-box .chat-messages .chat-message .chat-message-time { - float: right; font-size: 10px; color: #757575; } diff --git a/frontend/src/components/MapChat/Message.js b/frontend/src/components/MapChat/Message.js index b9ddeda1..a13bbf3b 100644 --- a/frontend/src/components/MapChat/Message.js +++ b/frontend/src/components/MapChat/Message.js @@ -18,15 +18,18 @@ function formatDate(created_at) { } const Message = props => { - const { user_image, user_name, message, created_at } = props + const { user_image, user_name, message, created_at, heading } = props const messageHtml = {__html: linker.link(message)} return (
- + {heading && }
+ {heading &&
+ {user_name}  + {formatDate(created_at)} +
}
-
{formatDate(created_at)}
) diff --git a/frontend/src/components/MapChat/index.js b/frontend/src/components/MapChat/index.js index 101b9755..aa5b354e 100644 --- a/frontend/src/components/MapChat/index.js +++ b/frontend/src/components/MapChat/index.js @@ -3,6 +3,22 @@ import Unread from './Unread' import Participant from './Participant' import Message from './Message' +function makeList(messages) { + let currentHeader + return messages ? messages.map(m => { + let heading = false + if (!currentHeader) { + heading = true + currentHeader = m + } else { + // not same user or time diff of greater than 3 minutes + heading = m.user_id !== currentHeader.user_id || Math.floor(Math.abs(new Date(currentHeader.created_at) - new Date(m.created_at)) / 60000) > 3 + currentHeader = heading ? m : currentHeader + } + return + }) : null +} + class MapChat extends Component { constructor(props) { super(props) @@ -125,7 +141,7 @@ class MapChat extends Component {
this.messagesDiv = div}> - {messages.map(message => )} + {makeList(messages)}