)
if (this.props.roomId == undefined) {
//empty screen
return empty
}
let room = this.props.client.getRoom(this.props.roomId)
if (room == null) {
return empty
}
let messageGroups = {
current: [],
groups: [],
sender: ""
}
// if the sender is the same, add it to the 'current' messageGroup, if not,
// push the old one to 'groups' and start with a new array.
let events = []
if (room.timeline.length > 0) {
room.timeline.forEach((timeline) => {
let event = timeline.event;
if (event.user_id != null) { // localecho messages
event.sender = event.user_id
event.local = true
}
if (event.sender != messageGroups.sender) {
messageGroups.sender = event.sender
if (messageGroups.current.length != 0) {
messageGroups.groups.push(messageGroups.current)
}
messageGroups.current = []
}
messageGroups.current.push(event)
})
messageGroups.groups.push(messageGroups.current)
events = messageGroups.groups.map((events, id) => {
return
})
}
//TODO: replace with something that only renders events in view
return
{events}
}
})
let EventGroup = create({
displayName: "EventGroup",
getInitialState: function() {
let user = this.props.client.getUser(this.props.events[0].sender)
let color = ["red", "green", "yellow", "blue", "purple", "cyan"][Math.floor(Math.random()*6)]
return {
color: color,
user: user
}
},
avatarRef: function(ref) {
jdenticon.update(ref, this.state.user.userId)
},
render: function() {
let events = this.props.events.map((event, id) => {
return getRenderedEvent(event, id, this.props.client)
})
return
{this.state.user.displayName}
{events}
}
})
function getRenderedEvent(event, id, client) {
if (event.type == "m.room.message") {
let msgtype = event.content.msgtype;
return React.createElement(defaultValue(elements[msgtype], elements["m.text"]), {event: event, key: id, client: client})
}
}
module.exports = chat