[FIX] Support chats order for older versions of the server (#2934)
* Update mergeSubscriptionsRooms.js * Update mergeSubscriptionsRooms.js * Update mergeSubscriptionsRooms.js * Minor refactor Co-authored-by: Diego Mello <diegolmello@gmail.com>
This commit is contained in:
parent
5d3776d4f1
commit
99a32479f4
|
@ -1,11 +1,14 @@
|
||||||
import EJSON from 'ejson';
|
import EJSON from 'ejson';
|
||||||
|
import { lt, coerce } from 'semver';
|
||||||
|
|
||||||
import normalizeMessage from './normalizeMessage';
|
import normalizeMessage from './normalizeMessage';
|
||||||
import findSubscriptionsRooms from './findSubscriptionsRooms';
|
import findSubscriptionsRooms from './findSubscriptionsRooms';
|
||||||
import { Encryption } from '../../encryption';
|
import { Encryption } from '../../encryption';
|
||||||
|
import reduxStore from '../../createStore';
|
||||||
// TODO: delete and update
|
// TODO: delete and update
|
||||||
|
|
||||||
export const merge = (subscription, room) => {
|
export const merge = (subscription, room) => {
|
||||||
|
const serverVersion = reduxStore.getState().server.version;
|
||||||
subscription = EJSON.fromJSONValue(subscription);
|
subscription = EJSON.fromJSONValue(subscription);
|
||||||
room = EJSON.fromJSONValue(room);
|
room = EJSON.fromJSONValue(room);
|
||||||
|
|
||||||
|
@ -25,9 +28,15 @@ export const merge = (subscription, room) => {
|
||||||
subscription.usernames = room.usernames;
|
subscription.usernames = room.usernames;
|
||||||
subscription.uids = room.uids;
|
subscription.uids = room.uids;
|
||||||
}
|
}
|
||||||
|
if (serverVersion && lt(coerce(serverVersion), '3.7.0')) {
|
||||||
|
const updatedAt = room?._updatedAt ? new Date(room._updatedAt) : null;
|
||||||
|
const lastMessageTs = subscription?.lastMessage?.ts ? new Date(subscription.lastMessage.ts) : null;
|
||||||
|
subscription.roomUpdatedAt = Math.max(updatedAt, lastMessageTs);
|
||||||
|
} else {
|
||||||
// https://github.com/RocketChat/Rocket.Chat/blob/develop/app/ui-sidenav/client/roomList.js#L180
|
// https://github.com/RocketChat/Rocket.Chat/blob/develop/app/ui-sidenav/client/roomList.js#L180
|
||||||
const lastRoomUpdate = room.lm || subscription.ts || subscription._updatedAt;
|
const lastRoomUpdate = room.lm || subscription.ts || subscription._updatedAt;
|
||||||
subscription.roomUpdatedAt = subscription.lr ? Math.max(new Date(subscription.lr), new Date(lastRoomUpdate)) : lastRoomUpdate;
|
subscription.roomUpdatedAt = subscription.lr ? Math.max(new Date(subscription.lr), new Date(lastRoomUpdate)) : lastRoomUpdate;
|
||||||
|
}
|
||||||
subscription.ro = room.ro;
|
subscription.ro = room.ro;
|
||||||
subscription.broadcast = room.broadcast;
|
subscription.broadcast = room.broadcast;
|
||||||
subscription.encrypted = room.encrypted;
|
subscription.encrypted = room.encrypted;
|
||||||
|
|
Loading…
Reference in New Issue