Remove emoji from custom admin ranks.

This commit is contained in:
John Preston 2019-07-28 15:39:06 +02:00
parent 3bf709d459
commit 27d84befa8
6 changed files with 43 additions and 7 deletions

View File

@ -427,14 +427,17 @@ not_null<Ui::InputField*> EditAdminBox::addRankInput() {
this,
st::customBadgeField,
(isOwner ? tr::lng_owner_badge : tr::lng_admin_badge)(),
_oldRank),
TextUtilities::RemoveEmoji(_oldRank)),
st::rightsAboutMargin);
result->setMaxLength(kAdminRoleLimit);
result->setInstantReplaces(Ui::InstantReplaces::Default());
result->setInstantReplacesEnabled(Global::ReplaceEmojiValue());
Ui::Emoji::SuggestionsController::Init(
getDelegate()->outerContainer(),
result);
result->setInstantReplaces(Ui::InstantReplaces::TextOnly());
connect(result, &Ui::InputField::changed, [=] {
const auto text = result->getLastText();
const auto removed = TextUtilities::RemoveEmoji(text);
if (removed != text) {
result->setText(removed);
}
});
addControl(
object_ptr<Ui::FlatLabel>(

View File

@ -674,7 +674,7 @@ void HistoryMessage::refreshMessageBadge() {
} else {
_messageBadge.setText(
st::defaultTextStyle,
TextUtilities::SingleLine(text));
TextUtilities::RemoveEmoji(TextUtilities::SingleLine(text)));
}
}

View File

@ -1302,6 +1302,23 @@ QString RemoveAccents(const QString &text) {
return (i < result.size()) ? result.mid(0, i) : result;
}
QString RemoveEmoji(const QString &text) {
auto result = QString();
result.reserve(text.size());
auto begin = text.data();
const auto end = begin + text.size();
while (begin != end) {
auto length = 0;
if (Ui::Emoji::Find(begin, end, &length)) {
begin += length;
} else {
result.append(*begin++);
}
}
return result;
}
QStringList PrepareSearchWords(const QString &query, const QRegularExpression *SplitterOverride) {
auto clean = RemoveAccents(query.trimmed().toLower());
auto result = QStringList();

View File

@ -281,6 +281,7 @@ QString Clean(const QString &text);
QString EscapeForRichParsing(const QString &text);
QString SingleLine(const QString &text);
QString RemoveAccents(const QString &text);
QString RemoveEmoji(const QString &text);
QStringList PrepareSearchWords(const QString &query, const QRegularExpression *SplitterOverride = nullptr);
bool CutPart(TextWithEntities &sending, TextWithEntities &left, int limit);

View File

@ -936,6 +936,20 @@ const InstantReplaces &InstantReplaces::Default() {
return result;
}
const InstantReplaces &InstantReplaces::TextOnly() {
static const auto result = [] {
auto result = InstantReplaces();
result.add("--", QString(1, QChar(8212)));
result.add("<<", QString(1, QChar(171)));
result.add(">>", QString(1, QChar(187)));
result.add(
":shrug:",
QChar(175) + QString("\\_(") + QChar(12484) + ")_/" + QChar(175));
return result;
}();
return result;
}
FlatInput::FlatInput(
QWidget *parent,
const style::FlatInput &st,

View File

@ -28,6 +28,7 @@ struct InstantReplaces {
void add(const QString &what, const QString &with);
static const InstantReplaces &Default();
static const InstantReplaces &TextOnly();
int maxLength = 0;
Node reverseMap;