From 6dfaad0ace74ccdeb48ab8b46cc9021c33ac3b5d Mon Sep 17 00:00:00 2001
From: rsommerfeld <romeo.sommerfeld@web.de>
Date: Fri, 18 Jun 2021 10:01:14 +0200
Subject: [PATCH] Revert "generate callback ids in core, enforce register
 before send"

This reverts commit 62e01cca9047cdaed4a820997c6b1e5b3b8bc80e.
---
 .../instance/loadInfo.st                       | 15 +++++++--------
 .../methodProperties.json                      |  2 +-
 .../TCCChat.class/instance/positionKnown..st   |  2 +-
 .../TCCChat.class/methodProperties.json        |  2 +-
 .../TCCCore.class/instance/callbackCounter..st |  4 ----
 .../TCCCore.class/instance/callbackCounter.st  |  4 ----
 .../instance/callbackCounterPreIncrement.st    |  5 -----
 .../instance/generateCallbackID.st             |  6 ------
 .../TCCCore.class/instance/initialize.st       |  3 +--
 .../instance/registerCallback..st              |  7 -------
 .../instance/registerCallback.with..st         |  4 ++++
 .../TCCCore.class/methodProperties.json        |  8 ++------
 .../TCCCore.class/properties.json              |  3 +--
 .../instance/loadGeneralInfo.st                | 18 +++++++++---------
 .../instance/loadMembers.st                    | 12 ++++++------
 .../methodProperties.json                      |  4 ++--
 .../TCCUsers.class/instance/requestUserFor..st |  8 ++++----
 .../TCCUsers.class/methodProperties.json       |  2 +-
 .../instance/testCallbackID.st                 | 13 -------------
 .../TCTCCoreTests.class/methodProperties.json  |  1 -
 20 files changed, 40 insertions(+), 83 deletions(-)
 delete mode 100644 packages/TelegramClient-Core.package/TCCCore.class/instance/callbackCounter..st
 delete mode 100644 packages/TelegramClient-Core.package/TCCCore.class/instance/callbackCounter.st
 delete mode 100644 packages/TelegramClient-Core.package/TCCCore.class/instance/callbackCounterPreIncrement.st
 delete mode 100644 packages/TelegramClient-Core.package/TCCCore.class/instance/generateCallbackID.st
 delete mode 100644 packages/TelegramClient-Core.package/TCCCore.class/instance/registerCallback..st
 create mode 100644 packages/TelegramClient-Core.package/TCCCore.class/instance/registerCallback.with..st
 delete mode 100644 packages/TelegramClientTests-Core.package/TCTCCoreTests.class/instance/testCallbackID.st

diff --git a/packages/TelegramClient-Core.package/TCCBasicGroupChat.class/instance/loadInfo.st b/packages/TelegramClient-Core.package/TCCBasicGroupChat.class/instance/loadInfo.st
index 21dae5ba2..1731e9cf9 100644
--- a/packages/TelegramClient-Core.package/TCCBasicGroupChat.class/instance/loadInfo.st
+++ b/packages/TelegramClient-Core.package/TCCBasicGroupChat.class/instance/loadInfo.st
@@ -1,15 +1,14 @@
 loading
 loadInfo
 
-	| callbackID |
-	callbackID := self core registerCallback: [:aBasicGroupFullInfoEvent |
-		self
-			memberCount: (aBasicGroupFullInfoEvent at: 'members') size;
-			description: (aBasicGroupFullInfoEvent at: 'description');
-			addMembersFrom: (aBasicGroupFullInfoEvent at: 'members').
-		].
 	self core client send: (TCCRequest
 		newWithType: 'getBasicGroupFullInfo'
 		from: {
 		'basic_group_id'->self groupId.
-		'@extra'->callbackID}).
\ No newline at end of file
+		'@extra'->self groupId}).
+	self core registerCallback: [:aBasicGroupFullInfoEvent |
+		self
+			memberCount: (aBasicGroupFullInfoEvent at: 'members') size;
+			description: (aBasicGroupFullInfoEvent at: 'description').
+		self addMembersFrom: (aBasicGroupFullInfoEvent at: 'members').
+		] with: self groupId asString
\ No newline at end of file
diff --git a/packages/TelegramClient-Core.package/TCCBasicGroupChat.class/methodProperties.json b/packages/TelegramClient-Core.package/TCCBasicGroupChat.class/methodProperties.json
index 70f6e5b90..0dc680d34 100644
--- a/packages/TelegramClient-Core.package/TCCBasicGroupChat.class/methodProperties.json
+++ b/packages/TelegramClient-Core.package/TCCBasicGroupChat.class/methodProperties.json
@@ -4,4 +4,4 @@
 	"instance" : {
 		"initializeFromChatEvent:" : "per 6/4/2021 15:06",
 		"isBasicGroup" : "per 6/15/2021 08:41",
-		"loadInfo" : "pk 6/18/2021 09:43" } }
+		"loadInfo" : "per 6/15/2021 08:36" } }
diff --git a/packages/TelegramClient-Core.package/TCCChat.class/instance/positionKnown..st b/packages/TelegramClient-Core.package/TCCChat.class/instance/positionKnown..st
index fbd27471c..6cce5d3f1 100644
--- a/packages/TelegramClient-Core.package/TCCChat.class/instance/positionKnown..st
+++ b/packages/TelegramClient-Core.package/TCCChat.class/instance/positionKnown..st
@@ -1,4 +1,4 @@
 accessing
 positionKnown: aBoolean
 
-	positionKnown := aBoolean 
\ No newline at end of file
+	positionKnown := aBoolean
\ No newline at end of file
diff --git a/packages/TelegramClient-Core.package/TCCChat.class/methodProperties.json b/packages/TelegramClient-Core.package/TCCChat.class/methodProperties.json
index fba7eccb8..56ce29546 100644
--- a/packages/TelegramClient-Core.package/TCCChat.class/methodProperties.json
+++ b/packages/TelegramClient-Core.package/TCCChat.class/methodProperties.json
@@ -32,7 +32,7 @@
 		"position" : "RS 5/10/2021 21:11",
 		"position:" : "5/11/2021 10:09:15",
 		"positionKnown" : "RS 5/10/2021 21:11",
-		"positionKnown:" : "pk 6/16/2021 09:30",
+		"positionKnown:" : "5/11/2021 10:09:15",
 		"requestMessages:" : "js 8/1/2020 18:05",
 		"stillRequestedMessages" : "js 8/1/2020 18:05",
 		"title" : "rs 6/7/2020 22:24",
diff --git a/packages/TelegramClient-Core.package/TCCCore.class/instance/callbackCounter..st b/packages/TelegramClient-Core.package/TCCCore.class/instance/callbackCounter..st
deleted file mode 100644
index 6358679b7..000000000
--- a/packages/TelegramClient-Core.package/TCCCore.class/instance/callbackCounter..st
+++ /dev/null
@@ -1,4 +0,0 @@
-accessing
-callbackCounter: aNumber
-
-	callbackCounter := aNumber
\ No newline at end of file
diff --git a/packages/TelegramClient-Core.package/TCCCore.class/instance/callbackCounter.st b/packages/TelegramClient-Core.package/TCCCore.class/instance/callbackCounter.st
deleted file mode 100644
index 62d673411..000000000
--- a/packages/TelegramClient-Core.package/TCCCore.class/instance/callbackCounter.st
+++ /dev/null
@@ -1,4 +0,0 @@
-accessing
-callbackCounter
-
-	^ callbackCounter
\ No newline at end of file
diff --git a/packages/TelegramClient-Core.package/TCCCore.class/instance/callbackCounterPreIncrement.st b/packages/TelegramClient-Core.package/TCCCore.class/instance/callbackCounterPreIncrement.st
deleted file mode 100644
index 9bee305ed..000000000
--- a/packages/TelegramClient-Core.package/TCCCore.class/instance/callbackCounterPreIncrement.st
+++ /dev/null
@@ -1,5 +0,0 @@
-utility
-callbackCounterPreIncrement
-
-	self callbackCounter: self callbackCounter + 1.
-	^ self callbackCounter
\ No newline at end of file
diff --git a/packages/TelegramClient-Core.package/TCCCore.class/instance/generateCallbackID.st b/packages/TelegramClient-Core.package/TCCCore.class/instance/generateCallbackID.st
deleted file mode 100644
index 12513998c..000000000
--- a/packages/TelegramClient-Core.package/TCCCore.class/instance/generateCallbackID.st
+++ /dev/null
@@ -1,6 +0,0 @@
-utility
-generateCallbackID
-
-	^ self hash asString , 
-		':' , self callbackCounterPreIncrement asString , 
-		':' , Random new nextValue asString
\ No newline at end of file
diff --git a/packages/TelegramClient-Core.package/TCCCore.class/instance/initialize.st b/packages/TelegramClient-Core.package/TCCCore.class/instance/initialize.st
index b2dd4fb92..d76423da8 100644
--- a/packages/TelegramClient-Core.package/TCCCore.class/instance/initialize.st
+++ b/packages/TelegramClient-Core.package/TCCCore.class/instance/initialize.st
@@ -7,7 +7,6 @@ initialize
 		chats: TCCChats newWithDefaultSorting;
 		loggedInUserID: 0;
 		pendingRequests: Dictionary new;
-		users: (TCCUsers new core: self);
-		callbackCounter: 0.
+		users: (TCCUsers new core: self).
 
 	[self receiveLoop] fork.
\ No newline at end of file
diff --git a/packages/TelegramClient-Core.package/TCCCore.class/instance/registerCallback..st b/packages/TelegramClient-Core.package/TCCCore.class/instance/registerCallback..st
deleted file mode 100644
index 8e98917ca..000000000
--- a/packages/TelegramClient-Core.package/TCCCore.class/instance/registerCallback..st
+++ /dev/null
@@ -1,7 +0,0 @@
-utility
-registerCallback: aClosure
-
-	| callbackID |
-	callbackID := self generateCallbackID.
-	self pendingRequests at: callbackID put: aClosure.
-	^ callbackID
\ No newline at end of file
diff --git a/packages/TelegramClient-Core.package/TCCCore.class/instance/registerCallback.with..st b/packages/TelegramClient-Core.package/TCCCore.class/instance/registerCallback.with..st
new file mode 100644
index 000000000..1193ab966
--- /dev/null
+++ b/packages/TelegramClient-Core.package/TCCCore.class/instance/registerCallback.with..st
@@ -0,0 +1,4 @@
+utility
+registerCallback: aClosure with: aCallbackId
+
+	self pendingRequests at: (aCallbackId asString) put: aClosure
\ No newline at end of file
diff --git a/packages/TelegramClient-Core.package/TCCCore.class/methodProperties.json b/packages/TelegramClient-Core.package/TCCCore.class/methodProperties.json
index a6f24686e..92e5f60c2 100644
--- a/packages/TelegramClient-Core.package/TCCCore.class/methodProperties.json
+++ b/packages/TelegramClient-Core.package/TCCCore.class/methodProperties.json
@@ -5,9 +5,6 @@
 		"authHandler" : "R.S 5/20/2020 16:10",
 		"authHandler:" : "R.S 5/20/2020 16:10",
 		"authSucceeded" : "RS 4/28/2021 21:07",
-		"callbackCounter" : "pk 6/18/2021 09:38",
-		"callbackCounter:" : "pk 6/18/2021 09:38",
-		"callbackCounterPreIncrement" : "pk 6/18/2021 09:39",
 		"chats" : "R.S 6/1/2020 15:34",
 		"chats:" : "R.S 6/1/2020 15:34",
 		"chatsHandler" : "rs 6/7/2020 21:50",
@@ -16,13 +13,12 @@
 		"client" : "R.S 5/20/2020 16:08",
 		"client:" : "js 6/13/2020 19:10",
 		"freeClient" : "6/9/2021 14:12:18",
-		"generateCallbackID" : "pk 6/18/2021 09:39",
 		"getChatHistoryFrom:" : "per 6/4/2021 15:30",
 		"getOwnProfile" : "pk 5/13/2021 09:44",
 		"handleEvent:" : "per 6/4/2021 11:54",
 		"handleMessageEvent:" : "pk 5/28/2021 09:41",
 		"handlePendingEvent:" : "5/30/2021 12:11:04",
-		"initialize" : "pk 6/18/2021 09:38",
+		"initialize" : "pk 5/21/2021 09:13",
 		"initializeHandlers" : "js 8/1/2020 18:09",
 		"isClientAlive" : "js 5/28/2020 17:18",
 		"loggedInUserID" : "rs 7/5/2020 14:48",
@@ -30,7 +26,7 @@
 		"pendingRequests" : "pk 5/13/2021 09:46",
 		"pendingRequests:" : "pk 5/13/2021 09:46",
 		"receiveLoop" : "R.S 6/1/2020 15:24",
-		"registerCallback:" : "pk 6/18/2021 09:41",
+		"registerCallback:with:" : "RK 5/19/2021 10:43",
 		"requestUser:with:" : "pk 5/21/2021 09:33",
 		"searchChat:" : "f.w. 7/15/2020 22:53",
 		"sendMessage:to:" : "rs 6/13/2020 15:26",
diff --git a/packages/TelegramClient-Core.package/TCCCore.class/properties.json b/packages/TelegramClient-Core.package/TCCCore.class/properties.json
index e94f0720e..8299c74bf 100644
--- a/packages/TelegramClient-Core.package/TCCCore.class/properties.json
+++ b/packages/TelegramClient-Core.package/TCCCore.class/properties.json
@@ -12,8 +12,7 @@
 		"users",
 		"chats",
 		"loggedInUserID",
-		"pendingRequests",
-		"callbackCounter" ],
+		"pendingRequests" ],
 	"name" : "TCCCore",
 	"pools" : [
 		 ],
diff --git a/packages/TelegramClient-Core.package/TCCSuperGroupChat.class/instance/loadGeneralInfo.st b/packages/TelegramClient-Core.package/TCCSuperGroupChat.class/instance/loadGeneralInfo.st
index c7b076830..b2cae5a86 100644
--- a/packages/TelegramClient-Core.package/TCCSuperGroupChat.class/instance/loadGeneralInfo.st
+++ b/packages/TelegramClient-Core.package/TCCSuperGroupChat.class/instance/loadGeneralInfo.st
@@ -1,14 +1,14 @@
 loading
 loadGeneralInfo
-	
-	| callbackID |
-	callbackID := self core
-		registerCallback: [:aSupergroupFullInfoEvent |
-			self
-				memberCount: (aSupergroupFullInfoEvent at: 'member_count');
-				description: (aSupergroupFullInfoEvent at: 'description')].
-			
+
 	self core client send: (TCCRequest
 		newWithType: 'getSupergroupFullInfo'
 		from: {'supergroup_id'->self groupId.
-			'@extra'->callbackID}).
+			'@extra'->self groupId}).
+
+	self core
+		registerCallback: [:aSupergroupFullInfoEvent |
+			self
+				memberCount: (aSupergroupFullInfoEvent at: 'member_count');
+				description: (aSupergroupFullInfoEvent at: 'description').]
+		with: self groupId.
\ No newline at end of file
diff --git a/packages/TelegramClient-Core.package/TCCSuperGroupChat.class/instance/loadMembers.st b/packages/TelegramClient-Core.package/TCCSuperGroupChat.class/instance/loadMembers.st
index 04553352f..aa4cd5932 100644
--- a/packages/TelegramClient-Core.package/TCCSuperGroupChat.class/instance/loadMembers.st
+++ b/packages/TelegramClient-Core.package/TCCSuperGroupChat.class/instance/loadMembers.st
@@ -1,14 +1,14 @@
 loading
 loadMembers
 
-	| callbackID |
-	callbackID := self core
-		registerCallback: [:aSupergroupMembersEvent |
-			self addMembersFrom: (aSupergroupMembersEvent at: 'members')].
-	
 	self core client send: (TCCRequest
 		newWithType: 'getSupergroupMembers'
 		from: {'supergroup_id'->self groupId.
 			'offset'->self members size.
 			'limit'->self class defaultLimit.
-			'@extra'->callbackID}).
\ No newline at end of file
+			'@extra'->('#', self groupId)}).
+
+	self core
+		registerCallback: [:aSupergroupMembersEvent |
+			self addMembersFrom: (aSupergroupMembersEvent at: 'members').]
+		with: '#', self groupId.
\ No newline at end of file
diff --git a/packages/TelegramClient-Core.package/TCCSuperGroupChat.class/methodProperties.json b/packages/TelegramClient-Core.package/TCCSuperGroupChat.class/methodProperties.json
index e61f87660..f143d003e 100644
--- a/packages/TelegramClient-Core.package/TCCSuperGroupChat.class/methodProperties.json
+++ b/packages/TelegramClient-Core.package/TCCSuperGroupChat.class/methodProperties.json
@@ -4,7 +4,7 @@
 	"instance" : {
 		"initializeFromChatEvent:" : "per 6/4/2021 15:08",
 		"isSuperGroup" : "per 6/15/2021 08:41",
-		"loadGeneralInfo" : "pk 6/18/2021 09:44",
+		"loadGeneralInfo" : "TR 6/15/2021 16:39",
 		"loadInfo" : "TR 6/14/2021 14:54",
-		"loadMembers" : "pk 6/18/2021 09:44",
+		"loadMembers" : "TR 6/15/2021 16:39",
 		"loadMoreMembers" : "per 6/15/2021 08:15" } }
diff --git a/packages/TelegramClient-Core.package/TCCUsers.class/instance/requestUserFor..st b/packages/TelegramClient-Core.package/TCCUsers.class/instance/requestUserFor..st
index d6948ff24..52893720c 100644
--- a/packages/TelegramClient-Core.package/TCCUsers.class/instance/requestUserFor..st
+++ b/packages/TelegramClient-Core.package/TCCUsers.class/instance/requestUserFor..st
@@ -1,9 +1,9 @@
 utility
 requestUserFor: aUserId
 
-	| callbackID |
-	callbackID := self core
+	self core
 		registerCallback:
-			[:userEvent | (self at: aUserId) resolveWith: (TCCUser newFrom: userEvent)].
+			[:userEvent | (self at: aUserId) resolveWith: (TCCUser newFrom: userEvent)]
+		with: (aUserId asString).
 
-	self core requestUser: aUserId with: callbackID
\ No newline at end of file
+	self core requestUser: aUserId with: aUserId
\ No newline at end of file
diff --git a/packages/TelegramClient-Core.package/TCCUsers.class/methodProperties.json b/packages/TelegramClient-Core.package/TCCUsers.class/methodProperties.json
index 20b6c50ef..c69c25055 100644
--- a/packages/TelegramClient-Core.package/TCCUsers.class/methodProperties.json
+++ b/packages/TelegramClient-Core.package/TCCUsers.class/methodProperties.json
@@ -5,4 +5,4 @@
 		"core" : "RK 5/19/2021 10:34",
 		"core:" : "TR 6/15/2021 16:52",
 		"getUserFor:" : "RK 5/19/2021 11:05",
-		"requestUserFor:" : "pk 6/18/2021 09:47" } }
+		"requestUserFor:" : "pk 5/21/2021 09:33" } }
diff --git a/packages/TelegramClientTests-Core.package/TCTCCoreTests.class/instance/testCallbackID.st b/packages/TelegramClientTests-Core.package/TCTCCoreTests.class/instance/testCallbackID.st
deleted file mode 100644
index 5ea0ae176..000000000
--- a/packages/TelegramClientTests-Core.package/TCTCCoreTests.class/instance/testCallbackID.st
+++ /dev/null
@@ -1,13 +0,0 @@
-testing
-testCallbackID
-	
-	| block id1 id2 |
-	block := [:anEvent | nil].
-	id1 := self core registerCallback: block.
-	id2 := self core registerCallback: block.
-	
-	self deny: id1 = id2.
-	self assert: (self core pendingRequests at: id1) equals: block.
-	self assert: (self core pendingRequests at: id2) equals: block.
-	
-	
\ No newline at end of file
diff --git a/packages/TelegramClientTests-Core.package/TCTCCoreTests.class/methodProperties.json b/packages/TelegramClientTests-Core.package/TCTCCoreTests.class/methodProperties.json
index fad5f06fa..2019d238d 100644
--- a/packages/TelegramClientTests-Core.package/TCTCCoreTests.class/methodProperties.json
+++ b/packages/TelegramClientTests-Core.package/TCTCCoreTests.class/methodProperties.json
@@ -10,7 +10,6 @@
 		"testAuthHandler" : "per 5/21/2021 16:28",
 		"testBasicGroupMembers" : "per 6/10/2021 20:47",
 		"testCallback" : "per 5/21/2021 16:28",
-		"testCallbackID" : "pk 6/18/2021 09:30",
 		"testChatsHandler" : "per 5/21/2021 16:28",
 		"testErrorConstants" : "js 8/2/2020 21:23",
 		"testLoggedInUserID" : "TR 6/13/2021 14:48",