Skip to content

Commit 3cfa213

Browse files
authored
Pinned chats (#506)
* write acceptance tests for pinned chats * add isPinned instance var and unit test * add prefix to chat titled if chat is pinned * fix lint
1 parent 5bd62c0 commit 3cfa213

File tree

20 files changed

+79
-15
lines changed

20 files changed

+79
-15
lines changed

packages/TelegramClient-Core.package/TCCChat.class/instance/initialize.st

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,5 @@ initialize
1010
isChannel: false;
1111
position: self class defaultUnknownPosition;
1212
numberOfRequestedMessages: self class defaultNumberOfRequestedMessages;
13-
selectedReplyToMessageId: self class defaultSelectedReplyToMessageId.
13+
selectedReplyToMessageId: self class defaultSelectedReplyToMessageId;
14+
isPinned: false.

packages/TelegramClient-Core.package/TCCChat.class/instance/initializeFromChatEvent..st

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@ initializeFromChatEvent: anEvent
66
id: (anEvent at: 'id');
77
canSendMessages: ((anEvent at: 'permissions') at: 'can_send_messages');
88
muted: ((anEvent at: 'notification_settings') at: 'mute_for') > 0;
9-
lastMessage: ''.
9+
lastMessage: '';
10+
isPinned: false.
1011

1112
(anEvent at: 'photo') ifNotNil: [
1213
self photoId: (((anEvent at: 'photo') at: 'small') at: 'id').
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
accessing
2+
isPinned: aBoolean
3+
4+
isPinned := aBoolean
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
accessing
2+
isPinned
3+
4+
^ isPinned

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

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,14 @@
2222
"ifNotWaitingForUpdate:" : "js 8/2/2020 13:17",
2323
"infoLoaded" : "per 6/4/2021 15:59",
2424
"infoLoaded:" : "per 6/4/2021 15:51",
25-
"initialize" : "JS 5/26/2022 14:31",
26-
"initializeFromChatEvent:" : "rgw 6/2/2022 15:24",
25+
"initialize" : "js 6/18/2022 10:48",
26+
"initializeFromChatEvent:" : "js 6/18/2022 10:47",
2727
"isBasicGroup" : "per 6/15/2021 08:08",
2828
"isChannel" : "per 7/17/2021 15:51",
2929
"isChannel:" : "per 7/17/2021 15:50",
3030
"isGroup" : "per 6/4/2021 14:42",
31+
"isPinned" : "js 6/18/2022 10:18",
32+
"isPinned:" : "js 6/18/2022 10:19",
3133
"isPrivate" : "per 6/4/2021 14:42",
3234
"isSuperGroup" : "per 6/15/2021 08:09",
3335
"lastMessage" : "rs 6/19/2020 17:33",

packages/TelegramClient-Core.package/TCCChat.class/properties.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,8 @@
2020
"messageIds",
2121
"messageDictionary",
2222
"selectedReplyToMessageId",
23-
"photoId" ],
23+
"photoId",
24+
"isPinned" ],
2425
"name" : "TCCChat",
2526
"pools" : [
2627
],

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,4 @@
66
"add:" : "pk 8/4/2021 11:17",
77
"getChat:" : "pk 8/4/2021 12:20",
88
"hasChat:" : "pk 8/4/2021 12:20",
9-
"notify" : "js 7/31/2020 14:47" } }
9+
"notify" : "js 6/18/2022 10:38" } }
Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
event handling
22
updateChatPosition: anEvent
3-
3+
44
(self chats getChat: (anEvent at: 'chat_id'))
5-
position: ((anEvent at: 'position') at: 'order').
5+
position: ((anEvent at: 'position') at: 'order');
6+
isPinned: ((anEvent at: 'position') at: 'is_pinned').
67

78
self chats notify.

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"class" : {
33
},
44
"instance" : {
5-
"addChat:" : "pk 8/5/2021 16:36",
5+
"addChat:" : "js 6/18/2022 09:27",
66
"addNewMessage:" : "pk 8/5/2021 16:37",
77
"answeredMessageReceived:" : "JS 5/26/2022 15:58",
88
"chatHistoryReceived:" : "pk 8/5/2021 16:37",
@@ -15,5 +15,5 @@
1515
"initialize" : "RS 8/1/2021 12:51",
1616
"openNewChat:" : "pk 8/5/2021 16:38",
1717
"searchChat:" : "pk 8/5/2021 16:38",
18-
"updateChatPosition:" : "RS 8/1/2021 12:55",
18+
"updateChatPosition:" : "js 6/18/2022 11:04",
1919
"updateLastMessage:" : "RS 8/1/2021 12:55" } }
Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,13 @@
11
drawing
22
addTitle
33

4+
| prefix |
5+
prefix := ''.
6+
self chat isPinned ifTrue: [
7+
prefix := '[pinned] '
8+
].
49
self addMorph: (TextMorph new
510
position: self topLeft + self class defaultTitleOffset;
6-
contents: ((self chatName condensedIntoOneLine truncateWithElipsisTo: self class defaultTitleLength) asText addAttribute: TextEmphasis bold);
11+
contents: ((prefix, self chatName condensedIntoOneLine truncateWithElipsisTo: self class defaultTitleLength) asText addAttribute: TextEmphasis bold);
712
lock;
813
yourself).

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
"addBorder" : "RK 8/4/2021 12:05",
1515
"addLastMessage" : "RK 8/4/2021 12:06",
1616
"addPhoto" : "js 6/13/2022 18:09",
17-
"addTitle" : "RK 8/4/2021 12:06",
17+
"addTitle" : "js 6/18/2022 10:55",
1818
"chat" : "rs 6/17/2020 21:45",
1919
"chat:" : "rs 6/17/2020 21:45",
2020
"chatId" : "8/5/2021 21:14:18",

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
"chatItemClicked:event:from:" : "JB 7/23/2021 12:39",
66
"chats" : "rs 6/17/2020 22:38",
77
"chats:" : "f.w. 7/15/2020 23:57",
8-
"createChatListItem:" : "js 7/31/2020 23:05",
8+
"createChatListItem:" : "js 6/18/2022 10:34",
99
"deselectChats" : "RS 7/17/2021 12:11",
1010
"indicateKeyboardFocus" : "per 6/19/2021 13:49",
1111
"initialize" : "per 6/24/2021 23:08",

packages/TelegramClientTests-Core.package/TCTCChatTests.class/instance/testChatCorrectlyConstructedFromJson.st

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,5 @@ testChatCorrectlyConstructedFromJson
1010
self assert: true equals: mockChat canSendMessages.
1111
self assert: false equals: mockChat muted.
1212
self assert: TCTMMocks mockImageId equals: mockChat photoId.
13-
self assert: true equals: mockChat hasPhoto.
13+
self assert: true equals: mockChat hasPhoto.
14+
self assert: false equals: mockChat isPinned.

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
"testAddAnsweredMessage" : "JS 5/26/2022 15:05",
99
"testAddNewestMessage" : "RS 7/31/2021 15:45",
1010
"testAddOldestMessage" : "TR 6/22/2021 09:49",
11-
"testChatCorrectlyConstructedFromJson" : "rgw 6/2/2022 16:17",
11+
"testChatCorrectlyConstructedFromJson" : "js 6/18/2022 10:46",
1212
"testChatNoPhotoCorrectlyConstructedFromJson" : "rgw 6/2/2022 16:17",
1313
"testGetMessageById" : "JS 5/27/2022 19:32",
1414
"testId" : "pk 8/5/2021 17:13",
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
chat event
2+
mockUpdateChatPositionEventForNotPinnedChatWithId: aNumber
3+
"@linter-ignore"
4+
5+
^ (JsonObject newFrom: {
6+
'chat_id' -> aNumber.
7+
'position' -> (JsonObject newFrom: {
8+
'@type' -> 'chatPosition'.
9+
'is_pinned' -> false.
10+
'order' -> '314159'.
11+
}).
12+
})
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
chat event
2+
mockUpdateChatPositionEventForPinnedChatWithId: aNumber
3+
"@linter-ignore"
4+
5+
^ (JsonObject newFrom: {
6+
'chat_id' -> aNumber.
7+
'position' -> (JsonObject newFrom: {
8+
'@type' -> 'chatPosition'.
9+
'is_pinned' -> true.
10+
'order' -> '314159'.
11+
}).
12+
})

packages/TelegramClientTests-Misc.package/TCTMMocks.class/methodProperties.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,8 @@
4949
"mockTextReplyMessageWith:inChat:" : "rgw 5/12/2022 15:03",
5050
"mockUnloadedBasicGroupChat" : "rgw 6/6/2022 18:03",
5151
"mockUnloadedSuperGroupChat" : "rgw 6/2/2022 12:10",
52+
"mockUpdateChatPositionEventForNotPinnedChatWithId:" : "js 6/18/2022 11:03",
53+
"mockUpdateChatPositionEventForPinnedChatWithId:" : "js 6/18/2022 11:04",
5254
"mockUpdateNewMessageJsonEventFrom:" : "7/25/2021 12:12:21",
5355
"mockUser1" : "JS 6/11/2022 09:38",
5456
"mockUser2" : "RK 6/26/2021 10:05",
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
testing
2+
testChatIsNotPinned
3+
4+
| chat |
5+
chat := (self core chatsHandler chats reject: [:aChat | aChat isPinned]) first.
6+
self core chatsHandler updateChatPosition: (TCTMMocks mockUpdateChatPositionEventForNotPinnedChatWithId: chat id).
7+
self wantsToTest: (TCUChatListItem newWithChat: chat width: 500).
8+
self assertNotReading: 'pinned' in: (self subject)
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
testing
2+
testChatIsPinned
3+
4+
| chat |
5+
chat := (self core chatsHandler chats reject: [:aChat | aChat isPinned]) first.
6+
self core chatsHandler updateChatPosition: (TCTMMocks mockUpdateChatPositionEventForPinnedChatWithId: chat id).
7+
self wantsToTest: (TCUChatListItem newWithChat: chat width: 500).
8+
self assertReading: 'pinned' in: (self subject)

packages/TelegramClientTests-UI.package/TCTUChatListItemTests.class/methodProperties.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,6 @@
44
"instance" : {
55
"setUp" : "rgw 6/2/2022 16:10",
66
"testChatHasPhoto" : "JS 6/11/2022 09:44",
7+
"testChatIsNotPinned" : "js 6/18/2022 11:02",
8+
"testChatIsPinned" : "js 6/18/2022 11:02",
79
"testChatWithoutPhotoHasDefaultPhoto" : "rgw 6/2/2022 16:41" } }

0 commit comments

Comments
 (0)