bigbluebutton-Github/labs/meteor-client/app/server/collection_methods/chat.coffee
Lucas Zawacki 3f6cc062a9 Merge winston logging
Conflicts:
	labs/meteor-client/app/.meteor/packages
	labs/meteor-client/app/lib/router.coffee
	labs/meteor-client/app/server/collection_methods/chat.coffee
	labs/meteor-client/app/server/collection_methods/users.coffee
	labs/meteor-client/app/server/redispubsub.coffee
	labs/meteor-client/app/smart.json
	labs/meteor-client/app/smart.lock
2014-11-12 13:18:09 -02:00

83 lines
3.7 KiB
CoffeeScript
Executable File

Meteor.methods
sendChatMessagetoServer: (meetingId, chatObject, requesterUserId) ->
# inside the chatObject, they store their _id as the sender
# and they pass their userId to this method as a param
transformedChatObject = chatObject
Meteor.log.info "requesterUserId: #{requesterUserId} | from_userid: #{transformedChatObject.from_userid}"
requester = Meteor.Users.findOne({_id: transformedChatObject.from_userid, userId: requesterUserId})
forPublic = transformedChatObject.to_userid is 'public_chat_userid'
if requester? # User exists, and is valid
Meteor.log.info "requester exists"
# check if this is a private or a public chat message
eventName = ->
if transformedChatObject.chat_type is "PRIVATE_CHAT"
"send_private_chat_message_request"
else "send_public_chat_message_request"
recipient = Meteor.Users.findOne(_id: transformedChatObject.to_userid)
if recipient? or forPublic
# translate _ids to userIds for flash
transformedChatObject.from_userid = requester.userId
transformedChatObject.to_userid = if forPublic then 'public_chat_userid' else recipient.userId
message =
header :
"timestamp": new Date().getTime()
"name": eventName()
payload:
"message" : transformedChatObject
"meeting_id": meetingId
"requester_id": transformedChatObject.from_userid
#
Meteor.log.info transformedChatObject
publish Meteor.config.redis.channels.toBBBApps.chat, message
else
Meteor.log.info "requester no exists"
deletePrivateChatMessages: (userId, contact_id) ->
# if authorized pass through
requester = Meteor.Users.findOne({userId: userId})
contact = Meteor.Users.findOne({_id: contact_id})
deletePrivateChatMessages(requester.userId, contact.userId)
# --------------------------------------------------------------------------------------------
# Private methods on server
# --------------------------------------------------------------------------------------------
@addChatToCollection = (meetingId, messageObject) ->
transformedChatObject = messageObject
# manually convert time from 1.408645053653E12 to 1408645053653 if necessary (this is the time_from that the Flash client outputs)
transformedChatObject.from_time = (transformedChatObject.from_time).toString().split('.').join("").split("E")[0]
fromUser = Meteor.Users.findOne({userId: transformedChatObject.from_userid})
toUser = Meteor.Users.findOne({userId: transformedChatObject.to_userid})
forPublic = transformedChatObject.to_userid is 'public_chat_userid'
if (fromUser? and toUser?) or forPublic
# translate ids from flash to html5
transformedChatObject.from_userid = fromUser?._id
transformedChatObject.to_userid = if forPublic then 'public_chat_userid' else toUser?._id
if transformedChatObject.from_userid? and transformedChatObject.to_userid?
entry =
meetingId: meetingId
message:
chat_type: transformedChatObject.chat_type
message: transformedChatObject.message
to_username: transformedChatObject.to_username
from_tz_offset: transformedChatObject.from_tz_offset
from_color: transformedChatObject.from_color
to_userid: transformedChatObject.to_userid
from_userid: transformedChatObject.from_userid
from_time: transformedChatObject.from_time
from_username: transformedChatObject.from_username
from_lang: transformedChatObject.from_lang
id = Meteor.Chat.insert(entry)
#Meteor.log.info "added chat id=[#{id}]:#{transformedChatObject.message}. Chat.size is now #{Meteor.Chat.find({meetingId: meetingId}).count()}"
# --------------------------------------------------------------------------------------------
# end Private methods on server
# --------------------------------------------------------------------------------------------