diff --git a/src/RoomInfoListItem.cpp b/src/RoomInfoListItem.cpp
index 8bebb0f5..77de8d5a 100644
--- a/src/RoomInfoListItem.cpp
+++ b/src/RoomInfoListItem.cpp
@@ -107,18 +107,6 @@ RoomInfoListItem::RoomInfoListItem(QString room_id, RoomInfo info, QWidget *pare
, unreadHighlightedMsgCount_(0)
{
init(parent);
-
- QString emptyEventId;
-
- // HACK
- // We use fake message info with an old date to pin
- // the invite events to the top.
- //
- // State events in invited rooms don't contain timestamp info,
- // so we can't use them for sorting.
- if (roomType_ == RoomType::Invited)
- lastMsgInfo_ = {
- emptyEventId, "-", "-", "-", QDateTime::currentDateTime().addYears(10)};
}
void
diff --git a/src/RoomList.cpp b/src/RoomList.cpp
index c5e05621..dfd4eff8 100644
--- a/src/RoomList.cpp
+++ b/src/RoomList.cpp
@@ -15,6 +15,8 @@
* along with this program. If not, see .
*/
+#include
+
#include
#include
#include
@@ -191,6 +193,9 @@ RoomList::sync(const std::map &info)
{
for (const auto &room : info)
updateRoom(room.first, room.second);
+
+ if (!info.empty())
+ sortRoomsByLastMessage();
}
void
@@ -270,7 +275,9 @@ RoomList::sortRoomsByLastMessage()
continue;
// Not a room message.
- if (room->lastMessageInfo().userid.isEmpty())
+ if (room->isInvite())
+ times.emplace(std::numeric_limits::max(), room);
+ else if (room->lastMessageInfo().userid.isEmpty())
times.emplace(0, room);
else
times.emplace(room->lastMessageInfo().datetime.toMSecsSinceEpoch(), room);