diff --git a/client/views/app/sideNav/channels.coffee b/client/views/app/sideNav/channels.coffee index 982dc1392cde2..ce58ff6dec52c 100644 --- a/client/views/app/sideNav/channels.coffee +++ b/client/views/app/sideNav/channels.coffee @@ -3,10 +3,10 @@ Template.channels.helpers return t('chatRooms.Members_placeholder') rooms: -> - return ChatSubscription.find { 'u._id': Meteor.userId(), t: { $in: ['c']}, f: { $ne: true } }, { sort: 't': 1, 'rn': 1 } + return ChatSubscription.find { 'u._id': Meteor.userId(), t: { $in: ['c']}, f: { $ne: true } }, { sort: 't': 1, 'name': 1 } total: -> - return ChatSubscription.find({ 'u._id': Meteor.userId(), t: { $in: ['c']}, f: { $ne: true } }, { sort: 't': 1, 'rn': 1 }).count() + return ChatSubscription.find({ 'u._id': Meteor.userId(), t: { $in: ['c']}, f: { $ne: true } }, { sort: 't': 1, 'name': 1 }).count() Template.channels.events 'click .add-room': (e, instance) -> diff --git a/client/views/app/sideNav/chatRoomItem.coffee b/client/views/app/sideNav/chatRoomItem.coffee index d87326a7e9e32..7baa908cb922c 100644 --- a/client/views/app/sideNav/chatRoomItem.coffee +++ b/client/views/app/sideNav/chatRoomItem.coffee @@ -17,7 +17,7 @@ Template.chatRoomItem.helpers else return '' name: -> - return this.rn + return this.name roomIcon: -> switch this.t diff --git a/client/views/app/sideNav/directMessages.coffee b/client/views/app/sideNav/directMessages.coffee index 20c419f423c9b..4fa7c9be0930f 100644 --- a/client/views/app/sideNav/directMessages.coffee +++ b/client/views/app/sideNav/directMessages.coffee @@ -1,5 +1,5 @@ Template.directMessages.helpers rooms: -> - return ChatSubscription.find { 'u._id': Meteor.userId(), t: { $in: ['d']}, f: { $ne: true } }, { sort: 't': 1, 'rn': 1 } + return ChatSubscription.find { 'u._id': Meteor.userId(), t: { $in: ['d']}, f: { $ne: true } }, { sort: 't': 1, 'name': 1 } total: -> - return ChatSubscription.find({ 'u._id': Meteor.userId(), t: { $in: ['d']}, f: { $ne: true } }, { sort: 't': 1, 'rn': 1 }).fetch().length + return ChatSubscription.find({ 'u._id': Meteor.userId(), t: { $in: ['d']}, f: { $ne: true } }, { sort: 't': 1, 'name': 1 }).fetch().length diff --git a/client/views/app/sideNav/privateGroups.coffee b/client/views/app/sideNav/privateGroups.coffee index 3a1a517001fa9..68bae70357d76 100644 --- a/client/views/app/sideNav/privateGroups.coffee +++ b/client/views/app/sideNav/privateGroups.coffee @@ -2,9 +2,9 @@ Template.privateGroups.helpers tRoomMembers: -> return t('chatRooms.Members_placeholder') rooms: -> - return ChatSubscription.find { 'u._id': Meteor.userId(), t: { $in: ['p']}, f: { $ne: true } }, { sort: 't': 1, 'rn': 1 } + return ChatSubscription.find { 'u._id': Meteor.userId(), t: { $in: ['p']}, f: { $ne: true } }, { sort: 't': 1, 'name': 1 } total: -> - return ChatSubscription.find({ 'u._id': Meteor.userId(), t: { $in: ['p']}, f: { $ne: true } }, { sort: 't': 1, 'rn': 1 }).fetch().length + return ChatSubscription.find({ 'u._id': Meteor.userId(), t: { $in: ['p']}, f: { $ne: true } }, { sort: 't': 1, 'name': 1 }).fetch().length Template.privateGroups.events 'click .add-room': (e, instance) -> diff --git a/client/views/app/sideNav/starredRooms.coffee b/client/views/app/sideNav/starredRooms.coffee index 5aa7be9d4d23a..c736e6c709c04 100644 --- a/client/views/app/sideNav/starredRooms.coffee +++ b/client/views/app/sideNav/starredRooms.coffee @@ -1,5 +1,5 @@ Template.starredRooms.helpers rooms: -> - return ChatSubscription.find { 'u._id': Meteor.userId(), f: true }, { sort: 't': 1, 'rn': 1 } + return ChatSubscription.find { 'u._id': Meteor.userId(), f: true }, { sort: 't': 1, 'name': 1 } total: -> - return ChatSubscription.find({ 'u._id': Meteor.userId(), f: true }, { sort: 't': 1, 'rn': 1 }).fetch().length \ No newline at end of file + return ChatSubscription.find({ 'u._id': Meteor.userId(), f: true }, { sort: 't': 1, 'name': 1 }).fetch().length diff --git a/server/methods/addUserToRoom.coffee b/server/methods/addUserToRoom.coffee index 4c257bd524d20..3b66dbc4a7577 100644 --- a/server/methods/addUserToRoom.coffee +++ b/server/methods/addUserToRoom.coffee @@ -28,7 +28,7 @@ Meteor.methods username: data.username rid: data.rid ts: (new Date()) - rn: room.name + name: room.name t: room.t unread: 0 diff --git a/server/methods/canAccessRoom.coffee b/server/methods/canAccessRoom.coffee index 5a5bc86752815..71f50fc14eebd 100644 --- a/server/methods/canAccessRoom.coffee +++ b/server/methods/canAccessRoom.coffee @@ -26,7 +26,7 @@ Meteor.methods ChatSubscription.upsert { rid: roomId, $and: [{'u._id': Meteor.userId()}] }, $setOnInsert: 'u._id': Meteor.userId() - rn: room.name + name: room.name t: room.t unread: 0 $set: diff --git a/server/methods/createChannel.coffee b/server/methods/createChannel.coffee index 6363516c9c0e2..7b82c861b8637 100644 --- a/server/methods/createChannel.coffee +++ b/server/methods/createChannel.coffee @@ -29,12 +29,12 @@ Meteor.methods continue sub = - u: + u: _id: member._id username: username rid: roomId ts: now - rn: name + name: name t: 'c' unread: 0 diff --git a/server/methods/createDirectRoom.coffee b/server/methods/createDirectRoom.coffee index a4fffc1feadd0..f9017fe5c6f94 100644 --- a/server/methods/createDirectRoom.coffee +++ b/server/methods/createDirectRoom.coffee @@ -28,7 +28,7 @@ Meteor.methods $set: ts: now ls: now - rn: userTo.name + name: userTo.name $setOnInsert: t: 'd' unread: 0 @@ -36,7 +36,7 @@ Meteor.methods ChatSubscription.upsert { $and: [{'u._id': userTo._id}], rid: roomId }, $set: - rn: me.name + name: me.name $setOnInsert: t: 'd' unread: 0 diff --git a/server/methods/createPrivateGroup.coffee b/server/methods/createPrivateGroup.coffee index 19ea205ada1f9..3e897ed1a9147 100644 --- a/server/methods/createPrivateGroup.coffee +++ b/server/methods/createPrivateGroup.coffee @@ -26,12 +26,12 @@ Meteor.methods continue sub = - u: + u: _id: member._id username: username rid: roomId ts: now - rn: name + name: name t: 'p' unread: 0 diff --git a/server/methods/leaveRoom.coffee b/server/methods/leaveRoom.coffee index d144ba1b49e58..bedd7d21b58ee 100644 --- a/server/methods/leaveRoom.coffee +++ b/server/methods/leaveRoom.coffee @@ -14,7 +14,7 @@ Meteor.methods ChatSubscription.update { rid: roomId }, $set: - rn: room.name + name: room.name , multi: true diff --git a/server/methods/saveRoomName.coffee b/server/methods/saveRoomName.coffee index 8b28dd7496210..dfd3f60e0cc6b 100644 --- a/server/methods/saveRoomName.coffee +++ b/server/methods/saveRoomName.coffee @@ -20,7 +20,7 @@ Meteor.methods ChatSubscription.update { rid: data.rid }, $set: - rn: newName + name: newName , multi: true diff --git a/server/methods/setUsername.coffee b/server/methods/setUsername.coffee index ef0967580fe58..1df033c752aad 100644 --- a/server/methods/setUsername.coffee +++ b/server/methods/setUsername.coffee @@ -39,7 +39,7 @@ Meteor.methods _id: user._id username: username ls: new Date() - rn: 'general' + name: 'general' t: 'c' f: true ts: new Date() diff --git a/server/startup/indexes.coffee b/server/startup/indexes.coffee index bae065df2d56c..696227f618ebc 100644 --- a/server/startup/indexes.coffee +++ b/server/startup/indexes.coffee @@ -1,8 +1,14 @@ Meteor.startup -> Meteor.defer -> - ChatMessage._ensureIndex({ 'expireAt': 1 }, { expireAfterSeconds: 0 }) - ChatMessage._ensureIndex({ 'rid': 1 }) - ChatMessage._ensureIndex({ 'rid': 1, 'ts': 1 }) - ChatSubscription._ensureIndex({ 'u._id': 1 }) - ChatSubscription._ensureIndex({ 'ts': 1 }) - ChatSubscription._ensureIndex({ 'rid': 1, 'u._id': 1 }, {unique: true}) + try ChatRoom._ensureIndex { 'name': 1 }, { unique: 1, sparse: 1 } catch e then console.log e + try ChatRoom._ensureIndex { 'u._id': 1 } catch e then console.log e + + try ChatSubscription._ensureIndex { 'rid': 1, 'u._id': 1 }, { unique: 1 } catch e then console.log e + try ChatSubscription._ensureIndex { 'u._id': 1, 'name': 1, 't': 1 }, { unique: 1 } catch e then console.log e + try ChatSubscription._ensureIndex { 'open': 1 } catch e then console.log e + try ChatSubscription._ensureIndex { 'alert': 1 } catch e then console.log e + try ChatSubscription._ensureIndex { 'unread': 1 } catch e then console.log e + try ChatSubscription._ensureIndex { 'ts': 1 } catch e then console.log e + + try ChatMessage._ensureIndex { 'rid': 1, 'ts': 1 } catch e then console.log e + try ChatMessage._ensureIndex { 'expireAt': 1 }, { expireAfterSeconds: 0 } catch e then console.log e diff --git a/server/startup/migrations/v4.coffee b/server/startup/migrations/v4.coffee new file mode 100644 index 0000000000000..09d9b2a38b2af --- /dev/null +++ b/server/startup/migrations/v4.coffee @@ -0,0 +1,36 @@ +Meteor.startup -> + Migrations.add + version: 4 + up: -> + + try ChatMessage._dropIndex 'rid_1' + try ChatSubscription._dropIndex 'u._id_1' + + + console.log 'Rename rn to name' + ChatSubscription.update({rn: {$exists: true}}, {$rename: {rn: 'name'}}, {multi: true}) + + + console.log 'Adding names to rooms without name' + ChatRoom.find({name: ''}).forEach (item) -> + name = Random.id().toLowerCase() + ChatRoom.update item._id, {$set: {name: name}} + ChatSubscription.update {rid: item._id}, {$set: {name: name}}, {multi: true} + + + console.log 'Making room names unique' + ChatRoom.find().forEach (room) -> + ChatRoom.find({name: room.name, _id: {$ne: room._id}}).forEach (item) -> + name = room.name + '-' + Random.id(2).toLowerCase() + ChatRoom.update item._id, {$set: {name: name}} + ChatSubscription.update {rid: item._id}, {$set: {name: name}}, {multi: true} + + + console.log 'Dropping test rooms with less than 10 messages' + ChatRoom.find({msgs: {'$lt': 10}}).forEach (room) -> + ChatRoom.remove room._id + ChatMessage.remove {rid: room._id} + ChatSubscription.remove {rid: room._id} + + + console.log 'End'