Skip to content

Commit

Permalink
Show that message is a reply (#474)
Browse files Browse the repository at this point in the history
* Add replyToMessageId to TCCMessage

* Add replyText to TCCMessage

* Add reply snippet to UI

* Make UI look even prettier by using the correct colors and slicing replySnippets

* Add class comment

* Use proper category for TCCCore>>getMessageById

* Adapt screenshot tests to new UI

* Make linter happy
  • Loading branch information
rgwohlbold authored May 16, 2022
1 parent 2f551d2 commit e6d70d1
Show file tree
Hide file tree
Showing 42 changed files with 205 additions and 26 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
accessing
getMessageById: aNumber

^ self messages
detect: [:aMessage | aMessage id = aNumber]
ifNone: TCCNotLoadedMessage new
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,10 @@
"addOldestMessage:" : "pk 8/4/2021 12:07",
"canSendMessages" : "5/11/2021 10:09:15",
"canSendMessages:" : "JB 8/4/2021 00:08",
"chatHistoryReceived:" : "pk 8/4/2021 12:07",
"chatHistoryReceived:" : "rgw 5/12/2022 14:04",
"core" : "per 6/4/2021 16:00",
"core:" : "per 6/4/2021 15:58",
"getMessageById:" : "rgw 5/12/2022 16:28",
"id" : "rs 6/7/2020 22:20",
"id:" : "pk 8/4/2021 11:25",
"ifNotWaitingForUpdate:" : "js 8/2/2020 13:17",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
"generateCallbackId" : "pk 8/5/2021 17:04",
"getOwnProfile" : "pk 8/5/2021 17:05",
"handleEvent:" : "RS 7/31/2021 15:57",
"handleMessageEvent:" : "pk 5/28/2021 09:41",
"handleMessageEvent:" : "rgw 5/12/2022 13:44",
"handlePendingEvent:" : "per 8/2/2021 15:05",
"imageStore" : "pk 6/19/2021 17:15",
"imageStore:" : "TR 6/22/2021 09:33",
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
as yet unclassified
maxReplySnippetSize

^ 25
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ newFromMessageEvent: anEvent in: aChat with: aCore
id: (anEvent at: 'id');
isOutgoing: (anEvent at: 'is_outgoing');
date: (self timeStampToDateAndTime: (anEvent at: 'date'));
replyToMessageId: (anEvent at: 'reply_to_message_id');
core: aCore.

(message senderType = #messageSenderUser) ifTrue:[
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
accessing
asReplySnippet

| snippet |
snippet := self asSnippet.
snippet size > self class maxReplySnippetSize ifTrue: [snippet := (snippet copyFrom: 1 to: self class maxReplySnippetSize) , '...'].
^ self senderName , String cr , snippet
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
accessing
isReply

^ self replyToMessageId ~= 0
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
accessing
replyText

| message |
message := self chat getMessageById: self replyToMessageId.

^ message asReplySnippet
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
accessing
replyToMessageId: aNumber

replyToMessageId := aNumber
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
accessing
replyToMessageId

^ replyToMessageId
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
{
"class" : {
"newFromMessageEvent:in:with:" : "pk 8/5/2021 16:52",
"maxReplySnippetSize" : "rgw 5/12/2022 16:05",
"newFromMessageEvent:in:with:" : "rgw 5/12/2022 14:07",
"newMessageWith:" : "pk 8/5/2021 16:53",
"timeStampToDateAndTime:" : "JB 5/16/2021 09:42" },
"instance" : {
"asReplySnippet" : "rgw 5/12/2022 16:05",
"asSnippet" : "tom.richter 6/28/2021 15:05",
"asText" : "TR 6/20/2021 10:13",
"chat" : "pk 5/7/2021 12:06",
Expand All @@ -17,6 +19,10 @@
"id:" : "pk 8/4/2021 11:41",
"isOutgoing" : "js 8/2/2020 22:00",
"isOutgoing:" : "pk 8/4/2021 11:42",
"isReply" : "rgw 5/12/2022 15:40",
"replyText" : "rgw 5/12/2022 15:35",
"replyToMessageId" : "rgw 5/12/2022 13:43",
"replyToMessageId:" : "rgw 5/12/2022 13:43",
"senderName" : "tr 7/25/2021 18:00",
"senderType" : "tom.richter 7/25/2021 10:42",
"senderType:" : "pk 8/4/2021 11:42",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,8 @@
"date",
"core",
"senderType",
"userId" ],
"userId",
"replyToMessageId" ],
"name" : "TCCMessage",
"pools" : [
],
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Message that is not loaded, but used in some way, e.g. for a reply
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
accessing
infoText

^ 'Message not loaded'
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
accessing
asReplySnippet

^ self class infoText
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"class" : {
"infoText" : "rgw 5/12/2022 14:39" },
"instance" : {
"asReplySnippet" : "rgw 5/12/2022 15:34" } }
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"category" : "TelegramClient-Core",
"classinstvars" : [
],
"classvars" : [
],
"commentStamp" : "",
"instvars" : [
],
"name" : "TCCNotLoadedMessage",
"pools" : [
],
"super" : "TCCMessage",
"type" : "normal" }
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,6 @@
"newFrom:" : "pk 8/5/2021 16:53" },
"instance" : {
"asSnippet" : "RK 6/26/2021 11:37",
"asText" : "TR 6/20/2021 10:18",
"asText" : "rgw 5/12/2022 14:28",
"text" : "TR 6/20/2021 10:17",
"text:" : "pk 8/4/2021 11:47" } }
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,5 @@ addDate
self addMorphBack: (self class defaultTextMorph
contents: self messageDateText;
hResizing: #spaceFill;
color: self dateColor;
color: self secondaryColor;
yourself).
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
constructing
addReplySnippet

self addMorphBack: (self class defaultTextMorph
contents: self messageModel replyText;
hResizing: #spaceFill;
color: TCUDefaultValues colorLightGray;
yourself).
self addMorphBack: (RectangleMorph new
color: self messageColor;
borderWidth: 0;
height: 5).
self addMorphBack: (RectangleMorph new
color: self secondaryColor;
borderWidth: 0;
height: 2).
self addMorphBack: (RectangleMorph new
color: self messageColor;
borderWidth: 0;
height: 5)
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,6 @@ addSender
self addMorphBack: (self class defaultTextMorph
contents: self messageModel senderName;
hResizing: #spaceFill;
color: self dateColor;
color: self secondaryColor;
margins: self class defaultMargins;
yourself).
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,11 @@ initialize

super initialize.

self initializeDefaults.

self messageModel isReply ifTrue: [self addReplySnippet].

self
initializeDefaults;
addSender;
addContent;
addDate;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
drawing
dateColor
secondaryColor

^ self isOutgoing
ifTrue: [TCUDefaultValues colorPottersClay]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,18 +9,19 @@
"newFrom:" : "tom.richter 6/28/2021 15:08" },
"instance" : {
"addContent" : "TR 6/20/2021 11:12",
"addDate" : "RK 6/23/2021 11:46",
"addSender" : "per 7/15/2021 13:22",
"addDate" : "rgw 5/12/2022 15:54",
"addReplySnippet" : "rgw 5/12/2022 15:54",
"addSender" : "rgw 5/12/2022 15:54",
"addText" : "RK 6/23/2021 11:46",
"date" : "TR 6/20/2021 10:59",
"dateColor" : "JB 5/29/2021 21:05",
"initialize" : "TR 6/20/2021 11:12",
"initialize" : "rgw 5/12/2022 16:33",
"initializeDefaults" : "JB 6/11/2021 18:23",
"isOutgoing" : "TR 6/20/2021 11:37",
"messageColor" : "JB 5/29/2021 21:06",
"messageDateText" : "JB 5/17/2021 10:04",
"messageModel" : "TR 6/20/2021 11:00",
"messageModel:" : "RK 8/4/2021 11:16",
"secondaryColor" : "rgw 5/12/2022 15:54",
"sender" : "TR 6/20/2021 10:59",
"senderId" : "8/5/2021 21:14:18",
"shrinkToContent" : "RK 8/4/2021 11:58",
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
testing
testGetMessageById

| message |

message := self chat getMessageById: 16.
self assert: '4' equals: message asText.

message := self chat getMessageById: 17.
self assert: 'Message not loaded' equals: message asReplySnippet.
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
"setUp" : "tom.richter 7/25/2021 11:24",
"testAddNewestMessage" : "RS 7/31/2021 15:45",
"testAddOldestMessage" : "TR 6/22/2021 09:49",
"testGetMessageById" : "rgw 5/12/2022 16:41",
"testId" : "pk 8/5/2021 17:13",
"testLastMessage" : "per 5/21/2021 16:31",
"testMessage" : "pk 8/5/2021 17:06",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,5 @@ testMessageCorrectlyConstructedFromJson
self assert: TCTMMocks mockMessageId equals: message id.
self assert: TCTMMocks mockMessageDate equals: message date.
self assert: false equals: message isOutgoing.
self assert: TCTMMocks mockUser1 id equals: message userId.
self assert: TCTMMocks mockUser1 id equals: message userId.
self assert: TCTMMocks mockMessageReplyMessageId equals: message replyToMessageId
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
testing
testMessageIsReply

| chat replyMessage originalMessage |
chat := TCTMMocks mockPrivateChat.
originalMessage := TCTMMocks mockTextMessageWith: self core inChat: chat.
replyMessage := TCTMMocks mockTextReplyMessageWith: self core inChat: chat.

self assert: originalMessage isReply not.
self assert: replyMessage isReply
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
testing
testMessageReplySnippetTruncates

| message |
message := TCTMMocks mockTextMessageWith: self core.
message text: ((String new: 250) atAllPut: $A).

self assert: message asReplySnippet size - message senderName size - 4 <= (TCCMessage maxReplySnippetSize)
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
testing
testMessageReplyText

| chat replyMessage originalMessage |
chat := TCTMMocks mockPrivateChat.
originalMessage := TCTMMocks mockTextMessageWith: self core inChat: chat.
replyMessage := TCTMMocks mockTextReplyMessageWith: self core inChat: chat.
chat addNewestMessage: replyMessage.

self assert: TCCNotLoadedMessage infoText equals: replyMessage replyText.

chat addNewestMessage: originalMessage.

self assert: replyMessage replyText equals: originalMessage asReplySnippet.
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,11 @@
"class" : {
},
"instance" : {
"testMessageCorrectlyConstructedFromJson" : "tom.richter 7/25/2021 11:26",
"testMessageCorrectlyConstructedFromJson" : "rgw 5/12/2022 14:54",
"testMessageHasTextRepresentation" : "tom.richter 6/26/2021 21:06",
"testMessageIsReply" : "rgw 5/12/2022 16:40",
"testMessageReplySnippetTruncates" : "rgw 5/12/2022 16:39",
"testMessageReplyText" : "rgw 5/12/2022 16:42",
"testMessageShouldNotNotify" : "RS 7/17/2021 10:53",
"testMessageShouldNotify" : "RS 7/17/2021 10:53",
"testMessageWithMessageSenderChatCorrectlyConstructedFromJson" : "tr 7/25/2021 22:39",
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
message
mockMessageReplyMessageId

^ 42
Original file line number Diff line number Diff line change
Expand Up @@ -16,5 +16,6 @@ mockTextMessageJsonFrom: aChatId with: aSenderType
})
}).
'is_outgoing' -> false.
'reply_to_message_id' -> 42.
'date' -> self mockMessageTimestamp
})
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,5 @@ mockTextMessageWith: aCore
senderType: #messageSenderUser;
date: self mockMessageDate;
id: self mockMessageId;
text: self mockText
text: self mockText;
replyToMessageId: 0
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
message
mockTextMessageWith: aCore inChat: aChat

^ TCCTextMessage new
chat: aChat;
core: aCore;
userId: self mockUser1 id;
isOutgoing: false;
senderType: #messageSenderUser;
date: self mockMessageDate;
id: self mockMessageId;
text: self mockText;
replyToMessageId: 0
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
message
mockTextReplyMessageWith: aCore inChat: aChat

^ TCCTextMessage new
chat: aChat;
core: aCore;
userId: self mockUser1 id;
isOutgoing: false;
senderType: #messageSenderUser;
date: self mockMessageDate;
id: self mockMessageReplyMessageId;
text: self mockText;
replyToMessageId: self mockMessageId
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
"mockMessageId" : "8/5/2021 21:14:18",
"mockMessageIn:with:" : "6/26/2021 17:10:55",
"mockMessageJsonFrom:" : "tr 7/25/2021 18:06",
"mockMessageReplyMessageId" : "rgw 5/12/2022 14:50",
"mockMessageTimestamp" : "RK 6/25/2021 15:14",
"mockMutedPrivateChat" : "per 6/18/2021 08:55",
"mockNotSupportedMessageJsonFrom:" : "tom.richter 6/28/2021 13:54",
Expand All @@ -39,8 +40,10 @@
"mockSupergroupChat" : "per 6/15/2021 09:16",
"mockSupergroupMembersJson" : "per 6/10/2021 20:53",
"mockText" : "TR 6/25/2021 21:15",
"mockTextMessageJsonFrom:with:" : "tr 7/25/2021 18:05",
"mockTextMessageWith:" : "per 7/25/2021 12:41",
"mockTextMessageJsonFrom:with:" : "rgw 5/12/2022 13:42",
"mockTextMessageWith:" : "rgw 5/12/2022 15:43",
"mockTextMessageWith:inChat:" : "rgw 5/12/2022 15:43",
"mockTextReplyMessageWith:inChat:" : "rgw 5/12/2022 15:03",
"mockUnloadedBasicGroupChat" : "JB 8/4/2021 00:22",
"mockUnloadedSuperGroupChat" : "JB 8/4/2021 00:22",
"mockUpdateNewMessageJsonEventFrom:" : "7/25/2021 12:12:21",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,4 @@ testTextAndPhotoScaleCorrectlyLongCaption
photoMessage := TCTMMocks mockPhotoMessageWith: self core.
photoMessage caption: 'This is a very very very very veeeeeeeeeeery long caption with many irregularly sized words. It even consists of two sentences and definitely bothers the Linter.'.

self handleScreenShotTestFor: photoMessage with: 45364912 usedBy: 'testTextAndPhotoScaleCorrectly_longCaption'.
self handleScreenShotTestFor: photoMessage with: 172818014 usedBy: 'testTextAndPhotoScaleCorrectly_longCaption'.
Loading

0 comments on commit e6d70d1

Please sign in to comment.