Skip to content

Commit b48d4fb

Browse files
authored
Add new members to group (#527)
* Add new message class * Make it work * Refactor some parts and fix linter * Add Acceptance Testing * Improve code style * Improve Test Coverage * Rename TCUAddMembersMessage to TCUInfoMessage * Make DayDividerMessage look like InfoMessage
1 parent 867daf4 commit b48d4fb

File tree

44 files changed

+246
-45
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

44 files changed

+246
-45
lines changed
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Reprents a message where members are added to a group.
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
instance creation
2+
newFrom: aJsonObject
3+
4+
^ self new
5+
members: (aJsonObject at: 'member_user_ids');
6+
yourself
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
accessing
2+
asSnippet
3+
4+
^ self asText
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
accessing
2+
asText
3+
4+
| names |
5+
6+
names := self members collect: [:aUserId | (self core userStore getUserFor: aUserId) fullName].
7+
^ 'Added: ' , (names joinSeparatedBy: ', ')
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
accessing
2+
members: aList
3+
4+
members := aList
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
accessing
2+
members
3+
4+
^ members
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
{
2+
"class" : {
3+
"newFrom:" : "rgw 7/21/2022 13:36" },
4+
"instance" : {
5+
"asSnippet" : "rgw 7/21/2022 14:15",
6+
"asText" : "rgw 7/21/2022 15:06",
7+
"members" : "rgw 7/21/2022 13:33",
8+
"members:" : "rgw 7/21/2022 13:33" } }
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
{
2+
"category" : "TelegramClient-Core",
3+
"classinstvars" : [
4+
],
5+
"classvars" : [
6+
],
7+
"commentStamp" : "rgw 7/21/2022 13:37",
8+
"instvars" : [
9+
"members" ],
10+
"name" : "TCCAddMembersMessage",
11+
"pools" : [
12+
],
13+
"super" : "TCCUserMessage",
14+
"type" : "normal" }

packages/TelegramClient-Core.package/TCCCore.class/methodProperties.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
"freeClient" : "6/9/2021 14:12:18",
1818
"generateCallbackId" : "pk 8/5/2021 17:04",
1919
"getOwnProfile" : "pk 8/5/2021 17:05",
20-
"handleEvent:" : "aka 7/10/2022 10:28",
20+
"handleEvent:" : "rgw 7/21/2022 13:13",
2121
"handleMessageEvent:" : "rgw 5/12/2022 13:44",
2222
"handlePendingEvent:" : "per 8/2/2021 15:05",
2323
"imageStore" : "pk 6/19/2021 17:15",

packages/TelegramClient-Core.package/TCCMessage.class/class/newMessageWith..st

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,5 @@ newMessageWith: aJsonObject
44
^ (aJsonObject at: '@type') caseOf: {
55
['messageText'] -> [TCCTextMessage newFrom: aJsonObject].
66
['messagePhoto'] -> [TCCPhotoMessage newFrom: aJsonObject].
7+
['messageChatAddMembers'] -> [TCCAddMembersMessage newFrom: aJsonObject].
78
} otherwise: [TCCNotSupportedMessage new]

packages/TelegramClient-Core.package/TCCMessage.class/methodProperties.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"class" : {
3-
"newMessageWith:" : "aka 7/14/2022 16:43" },
3+
"newMessageWith:" : "rgw 7/21/2022 13:43" },
44
"instance" : {
55
"chat" : "aka 7/14/2022 16:41",
66
"chat:" : "aka 7/14/2022 16:41",
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
accessing
22
asSnippet
33

4-
self subclassResponsibility.
4+
^ self subclassResponsibility
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
accessing
22
asText
33

4-
self subclassResponsibility.
4+
^ self subclassResponsibility

packages/TelegramClient-Core.package/TCCUserMessage.class/methodProperties.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55
"timeStampToDateAndTime:" : "JB 5/16/2021 09:42" },
66
"instance" : {
77
"asReplySnippet" : "rgw 5/12/2022 16:05",
8-
"asSnippet" : "tom.richter 6/28/2021 15:05",
9-
"asText" : "TR 6/20/2021 10:13",
8+
"asSnippet" : "rgw 7/21/2022 15:11",
9+
"asText" : "rgw 7/21/2022 15:11",
1010
"isOutgoing" : "js 8/2/2020 22:00",
1111
"isOutgoing:" : "pk 8/4/2021 11:42",
1212
"isReply" : "rgw 5/12/2022 15:40",
Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,16 @@
11
messages
22
addAtBottom: aCoreMessage
33

4-
| wrapper wasFullyScrolledDown messageItem |
4+
| wasFullyScrolledDown messageItem |
55

66
(self isFromCurrentChat: aCoreMessage)
77
ifFalse: [ ^ self ].
88

99
(aCoreMessage isFirstMessageOfDay) ifTrue: [self addBottomDayDividerForDate: aCoreMessage date asDate].
1010

1111
wasFullyScrolledDown := self isFullyScrolledDown.
12-
messageItem := TCUUserMessage newFrom: aCoreMessage.
13-
messageItem when: #requestScroll send: #requestScrollToMessage: to: self with: (aCoreMessage replyToMessageId).
14-
wrapper := TCUMessageWrapper newFromMessage: messageItem withWidth: self scroller width.
15-
self scroller addMorphBack: wrapper.
16-
self items addLast: wrapper.
12+
messageItem := self createMessageItemFrom: aCoreMessage.
13+
self scroller addMorphBack: messageItem.
14+
self items addLast: messageItem.
1715
wasFullyScrolledDown
1816
ifTrue: [ self scrollToNewestMessage ]
Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,18 @@
11
messages
22
addAtTop: aCoreMessage
33

4-
| wrapper messageItem lastMessage |
4+
| messageItem lastMessage |
55
(self isFromCurrentChat: aCoreMessage) ifFalse: [^ self].
66

77
(aCoreMessage isLastMessageOfDay and: self items isEmpty not) ifTrue: [
88
lastMessage := self items first message messageModel.
9-
self addTopDayDividerForDate: (lastMessage date asDate)
9+
self addTopDayDividerForDate: lastMessage date asDate
1010
].
1111

12-
messageItem := TCUUserMessage newFrom: aCoreMessage.
13-
messageItem when: #requestScroll send: #requestScrollToMessage: to: self with: (aCoreMessage replyToMessageId).
14-
wrapper := TCUMessageWrapper newFromMessage: messageItem withWidth: self scroller width.
15-
self scroller addMorphFront: wrapper.
16-
self items addFirst: wrapper.
12+
messageItem := self createMessageItemFrom: aCoreMessage.
13+
self scroller addMorphFront: messageItem.
14+
self items addFirst: messageItem.
1715

1816
self isFullyScrolledDown
1917
ifTrue: [self scrollToNewestMessage].
20-
self scrollBy: 0 @ (wrapper height negated).
18+
self scrollBy: 0 @ (messageItem height negated).
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
messages
2+
createMessageItemFrom: aCoreMessage
3+
4+
| messageItem |
5+
6+
messageItem := TCUMessage newFrom: aCoreMessage.
7+
messageItem when: #requestScroll send: #requestScrollToMessage: to: self with: aCoreMessage replyToMessageId.
8+
messageItem isUserMessage
9+
ifTrue: [^ TCUMessageWrapper newFromMessage: messageItem withWidth: self scroller width].
10+
11+
^ RectangleMorph new
12+
color: Color transparent;
13+
borderWidth: 0;
14+
width: self scroller width;
15+
height: messageItem height;
16+
addMorphCentered: messageItem;
17+
yourself

packages/TelegramClient-UI.package/TCUChatMessageList.class/methodProperties.json

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,17 @@
33
"defaultScrollOffsetBeforeLoading" : "JB 6/26/2021 10:15",
44
"defaultWidth" : "rgw 6/2/2022 15:39" },
55
"instance" : {
6-
"addAtBottom:" : "aka 7/14/2022 14:58",
7-
"addAtTop:" : "aka 7/14/2022 15:18",
8-
"addBottomDayDividerForDate:" : "js 7/18/2022 07:29",
6+
"addAtBottom:" : "rgw 7/21/2022 15:02",
7+
"addAtTop:" : "rgw 7/21/2022 15:02",
8+
"addBottomDayDividerForDate:" : " 7/22/2022 15:41:43",
99
"addMessages" : "RS 7/17/2021 17:40",
1010
"addTopDayDividerForDate:" : "js 7/18/2022 07:30",
1111
"chat" : "js 7/31/2020 16:39",
1212
"chat:" : "js 7/31/2020 16:39",
1313
"core" : "JB 6/26/2021 10:22",
14-
"createDayDividerForDate:" : "aka 7/22/2022 09:29",
15-
"displayChat:" : "aka 7/14/2022 13:50",
14+
"createDayDividerForDate:" : " 7/22/2022 15:41:43",
15+
"createMessageItemFrom:" : "rgw 7/21/2022 15:09",
16+
"displayChat:" : "RS 7/17/2021 11:54",
1617
"initialize" : "RS 7/17/2021 17:40",
1718
"isFromCurrentChat:" : "pk 8/5/2021 17:07",
1819
"isFullyScrolledDown" : "JB 8/4/2021 11:15",
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
defaults
2+
defaultBorderWidth
3+
4+
^ 2
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
defaults
2+
defaultLayoutInset
3+
4+
^ 7

packages/TelegramClient-UI.package/TCUDayDividerMessage.class/class/defaultMargin.st

Lines changed: 0 additions & 4 deletions
This file was deleted.

packages/TelegramClient-UI.package/TCUDayDividerMessage.class/instance/initialize.st

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,14 @@ initialize
66

77
textMorph := TextMorph new
88
contents: self content;
9+
left: self class defaultLayoutInset;
10+
top: self class defaultLayoutInset;
11+
color: Color white;
912
lock.
1013
self color: Color gray;
11-
width: textMorph width + self class defaultMargin;
12-
addMorphCentered: textMorph;
14+
addMorph: textMorph;
1315
useRoundedCorners;
14-
borderWidth: 0.
16+
borderWidth: self class defaultBorderWidth;
17+
borderColor: Color transparent;
18+
width: textMorph width + (2*self class defaultLayoutInset);
19+
height: textMorph height + (2*self class defaultLayoutInset).
Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
{
22
"class" : {
3-
"defaultMargin" : "aka 7/14/2022 15:15",
3+
"defaultBorderWidth" : "rgw 7/22/2022 15:44",
4+
"defaultLayoutInset" : "rgw 7/22/2022 15:45",
45
"newFromDate:" : "aka 7/14/2022 15:14" },
56
"instance" : {
67
"content" : "aka 7/10/2022 12:37",
78
"content:" : "aka 7/10/2022 12:37",
8-
"initialize" : "aka 7/14/2022 15:16" } }
9+
"initialize" : "rgw 7/22/2022 15:46" } }
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
UI element containing 'added XYZ'
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
default values
2+
defaultBorderWidth
3+
4+
^ 2
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
default values
2+
defaultLayoutInset
3+
4+
^ 7
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
initialization
2+
initialize
3+
4+
| textMorph |
5+
super initialize.
6+
7+
textMorph := (TextMorph new
8+
lock;
9+
contents: self messageModel asText;
10+
color: Color white;
11+
left: self class defaultLayoutInset;
12+
top: self class defaultLayoutInset;
13+
yourself).
14+
self
15+
color: Color gray;
16+
addMorph: textMorph;
17+
borderWidth: self class defaultBorderWidth;
18+
borderColor: Color transparent;
19+
useRoundedCorners;
20+
width: textMorph width + (2*self class defaultLayoutInset);
21+
height: textMorph height + (2*self class defaultLayoutInset).
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"class" : {
3+
"defaultBorderWidth" : "rgw 7/21/2022 15:38",
4+
"defaultLayoutInset" : "rgw 7/21/2022 14:52" },
5+
"instance" : {
6+
"initialize" : "rgw 7/21/2022 15:54" } }
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
{
2+
"category" : "TelegramClient-UI",
3+
"classinstvars" : [
4+
],
5+
"classvars" : [
6+
],
7+
"commentStamp" : "rgw 7/21/2022 15:08",
8+
"instvars" : [
9+
],
10+
"name" : "TCUInfoMessage",
11+
"pools" : [
12+
],
13+
"super" : "TCUMessage",
14+
"type" : "normal" }

packages/TelegramClient-UI.package/TCUMessage.class/class/newFrom..st

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ newFrom: aCoreMessage
44
^ (aCoreMessage class caseOf: {
55
[TCCTextMessage] -> [TCUTextMessage].
66
[TCCPhotoMessage] -> [TCUPhotoMessage].
7+
[TCCAddMembersMessage] -> [TCUInfoMessage].
78
} otherwise: [TCUTextMessage])
89
basicNew
910
messageModel: aCoreMessage;
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
accessing
2+
isUserMessage
3+
4+
^ false

packages/TelegramClient-UI.package/TCUMessage.class/methodProperties.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@
22
"class" : {
33
"defaultBottomMargin" : "aka 7/14/2022 16:20",
44
"defaultMargins" : "aka 7/14/2022 16:20",
5-
"newFrom:" : "aka 7/14/2022 16:22" },
5+
"newFrom:" : "rgw 7/22/2022 15:13" },
66
"instance" : {
7+
"isUserMessage" : "rgw 7/21/2022 14:07",
78
"messageModel" : "aka 7/14/2022 17:22",
89
"messageModel:" : "aka 7/14/2022 16:18" } }

packages/TelegramClient-UI.package/TCUMessageWrapper.class/methodProperties.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"class" : {
3-
"defaultMessageMargin" : "JS 6/11/2022 11:05",
3+
"defaultMessageMargin" : "rgw 7/21/2022 14:41",
44
"defaultPhotoSize" : "JS 6/11/2022 11:32",
55
"newFromMessage:withWidth:" : "JS 6/11/2022 11:53" },
66
"instance" : {
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
accessing
2+
isUserMessage
3+
4+
^ true

packages/TelegramClient-UI.package/TCUUserMessage.class/methodProperties.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
"initializeDefaults" : "JS 6/11/2022 11:00",
1919
"initializeSubmorphs" : "rgw 6/2/2022 10:26",
2020
"isOutgoing" : "TR 6/20/2021 11:37",
21+
"isUserMessage" : "rgw 7/21/2022 14:08",
2122
"messageColor" : "JB 5/29/2021 21:06",
2223
"messageDateText" : "JB 5/17/2021 10:04",
2324
"messageModel:" : "aka 7/14/2022 16:18",
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
testing
2+
testMessageAddMembersCorrectlyConstructedFromJson
3+
4+
| chat addMembersEvent addMembersMessage |
5+
6+
chat := TCTMMocks mockBasicGroupChat.
7+
addMembersEvent := TCTMMocks mockMessageAddMembersFrom: {TCTMMocks mockUser1 id} to: chat id.
8+
addMembersMessage := TCCUserMessage newFromMessageEvent: addMembersEvent in: chat with: self core.
9+
10+
self assert: addMembersMessage members equals: {TCTMMocks mockUser1 id}.
11+
self assert: 'Added: Test User' equals: addMembersMessage asSnippet.
12+
self assert: 'Added: Test User' equals: addMembersMessage asText

packages/TelegramClientTests-Core.package/TCTCMessageTests.class/methodProperties.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
"class" : {
33
},
44
"instance" : {
5+
"testMessageAddMembersCorrectlyConstructedFromJson" : "rgw 7/21/2022 16:04",
56
"testMessageCorrectlyConstructedFromJson" : "aka 7/14/2022 16:58",
67
"testMessageHasTextRepresentation" : "tom.richter 6/26/2021 21:06",
78
"testMessageIsReply" : "rgw 5/12/2022 16:40",

0 commit comments

Comments
 (0)