Make forward messages a bit more readable

This commit is contained in:
Nicolas Werner 2021-04-27 11:33:46 +02:00
parent 65d85768d0
commit 2b253ead9e
No known key found for this signature in database
GPG key ID: C8D75E610773F2D9
3 changed files with 55 additions and 51 deletions

View file

@ -18,6 +18,7 @@
#include "CompletionProxyModel.h"
#include "DelegateChooser.h"
#include "DeviceVerificationFlow.h"
#include "EventAccessors.h"
#include "Logging.h"
#include "MainWindow.h"
#include "MatrixClient.h"
@ -36,6 +37,54 @@ Q_DECLARE_METATYPE(std::vector<DeviceInfo>)
namespace msgs = mtx::events::msg;
namespace {
template<template<class...> class Op, class... Args>
using is_detected = typename nheko::detail::detector<nheko::nonesuch, void, Op, Args...>::value_t;
template<class Content>
using file_t = decltype(Content::file);
template<class Content>
using url_t = decltype(Content::url);
template<class Content>
using body_t = decltype(Content::body);
template<class Content>
using formatted_body_t = decltype(Content::formatted_body);
template<typename T>
static constexpr bool
messageWithFileAndUrl(const mtx::events::Event<T> &)
{
return is_detected<file_t, T>::value && is_detected<url_t, T>::value;
}
template<typename T>
static constexpr void
removeReplyFallback(mtx::events::Event<T> &e)
{
if constexpr (is_detected<body_t, T>::value) {
if constexpr (std::is_same_v<std::optional<std::string>,
std::remove_cv_t<decltype(e.content.body)>>) {
if (e.content.body) {
e.content.body = utils::stripReplyFromBody(e.content.body);
}
} else if constexpr (std::is_same_v<std::string,
std::remove_cv_t<decltype(e.content.body)>>) {
e.content.body = utils::stripReplyFromBody(e.content.body);
}
}
if constexpr (is_detected<formatted_body_t, T>::value) {
if (e.content.format == "org.matrix.custom.html") {
e.content.formatted_body =
utils::stripReplyFromFormattedBody(e.content.formatted_body);
}
}
}
}
void
TimelineViewManager::updateEncryptedDescriptions()
{
@ -694,4 +743,4 @@ TimelineViewManager::forwardMessageToRoom(mtx::events::collections::TimelineEven
}
},
*e);
}
}