[NEW] Mark message as unread (#1785)
Co-authored-by: Djorkaeff Alexandre <djorkaeff.unb@gmail.com>
This commit is contained in:
parent
98e65d69d4
commit
9d615d5ffb
|
@ -63,6 +63,12 @@ class MessageActions extends React.Component {
|
||||||
this.EDIT_INDEX = this.options.length - 1;
|
this.EDIT_INDEX = this.options.length - 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Mark as unread
|
||||||
|
if (message.u && message.u._id !== user.id) {
|
||||||
|
this.options.push(I18n.t('Mark_unread'));
|
||||||
|
this.UNREAD_INDEX = this.options.length - 1;
|
||||||
|
}
|
||||||
|
|
||||||
// Permalink
|
// Permalink
|
||||||
this.options.push(I18n.t('Permalink'));
|
this.options.push(I18n.t('Permalink'));
|
||||||
this.PERMALINK_INDEX = this.options.length - 1;
|
this.PERMALINK_INDEX = this.options.length - 1;
|
||||||
|
@ -243,6 +249,30 @@ class MessageActions extends React.Component {
|
||||||
editInit(message);
|
editInit(message);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
handleUnread = async() => {
|
||||||
|
const { message, room } = this.props;
|
||||||
|
const { id: messageId, ts } = message;
|
||||||
|
const { rid } = room;
|
||||||
|
try {
|
||||||
|
const db = database.active;
|
||||||
|
const result = await RocketChat.markAsUnread({ messageId });
|
||||||
|
if (result.success) {
|
||||||
|
const subCollection = db.collections.get('subscriptions');
|
||||||
|
const subRecord = await subCollection.find(rid);
|
||||||
|
await db.action(async() => {
|
||||||
|
try {
|
||||||
|
await subRecord.update(sub => sub.lastOpen = ts);
|
||||||
|
} catch {
|
||||||
|
// do nothing
|
||||||
|
}
|
||||||
|
});
|
||||||
|
Navigation.navigate('RoomsListView');
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
log(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
handleCopy = async() => {
|
handleCopy = async() => {
|
||||||
const { message } = this.props;
|
const { message } = this.props;
|
||||||
await Clipboard.setString(message.msg);
|
await Clipboard.setString(message.msg);
|
||||||
|
@ -349,6 +379,9 @@ class MessageActions extends React.Component {
|
||||||
case this.EDIT_INDEX:
|
case this.EDIT_INDEX:
|
||||||
this.handleEdit();
|
this.handleEdit();
|
||||||
break;
|
break;
|
||||||
|
case this.UNREAD_INDEX:
|
||||||
|
this.handleUnread();
|
||||||
|
break;
|
||||||
case this.PERMALINK_INDEX:
|
case this.PERMALINK_INDEX:
|
||||||
this.handlePermalink();
|
this.handlePermalink();
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -501,5 +501,6 @@ export default {
|
||||||
New_line: 'New line',
|
New_line: 'New line',
|
||||||
You_will_be_logged_out_of_this_application: 'You will be logged out of this application.',
|
You_will_be_logged_out_of_this_application: 'You will be logged out of this application.',
|
||||||
Clear: 'Clear',
|
Clear: 'Clear',
|
||||||
This_will_clear_all_your_offline_data: 'This will clear all your offline data.'
|
This_will_clear_all_your_offline_data: 'This will clear all your offline data.',
|
||||||
|
Mark_unread: 'Mark Unread'
|
||||||
};
|
};
|
||||||
|
|
|
@ -449,5 +449,6 @@ export default {
|
||||||
New_line: 'Nova linha',
|
New_line: 'Nova linha',
|
||||||
You_will_be_logged_out_of_this_application: 'Você sairá deste aplicativo.',
|
You_will_be_logged_out_of_this_application: 'Você sairá deste aplicativo.',
|
||||||
Clear: 'Limpar',
|
Clear: 'Limpar',
|
||||||
This_will_clear_all_your_offline_data: 'Isto limpará todos os seus dados offline.'
|
This_will_clear_all_your_offline_data: 'Isto limpará todos os seus dados offline.',
|
||||||
|
Mark_unread: 'Marcar como não Lida'
|
||||||
};
|
};
|
||||||
|
|
|
@ -649,6 +649,9 @@ const RocketChat = {
|
||||||
// RC 0.49.0
|
// RC 0.49.0
|
||||||
return this.sdk.post('chat.update', { roomId: rid, msgId: id, text: msg });
|
return this.sdk.post('chat.update', { roomId: rid, msgId: id, text: msg });
|
||||||
},
|
},
|
||||||
|
markAsUnread({ messageId }) {
|
||||||
|
return this.sdk.post('subscriptions.unread', { firstUnreadMessage: { _id: messageId } });
|
||||||
|
},
|
||||||
toggleStarMessage(messageId, starred) {
|
toggleStarMessage(messageId, starred) {
|
||||||
if (starred) {
|
if (starred) {
|
||||||
// RC 0.59.0
|
// RC 0.59.0
|
||||||
|
|
|
@ -737,7 +737,7 @@ class RoomView extends React.Component {
|
||||||
showUnreadSeparator = moment(item.ts).isAfter(lastOpen);
|
showUnreadSeparator = moment(item.ts).isAfter(lastOpen);
|
||||||
} else {
|
} else {
|
||||||
showUnreadSeparator = lastOpen
|
showUnreadSeparator = lastOpen
|
||||||
&& moment(item.ts).isAfter(lastOpen)
|
&& moment(item.ts).isSameOrAfter(lastOpen)
|
||||||
&& moment(previousItem.ts).isBefore(lastOpen);
|
&& moment(previousItem.ts).isBefore(lastOpen);
|
||||||
if (!moment(item.ts).isSame(previousItem.ts, 'day')) {
|
if (!moment(item.ts).isSame(previousItem.ts, 'day')) {
|
||||||
dateSeparator = item.ts;
|
dateSeparator = item.ts;
|
||||||
|
|
Loading…
Reference in New Issue