mirror of
https://github.com/Nheko-Reborn/nheko.git
synced 2024-11-22 19:08:58 +03:00
Hide CallCandidates again in new store
This commit is contained in:
parent
de7ec4d2b3
commit
7f7108161e
4 changed files with 43 additions and 3 deletions
|
@ -114,6 +114,12 @@ Item {
|
|||
text: qsTr("%1 ended the call.").arg(model.data.userName)
|
||||
}
|
||||
}
|
||||
DelegateChoice {
|
||||
roleValue: MtxEvent.CallCandidates
|
||||
NoticeMessage {
|
||||
text: qsTr("Negotiating call...")
|
||||
}
|
||||
}
|
||||
DelegateChoice {
|
||||
// TODO: make a more complex formatter for the power levels.
|
||||
roleValue: MtxEvent.PowerLevels
|
||||
|
|
|
@ -33,6 +33,7 @@
|
|||
#include "Cache_p.h"
|
||||
#include "EventAccessors.h"
|
||||
#include "Logging.h"
|
||||
#include "Olm.h"
|
||||
#include "Utils.h"
|
||||
|
||||
//! Should be changed when a breaking change occurs in the cache format.
|
||||
|
@ -93,6 +94,33 @@ namespace {
|
|||
std::unique_ptr<Cache> instance_ = nullptr;
|
||||
}
|
||||
|
||||
static bool
|
||||
isHiddenEvent(mtx::events::collections::TimelineEvents e, const std::string &room_id)
|
||||
{
|
||||
using namespace mtx::events;
|
||||
if (auto encryptedEvent = std::get_if<EncryptedEvent<msg::Encrypted>>(&e)) {
|
||||
MegolmSessionIndex index;
|
||||
index.room_id = room_id;
|
||||
index.session_id = encryptedEvent->content.session_id;
|
||||
index.sender_key = encryptedEvent->content.sender_key;
|
||||
|
||||
auto result = olm::decryptEvent(index, *encryptedEvent);
|
||||
if (!result.error)
|
||||
e = result.event.value();
|
||||
}
|
||||
|
||||
static constexpr std::initializer_list<EventType> hiddenEvents = {
|
||||
EventType::Reaction, EventType::CallCandidates, EventType::Unsupported};
|
||||
|
||||
return std::visit(
|
||||
[](const auto &ev) {
|
||||
return std::any_of(hiddenEvents.begin(),
|
||||
hiddenEvents.end(),
|
||||
[ev](EventType type) { return type == ev.type; });
|
||||
},
|
||||
e);
|
||||
}
|
||||
|
||||
Cache::Cache(const QString &userId, QObject *parent)
|
||||
: QObject{parent}
|
||||
, env_{nullptr}
|
||||
|
@ -2406,7 +2434,7 @@ Cache::saveTimelineMessages(lmdb::txn &txn,
|
|||
lmdb::dbi_put(txn, evToOrderDb, event_id, lmdb::val(&index, sizeof(index)));
|
||||
|
||||
// TODO(Nico): Allow blacklisting more event types in UI
|
||||
if (event["type"] != "m.reaction" && event["type"] != "m.dummy") {
|
||||
if (!isHiddenEvent(e, room_id)) {
|
||||
++msgIndex;
|
||||
lmdb::cursor_put(msgCursor.handle(),
|
||||
lmdb::val(&msgIndex, sizeof(msgIndex)),
|
||||
|
@ -2489,7 +2517,7 @@ Cache::saveOldMessages(const std::string &room_id, const mtx::responses::Message
|
|||
lmdb::dbi_put(txn, evToOrderDb, event_id, lmdb::val(&index, sizeof(index)));
|
||||
|
||||
// TODO(Nico): Allow blacklisting more event types in UI
|
||||
if (event["type"] != "m.reaction" && event["type"] != "m.dummy") {
|
||||
if (!isHiddenEvent(e, room_id)) {
|
||||
--msgIndex;
|
||||
lmdb::dbi_put(
|
||||
txn, order2msgDb, lmdb::val(&msgIndex, sizeof(msgIndex)), event_id);
|
||||
|
|
|
@ -136,6 +136,11 @@ struct RoomEventType
|
|||
{
|
||||
return qml_mtx_events::EventType::CallHangUp;
|
||||
}
|
||||
qml_mtx_events::EventType operator()(
|
||||
const mtx::events::Event<mtx::events::msg::CallCandidates> &)
|
||||
{
|
||||
return qml_mtx_events::EventType::CallCandidates;
|
||||
}
|
||||
// ::EventType::Type operator()(const Event<mtx::events::msg::Location> &e) { return
|
||||
// ::EventType::LocationMessage; }
|
||||
};
|
||||
|
@ -1122,7 +1127,6 @@ struct SendMessageVisitor
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
// Do-nothing operator for all unhandled events
|
||||
template<typename T>
|
||||
void operator()(const mtx::events::Event<T> &)
|
||||
|
|
|
@ -42,6 +42,8 @@ enum EventType
|
|||
CallAnswer,
|
||||
/// m.call.hangup
|
||||
CallHangUp,
|
||||
/// m.call.candidates
|
||||
CallCandidates,
|
||||
/// m.room.canonical_alias
|
||||
CanonicalAlias,
|
||||
/// m.room.create
|
||||
|
|
Loading…
Reference in a new issue