mirror of
https://github.com/Nheko-Reborn/nheko.git
synced 2024-11-26 21:18:48 +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)
|
text: qsTr("%1 ended the call.").arg(model.data.userName)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
DelegateChoice {
|
||||||
|
roleValue: MtxEvent.CallCandidates
|
||||||
|
NoticeMessage {
|
||||||
|
text: qsTr("Negotiating call...")
|
||||||
|
}
|
||||||
|
}
|
||||||
DelegateChoice {
|
DelegateChoice {
|
||||||
// TODO: make a more complex formatter for the power levels.
|
// TODO: make a more complex formatter for the power levels.
|
||||||
roleValue: MtxEvent.PowerLevels
|
roleValue: MtxEvent.PowerLevels
|
||||||
|
|
|
@ -33,6 +33,7 @@
|
||||||
#include "Cache_p.h"
|
#include "Cache_p.h"
|
||||||
#include "EventAccessors.h"
|
#include "EventAccessors.h"
|
||||||
#include "Logging.h"
|
#include "Logging.h"
|
||||||
|
#include "Olm.h"
|
||||||
#include "Utils.h"
|
#include "Utils.h"
|
||||||
|
|
||||||
//! Should be changed when a breaking change occurs in the cache format.
|
//! Should be changed when a breaking change occurs in the cache format.
|
||||||
|
@ -93,6 +94,33 @@ namespace {
|
||||||
std::unique_ptr<Cache> instance_ = nullptr;
|
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)
|
Cache::Cache(const QString &userId, QObject *parent)
|
||||||
: QObject{parent}
|
: QObject{parent}
|
||||||
, env_{nullptr}
|
, env_{nullptr}
|
||||||
|
@ -2406,7 +2434,7 @@ Cache::saveTimelineMessages(lmdb::txn &txn,
|
||||||
lmdb::dbi_put(txn, evToOrderDb, event_id, lmdb::val(&index, sizeof(index)));
|
lmdb::dbi_put(txn, evToOrderDb, event_id, lmdb::val(&index, sizeof(index)));
|
||||||
|
|
||||||
// TODO(Nico): Allow blacklisting more event types in UI
|
// TODO(Nico): Allow blacklisting more event types in UI
|
||||||
if (event["type"] != "m.reaction" && event["type"] != "m.dummy") {
|
if (!isHiddenEvent(e, room_id)) {
|
||||||
++msgIndex;
|
++msgIndex;
|
||||||
lmdb::cursor_put(msgCursor.handle(),
|
lmdb::cursor_put(msgCursor.handle(),
|
||||||
lmdb::val(&msgIndex, sizeof(msgIndex)),
|
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)));
|
lmdb::dbi_put(txn, evToOrderDb, event_id, lmdb::val(&index, sizeof(index)));
|
||||||
|
|
||||||
// TODO(Nico): Allow blacklisting more event types in UI
|
// TODO(Nico): Allow blacklisting more event types in UI
|
||||||
if (event["type"] != "m.reaction" && event["type"] != "m.dummy") {
|
if (!isHiddenEvent(e, room_id)) {
|
||||||
--msgIndex;
|
--msgIndex;
|
||||||
lmdb::dbi_put(
|
lmdb::dbi_put(
|
||||||
txn, order2msgDb, lmdb::val(&msgIndex, sizeof(msgIndex)), event_id);
|
txn, order2msgDb, lmdb::val(&msgIndex, sizeof(msgIndex)), event_id);
|
||||||
|
|
|
@ -136,6 +136,11 @@ struct RoomEventType
|
||||||
{
|
{
|
||||||
return qml_mtx_events::EventType::CallHangUp;
|
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::Type operator()(const Event<mtx::events::msg::Location> &e) { return
|
||||||
// ::EventType::LocationMessage; }
|
// ::EventType::LocationMessage; }
|
||||||
};
|
};
|
||||||
|
@ -1122,7 +1127,6 @@ struct SendMessageVisitor
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Do-nothing operator for all unhandled events
|
// Do-nothing operator for all unhandled events
|
||||||
template<typename T>
|
template<typename T>
|
||||||
void operator()(const mtx::events::Event<T> &)
|
void operator()(const mtx::events::Event<T> &)
|
||||||
|
|
|
@ -42,6 +42,8 @@ enum EventType
|
||||||
CallAnswer,
|
CallAnswer,
|
||||||
/// m.call.hangup
|
/// m.call.hangup
|
||||||
CallHangUp,
|
CallHangUp,
|
||||||
|
/// m.call.candidates
|
||||||
|
CallCandidates,
|
||||||
/// m.room.canonical_alias
|
/// m.room.canonical_alias
|
||||||
CanonicalAlias,
|
CanonicalAlias,
|
||||||
/// m.room.create
|
/// m.room.create
|
||||||
|
|
Loading…
Reference in a new issue