Skip to content
Snippets Groups Projects
Commit a3ea777c authored by Marcelo Schmidt's avatar Marcelo Schmidt
Browse files

Created RocketChat.MessageTypes class to hold message type rendering rules

parent 152aabd0
No related branches found
No related tags found
No related merge requests found
......@@ -20,31 +20,34 @@ Template.message.helpers
return
body: ->
switch this.t
when 'r' then t('Room_name_changed', { room_name: this.msg, user_by: this.u.username })
when 'au' then t('User_added_by', { user_added: this.msg, user_by: this.u.username })
when 'ru' then t('User_removed_by', { user_removed: this.msg, user_by: this.u.username })
when 'ul' then t('User_left', { user_left: this.u.username })
when 'uj' then t('User_joined_channel', { user: this.u.username })
when 'wm' then t('Welcome', { user: this.u.username })
when 'rm' then t('Message_removed', { user: this.u.username })
when 'rtc' then RocketChat.callbacks.run 'renderRtcMessage', this
messageType = RocketChat.MessageTypes.getType(this)
if messageType?.render?
return messageType.render(message)
else if messageType?.template?
# render template
else if messageType?.message?
if messageType.data?(this)?
return TAPi18n.__(messageType.message, messageType.data(this))
else
if this.u?.username is RocketChat.settings.get('Chatops_Username')
this.html = this.msg
message = RocketChat.callbacks.run 'renderMentions', this
# console.log JSON.stringify message
return this.html
return TAPi18n.__(messageType.message)
else
if this.u?.username is RocketChat.settings.get('Chatops_Username')
this.html = this.msg
if _.trim(this.html) isnt ''
this.html = _.escapeHTML this.html
message = RocketChat.callbacks.run 'renderMessage', this
message = RocketChat.callbacks.run 'renderMentions', this
# console.log JSON.stringify message
this.html = message.html.replace /\n/gm, '<br/>'
return this.html
this.html = this.msg
if _.trim(this.html) isnt ''
this.html = _.escapeHTML this.html
message = RocketChat.callbacks.run 'renderMessage', this
# console.log JSON.stringify message
this.html = message.html.replace /\n/gm, '<br/>'
return this.html
system: ->
return 'system' if this.t in ['s', 'p', 'f', 'r', 'au', 'ru', 'ul', 'wm', 'uj', 'rm']
if RocketChat.MessageTypes.isSystemMessage(this)
return 'system'
edited: -> Template.instance().wasEdited?(@)
editTime: ->
return "" unless Template.instance().wasEdited?(@)
......@@ -91,7 +94,7 @@ Template.message.helpers
Template.message.onCreated ->
@wasEdited = (msg) ->
msg.editedAt? and msg.t not in ['s', 'p', 'f', 'r', 'au', 'ru', 'ul', 'wm', 'uj', 'rm']
msg.editedAt? and not RocketChat.MessageTypes.isSystemMessage(this)
Template.message.onViewRendered = (context) ->
view = this
......
RocketChat.MessageTypes = new class
types = {}
registerType = (options) ->
types[options.id] = options
getType = (message) ->
return types[message?.t]
isSystemMessage = (message) ->
return types[message?.t]?.system
registerType: registerType
getType: getType
isSystemMessage: isSystemMessage
Meteor.startup ->
RocketChat.MessageTypes.registerType
id: 'r'
system: true
message: 'Room_name_changed'
data: (message) ->
return { room_name: message.msg, user_by: message.u.username }
RocketChat.MessageTypes.registerType
id: 'au'
system: true
message: 'User_added_by'
data: (message) ->
return { user_added: message.msg, user_by: message.u.username }
RocketChat.MessageTypes.registerType
id: 'ru'
system: true
message: 'User_removed_by'
data: (message) ->
return { user_removed: message.msg, user_by: message.u.username }
RocketChat.MessageTypes.registerType
id: 'ul'
system: true
message: 'User_left'
data: (message) ->
return { user_left: message.u.username }
RocketChat.MessageTypes.registerType
id: 'uj'
system: true
message: 'User_joined_channel'
data: (message) ->
return { user: message.u.username }
RocketChat.MessageTypes.registerType
id: 'wm'
system: true
message: 'Welcome'
data: (message) ->
return { user: message.u.username }
RocketChat.MessageTypes.registerType
id: 'rm'
system: true
message: 'Message_removed'
data: (message) ->
return { user: message.u.username }
RocketChat.MessageTypes.registerType
id: 'rtc'
render: (message) ->
RocketChat.callbacks.run 'renderRtcMessage', message
......@@ -56,6 +56,7 @@ Package.onUse(function(api) {
api.addFiles('client/Notifications.coffee', 'client');
api.addFiles('client/TabBar.coffee', 'client');
api.addFiles('client/MessageAction.coffee', 'client');
api.addFiles('client/MessageTypes.coffee', 'client');
api.addFiles('settings/client/rocketchat.coffee', 'client');
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment