From c7ed80595927e3cf677b843d224083193d3199a5 Mon Sep 17 00:00:00 2001 From: Dennis Beier <nanovim@gmail.com> Date: Thu, 6 Dec 2018 22:13:39 +0100 Subject: [PATCH] implemented whitelisting --- repos/entities/rocketchatchannel.cpp | 34 ++++++++++++++++++++++++++++ repos/entities/rocketchatchannel.h | 3 +++ 2 files changed, 37 insertions(+) diff --git a/repos/entities/rocketchatchannel.cpp b/repos/entities/rocketchatchannel.cpp index 2538f78..61b728c 100755 --- a/repos/entities/rocketchatchannel.cpp +++ b/repos/entities/rocketchatchannel.cpp @@ -184,6 +184,7 @@ unsigned int RocketChatChannel::getUnreadMessages() const return mUnreadMessages; } + void RocketChatChannel::setUnreadMessages( unsigned int value ) { qDebug() << "set unread to: " << value; @@ -319,3 +320,36 @@ void RocketChatChannel::setBlocked( bool blocked ) mBlocked = blocked; emit dataChanged( mRoomId, "blocked" ); } + +QStringList RocketChatChannel::whiteList(const QList<QString> ids, const qint64 newest,const qint64 oldest) +{ + auto idSet = ids.toSet(); + auto currentList = mMessages.getElements().keys().toSet(); + auto blacklist = currentList - idSet; + QList<QString> buffer = {}; + std::copy_if (blacklist.begin(), blacklist.end(), std::back_inserter(buffer), + [=](const QString id){ + bool keep = true; + if(mMessages.contains(id) && mMessages.get(id)->getRoomId() == getRoomId()){ + auto message = mMessages.get(id); + keep = message->inTimeIntervall(newest,oldest); + } + return keep; + } + ); + blacklist = buffer.toSet(); + for(QString id : blacklist){ + mMessages.remove(id); + emit messageDeleted(getRoomId(),id); + } + return blacklist.toList(); +} + +void RocketChatChannel::deleteMessage(const QString id) +{ + emit messageDeleted(getRoomId(),id); + if(mMessages.contains(id)){ + mMessages.remove(id); + } + +} diff --git a/repos/entities/rocketchatchannel.h b/repos/entities/rocketchatchannel.h index 771df52..d5fbc27 100755 --- a/repos/entities/rocketchatchannel.h +++ b/repos/entities/rocketchatchannel.h @@ -128,6 +128,8 @@ class RocketChatChannel : public QObject const QString &getChatPartnerId() const; void setChatPartnerId( const QString &chatPartnerId ); + void deleteMessage(const QString id); + QStringList whiteList(const QList<QString> ids, const qint64 newest,const qint64 oldest); private: QString mOwnerName; QString mOwnerId; @@ -154,6 +156,7 @@ class RocketChatChannel : public QObject void channelDeleted( const QString &pId, bool deleted ); void dataChanged( const QString &id, const QString &property ); void chatPartnerStatusChanged(); + void messageDeleted(const QString, const QString); }; -- GitLab