summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorNicolas Werner <nicolas.werner@hotmail.de>2019-12-13 20:49:27 +0100
committerNicolas Werner <nicolas.werner@hotmail.de>2019-12-13 20:49:27 +0100
commitba25771c08755c8478eace29d3123bdfc7af1385 (patch)
tree8e91d938ef8a0703a3c50824248f33110fe132ea /src
parentMake images always fit the timeline (diff)
downloadnheko-ba25771c08755c8478eace29d3123bdfc7af1385.tar.xz
Make invites always stick to the top
This also removes an ugly hack, that was needed before.
Diffstat (limited to 'src')
-rw-r--r--src/RoomInfoListItem.cpp12
-rw-r--r--src/RoomList.cpp9
2 files changed, 8 insertions, 13 deletions
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 <http://www.gnu.org/licenses/>. */ +#include <limits> + #include <QApplication> #include <QBuffer> #include <QObject> @@ -191,6 +193,9 @@ RoomList::sync(const std::map<QString, RoomInfo> &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<uint64_t>::max(), room); + else if (room->lastMessageInfo().userid.isEmpty()) times.emplace(0, room); else times.emplace(room->lastMessageInfo().datetime.toMSecsSinceEpoch(), room);