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

View File

@ -674,7 +674,7 @@ void HistoryMessage::refreshMessageBadge() {
} else { } else {
_messageBadge.setText( _messageBadge.setText(
st::defaultTextStyle, 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; 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) { QStringList PrepareSearchWords(const QString &query, const QRegularExpression *SplitterOverride) {
auto clean = RemoveAccents(query.trimmed().toLower()); auto clean = RemoveAccents(query.trimmed().toLower());
auto result = QStringList(); auto result = QStringList();

View File

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

View File

@ -936,6 +936,20 @@ const InstantReplaces &InstantReplaces::Default() {
return result; 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( FlatInput::FlatInput(
QWidget *parent, QWidget *parent,
const style::FlatInput &st, const style::FlatInput &st,

View File

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