mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2025-06-05 06:33:57 +02:00
Display topic title in topic-root reply bars.
This commit is contained in:
parent
15f72ca6c1
commit
83ec449890
2 changed files with 43 additions and 24 deletions
|
@ -636,25 +636,39 @@ void HistoryService::setMessageByAction(const MTPmessageAction &action) {
|
||||||
return result;
|
return result;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const auto wrapTopicIcon = [](DocumentId id) {
|
||||||
|
return TextWithEntities{
|
||||||
|
"@",
|
||||||
|
{ EntityInText(
|
||||||
|
EntityType::CustomEmoji,
|
||||||
|
0,
|
||||||
|
1,
|
||||||
|
Data::SerializeCustomEmojiId({ .id = id }))
|
||||||
|
},
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
auto prepareTopicCreate = [&](const MTPDmessageActionTopicCreate &action) {
|
auto prepareTopicCreate = [&](const MTPDmessageActionTopicCreate &action) {
|
||||||
auto result = PreparedText{};
|
auto result = PreparedText{};
|
||||||
result.text = { tr::lng_action_topic_created_inside(tr::now) };
|
auto title = TextWithEntities{
|
||||||
|
qs(action.vtitle())
|
||||||
|
};
|
||||||
|
if (const auto icon = action.vicon_emoji_id().value_or_empty()) {
|
||||||
|
title = wrapTopicIcon(icon).append(' ').append(std::move(title));
|
||||||
|
}
|
||||||
|
const auto topicUrl = u"internal:url:https://t.me/c/%1/%2"_q
|
||||||
|
.arg(peerToChannel(history()->peer->id).bare)
|
||||||
|
.arg(id.bare);
|
||||||
|
result.text = tr::lng_action_topic_created(
|
||||||
|
tr::now,
|
||||||
|
lt_topic,
|
||||||
|
Ui::Text::Link(std::move(title), topicUrl),
|
||||||
|
Ui::Text::WithEntities);
|
||||||
return result;
|
return result;
|
||||||
};
|
};
|
||||||
|
|
||||||
auto prepareTopicEdit = [&](const MTPDmessageActionTopicEdit &action) {
|
auto prepareTopicEdit = [&](const MTPDmessageActionTopicEdit &action) {
|
||||||
auto result = PreparedText{};
|
auto result = PreparedText{};
|
||||||
const auto wrapIcon = [](DocumentId id) {
|
|
||||||
return TextWithEntities{
|
|
||||||
"@",
|
|
||||||
{ EntityInText(
|
|
||||||
EntityType::CustomEmoji,
|
|
||||||
0,
|
|
||||||
1,
|
|
||||||
Data::SerializeCustomEmojiId({ .id = id }))
|
|
||||||
},
|
|
||||||
};
|
|
||||||
};
|
|
||||||
if (const auto closed = action.vclosed()) {
|
if (const auto closed = action.vclosed()) {
|
||||||
result.text = { mtpIsTrue(*closed)
|
result.text = { mtpIsTrue(*closed)
|
||||||
? tr::lng_action_topic_closed_inside(tr::now)
|
? tr::lng_action_topic_closed_inside(tr::now)
|
||||||
|
@ -670,7 +684,7 @@ void HistoryService::setMessageByAction(const MTPmessageAction &action) {
|
||||||
lt_link,
|
lt_link,
|
||||||
{ tr::lng_action_topic_placeholder(tr::now) },
|
{ tr::lng_action_topic_placeholder(tr::now) },
|
||||||
lt_emoji,
|
lt_emoji,
|
||||||
wrapIcon(iconId),
|
wrapTopicIcon(iconId),
|
||||||
Ui::Text::WithEntities);
|
Ui::Text::WithEntities);
|
||||||
} else {
|
} else {
|
||||||
result.links.push_back(fromLink());
|
result.links.push_back(fromLink());
|
||||||
|
@ -689,7 +703,9 @@ void HistoryService::setMessageByAction(const MTPmessageAction &action) {
|
||||||
qs(*action.vtitle())
|
qs(*action.vtitle())
|
||||||
};
|
};
|
||||||
if (const auto icon = action.vicon_emoji_id().value_or_empty()) {
|
if (const auto icon = action.vicon_emoji_id().value_or_empty()) {
|
||||||
title = wrapIcon(icon).append(' ').append(std::move(title));
|
title = wrapTopicIcon(icon)
|
||||||
|
.append(' ')
|
||||||
|
.append(std::move(title));
|
||||||
}
|
}
|
||||||
result.text = tr::lng_action_topic_renamed(
|
result.text = tr::lng_action_topic_renamed(
|
||||||
tr::now,
|
tr::now,
|
||||||
|
|
|
@ -667,14 +667,23 @@ int Element::textHeightFor(int textWidth) {
|
||||||
}
|
}
|
||||||
|
|
||||||
auto Element::contextDependentServiceText() -> TextWithLinks {
|
auto Element::contextDependentServiceText() -> TextWithLinks {
|
||||||
if (_delegate->elementContext() == Context::Replies) {
|
|
||||||
return {};
|
|
||||||
}
|
|
||||||
const auto item = data();
|
const auto item = data();
|
||||||
const auto info = item->Get<HistoryServiceTopicInfo>();
|
const auto info = item->Get<HistoryServiceTopicInfo>();
|
||||||
if (!info) {
|
if (!info) {
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
|
const auto created = !info->closed
|
||||||
|
&& !info->reopened
|
||||||
|
&& !info->renamed
|
||||||
|
&& !info->reiconed;
|
||||||
|
if (_delegate->elementContext() == Context::Replies) {
|
||||||
|
if (created) {
|
||||||
|
return { { tr::lng_action_topic_created_inside(tr::now) } };
|
||||||
|
}
|
||||||
|
return {};
|
||||||
|
} else if (created) {
|
||||||
|
return{};
|
||||||
|
}
|
||||||
const auto peerId = item->history()->peer->id;
|
const auto peerId = item->history()->peer->id;
|
||||||
const auto topicRootId = item->topicRootId();
|
const auto topicRootId = item->topicRootId();
|
||||||
if (!topicRootId || !peerIsChannel(peerId)) {
|
if (!topicRootId || !peerIsChannel(peerId)) {
|
||||||
|
@ -791,13 +800,7 @@ auto Element::contextDependentServiceText() -> TextWithLinks {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
return {
|
return {};
|
||||||
tr::lng_action_topic_created(
|
|
||||||
tr::now,
|
|
||||||
lt_topic,
|
|
||||||
wrapTopic(info->title, info->iconId),
|
|
||||||
Ui::Text::WithEntities),
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue