From 7413950e10c0808fd5db6b11ed4dc4a930022efe Mon Sep 17 00:00:00 2001 From: John Preston Date: Tue, 8 Sep 2015 20:59:36 +0300 Subject: [PATCH] fixed unread and from_id in channels --- Telegram/SourceFiles/history.cpp | 24 +++++++----------------- Telegram/SourceFiles/history.h | 3 +-- 2 files changed, 8 insertions(+), 19 deletions(-) diff --git a/Telegram/SourceFiles/history.cpp b/Telegram/SourceFiles/history.cpp index e8b21397c..dc715f5ed 100644 --- a/Telegram/SourceFiles/history.cpp +++ b/Telegram/SourceFiles/history.cpp @@ -326,6 +326,9 @@ History::History(const PeerId &peerId) : width(0), height(0) , posInDialogs(0) , typingText(st::dlgRichMinWidth) { + if (peer->isChannel() || (peer->isUser() && peer->asUser()->botInfo)) { + outboxReadBefore = INT_MAX; + } for (int32 i = 0; i < OverviewCount; ++i) { _overviewCount[i] = -1; // not loaded yet } @@ -727,7 +730,7 @@ HistoryItem *History::createItem(HistoryBlock *block, const MTPmessage &msg, boo default: badMedia = 1; break; } if (badMedia) { - result = new HistoryServiceMsg(this, block, m.vid.v, date(m.vdate), lang((badMedia == 2) ? lng_message_empty : lng_media_unsupported), m.vflags.v, 0, m.vfrom_id.v); + result = new HistoryServiceMsg(this, block, m.vid.v, date(m.vdate), lang((badMedia == 2) ? lng_message_empty : lng_media_unsupported), m.vflags.v, 0, m.has_from_id() ? m.vfrom_id.v : 0); } else { if ((m.has_fwd_date() && m.vfwd_date.v > 0) || (m.has_fwd_from_id() && m.vfwd_from_id.v != 0)) { result = new HistoryForwarded(this, block, m); @@ -1812,20 +1815,7 @@ HistoryItem::HistoryItem(History *history, HistoryBlock *block, MsgId msgId, int { } -void HistoryItem::markRead() { - if (_flags & MTPDmessage_flag_unread) { - if (out()) { - _history->outboxRead(this); - } else { - _history->inboxRead(this); - } - App::main()->msgUpdated(_history->peer->id, this); - _flags &= ~int32(MTPDmessage_flag_unread); - } -} - void HistoryItem::destroy() { - if (!out()) markRead(); bool wasAtBottom = history()->loadedAtBottom(); _history->removeNotification(this); detach(); @@ -5283,7 +5273,7 @@ HistoryMedia *HistoryImageLink::clone() const { } HistoryMessage::HistoryMessage(History *history, HistoryBlock *block, const MTPDmessage &msg) : - HistoryItem(history, block, msg.vid.v, msg.vflags.v, ::date(msg.vdate), msg.vfrom_id.v) + HistoryItem(history, block, msg.vid.v, msg.vflags.v, ::date(msg.vdate), msg.has_from_id() ? msg.vfrom_id.v : 0) , _text(st::msgMinWidth) , _textWidth(0) , _textHeight(0) @@ -5848,7 +5838,7 @@ HistoryMessage::~HistoryMessage() { } } -HistoryForwarded::HistoryForwarded(History *history, HistoryBlock *block, const MTPDmessage &msg) : HistoryMessage(history, block, msg.vid.v, msg.vflags.v, ::date(msg.vdate), msg.vfrom_id.v, textClean(qs(msg.vmessage)), msg.has_entities() ? linksFromMTP(msg.ventities.c_vector().v) : LinksInText(), msg.has_media() ? (&msg.vmedia) : 0) +HistoryForwarded::HistoryForwarded(History *history, HistoryBlock *block, const MTPDmessage &msg) : HistoryMessage(history, block, msg.vid.v, msg.vflags.v, ::date(msg.vdate), msg.has_from_id() ? msg.vfrom_id.v : 0, textClean(qs(msg.vmessage)), msg.has_entities() ? linksFromMTP(msg.ventities.c_vector().v) : LinksInText(), msg.has_media() ? (&msg.vmedia) : 0) , fwdDate(::date(msg.vfwd_date)) , fwdFrom(App::user(msg.vfwd_from_id.v)) , fwdFromVersion(fwdFrom->nameVersion) @@ -6044,7 +6034,7 @@ void HistoryForwarded::getSymbol(uint16 &symbol, bool &after, bool &upon, int32 return HistoryMessage::getSymbol(symbol, after, upon, x, y); } -HistoryReply::HistoryReply(History *history, HistoryBlock *block, const MTPDmessage &msg) : HistoryMessage(history, block, msg.vid.v, msg.vflags.v, ::date(msg.vdate), msg.vfrom_id.v, textClean(qs(msg.vmessage)), msg.has_entities() ? linksFromMTP(msg.ventities.c_vector().v) : LinksInText(), msg.has_media() ? (&msg.vmedia) : 0) +HistoryReply::HistoryReply(History *history, HistoryBlock *block, const MTPDmessage &msg) : HistoryMessage(history, block, msg.vid.v, msg.vflags.v, ::date(msg.vdate), msg.has_from_id() ? msg.vfrom_id.v : 0, textClean(qs(msg.vmessage)), msg.has_entities() ? linksFromMTP(msg.ventities.c_vector().v) : LinksInText(), msg.has_media() ? (&msg.vmedia) : 0) , replyToMsgId(msg.vreply_to_msg_id.v) , replyToMsg(0) , replyToVersion(0) diff --git a/Telegram/SourceFiles/history.h b/Telegram/SourceFiles/history.h index 244a41cae..5ee85b99d 100644 --- a/Telegram/SourceFiles/history.h +++ b/Telegram/SourceFiles/history.h @@ -706,7 +706,7 @@ public: } bool unread() const { if ((out() && (id > 0 && id < _history->outboxReadBefore)) || (!out() && id > 0 && id < _history->inboxReadBefore)) return false; - return _flags & MTPDmessage_flag_unread; + return (id > 0) ? true : (_flags & MTPDmessage_flag_unread); } bool notifyByFrom() const { return _flags & MTPDmessage_flag_notify_by_from; @@ -765,7 +765,6 @@ public: return QString(); } virtual QString notificationText() const = 0; - void markRead(); int32 y; MsgId id;