From f03e8844803fca18d83a0392103a09389ad58607 Mon Sep 17 00:00:00 2001 From: Rodrigo Nascimento Date: Tue, 18 Aug 2015 14:24:30 -0300 Subject: [PATCH 1/8] Improve urls to use room names --- client/lib/RoomManager.coffee | 4 +- client/routes/roomRoute.coffee | 109 +++++++++++++++++++++----------- server/publications/room.coffee | 36 +++++++++-- 3 files changed, 102 insertions(+), 47 deletions(-) diff --git a/client/lib/RoomManager.coffee b/client/lib/RoomManager.coffee index 75c969a02dbc..46ce69eb13b9 100644 --- a/client/lib/RoomManager.coffee +++ b/client/lib/RoomManager.coffee @@ -92,8 +92,8 @@ Meteor.startup -> return openedRooms[rid].ready } - getDomOfRoom = (rid) -> - room = openedRooms[rid] + getDomOfRoom = (id, rid) -> + room = openedRooms[id] if not room? return diff --git a/client/routes/roomRoute.coffee b/client/routes/roomRoute.coffee index a0a290a822fd..42d5f3416651 100644 --- a/client/routes/roomRoute.coffee +++ b/client/routes/roomRoute.coffee @@ -1,49 +1,82 @@ -FlowRouter.route '/room/:_id', - name: 'room' +openRoom = (type, name) -> + Session.set 'openedRoom', null + + BlazeLayout.render 'main', {center: 'loading'} + + Meteor.defer -> + Tracker.autorun (c) -> + if RoomManager.open(type + name).ready() isnt true + return + + c.stop() + + query = + t: type + name: name + + if type is 'd' + delete query.name + query.usernames = + $all: [name, Meteor.user().username] + + room = ChatRoom.findOne(query) + if not room? + FlowRouter.go 'home' + return + + mainNode = document.querySelector('.main-content') + if mainNode? + for child in mainNode.children + mainNode.removeChild child if child? + room = RoomManager.getDomOfRoom(type + name, room._id) + mainNode.appendChild room + if room.classList.contains('room-container') + room.querySelector('.messages-box > .wrapper').scrollTop = room.oldScrollTop + + Session.set 'openedRoom', room._id + + Session.set 'editRoomTitle', false + Meteor.call 'readMessages', room._id if Meteor.userId()? + # KonchatNotification.removeRoomNotification(params._id) + + if Meteor.Device.isDesktop() + setTimeout -> + $('.message-form .input-message').focus() + , 100 + + +roomExit = -> + mainNode = document.querySelector('.main-content') + if mainNode? + for child in mainNode.children + if child? + if child.classList.contains('room-container') + child.oldScrollTop = child.querySelector('.messages-box > .wrapper').scrollTop + mainNode.removeChild child + + +FlowRouter.route '/channel/:name', + name: 'channel' action: (params, queryParams) -> - Session.set 'openedRoom', null + openRoom 'c', params.name - BlazeLayout.render 'main', {center: 'loading'} + triggersExit: [roomExit] - Meteor.defer -> - Tracker.autorun (c) -> - if RoomManager.open(params._id).ready() isnt true - return - c.stop() +FlowRouter.route '/group/:name', + name: 'group' - if not ChatRoom.find(params._id).count() - FlowRouter.go 'home' - return + action: (params, queryParams) -> + openRoom 'p', params.name - mainNode = document.querySelector('.main-content') - if mainNode? - for child in mainNode.children - mainNode.removeChild child if child? - room = RoomManager.getDomOfRoom(params._id) - mainNode.appendChild room - if room.classList.contains('room-container') - room.querySelector('.messages-box > .wrapper').scrollTop = room.oldScrollTop + triggersExit: [roomExit] - Session.set 'openedRoom', params._id - Session.set 'editRoomTitle', false - Meteor.call 'readMessages', params._id if Meteor.userId()? - # KonchatNotification.removeRoomNotification(params._id) +FlowRouter.route '/direct/:username', + name: 'direct' - if Meteor.Device.isDesktop() - setTimeout -> - $('.message-form .input-message').focus() - , 100 + action: (params, queryParams) -> + openRoom 'd', params.username - triggersExit: [ - -> - mainNode = document.querySelector('.main-content') - if mainNode? - for child in mainNode.children - if child? - if child.classList.contains('room-container') - child.oldScrollTop = child.querySelector('.messages-box > .wrapper').scrollTop - mainNode.removeChild child - ] + triggersExit: [roomExit] diff --git a/server/publications/room.coffee b/server/publications/room.coffee index 99a9c1434c00..9a7578e580cc 100644 --- a/server/publications/room.coffee +++ b/server/publications/room.coffee @@ -1,18 +1,40 @@ -Meteor.publish 'room', (rid) -> +Meteor.publish 'room', (typeName) -> unless this.userId return this.ready() console.log '[publish] room ->'.green, 'arguments:', arguments - if typeof rid isnt 'string' + if typeof typeName isnt 'string' return this.ready() - if not Meteor.call 'canAccessRoom', rid, this.userId - return this.ready() + type = typeName.substr(0, 1) + name = typeName.substr(1) + + query = {} + + if type in ['c', 'p'] + query = + t: type + name: name + + if type is 'p' + user = Meteor.users.findOne this.userId, fields: username: 1 + query.usernames = user.username + + else if type is 'd' + user = Meteor.users.findOne this.userId, fields: username: 1 + query = + t: 'd' + usernames: + $all: [user.username, name] + + + # Change to validate access manualy + # if not Meteor.call 'canAccessRoom', rid, this.userId + # return this.ready() - ChatRoom.find - _id: rid - , + console.log query + ChatRoom.find query, fields: name: 1 t: 1 From ac3af38162411295f70182d73dc599b6a401f667 Mon Sep 17 00:00:00 2001 From: Rodrigo Nascimento Date: Tue, 18 Aug 2015 14:24:57 -0300 Subject: [PATCH 2/8] Remove logs --- server/publications/room.coffee | 2 -- 1 file changed, 2 deletions(-) diff --git a/server/publications/room.coffee b/server/publications/room.coffee index 9a7578e580cc..d61e636ea739 100644 --- a/server/publications/room.coffee +++ b/server/publications/room.coffee @@ -28,12 +28,10 @@ Meteor.publish 'room', (typeName) -> usernames: $all: [user.username, name] - # Change to validate access manualy # if not Meteor.call 'canAccessRoom', rid, this.userId # return this.ready() - console.log query ChatRoom.find query, fields: name: 1 From 5eab2e0c7d7c6535a64664727b6d712edd811175 Mon Sep 17 00:00:00 2001 From: Rodrigo Nascimento Date: Tue, 18 Aug 2015 14:37:10 -0300 Subject: [PATCH 3/8] Fix readMessages --- client/routes/roomRoute.coffee | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/client/routes/roomRoute.coffee b/client/routes/roomRoute.coffee index 42d5f3416651..89745c5aa205 100644 --- a/client/routes/roomRoute.coffee +++ b/client/routes/roomRoute.coffee @@ -28,10 +28,10 @@ openRoom = (type, name) -> if mainNode? for child in mainNode.children mainNode.removeChild child if child? - room = RoomManager.getDomOfRoom(type + name, room._id) - mainNode.appendChild room - if room.classList.contains('room-container') - room.querySelector('.messages-box > .wrapper').scrollTop = room.oldScrollTop + roomDom = RoomManager.getDomOfRoom(type + name, room._id) + mainNode.appendChild roomDom + if roomDom.classList.contains('room-container') + roomDom.querySelector('.messages-box > .wrapper').scrollTop = roomDom.oldScrollTop Session.set 'openedRoom', room._id From 1081d265ba366391ee86d6f88e9ef65b4a9d082f Mon Sep 17 00:00:00 2001 From: Rodrigo Nascimento Date: Tue, 18 Aug 2015 14:37:33 -0300 Subject: [PATCH 4/8] Fix links of menu for rooms --- client/views/app/sideNav/chatRoomItem.coffee | 9 +++++++++ client/views/app/sideNav/chatRoomItem.html | 2 +- client/views/app/sideNav/listChannelsFlex.html | 2 +- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/client/views/app/sideNav/chatRoomItem.coffee b/client/views/app/sideNav/chatRoomItem.coffee index 0babd1e1a5d3..719e17115ab0 100644 --- a/client/views/app/sideNav/chatRoomItem.coffee +++ b/client/views/app/sideNav/chatRoomItem.coffee @@ -38,6 +38,15 @@ Template.chatRoomItem.helpers else return true + route: -> + return switch this.t + when 'd' + FlowRouter.path('direct', {username: this.name}) + when 'p' + FlowRouter.path('group', {name: this.name}) + when 'c' + FlowRouter.path('channel', {name: this.name}) + Template.chatRoomItem.rendered = -> if not (FlowRouter.getParam('_id')? and FlowRouter.getParam('_id') is this.data.rid) and not this.data.ls KonchatNotification.newRoom(this.data.rid) diff --git a/client/views/app/sideNav/chatRoomItem.html b/client/views/app/sideNav/chatRoomItem.html index 5a890e9f051e..4fa16295a8f4 100644 --- a/client/views/app/sideNav/chatRoomItem.html +++ b/client/views/app/sideNav/chatRoomItem.html @@ -1,6 +1,6 @@