Fix game scores display.

This commit is contained in:
John Preston 2018-04-07 11:41:48 +04:00
parent e5b2e0a6b5
commit 64d5a6acd5
6 changed files with 31 additions and 4 deletions

View file

@ -205,6 +205,10 @@ bool Media::consumeMessageText(const TextWithEntities &text) {
return false;
}
TextWithEntities Media::consumedMessageText() const {
return {};
}
std::unique_ptr<HistoryMedia> Media::createView(
not_null<HistoryView::Element*> message) {
return createView(message, message->data());
@ -1041,6 +1045,10 @@ bool MediaGame::consumeMessageText(const TextWithEntities &text) {
return true;
}
TextWithEntities MediaGame::consumedMessageText() const {
return _consumedText;
}
bool MediaGame::updateInlineResultMedia(const MTPMessageMedia &media) {
return updateSentMedia(media);
}

View file

@ -100,6 +100,7 @@ public:
[[nodiscard]] virtual bool consumeMessageText(
const TextWithEntities &text);
[[nodiscard]] virtual TextWithEntities consumedMessageText() const;
// After sending an inline result we may want to completely recreate
// the media (all media that was generated on client side, for example).
@ -334,6 +335,7 @@ public:
not_null<ChannelData*> channel) const override;
bool consumeMessageText(const TextWithEntities &text) override;
TextWithEntities consumedMessageText() const override;
bool updateInlineResultMedia(const MTPMessageMedia &media) override;
bool updateSentMedia(const MTPMessageMedia &media) override;

View file

@ -1258,7 +1258,7 @@ void Session::gameApplyFields(
const QString &description,
PhotoData *photo,
DocumentData *document) {
if (game->accessHash || !accessHash) {
if (game->accessHash) {
return;
}
game->accessHash = accessHash;

View file

@ -4221,6 +4221,21 @@ int HistoryGame::bottomInfoPadding() const {
return result;
}
void HistoryGame::parentTextUpdated() {
if (const auto media = _parent->data()->media()) {
const auto consumed = media->consumedMessageText();
if (!consumed.text.isEmpty()) {
_description.setMarkedText(
st::webPageDescriptionStyle,
consumed,
Ui::ItemTextOptions(_parent->data()));
} else {
_description = Text(st::msgMinWidth - st::webPageLeft);
}
Auth().data().requestViewResize(_parent);
}
}
HistoryGame::~HistoryGame() {
Auth().data().unregisterGameView(_data, _parent);
}

View file

@ -805,6 +805,8 @@ public:
return _attach.get();
}
void parentTextUpdated() override;
~HistoryGame();
private:

View file

@ -890,10 +890,10 @@ void HistoryMessage::applyEdition(const MTPDmessage &message) {
if (message.has_entities()) {
textWithEntities.entities = TextUtilities::EntitiesFromMTP(message.ventities.v);
}
setText(textWithEntities);
setReplyMarkup(message.has_reply_markup() ? (&message.vreply_markup) : nullptr);
refreshMedia(message.has_media() ? (&message.vmedia) : nullptr);
setViewsCount(message.has_views() ? message.vviews.v : -1);
setText(textWithEntities);
finishEdition(keyboardTop);
}
@ -905,9 +905,9 @@ void HistoryMessage::applyEdition(const MTPDmessageService &message) {
}
void HistoryMessage::applyEditionToEmpty() {
setEmptyText();
refreshMedia(nullptr);
setReplyMarkup(nullptr);
refreshMedia(nullptr);
setEmptyText();
setViewsCount(-1);
finishEditionToEmpty();