From a63abe5154a8421378803cc8fcf5331e9251c546 Mon Sep 17 00:00:00 2001
From: John Preston <johnprestonmail@gmail.com>
Date: Tue, 28 Nov 2017 14:05:11 +0400
Subject: [PATCH] Add some more crash debug information.

---
 .../SourceFiles/history/history_widget.cpp    | 72 +++++++++++--------
 Telegram/SourceFiles/history/history_widget.h |  6 +-
 2 files changed, 44 insertions(+), 34 deletions(-)

diff --git a/Telegram/SourceFiles/history/history_widget.cpp b/Telegram/SourceFiles/history/history_widget.cpp
index 58023781b..15ed87071 100644
--- a/Telegram/SourceFiles/history/history_widget.cpp
+++ b/Telegram/SourceFiles/history/history_widget.cpp
@@ -2324,25 +2324,37 @@ void HistoryWidget::messagesReceived(PeerData *peer, const MTPmessages_Messages
 	const auto ExtractLastId = [&] {
 		return histList->empty() ? -1 : idFromMessage(histList->back());
 	};
+	const auto PeerString = [](PeerId peerId) {
+		if (peerIsUser(peerId)) {
+			return QString("User-%1").arg(peerToUser(peerId));
+		} else if (peerIsChat(peerId)) {
+			return QString("Chat-%1").arg(peerToChat(peerId));
+		} else if (peerIsChannel(peerId)) {
+			return QString("Channel-%1").arg(peerToChannel(peerId));
+		}
+		return QString("Bad-%1").arg(peerId);
+	};
 
 	if (_preloadRequest == requestId) {
 		auto to = toMigrated ? _migrated : _history;
-		SignalHandlers::setCrashAnnotation("old_minmaxbefore_minmaxnow", QString(
-			"%1=%6;%2=%7;%3;%4;%5;(%8:%9)"
-		).arg(_debug_preloadMin
-		).arg(_debug_preloadMax
-		).arg(_debug_preloadOffsetId
-		).arg(_debug_preloadAddOffset
-		).arg(_debug_preloadLoadCount
-		).arg(to->minMsgId()
-		).arg(to->maxMsgId()
-		).arg(ExtractFirstId()
-		).arg(ExtractLastId()
-		));
+		if (cBetaVersion()) {
+			SignalHandlers::setCrashAnnotation("old_debugstr", QString(
+				"%1_%2_%3_%4:%5_%6 (%7)"
+			).arg(PeerString(_debug_preloadDownPeer)
+			).arg(_debug_preloadOffsetId
+			).arg(_debug_preloadAddOffset
+			).arg(_debug_preloadLoadCount
+			).arg(ExtractFirstId()
+			).arg(ExtractLastId()
+			).arg(Auth().userId()
+			));
+		}
 
 		addMessagesToFront(peer, *histList);
 
-		SignalHandlers::setCrashAnnotation("old_minmaxbefore_minmaxnow", QString());
+		if (cBetaVersion()) {
+			SignalHandlers::setCrashAnnotation("old_debugstr", QString());
+		}
 
 		_preloadRequest = 0;
 		preloadHistoryIfNeeded();
@@ -2352,22 +2364,24 @@ void HistoryWidget::messagesReceived(PeerData *peer, const MTPmessages_Messages
 		}
 	} else if (_preloadDownRequest == requestId) {
 		auto to = toMigrated ? _migrated : _history;
-		SignalHandlers::setCrashAnnotation("new_minmaxbefore_minmaxnow", QString(
-			"%1=%6;%2=%7;%3;%4;%5;(%8:%9)"
-		).arg(_debug_preloadDownMin
-		).arg(_debug_preloadDownMax
-		).arg(_debug_preloadDownOffsetId
-		).arg(_debug_preloadDownAddOffset
-		).arg(_debug_preloadDownLoadCount
-		).arg(to->minMsgId()
-		).arg(to->maxMsgId()
-		).arg(ExtractFirstId()
-		).arg(ExtractLastId()
-		));
+		if (cBetaVersion()) {
+			SignalHandlers::setCrashAnnotation("new_debugstr", QString(
+				"%1_%2_%3_%4:%5_%6 (%7)"
+			).arg(PeerString(_debug_preloadDownPeer)
+			).arg(_debug_preloadDownOffsetId
+			).arg(_debug_preloadDownAddOffset
+			).arg(_debug_preloadDownLoadCount
+			).arg(ExtractFirstId()
+			).arg(ExtractLastId()
+			).arg(Auth().userId()
+			));
+		}
 
 		addMessagesToBack(peer, *histList);
 
-		SignalHandlers::setCrashAnnotation("new_minmaxbefore_minmaxnow", QString());
+		if (cBetaVersion()) {
+			SignalHandlers::setCrashAnnotation("new_debugstr", QString());
+		}
 
 		_preloadDownRequest = 0;
 		preloadHistoryIfNeeded();
@@ -2560,11 +2574,10 @@ void HistoryWidget::loadMessages() {
 	auto minId = 0;
 	auto historyHash = 0;
 
-	_debug_preloadMin = from->minMsgId();
-	_debug_preloadMax = from->maxMsgId();
 	_debug_preloadOffsetId = offsetId + 1;
 	_debug_preloadAddOffset = addOffset;
 	_debug_preloadLoadCount = loadCount;
+	_debug_preloadPeer = from->peer->id;
 	_preloadRequest = MTP::send(
 		MTPmessages_GetHistory(
 			from->peer->input,
@@ -2605,11 +2618,10 @@ void HistoryWidget::loadMessagesDown() {
 	auto minId = 0;
 	auto historyHash = 0;
 
-	_debug_preloadDownMin = from->minMsgId();
-	_debug_preloadDownMax = from->maxMsgId();
 	_debug_preloadDownOffsetId = offsetId + 1;
 	_debug_preloadDownAddOffset = addOffset;
 	_debug_preloadDownLoadCount = loadCount;
+	_debug_preloadDownPeer = from->peer->id;
 	_preloadDownRequest = MTP::send(
 		MTPmessages_GetHistory(
 			from->peer->input,
diff --git a/Telegram/SourceFiles/history/history_widget.h b/Telegram/SourceFiles/history/history_widget.h
index 5d5ad9fe0..e0b32c128 100644
--- a/Telegram/SourceFiles/history/history_widget.h
+++ b/Telegram/SourceFiles/history/history_widget.h
@@ -725,16 +725,14 @@ private:
 	mtpRequestId _preloadRequest = 0;
 	mtpRequestId _preloadDownRequest = 0;
 
-	MsgId _debug_preloadMin = 0;
-	MsgId _debug_preloadMax = 0;
 	MsgId _debug_preloadOffsetId = 0;
 	int32 _debug_preloadAddOffset = 0;
 	int32 _debug_preloadLoadCount = 0;
-	MsgId _debug_preloadDownMin = 0;
-	MsgId _debug_preloadDownMax = 0;
+	PeerId _debug_preloadPeer = 0;
 	MsgId _debug_preloadDownOffsetId = 0;
 	int32 _debug_preloadDownAddOffset = 0;
 	int32 _debug_preloadDownLoadCount = 0;
+	PeerId _debug_preloadDownPeer = 0;
 
 	MsgId _delayedShowAtMsgId = -1; // wtf?
 	mtpRequestId _delayedShowAtRequest = 0;