Created RocketChat.MessageTypes class to hold message type rendering rules

pull/1400/head
Marcelo Schmidt 10 years ago
parent 152aabd035
commit a3ea777cf1
  1. 43
      client/views/app/message.coffee
  2. 70
      packages/rocketchat-lib/client/MessageTypes.coffee
  3. 1
      packages/rocketchat-lib/package.js

@ -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

@ -0,0 +1,70 @@
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');

Loading…
Cancel
Save