diff --git a/Telegram/SourceFiles/data/data_types.cpp b/Telegram/SourceFiles/data/data_types.cpp index ab792cd30..8fed3ecd3 100644 --- a/Telegram/SourceFiles/data/data_types.cpp +++ b/Telegram/SourceFiles/data/data_types.cpp @@ -114,8 +114,8 @@ void MessageCursor::applyTo(not_null field) { } PeerId PeerFromMessage(const MTPmessage &message) { - return message.match([](const MTPDmessageEmpty &) { - return PeerId(0); + return message.match([](const MTPDmessageEmpty &data) { + return data.vpeer_id() ? peerFromMTP(*data.vpeer_id()) : PeerId(0); }, [](const auto &data) { return peerFromMTP(data.vpeer_id()); }); diff --git a/Telegram/SourceFiles/history/history.cpp b/Telegram/SourceFiles/history/history.cpp index 250fcb831..56ca12032 100644 --- a/Telegram/SourceFiles/history/history.cpp +++ b/Telegram/SourceFiles/history/history.cpp @@ -459,8 +459,15 @@ std::vector> History::createItems( const auto detachExistingItem = true; for (auto i = data.cend(), e = data.cbegin(); i != e;) { const auto &data = *--i; + const auto id = IdFromMessage(data); + if ((id.bare == 1) && (data.type() == mtpc_messageEmpty)) { + // The first message of channels should be a service message + // about its creation. But if channel auto-cleaning is enabled, + // the first message comes empty and is displayed incorrectly. + continue; + } result.emplace_back(createItem( - IdFromMessage(data), + id, data, localFlags, detachExistingItem));