From 534c8c42c656e6281a23477f362ada8e309faa50 Mon Sep 17 00:00:00 2001 From: Diego Sampaio Date: Sat, 4 Jul 2015 15:10:06 -0300 Subject: [PATCH 1/3] typing object to control who's typing over streams --- client/lib/typing.coffee | 88 ++++++++++++++++++++++++++++ server/stream/streamBroadcast.coffee | 1 + server/stream/typingStream.coffee | 13 ++++ 3 files changed, 102 insertions(+) create mode 100644 client/lib/typing.coffee create mode 100644 server/stream/typingStream.coffee diff --git a/client/lib/typing.coffee b/client/lib/typing.coffee new file mode 100644 index 0000000000000..48b4374463c74 --- /dev/null +++ b/client/lib/typing.coffee @@ -0,0 +1,88 @@ +class @msgTyping + stream = new Meteor.Stream 'typing' + # store = new Meteor.Collection null + usersRoomTyping = {} + stopLimit = 15000 + stopTimeout = null + renewTime = 10000 + renewTimeout = null + + constructor: (@room) -> + @renew = true + + # @TODO if usersRoomTyping[@room] already exists, need to clear it + usersRoomTyping[@room] ?= + dep: new Tracker.Dependency + users: {} + + self = @ + stream.on @room, (typing) -> + + clearTimeout usersRoomTyping[self.room].users[typing.username] if usersRoomTyping[self.room].users[typing.username]? + + if typing.start? + console.log 'typing - iniciou ->',typing.username + # store.upsert + # room: self.room + # username: typing.username + # , + # $set: + # ts: new Date() + + if not usersRoomTyping[self.room].users[typing.username]? + newUser = true + + usersRoomTyping[self.room].users[typing.username] = Meteor.setTimeout -> + console.log 'typing - removido (inatividade) ->',typing.username + + delete usersRoomTyping[self.room].users[typing.username] + usersRoomTyping[self.room].dep.changed() + + # store.remove + # room: self.room + # username: typing.username + , stopLimit + + usersRoomTyping[self.room].dep.changed() if newUser + + else if typing.stop? + console.log 'typing - removido (forçado) ->',typing.username + delete usersRoomTyping[self.room].users[typing.username] + usersRoomTyping[self.room].dep.changed() + # store.remove + # room: self.room + # username: typing.username + + type: -> + + # clearTimeout stopTimeout if stopTimeout? + + # stopTimeout = Meteor.setTimeout -> + # console.log 'typing - parando ->',Meteor.user().username + # stream.emit 'typing', { room: @room, username: Meteor.user().username, stop: true } + # , renewTime + + console.log 'renew ->',@renew + + return unless @renew + + self = @ + + clearTimeout renewTimeout if renewTimeout? + + renewTimeout = Meteor.setTimeout -> + console.log 'typing - começa de novo ->',Meteor.user().username + self.renew = true + , renewTime + + @renew = false + + console.log 'typing - iniciando ->',Meteor.user().username + + stream.emit 'typing', { room: @room, username: Meteor.user().username, start: true } + + get: -> + usersRoomTyping[@room].dep.depend() + return Object.keys usersRoomTyping[@room].users + # console.log 'find by ->',room: @room, store.find().fetch() + # return store.find room: @room diff --git a/server/stream/streamBroadcast.coffee b/server/stream/streamBroadcast.coffee index 2fdaee762938f..147aa1babddbe 100644 --- a/server/stream/streamBroadcast.coffee +++ b/server/stream/streamBroadcast.coffee @@ -41,3 +41,4 @@ Meteor.startup -> startStreamBroadcast 'webrtc.stream': webrtc.stream + 'typing': typingStream diff --git a/server/stream/typingStream.coffee b/server/stream/typingStream.coffee new file mode 100644 index 0000000000000..109d31a9f8b7e --- /dev/null +++ b/server/stream/typingStream.coffee @@ -0,0 +1,13 @@ +@typingStream = new Meteor.Stream 'typing' + +typingStream.permissions.read -> + return true + +typingStream.permissions.write -> + return true + +# typingStream.stream.on 'teste', -> +# console.log 'teste ->', arguments + +typingStream.on 'typing', (typing) -> + typingStream.emit typing.room, _.pick(typing, 'username', 'start', 'stop') From a05a4280bd02ea26870bd0bc75579915b503a1e7 Mon Sep 17 00:00:00 2001 From: Diego Sampaio Date: Mon, 6 Jul 2015 20:56:52 -0300 Subject: [PATCH 2/3] typing improvement --- client/lib/chatMessages.coffee | 28 ++++++++----- client/lib/typing.coffee | 34 ++++------------ client/views/app/room.coffee | 73 +++++++++------------------------- 3 files changed, 45 insertions(+), 90 deletions(-) diff --git a/client/lib/chatMessages.coffee b/client/lib/chatMessages.coffee index d73a1f626e6e4..9f76d7eabb472 100644 --- a/client/lib/chatMessages.coffee +++ b/client/lib/chatMessages.coffee @@ -4,10 +4,18 @@ input = {} editing = {} selfTyping = new ReactiveVar false + typing = null + # typingLimit = 15000 + # typingStream = new Meteor.Stream 'typing' - init = -> + init = (templateTyping) -> wrapper = $(".messages-container").find(".wrapper") input = $(".input-message").get(0) + + console.log 'ChatMessages.init()' + + typing = templateTyping + # self.scrollable = false # wrapper.bind "scroll", -> # scrollable() @@ -107,17 +115,19 @@ startTyping = (rid, input) -> if _.trim(input.value) isnt '' - unless self.typingTimeout - if Meteor.userId()? - selfTyping.set true - Meteor.call 'typingStatus', rid, true - self.typingTimeout = Meteor.setTimeout -> - stopTyping() - , 30000 + typing.type() + # unless self.typingTimeout + # if Meteor.userId()? + # selfTyping.set true + # Meteor.call 'typingStatus', rid, true + # self.typingTimeout = Meteor.setTimeout -> + # stopTyping() + # , typingLimit stopTyping = -> selfTyping.set false - self.typingTimeout = null + # self.typingTimeout = null + typing.stop() bindEvents = -> if wrapper?.length diff --git a/client/lib/typing.coffee b/client/lib/typing.coffee index 48b4374463c74..a066579546d98 100644 --- a/client/lib/typing.coffee +++ b/client/lib/typing.coffee @@ -1,6 +1,5 @@ class @msgTyping stream = new Meteor.Stream 'typing' - # store = new Meteor.Collection null usersRoomTyping = {} stopLimit = 15000 stopTimeout = null @@ -22,13 +21,6 @@ class @msgTyping if typing.start? console.log 'typing - iniciou ->',typing.username - # store.upsert - # room: self.room - # username: typing.username - # , - # $set: - # ts: new Date() - if not usersRoomTyping[self.room].users[typing.username]? newUser = true @@ -37,33 +29,17 @@ class @msgTyping delete usersRoomTyping[self.room].users[typing.username] usersRoomTyping[self.room].dep.changed() - - # store.remove - # room: self.room - # username: typing.username , stopLimit usersRoomTyping[self.room].dep.changed() if newUser else if typing.stop? + self.renew = true console.log 'typing - removido (forçado) ->',typing.username delete usersRoomTyping[self.room].users[typing.username] usersRoomTyping[self.room].dep.changed() - # store.remove - # room: self.room - # username: typing.username type: -> - - # clearTimeout stopTimeout if stopTimeout? - - # stopTimeout = Meteor.setTimeout -> - # console.log 'typing - parando ->',Meteor.user().username - # stream.emit 'typing', { room: @room, username: Meteor.user().username, stop: true } - # , renewTime - - console.log 'renew ->',@renew - return unless @renew self = @ @@ -81,8 +57,12 @@ class @msgTyping stream.emit 'typing', { room: @room, username: Meteor.user().username, start: true } + stop: -> + # clearTimeout usersRoomTyping[@room].users[Meteor.user().username] + # delete usersRoomTyping[@room].users[Meteor.user().username] + # usersRoomTyping[@room].dep.changed() + stream.emit 'typing', { room: @room, username: Meteor.user().username, stop: true } + get: -> usersRoomTyping[@room].dep.depend() return Object.keys usersRoomTyping[@room].users - # console.log 'find by ->',room: @room, store.find().fetch() - # return store.find room: @room diff --git a/client/views/app/room.coffee b/client/views/app/room.coffee index 8eeb2de3415aa..9aafc521fea6b 100644 --- a/client/views/app/room.coffee +++ b/client/views/app/room.coffee @@ -48,33 +48,32 @@ Template.room.helpers console.log 'room.helpers roomContainerId' if window.rocketDebug return "room-container-#{this._id}" - showTyping: -> - console.log 'room.helpers showTyping' if window.rocketDebug - return this.t is 't' - - typing: -> - console.log 'room.helpers typing' if window.rocketDebug - return this.u._id isnt Meteor.userId() - usersTyping: -> console.log 'room.helpers usersTyping' if window.rocketDebug - messages = ChatTyping.find({ rid: this._id, 'u._id': { $ne: Meteor.userId() } }).fetch() - if messages.length is 0 + # messages = ChatTyping.find({ rid: this._id, 'u._id': { $ne: Meteor.userId() } }).fetch() + + console.log 'typing!!!!' + + return unless Template.instance().typing? + + users = Template.instance().typing.get() + + if users.length is 0 return - if messages.length is 1 + if users.length is 1 return { multi: false selfTyping: ChatMessages.selfTyping.get() - users: messages[0].u.username + users: users[0] } - usernames = _.map messages, (message) -> return message.u.username - - last = usernames.pop() - if messages.length > 4 + # usernames = _.map messages, (message) -> return message.u.username + + last = users.pop() + if users.length > 4 last = t('others') - else - usernames = usernames.join(', ') + # else + usernames = users.join(', ') usernames = [usernames, last] return { multi: true @@ -82,41 +81,6 @@ Template.room.helpers users: usernames.join " #{t 'and'} " } - - # usernames = [] - # selfTyping = false - # total = 0 - # messages.forEach (message) -> - # total++ - # if message.u._id is Meteor.userId() - # selfTyping = true - # else - # username = message.u.username - # if username? - # usernames.push username - - # if usernames.length is 0 - # return - - # if usernames.length is 1 - # return { - # multi: false - # selfTyping: selfTyping - # users: usernames[0] - # } - - # last = usernames.pop() - # if total > 4 - # last = t('others') - - # usernames = usernames.join(', ') - # usernames = [usernames, last] - # return { - # multi: true - # selfTyping: selfTyping - # users: usernames.join " #{t 'and'} " - # } - roomName: -> console.log 'room.helpers roomName' if window.rocketDebug roomData = Session.get('roomData' + this._id) @@ -502,13 +466,14 @@ Template.room.events Template.room.onCreated -> console.log 'room.onCreated' if window.rocketDebug # this.scrollOnBottom = true + this.typing = new msgTyping this.data._id this.showUsersOffline = new ReactiveVar false this.atBottom = true Template.room.onRendered -> console.log 'room.onRendered' if window.rocketDebug FlexTab.check() - ChatMessages.init() + ChatMessages.init(this.typing) # ScrollListener.init() wrapper = this.find('.wrapper') From 740d6a7cfb2480b23c400eddacba7b3143c18330 Mon Sep 17 00:00:00 2001 From: Marcelo Schmidt Date: Thu, 16 Jul 2015 00:05:16 -0300 Subject: [PATCH 3/3] Stream typing --- client/lib/chatMessages.coffee | 51 ++------------ client/lib/collections.coffee | 1 - client/lib/msgTyping.coffee | 63 +++++++++++++++++ client/lib/typing.coffee | 68 ------------------- client/startup/startup.coffee | 3 - client/views/app/room.coffee | 23 +++---- .../rocketchat-lib/server/sendMessage.coffee | 9 --- server/lib/collections.coffee | 1 - server/methods/getAvatarSuggestion.coffee | 2 +- server/methods/getUsernameSuggestion.coffee | 2 +- server/methods/typingStatus.coffee | 23 ------- server/publications/typing.coffee | 17 ----- server/startup/indexes.coffee | 4 -- server/stream/streamBroadcast.coffee | 1 - server/stream/typingStream.coffee | 3 - 15 files changed, 82 insertions(+), 189 deletions(-) create mode 100644 client/lib/msgTyping.coffee delete mode 100644 client/lib/typing.coffee delete mode 100644 server/methods/typingStatus.coffee delete mode 100644 server/publications/typing.coffee diff --git a/client/lib/chatMessages.coffee b/client/lib/chatMessages.coffee index 5843bdbb45284..781cd93b3053c 100644 --- a/client/lib/chatMessages.coffee +++ b/client/lib/chatMessages.coffee @@ -3,41 +3,18 @@ wrapper = {} input = {} editing = {} - selfTyping = new ReactiveVar false - typing = null - # typingLimit = 15000 - # typingStream = new Meteor.Stream 'typing' - - init = (templateTyping) -> + + init = -> wrapper = $(".messages-container").find(".wrapper") input = $(".input-message").get(0) - - console.log 'ChatMessages.init()' - - typing = templateTyping - - # self.scrollable = false - # wrapper.bind "scroll", -> - # scrollable() bindEvents() return - # isScrollable = -> - # self.scrollable - resize = -> dif = 60 + $(".messages-container").find("footer").outerHeight() $(".messages-box").css height: "calc(100% - #{dif}px)" - # scrollable = -> - # wrapper = $(".messages-container").find(".wrapper") - # top = wrapper.scrollTop() + wrapper.outerHeight() - # if top == wrapper.get(0).scrollHeight - # self.scrollable = true - # else - # self.scrollable = false - toPrevMessage = -> msgs = wrapper.get(0).querySelectorAll(".own:not(.system)") if msgs.length @@ -90,9 +67,6 @@ else editing.saved = input.value - # toBottom = -> - # ScrollListener.toBottom() - send = (rid, input) -> if _.trim(input.value) isnt '' KonchatNotification.removeRoomNotification(rid) @@ -116,26 +90,18 @@ startTyping = (rid, input) -> if _.trim(input.value) isnt '' - typing.type() - # unless self.typingTimeout - # if Meteor.userId()? - # selfTyping.set true - # Meteor.call 'typingStatus', rid, true - # self.typingTimeout = Meteor.setTimeout -> - # stopTyping() - # , typingLimit + MsgTyping.start(rid) + else + MsgTyping.stop(rid) stopTyping = (rid) -> - selfTyping.set false - # self.typingTimeout = null - typing.stop() + MsgTyping.stop(rid) bindEvents = -> if wrapper?.length $(".input-message").autogrow postGrowCallback: -> resize() - # toBottom() if self.scrollable keyup = (rid, event) -> input = event.currentTarget @@ -197,13 +163,10 @@ RoomHistoryManager.clear rid - # isScrollable: isScrollable - # toBottom: toBottom keydown: keydown keyup: keyup deleteMsg: deleteMsg send: send init: init edit: edit - selfTyping: selfTyping -)() +)() \ No newline at end of file diff --git a/client/lib/collections.coffee b/client/lib/collections.coffee index 320a0ce5a0fd0..9e22025520645 100644 --- a/client/lib/collections.coffee +++ b/client/lib/collections.coffee @@ -4,7 +4,6 @@ @ChatRoom = new Meteor.Collection 'data.ChatRoom' @ChatSubscription = new Meteor.Collection 'data.ChatSubscription' @ChatMessage = new Meteor.Collection 'data.ChatMessage' -@ChatTyping = new Meteor.Collection 'data.ChatTyping' Meteor.startup -> ChatMessage.find().observe diff --git a/client/lib/msgTyping.coffee b/client/lib/msgTyping.coffee new file mode 100644 index 0000000000000..57291218b6415 --- /dev/null +++ b/client/lib/msgTyping.coffee @@ -0,0 +1,63 @@ +@MsgTyping = do -> + stream = new Meteor.Stream 'typing' + timeout = 15000 + timeouts = {} + renew = true + renewTimeout = 10000 + selfTyping = new ReactiveVar false + usersTyping = {} + + addStream = (room) -> + unless usersTyping[room]? + usersTyping[room] = { users: new ReactiveVar {} } + stream.on room, (typing) -> + unless typing.username is Meteor.user()?.username + if typing.start + console.log 'start', typing + users = usersTyping[room].users.get() + users[typing.username] = Meteor.setTimeout -> + delete users[typing.username] + , timeout + usersTyping[room].users.set users + else if typing.stop + console.log 'stop', typing + users = usersTyping[room].users.get() + delete users[typing.username] + usersTyping[room].users.set users + + Tracker.autorun -> + addStream Session.get 'openedRoom' + + start = (room) -> + return unless renew + + setTimeout -> + renew = true + , renewTimeout + + renew = false + selfTyping.set true + stream.emit 'typing', { room: room, username: Meteor.user().username, start: true } + clearTimeout timeouts[room] + timeouts[room] = Meteor.setTimeout -> + stop(room) + , timeout + + stop = (room) -> + renew = true + selfTyping.set false + if timeouts?[room]? + clearTimeout(timeouts[room]) + timeouts[room] = null + stream.emit 'typing', { room: room, username: Meteor.user().username, stop: true } + + get = (room) -> + users = usersTyping[room].users.get() + return _.keys(users) or [] + + return { + start: start + stop: stop + get: get + selfTyping: selfTyping + } \ No newline at end of file diff --git a/client/lib/typing.coffee b/client/lib/typing.coffee deleted file mode 100644 index a066579546d98..0000000000000 --- a/client/lib/typing.coffee +++ /dev/null @@ -1,68 +0,0 @@ -class @msgTyping - stream = new Meteor.Stream 'typing' - usersRoomTyping = {} - stopLimit = 15000 - stopTimeout = null - renewTime = 10000 - renewTimeout = null - - constructor: (@room) -> - @renew = true - - # @TODO if usersRoomTyping[@room] already exists, need to clear it - usersRoomTyping[@room] ?= - dep: new Tracker.Dependency - users: {} - - self = @ - stream.on @room, (typing) -> - - clearTimeout usersRoomTyping[self.room].users[typing.username] if usersRoomTyping[self.room].users[typing.username]? - - if typing.start? - console.log 'typing - iniciou ->',typing.username - if not usersRoomTyping[self.room].users[typing.username]? - newUser = true - - usersRoomTyping[self.room].users[typing.username] = Meteor.setTimeout -> - console.log 'typing - removido (inatividade) ->',typing.username - - delete usersRoomTyping[self.room].users[typing.username] - usersRoomTyping[self.room].dep.changed() - , stopLimit - - usersRoomTyping[self.room].dep.changed() if newUser - - else if typing.stop? - self.renew = true - console.log 'typing - removido (forçado) ->',typing.username - delete usersRoomTyping[self.room].users[typing.username] - usersRoomTyping[self.room].dep.changed() - - type: -> - return unless @renew - - self = @ - - clearTimeout renewTimeout if renewTimeout? - - renewTimeout = Meteor.setTimeout -> - console.log 'typing - começa de novo ->',Meteor.user().username - self.renew = true - , renewTime - - @renew = false - - console.log 'typing - iniciando ->',Meteor.user().username - - stream.emit 'typing', { room: @room, username: Meteor.user().username, start: true } - - stop: -> - # clearTimeout usersRoomTyping[@room].users[Meteor.user().username] - # delete usersRoomTyping[@room].users[Meteor.user().username] - # usersRoomTyping[@room].dep.changed() - stream.emit 'typing', { room: @room, username: Meteor.user().username, stop: true } - - get: -> - usersRoomTyping[@room].dep.depend() - return Object.keys usersRoomTyping[@room].users diff --git a/client/startup/startup.coffee b/client/startup/startup.coffee index 4cea1cd367f0d..c7e54589996aa 100644 --- a/client/startup/startup.coffee +++ b/client/startup/startup.coffee @@ -3,9 +3,6 @@ Meteor.startup -> UserPresence.start() Meteor.subscribe("activeUsers") - Tracker.autorun -> - Meteor.subscribe 'typing', Session.get 'openedRoom' - Session.setDefault('flexOpened', false) Session.setDefault('AvatarRandom', 0) diff --git a/client/views/app/room.coffee b/client/views/app/room.coffee index 9aafc521fea6b..8de2d8cf6dbc8 100644 --- a/client/views/app/room.coffee +++ b/client/views/app/room.coffee @@ -50,20 +50,13 @@ Template.room.helpers usersTyping: -> console.log 'room.helpers usersTyping' if window.rocketDebug - # messages = ChatTyping.find({ rid: this._id, 'u._id': { $ne: Meteor.userId() } }).fetch() - - console.log 'typing!!!!' - - return unless Template.instance().typing? - - users = Template.instance().typing.get() - + users = MsgTyping.get @_id if users.length is 0 return if users.length is 1 return { multi: false - selfTyping: ChatMessages.selfTyping.get() + selfTyping: MsgTyping.selfTyping.get() users: users[0] } @@ -77,7 +70,7 @@ Template.room.helpers usernames = [usernames, last] return { multi: true - selfTyping: ChatMessages.selfTyping.get() + selfTyping: MsgTyping.selfTyping.get() users: usernames.join " #{t 'and'} " } @@ -285,7 +278,7 @@ Template.room.events event.preventDefault() Meteor.call 'joinRoom', this._id - "click .burger": -> + "click .burger": -> console.log 'room click .burger' if window.rocketDebug chatContainer = $("#rocket-chat") if chatContainer.hasClass("menu-closed") @@ -297,6 +290,10 @@ Template.room.events console.log 'room focus .input-message' if window.rocketDebug KonchatNotification.removeRoomNotification(this._id) + 'keyup .input-message': (event) -> + console.log 'room keyup .input-message',this._id if window.rocketDebug + ChatMessages.keyup(this._id, event, Template.instance()) + 'keydown .input-message': (event) -> console.log 'room keydown .input-message',this._id if window.rocketDebug ChatMessages.keydown(this._id, event, Template.instance()) @@ -466,14 +463,14 @@ Template.room.events Template.room.onCreated -> console.log 'room.onCreated' if window.rocketDebug # this.scrollOnBottom = true - this.typing = new msgTyping this.data._id + # this.typing = new msgTyping this.data._id this.showUsersOffline = new ReactiveVar false this.atBottom = true Template.room.onRendered -> console.log 'room.onRendered' if window.rocketDebug FlexTab.check() - ChatMessages.init(this.typing) + ChatMessages.init() # ScrollListener.init() wrapper = this.find('.wrapper') diff --git a/packages/rocketchat-lib/server/sendMessage.coffee b/packages/rocketchat-lib/server/sendMessage.coffee index bd3b58278a1ef..2b720c25c5f61 100644 --- a/packages/rocketchat-lib/server/sendMessage.coffee +++ b/packages/rocketchat-lib/server/sendMessage.coffee @@ -30,15 +30,6 @@ RocketChat.sendMessage = (user, message, room) -> RocketChat.callbacks.run 'afterSaveMessage', message - ### - Remove the typing record - ### - Meteor.defer -> - - ChatTyping.remove - rid: message.rid - 'u._id': message.u._id - ### Update all the room activity tracker fields ### diff --git a/server/lib/collections.coffee b/server/lib/collections.coffee index fee6d591a6a20..5bc7b20bf634b 100644 --- a/server/lib/collections.coffee +++ b/server/lib/collections.coffee @@ -1,4 +1,3 @@ @ChatMessage = new Meteor.Collection 'data.ChatMessage' @ChatRoom = new Meteor.Collection 'data.ChatRoom' @ChatSubscription = new Meteor.Collection 'data.ChatSubscription' -@ChatTyping = new Meteor.Collection 'data.ChatTyping' diff --git a/server/methods/getAvatarSuggestion.coffee b/server/methods/getAvatarSuggestion.coffee index c2664a5cdab19..0224b5ae0f165 100644 --- a/server/methods/getAvatarSuggestion.coffee +++ b/server/methods/getAvatarSuggestion.coffee @@ -51,7 +51,7 @@ Meteor.methods getAvatarSuggestion: -> if not Meteor.userId() - throw new Meteor.Error 203, '[methods] typingStatus -> Usuário não logado' + throw new Meteor.Error 203, '[methods] getAvatarSuggestion -> Usuário não logado' user = Meteor.user() diff --git a/server/methods/getUsernameSuggestion.coffee b/server/methods/getUsernameSuggestion.coffee index 1b2e61eee53a7..152fc5ca966f2 100644 --- a/server/methods/getUsernameSuggestion.coffee +++ b/server/methods/getUsernameSuggestion.coffee @@ -59,7 +59,7 @@ usernameIsAvaliable = (username) -> Meteor.methods getUsernameSuggestion: -> if not Meteor.userId() - throw new Meteor.Error 203, '[methods] typingStatus -> Usuário não logado' + throw new Meteor.Error 203, '[methods] getUsernameSuggestion -> Usuário não logado' user = Meteor.user() return generateSuggestion(user) diff --git a/server/methods/typingStatus.coffee b/server/methods/typingStatus.coffee deleted file mode 100644 index 409ea8282d3c0..0000000000000 --- a/server/methods/typingStatus.coffee +++ /dev/null @@ -1,23 +0,0 @@ -Meteor.methods - typingStatus: (rid, start) -> - if not Meteor.userId() - throw new Meteor.Error('invalid-user', "[methods] typingStatus -> Invalid user") - - console.log '[methods] typingStatus -> '.green, 'userId:', Meteor.userId(), 'arguments:', arguments - - filter = - rid: rid - $and: [{'u._id': Meteor.userId()}] - - if start - msgData = - '$set': - expireAt: moment().add(30, 'seconds').toDate() - '$setOnInsert': - 'u._id': Meteor.userId() - 'u.username': Meteor.user().username - - ChatTyping.upsert(filter, msgData) - else - - ChatTyping.remove(filter) diff --git a/server/publications/typing.coffee b/server/publications/typing.coffee deleted file mode 100644 index 6e4c9736c7a87..0000000000000 --- a/server/publications/typing.coffee +++ /dev/null @@ -1,17 +0,0 @@ -Meteor.publish 'typing', (rid, start) -> - unless this.userId - return this.ready() - - console.log '[publish] typing ->'.green, 'rid:', rid, 'start:', start - - if typeof rid isnt 'string' - return this.ready() - - if not Meteor.call 'canAccessRoom', rid, this.userId - return this.ready() - - ChatTyping.find - rid: rid - 'u._id': { $ne: this.userId } - , - limit: 5 diff --git a/server/startup/indexes.coffee b/server/startup/indexes.coffee index 2ab6ddf90248d..15230eddbbf70 100644 --- a/server/startup/indexes.coffee +++ b/server/startup/indexes.coffee @@ -15,7 +15,3 @@ Meteor.startup -> try ChatMessage._ensureIndex { 'rid': 1, 't': 1, 'u._id': 1 } catch e then console.log e try ChatMessage._ensureIndex { 'expireAt': 1 }, { expireAfterSeconds: 0 } catch e then console.log e try ChatMessage._ensureIndex { '_deleted': 1 }, { sparse: 1 } catch e then console.log e - - try ChatTyping._ensureIndex { 'rid': 1 } catch e then console.log e - try ChatTyping._ensureIndex { 'rid': 1, 'u._id': 1 } catch e then console.log e - try ChatTyping._ensureIndex { 'expireAt': 1 }, { expireAfterSeconds: 0 } catch e then console.log e diff --git a/server/stream/streamBroadcast.coffee b/server/stream/streamBroadcast.coffee index 41c376e96a4a1..d1ad440cc901d 100644 --- a/server/stream/streamBroadcast.coffee +++ b/server/stream/streamBroadcast.coffee @@ -38,7 +38,6 @@ do (streamName, stream) -> emitters[streamName] = stream.emit stream.emit = (eventName, args...) -> - console.log 'stream.emit', eventName, args broadcast streamName, eventName, args emitters[streamName].apply {}, arguments diff --git a/server/stream/typingStream.coffee b/server/stream/typingStream.coffee index 109d31a9f8b7e..1746817ef33f9 100644 --- a/server/stream/typingStream.coffee +++ b/server/stream/typingStream.coffee @@ -6,8 +6,5 @@ typingStream.permissions.read -> typingStream.permissions.write -> return true -# typingStream.stream.on 'teste', -> -# console.log 'teste ->', arguments - typingStream.on 'typing', (typing) -> typingStream.emit typing.room, _.pick(typing, 'username', 'start', 'stop')