diff --git a/skins/base/views/molecules/EventAsTextTile.js b/skins/base/views/molecules/EventAsTextTile.js new file mode 100644 index 00000000..bb5052f4 --- /dev/null +++ b/skins/base/views/molecules/EventAsTextTile.js @@ -0,0 +1,38 @@ +/* +Copyright 2015 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +'use strict'; + +var React = require('react'); + +var EventAsTextTileController = require("../../../../src/controllers/molecules/EventAsTextTile"); + +var TextForEvent = require("../../../../src/TextForEvent"); + +module.exports = React.createClass({ + displayName: 'EventAsTextTile', + mixins: [EventAsTextTileController], + + render: function() { + var text = TextForEvent.textForEvent(this.props.mxEvent); + return ( + + {TextForEvent.textForEvent(this.props.mxEvent)} + + ); + }, +}); + diff --git a/src/ComponentBroker.js b/src/ComponentBroker.js index 0f606dd3..db1915ea 100644 --- a/src/ComponentBroker.js +++ b/src/ComponentBroker.js @@ -106,6 +106,7 @@ require('../skins/base/views/molecules/voip/IncomingCallBox'); require('../skins/base/views/molecules/voip/MCallInviteTile'); require('../skins/base/views/molecules/voip/MCallAnswerTile'); require('../skins/base/views/molecules/voip/MCallHangupTile'); +require('../skins/base/views/molecules/EventAsTextTile'); } diff --git a/src/TextForEvent.js b/src/TextForEvent.js index 224ffe4e..e302b647 100644 --- a/src/TextForEvent.js +++ b/src/TextForEvent.js @@ -49,6 +49,12 @@ function textForMemberEvent(ev) { } }; +function textForTopicEvent(ev) { + var senderDisplayName = ev.sender && ev.sender.name ? ev.sender.name : ev.getSender(); + + return senderDisplayName + ' changed the topic to, "' + ev.getContent().topic + '"'; +}; + function textForMessageEvent(ev) { var senderDisplayName = ev.sender && ev.sender.name ? ev.sender.name : ev.getSender(); @@ -63,6 +69,7 @@ function textForMessageEvent(ev) { var handlers = { 'm.room.message': textForMessageEvent, + 'm.room.topic': textForTopicEvent, 'm.room.member': textForMemberEvent }; diff --git a/src/controllers/molecules/EventAsTextTile.js b/src/controllers/molecules/EventAsTextTile.js new file mode 100644 index 00000000..8aa688b2 --- /dev/null +++ b/src/controllers/molecules/EventAsTextTile.js @@ -0,0 +1,21 @@ +/* +Copyright 2015 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +'use strict'; + +module.exports = { +}; + diff --git a/src/controllers/organisms/RoomView.js b/src/controllers/organisms/RoomView.js index 89ce4f5f..32f52881 100644 --- a/src/controllers/organisms/RoomView.js +++ b/src/controllers/organisms/RoomView.js @@ -33,7 +33,8 @@ var tileTypes = { 'm.room.member': ComponentBroker.get('molecules/MRoomMemberTile'), 'm.call.invite': ComponentBroker.get('molecules/voip/MCallInviteTile'), 'm.call.answer': ComponentBroker.get('molecules/voip/MCallAnswerTile'), - 'm.call.hangup': ComponentBroker.get('molecules/voip/MCallHangupTile') + 'm.call.hangup': ComponentBroker.get('molecules/voip/MCallHangupTile'), + 'm.room.topic': ComponentBroker.get('molecules/EventAsTextTile'), }; var DateSeparator = ComponentBroker.get('molecules/DateSeparator');