Read receipts modal

pull/9717/head
Diego Sampaio 7 years ago
parent 1bda97d87b
commit d9ce4c9a62
No known key found for this signature in database
GPG Key ID: E060152B30502562
  1. 1
      client/main.js
  2. 1
      imports/message-read-receipt/client/index.js
  3. 8
      imports/message-read-receipt/client/readReceipts.html
  4. 29
      imports/message-read-receipt/client/readReceipts.js
  5. 11
      imports/message-read-receipt/server/api/methods/getReadReceipts.js
  6. 2
      imports/message-read-receipt/server/index.js
  7. 11
      imports/message-read-receipt/server/lib/ReadReceipt.js
  8. 6
      imports/message-read-receipt/server/models/ReadReceipts.js
  9. 1
      imports/startup/client/index.js
  10. 14
      packages/rocketchat-ui/client/views/app/room.js

@ -0,0 +1 @@
import '/imports/startup/client';

@ -0,0 +1,8 @@
<template name="readReceipts">
{{#each receipts}}
<div class="message background-transparent-dark-hover">
<div class="user color-primary-font-color">{{user}}</div>
<span class="time color-info-font-color" title="{{dateTime}}">{{time}}</span>
</div>
{{/each}}
</template>

@ -0,0 +1,29 @@
import { ReactiveVar } from 'meteor/reactive-var';
import moment from 'moment';
import './readReceipts.html';
Template.readReceipts.helpers({
receipts() {
return Template.instance().readReceipts.get();
},
user() {
return this.user.name || this.user.username;
},
time() {
return moment(this.ts).format('L LTS');
}
});
Template.readReceipts.onCreated(function readReceiptsOnCreated() {
this.loading = new ReactiveVar(false);
this.readReceipts = new ReactiveVar([]);
});
Template.readReceipts.onRendered(function readReceiptsOnRendered() {
this.loading.set(true);
Meteor.call('getReadReceipts', { messageId: this.data.messageId }, (error, result) => {
this.loading.set(false);
this.readReceipts.set(result);
});
});

@ -0,0 +1,11 @@
import { Meteor } from 'meteor/meteor';
import { ReadReceipt } from '../../lib/ReadReceipt';
Meteor.methods({
getReadReceipts({ messageId }) {
const message = RocketChat.models.Messages.findOneById(messageId);
return ReadReceipt.getReceipts(message);
}
});

@ -1,2 +1,4 @@
import './dbIndexes'; import './dbIndexes';
import './settings'; import './settings';
import './api/methods/getReadReceipts';

@ -34,12 +34,14 @@ export const ReadReceipt = {
// if firstSubscription on room didn't change // if firstSubscription on room didn't change
if (RocketChat.settings.get('Message_Read_Receipt_Store_Users')) { if (RocketChat.settings.get('Message_Read_Receipt_Store_Users')) {
const ts = new Date();
const receipts = RocketChat.models.Messages.findUnreadMessagesByRoomAndDate(roomId, userLastSeen).map(message => { const receipts = RocketChat.models.Messages.findUnreadMessagesByRoomAndDate(roomId, userLastSeen).map(message => {
return { return {
_id: Random.id(), _id: Random.id(),
roomId, roomId,
userId, userId,
messageId: message._id messageId: message._id,
ts
}; };
}); });
@ -51,5 +53,12 @@ export const ReadReceipt = {
} }
RocketChat.models.Messages.setAsRead(roomId, firstSubscription.ls); RocketChat.models.Messages.setAsRead(roomId, firstSubscription.ls);
},
getReceipts(message) {
return ModelReadReceipts.findByMessageId(message._id).map(receipt => ({
...receipt,
user: RocketChat.models.Users.findOneById(receipt.userId, { fields: { username: 1, name: 1 }})
}));
} }
}; };

@ -10,6 +10,10 @@ class ModelReadReceipts extends RocketChat.models._Base {
unique: 1 unique: 1
}); });
} }
findByMessageId(messageId) {
return this.find({ messageId });
}
} }
export default new ModelReadReceipts('message_read_receipt', true); export default new ModelReadReceipts('message_read_receipt');

@ -0,0 +1 @@
import '../../message-read-receipt/client';

@ -718,6 +718,20 @@ Template.room.events({
showCancelButton: true, showCancelButton: true,
cancelButtonText: t('Close') cancelButtonText: t('Close')
}); });
},
'click .read-receipt'(event) {
const data = Blaze.getData(event.currentTarget);
const messageId = data && data._arguments && data._arguments[1] && data._arguments[1]._id;
modal.open({
title: 'Read receipts',
content: 'readReceipts',
data: {
messageId
},
showConfirmButton: true,
showCancelButton: false,
confirmButtonText: t('Close')
});
} }
}); });

Loading…
Cancel
Save