This repository was archived by the owner on Sep 11, 2024. It is now read-only.
File tree Expand file tree Collapse file tree 6 files changed +29
-13
lines changed
Expand file tree Collapse file tree 6 files changed +29
-13
lines changed Original file line number Diff line number Diff line change @@ -233,5 +233,11 @@ module.exports = {
233233 }
234234 } ,
235235
236- }
236+ emojifyText : function ( text ) {
237+ emojione . imageType = 'svg' ;
238+ return {
239+ __html : emojione . unicodeToImage ( escape ( text ) ) ,
240+ } ;
241+ } ,
242+ } ;
237243
Original file line number Diff line number Diff line change @@ -18,6 +18,7 @@ limitations under the License.
1818
1919var React = require ( 'react' ) ;
2020var AvatarLogic = require ( "../../../Avatar" ) ;
21+ import { emojifyText } from '../../../HtmlUtils' ;
2122
2223module . exports = React . createClass ( {
2324 displayName : 'BaseAvatar' ,
@@ -137,14 +138,14 @@ module.exports = React.createClass({
137138 var imageUrl = this . state . imageUrls [ this . state . urlsIndex ] ;
138139
139140 if ( imageUrl === this . state . defaultImageUrl ) {
140- var initialLetter = this . _getInitialLetter ( this . props . name ) ;
141+ var initialLetter = emojifyText ( this . _getInitialLetter ( this . props . name ) ) ;
141142 return (
142143 < span className = "mx_BaseAvatar" { ...this . props } >
143144 < span className = "mx_BaseAvatar_initial" aria-hidden = "true"
144145 style = { { fontSize : ( this . props . width * 0.65 ) + "px" ,
145146 width : this . props . width + "px" ,
146- lineHeight : this . props . height + "px" } } >
147- { initialLetter }
147+ lineHeight : this . props . height + "px" } }
148+ dangerouslySetInnerHTML = { initialLetter } >
148149 </ span >
149150 < img className = "mx_BaseAvatar_image" src = { imageUrl }
150151 alt = "" title = { this . props . title } onError = { this . onError }
Original file line number Diff line number Diff line change @@ -19,6 +19,7 @@ limitations under the License.
1919var React = require ( 'react' ) ;
2020
2121var TextForEvent = require ( '../../../TextForEvent' ) ;
22+ import { emojifyText } from '../../../HtmlUtils' ;
2223
2324module . exports = React . createClass ( {
2425 displayName : 'TextualEvent' ,
@@ -31,11 +32,11 @@ module.exports = React.createClass({
3132
3233 render : function ( ) {
3334 var text = TextForEvent . textForEvent ( this . props . mxEvent ) ;
34- if ( text == null || text . length == 0 ) return null ;
35+ if ( text == null || text . length === 0 ) return null ;
36+ let textHTML = emojifyText ( TextForEvent . textForEvent ( this . props . mxEvent ) ) ;
3537
3638 return (
37- < div className = "mx_TextualEvent" >
38- { TextForEvent . textForEvent ( this . props . mxEvent ) }
39+ < div className = "mx_TextualEvent" dangerouslySetInnerHTML = { textHTML } >
3940 </ div >
4041 ) ;
4142 } ,
Original file line number Diff line number Diff line change @@ -20,6 +20,7 @@ var React = require('react');
2020
2121var MatrixClientPeg = require ( '../../../MatrixClientPeg' ) ;
2222var sdk = require ( '../../../index' ) ;
23+ import { emojifyText } from '../../../HtmlUtils' ;
2324
2425
2526var PRESENCE_CLASS = {
@@ -82,6 +83,7 @@ module.exports = React.createClass({
8283 var mainClassName = "mx_EntityTile " ;
8384 mainClassName += presenceClass + ( this . props . className ? ( " " + this . props . className ) : "" ) ;
8485 var nameEl ;
86+ let nameHTML = emojifyText ( this . props . name ) ;
8587
8688 if ( this . state . hover && ! this . props . suppressOnHover ) {
8789 var activeAgo = this . props . presenceLastActiveAgo ?
@@ -92,7 +94,7 @@ module.exports = React.createClass({
9294 nameEl = (
9395 < div className = "mx_EntityTile_details" >
9496 < img className = "mx_EntityTile_chevron" src = "img/member_chevron.png" width = "8" height = "12" />
95- < div className = "mx_EntityTile_name_hover" > { this . props . name } </ div >
97+ < div className = "mx_EntityTile_name_hover" dangerouslySetInnerHTML = { nameHTML } > </ div >
9698 < PresenceLabel activeAgo = { activeAgo }
9799 currentlyActive = { this . props . presenceCurrentlyActive }
98100 presenceState = { this . props . presenceState } />
@@ -101,8 +103,7 @@ module.exports = React.createClass({
101103 }
102104 else {
103105 nameEl = (
104- < div className = "mx_EntityTile_name" >
105- { this . props . name }
106+ < div className = "mx_EntityTile_name" dangerouslySetInnerHTML = { nameHTML } >
106107 </ div >
107108 ) ;
108109 }
Original file line number Diff line number Diff line change @@ -24,6 +24,7 @@ var Modal = require("../../../Modal");
2424var linkify = require ( 'linkifyjs' ) ;
2525var linkifyElement = require ( 'linkifyjs/element' ) ;
2626var linkifyMatrix = require ( '../../../linkify-matrix' ) ;
27+ import { emojifyText } from '../../../HtmlUtils' ;
2728
2829linkifyMatrix ( linkify ) ;
2930
@@ -211,9 +212,11 @@ module.exports = React.createClass({
211212 roomName = this . props . room . name ;
212213 }
213214
215+ let roomNameHTML = emojifyText ( roomName ) ;
216+
214217 name =
215218 < div className = "mx_RoomHeader_name" onClick = { this . props . onSettingsClick } >
216- < div className = { "mx_RoomHeader_nametext " + ( settingsHint ? "mx_RoomHeader_settingsHint" : "" ) } title = { roomName } > { roomName } </ div >
219+ < div className = { "mx_RoomHeader_nametext " + ( settingsHint ? "mx_RoomHeader_settingsHint" : "" ) } title = { roomName } dangerouslySetInnerHTML = { roomNameHTML } > </ div >
217220 { searchStatus }
218221 < div className = "mx_RoomHeader_settingsButton" title = "Settings" >
219222 < TintableSvg src = "img/settings.svg" width = "12" height = "12" />
Original file line number Diff line number Diff line change @@ -21,6 +21,7 @@ var classNames = require('classnames');
2121var dis = require ( "../../../dispatcher" ) ;
2222var MatrixClientPeg = require ( '../../../MatrixClientPeg' ) ;
2323var sdk = require ( '../../../index' ) ;
24+ import { emojifyText } from '../../../HtmlUtils' ;
2425
2526module . exports = React . createClass ( {
2627 displayName : 'RoomTile' ,
@@ -104,10 +105,13 @@ module.exports = React.createClass({
104105 var label ;
105106 if ( ! this . props . collapsed ) {
106107 var className = 'mx_RoomTile_name' + ( this . props . isInvite ? ' mx_RoomTile_invite' : '' ) ;
108+ let nameHTML = emojifyText ( name ) ;
107109 if ( this . props . selected ) {
108- name = < span > { name } </ span > ;
110+ name = < span dangerouslySetInnerHTML = { nameHTML } > </ span > ;
111+ label = < div className = { className } > { name } </ div > ;
112+ } else {
113+ label = < div className = { className } dangerouslySetInnerHTML = { nameHTML } > </ div > ;
109114 }
110- label = < div className = { className } > { name } </ div > ;
111115 }
112116 else if ( this . state . hover ) {
113117 var RoomTooltip = sdk . getComponent ( "rooms.RoomTooltip" ) ;
You can’t perform that action at this time.
0 commit comments