mirror of
https://github.com/Nheko-Reborn/nheko.git
synced 2024-11-26 04:58:49 +03:00
Make invites always stick to the top
This also removes an ugly hack, that was needed before.
This commit is contained in:
parent
a73ed771fa
commit
ba25771c08
2 changed files with 8 additions and 13 deletions
|
@ -107,18 +107,6 @@ RoomInfoListItem::RoomInfoListItem(QString room_id, RoomInfo info, QWidget *pare
|
||||||
, unreadHighlightedMsgCount_(0)
|
, unreadHighlightedMsgCount_(0)
|
||||||
{
|
{
|
||||||
init(parent);
|
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
|
void
|
||||||
|
|
|
@ -15,6 +15,8 @@
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <limits>
|
||||||
|
|
||||||
#include <QApplication>
|
#include <QApplication>
|
||||||
#include <QBuffer>
|
#include <QBuffer>
|
||||||
#include <QObject>
|
#include <QObject>
|
||||||
|
@ -191,6 +193,9 @@ RoomList::sync(const std::map<QString, RoomInfo> &info)
|
||||||
{
|
{
|
||||||
for (const auto &room : info)
|
for (const auto &room : info)
|
||||||
updateRoom(room.first, room.second);
|
updateRoom(room.first, room.second);
|
||||||
|
|
||||||
|
if (!info.empty())
|
||||||
|
sortRoomsByLastMessage();
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -270,7 +275,9 @@ RoomList::sortRoomsByLastMessage()
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
// Not a room message.
|
// 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);
|
times.emplace(0, room);
|
||||||
else
|
else
|
||||||
times.emplace(room->lastMessageInfo().datetime.toMSecsSinceEpoch(), room);
|
times.emplace(room->lastMessageInfo().datetime.toMSecsSinceEpoch(), room);
|
||||||
|
|
Loading…
Reference in a new issue