From 5e5c80eb152ee589a86ed7cd3df7f2a14d18e8f2 Mon Sep 17 00:00:00 2001 From: Jonas Schmidt <43679965+schmidtjonas@users.noreply.github.com> Date: Fri, 12 Jun 2020 18:33:40 +0200 Subject: [PATCH 01/81] removed trunk (#130) --- .github/ci.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/ci.yml b/.github/ci.yml index 9a848cc48..da6cad11e 100644 --- a/.github/ci.yml +++ b/.github/ci.yml @@ -22,7 +22,8 @@ jobs: # Select platform(s) os: [ ubuntu-latest, macos-latest ] # Select compatible Smalltalk image(s) - smalltalk: [ Squeak64-trunk, Squeak64-5.3, Squeak64-5.2 ] + # currently not running on Squeak64-trunk + smalltalk: [ Squeak64-5.3, Squeak64-5.2 ] name: ${{ matrix.smalltalk }} on ${{ matrix.os }} steps: - uses: actions/checkout@v2 From 744dea914f051653a93c3de7d2767cbb7c33c523 Mon Sep 17 00:00:00 2001 From: Jonas Schmidt <43679965+schmidtjonas@users.noreply.github.com> Date: Fri, 12 Jun 2020 18:43:36 +0200 Subject: [PATCH 02/81] removed trunk also in main.yml (#134) * removed trunk * also changed main.yml --- .github/workflows/main.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 85c1b36af..00a794adf 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -18,7 +18,8 @@ jobs: # Select platform(s) os: [ ubuntu-latest, macos-latest ] # Select compatible Smalltalk image(s) - smalltalk: [ Squeak64-trunk, Squeak64-5.3, Squeak64-5.2 ] + # currently not running on Squeak64-trunk + smalltalk: [ Squeak64-5.3, Squeak64-5.2 ] name: ${{ matrix.smalltalk }} on ${{ matrix.os }} steps: - uses: actions/checkout@v2 From bdb3a08f6f80b0b78c9cffb2fa3fa16ad5538d64 Mon Sep 17 00:00:00 2001 From: Jonas Schmidt <43679965+schmidtjonas@users.noreply.github.com> Date: Fri, 12 Jun 2020 19:24:16 +0200 Subject: [PATCH 03/81] Fixed .sqout and package structure (#120) * fix for linter * replaced ui package Co-authored-by: Jonas Schmidt --- .squot | 2 +- TelegramClient-UI.package/.filetree | 4 --- TelegramClient-UI.package/.squot-contents | 5 ---- .../TCUChatsList.class/instance/clearChats.st | 6 ---- .../monticello.meta/categories.st | 1 - .../monticello.meta/initializers.st | 0 TelegramClient-UI.package/properties.json | 2 -- .../TCAuthentication.class/README.md | 0 .../instance/addHeader.st | 12 -------- .../instance/addTitle.to..st | 10 ------- .../instance/buttonBack..st | 4 --- .../instance/buttonBack.st | 4 --- .../instance/buttonBackPressed.st | 11 -------- .../instance/buttonNext..st | 4 --- .../instance/buttonNext.st | 4 --- .../instance/buttonNextPressed.st | 7 ----- .../instance/buttonVerify..st | 4 --- .../instance/buttonVerify.st | 4 --- .../instance/createErrorLabel..st | 11 -------- .../instance/createInputField..st | 12 -------- .../instance/createLabel..st | 8 ------ .../instance/defaultExtent.st | 4 --- .../instance/defaultInputWidth.st | 4 --- .../instance/errorLabel..st | 4 --- .../instance/errorLabel.st | 4 --- .../instance/initialize.st | 12 -------- .../instance/inputField..st | 4 --- .../instance/inputField.st | 4 --- .../instance/instructionLabel..st | 4 --- .../instance/instructionLabel.st | 4 --- .../instance/showFirstStep.st | 12 -------- .../instance/showSecondStep.st | 19 ------------- .../methodProperties.json | 28 ------------------- .../TCAuthentication.class/properties.json | 19 ------------- .../TCButton.class/README.md | 0 .../TCButton.class/instance/initialize.st | 9 ------ .../TCButton.class/instance/text..st | 9 ------ .../TCButton.class/instance/text.st | 4 --- .../TCButton.class/methodProperties.json | 7 ----- .../TCButton.class/properties.json | 14 ---------- .../TCDefaultValues.class/README.md | 0 .../TCDefaultValues.class/class/colorGray.st | 4 --- .../class/colorLightBlue.st | 4 --- .../methodProperties.json | 6 ---- .../TCDefaultValues.class/properties.json | 14 ---------- .../TCUApp.class/README.md | 0 .../TCUApp.class/class/newWithCore..st | 0 .../TCUApp.class/class/newWithTCCApp.st | 0 .../TCUApp.class/instance/core..st | 0 .../TCUApp.class/instance/core.st | 0 .../TCUApp.class/instance/initialize.st | 0 .../TCUApp.class/methodProperties.json | 0 .../TCUApp.class/properties.json | 0 .../TCUAuthentication.class/README.md | 0 .../class/newWithCore..st | 0 .../instance/addHeader.st | 0 .../instance/addTitle.to..st | 0 .../instance/buttonNext..st | 0 .../instance/buttonNext.st | 0 .../instance/buttonNextPressed.st | 0 .../instance/buttonVerify..st | 0 .../instance/buttonVerify.st | 0 .../instance/buttonVerifyPressed.st | 0 .../TCUAuthentication.class/instance/core..st | 0 .../TCUAuthentication.class/instance/core.st | 0 .../instance/createErrorLabel..st | 0 .../instance/createInputField..st | 0 .../instance/createLabel..st | 0 .../instance/defaultExtent.st | 0 .../instance/defaultInputWidth.st | 0 .../instance/delete.st | 0 .../instance/errorLabel..st | 0 .../instance/errorLabel.st | 0 .../instance/initialize.st | 0 .../instance/inputField..st | 0 .../instance/inputField.st | 0 .../instance/instructionLabel..st | 0 .../instance/instructionLabel.st | 0 .../instance/logInCompleted.st | 0 .../instance/showFirstStep.st | 0 .../instance/showLoadingMessage.st | 0 .../instance/showSecondStep.st | 0 .../instance/subscribeCore.st | 0 .../methodProperties.json | 0 .../TCUAuthentication.class/properties.json | 0 .../TCUButton.class/README.md | 0 .../TCUButton.class/instance/initialize.st | 0 .../TCUButton.class/instance/text..st | 0 .../TCUButton.class/instance/text.st | 0 .../TCUButton.class/methodProperties.json | 0 .../TCUButton.class/properties.json | 0 .../TCUChatListItem.class/README.md | 0 .../class/newWithChatName.andWidth..st | 0 .../instance/addBorder.st | 0 .../instance/addTitle.st | 0 .../instance/chatName..st | 0 .../instance/chatName.st | 0 .../instance/defaultHeight.st | 0 .../instance/initialize.st | 0 .../methodProperties.json | 0 .../TCUChatListItem.class/properties.json | 0 .../TCUChatWindow.class/README.md | 0 .../instance/initialize.st | 0 .../TCUChatWindow.class/methodProperties.json | 0 .../TCUChatWindow.class/properties.json | 0 .../TCUChatsList.class/README.md | 0 .../TCUChatsList.class/instance/addItem..st | 0 .../TCUChatsList.class/instance/clearChats.st | 6 ++++ .../instance/defaultWidth.st | 0 .../TCUChatsList.class/instance/initialize.st | 0 .../instance/initializeLayout.st | 0 .../TCUChatsList.class/instance/items..st | 0 .../TCUChatsList.class/instance/items.st | 0 .../TCUChatsList.class/methodProperties.json | 2 +- .../TCUChatsList.class/properties.json | 0 .../TCUDefaultValues.class/README.md | 0 .../TCUDefaultValues.class/class/colorGray.st | 0 .../class/colorLightBlue.st | 0 .../class/colorLightGray.st | 0 .../methodProperties.json | 0 .../TCUDefaultValues.class/properties.json | 0 .../TCUMain.class/README.md | 0 .../TCUMain.class/class/newWithCore..st | 0 .../TCUMain.class/instance/addChatWindow.st | 0 .../TCUMain.class/instance/addChatsList.st | 0 .../TCUMain.class/instance/addHeader.st | 0 .../TCUMain.class/instance/addTitle.to..st | 0 .../TCUMain.class/instance/chatWindow..st | 0 .../TCUMain.class/instance/chatWindow.st | 0 .../TCUMain.class/instance/chatsList..st | 0 .../TCUMain.class/instance/chatsList.st | 0 .../TCUMain.class/instance/core..st | 0 .../TCUMain.class/instance/core.st | 0 .../TCUMain.class/instance/defaultExtent.st | 0 .../instance/defaultHeaderHeight.st | 0 .../TCUMain.class/instance/delete.st | 0 .../TCUMain.class/instance/initialize.st | 0 .../TCUMain.class/instance/logout.st | 0 .../TCUMain.class/instance/subscribeCore.st | 0 .../TCUMain.class/instance/updateChatsList.st | 0 .../TCUMain.class/methodProperties.json | 2 +- .../TCUMain.class/properties.json | 0 142 files changed, 9 insertions(+), 309 deletions(-) delete mode 100644 TelegramClient-UI.package/.filetree delete mode 100644 TelegramClient-UI.package/.squot-contents delete mode 100644 TelegramClient-UI.package/TCUChatsList.class/instance/clearChats.st delete mode 100644 TelegramClient-UI.package/monticello.meta/categories.st delete mode 100644 TelegramClient-UI.package/monticello.meta/initializers.st delete mode 100644 TelegramClient-UI.package/properties.json delete mode 100644 packages/TelegramClient-UI.package/TCAuthentication.class/README.md delete mode 100644 packages/TelegramClient-UI.package/TCAuthentication.class/instance/addHeader.st delete mode 100644 packages/TelegramClient-UI.package/TCAuthentication.class/instance/addTitle.to..st delete mode 100644 packages/TelegramClient-UI.package/TCAuthentication.class/instance/buttonBack..st delete mode 100644 packages/TelegramClient-UI.package/TCAuthentication.class/instance/buttonBack.st delete mode 100644 packages/TelegramClient-UI.package/TCAuthentication.class/instance/buttonBackPressed.st delete mode 100644 packages/TelegramClient-UI.package/TCAuthentication.class/instance/buttonNext..st delete mode 100644 packages/TelegramClient-UI.package/TCAuthentication.class/instance/buttonNext.st delete mode 100644 packages/TelegramClient-UI.package/TCAuthentication.class/instance/buttonNextPressed.st delete mode 100644 packages/TelegramClient-UI.package/TCAuthentication.class/instance/buttonVerify..st delete mode 100644 packages/TelegramClient-UI.package/TCAuthentication.class/instance/buttonVerify.st delete mode 100644 packages/TelegramClient-UI.package/TCAuthentication.class/instance/createErrorLabel..st delete mode 100644 packages/TelegramClient-UI.package/TCAuthentication.class/instance/createInputField..st delete mode 100644 packages/TelegramClient-UI.package/TCAuthentication.class/instance/createLabel..st delete mode 100644 packages/TelegramClient-UI.package/TCAuthentication.class/instance/defaultExtent.st delete mode 100644 packages/TelegramClient-UI.package/TCAuthentication.class/instance/defaultInputWidth.st delete mode 100644 packages/TelegramClient-UI.package/TCAuthentication.class/instance/errorLabel..st delete mode 100644 packages/TelegramClient-UI.package/TCAuthentication.class/instance/errorLabel.st delete mode 100644 packages/TelegramClient-UI.package/TCAuthentication.class/instance/initialize.st delete mode 100644 packages/TelegramClient-UI.package/TCAuthentication.class/instance/inputField..st delete mode 100644 packages/TelegramClient-UI.package/TCAuthentication.class/instance/inputField.st delete mode 100644 packages/TelegramClient-UI.package/TCAuthentication.class/instance/instructionLabel..st delete mode 100644 packages/TelegramClient-UI.package/TCAuthentication.class/instance/instructionLabel.st delete mode 100644 packages/TelegramClient-UI.package/TCAuthentication.class/instance/showFirstStep.st delete mode 100644 packages/TelegramClient-UI.package/TCAuthentication.class/instance/showSecondStep.st delete mode 100644 packages/TelegramClient-UI.package/TCAuthentication.class/methodProperties.json delete mode 100644 packages/TelegramClient-UI.package/TCAuthentication.class/properties.json delete mode 100644 packages/TelegramClient-UI.package/TCButton.class/README.md delete mode 100644 packages/TelegramClient-UI.package/TCButton.class/instance/initialize.st delete mode 100644 packages/TelegramClient-UI.package/TCButton.class/instance/text..st delete mode 100644 packages/TelegramClient-UI.package/TCButton.class/instance/text.st delete mode 100644 packages/TelegramClient-UI.package/TCButton.class/methodProperties.json delete mode 100644 packages/TelegramClient-UI.package/TCButton.class/properties.json delete mode 100644 packages/TelegramClient-UI.package/TCDefaultValues.class/README.md delete mode 100644 packages/TelegramClient-UI.package/TCDefaultValues.class/class/colorGray.st delete mode 100644 packages/TelegramClient-UI.package/TCDefaultValues.class/class/colorLightBlue.st delete mode 100644 packages/TelegramClient-UI.package/TCDefaultValues.class/methodProperties.json delete mode 100644 packages/TelegramClient-UI.package/TCDefaultValues.class/properties.json rename {TelegramClient-UI.package => packages/TelegramClient-UI.package}/TCUApp.class/README.md (100%) rename {TelegramClient-UI.package => packages/TelegramClient-UI.package}/TCUApp.class/class/newWithCore..st (100%) rename {TelegramClient-UI.package => packages/TelegramClient-UI.package}/TCUApp.class/class/newWithTCCApp.st (100%) rename {TelegramClient-UI.package => packages/TelegramClient-UI.package}/TCUApp.class/instance/core..st (100%) rename {TelegramClient-UI.package => packages/TelegramClient-UI.package}/TCUApp.class/instance/core.st (100%) rename {TelegramClient-UI.package => packages/TelegramClient-UI.package}/TCUApp.class/instance/initialize.st (100%) rename {TelegramClient-UI.package => packages/TelegramClient-UI.package}/TCUApp.class/methodProperties.json (100%) rename {TelegramClient-UI.package => packages/TelegramClient-UI.package}/TCUApp.class/properties.json (100%) rename {TelegramClient-UI.package => packages/TelegramClient-UI.package}/TCUAuthentication.class/README.md (100%) rename {TelegramClient-UI.package => packages/TelegramClient-UI.package}/TCUAuthentication.class/class/newWithCore..st (100%) rename {TelegramClient-UI.package => packages/TelegramClient-UI.package}/TCUAuthentication.class/instance/addHeader.st (100%) rename {TelegramClient-UI.package => packages/TelegramClient-UI.package}/TCUAuthentication.class/instance/addTitle.to..st (100%) rename {TelegramClient-UI.package => packages/TelegramClient-UI.package}/TCUAuthentication.class/instance/buttonNext..st (100%) rename {TelegramClient-UI.package => packages/TelegramClient-UI.package}/TCUAuthentication.class/instance/buttonNext.st (100%) rename {TelegramClient-UI.package => packages/TelegramClient-UI.package}/TCUAuthentication.class/instance/buttonNextPressed.st (100%) rename {TelegramClient-UI.package => packages/TelegramClient-UI.package}/TCUAuthentication.class/instance/buttonVerify..st (100%) rename {TelegramClient-UI.package => packages/TelegramClient-UI.package}/TCUAuthentication.class/instance/buttonVerify.st (100%) rename {TelegramClient-UI.package => packages/TelegramClient-UI.package}/TCUAuthentication.class/instance/buttonVerifyPressed.st (100%) rename {TelegramClient-UI.package => packages/TelegramClient-UI.package}/TCUAuthentication.class/instance/core..st (100%) rename {TelegramClient-UI.package => packages/TelegramClient-UI.package}/TCUAuthentication.class/instance/core.st (100%) rename {TelegramClient-UI.package => packages/TelegramClient-UI.package}/TCUAuthentication.class/instance/createErrorLabel..st (100%) rename {TelegramClient-UI.package => packages/TelegramClient-UI.package}/TCUAuthentication.class/instance/createInputField..st (100%) rename {TelegramClient-UI.package => packages/TelegramClient-UI.package}/TCUAuthentication.class/instance/createLabel..st (100%) rename {TelegramClient-UI.package => packages/TelegramClient-UI.package}/TCUAuthentication.class/instance/defaultExtent.st (100%) rename {TelegramClient-UI.package => packages/TelegramClient-UI.package}/TCUAuthentication.class/instance/defaultInputWidth.st (100%) rename {TelegramClient-UI.package => packages/TelegramClient-UI.package}/TCUAuthentication.class/instance/delete.st (100%) rename {TelegramClient-UI.package => packages/TelegramClient-UI.package}/TCUAuthentication.class/instance/errorLabel..st (100%) rename {TelegramClient-UI.package => packages/TelegramClient-UI.package}/TCUAuthentication.class/instance/errorLabel.st (100%) rename {TelegramClient-UI.package => packages/TelegramClient-UI.package}/TCUAuthentication.class/instance/initialize.st (100%) rename {TelegramClient-UI.package => packages/TelegramClient-UI.package}/TCUAuthentication.class/instance/inputField..st (100%) rename {TelegramClient-UI.package => packages/TelegramClient-UI.package}/TCUAuthentication.class/instance/inputField.st (100%) rename {TelegramClient-UI.package => packages/TelegramClient-UI.package}/TCUAuthentication.class/instance/instructionLabel..st (100%) rename {TelegramClient-UI.package => packages/TelegramClient-UI.package}/TCUAuthentication.class/instance/instructionLabel.st (100%) rename {TelegramClient-UI.package => packages/TelegramClient-UI.package}/TCUAuthentication.class/instance/logInCompleted.st (100%) rename {TelegramClient-UI.package => packages/TelegramClient-UI.package}/TCUAuthentication.class/instance/showFirstStep.st (100%) rename {TelegramClient-UI.package => packages/TelegramClient-UI.package}/TCUAuthentication.class/instance/showLoadingMessage.st (100%) rename {TelegramClient-UI.package => packages/TelegramClient-UI.package}/TCUAuthentication.class/instance/showSecondStep.st (100%) rename {TelegramClient-UI.package => packages/TelegramClient-UI.package}/TCUAuthentication.class/instance/subscribeCore.st (100%) rename {TelegramClient-UI.package => packages/TelegramClient-UI.package}/TCUAuthentication.class/methodProperties.json (100%) rename {TelegramClient-UI.package => packages/TelegramClient-UI.package}/TCUAuthentication.class/properties.json (100%) rename {TelegramClient-UI.package => packages/TelegramClient-UI.package}/TCUButton.class/README.md (100%) rename {TelegramClient-UI.package => packages/TelegramClient-UI.package}/TCUButton.class/instance/initialize.st (100%) rename {TelegramClient-UI.package => packages/TelegramClient-UI.package}/TCUButton.class/instance/text..st (100%) rename {TelegramClient-UI.package => packages/TelegramClient-UI.package}/TCUButton.class/instance/text.st (100%) rename {TelegramClient-UI.package => packages/TelegramClient-UI.package}/TCUButton.class/methodProperties.json (100%) rename {TelegramClient-UI.package => packages/TelegramClient-UI.package}/TCUButton.class/properties.json (100%) rename {TelegramClient-UI.package => packages/TelegramClient-UI.package}/TCUChatListItem.class/README.md (100%) rename {TelegramClient-UI.package => packages/TelegramClient-UI.package}/TCUChatListItem.class/class/newWithChatName.andWidth..st (100%) rename {TelegramClient-UI.package => packages/TelegramClient-UI.package}/TCUChatListItem.class/instance/addBorder.st (100%) rename {TelegramClient-UI.package => packages/TelegramClient-UI.package}/TCUChatListItem.class/instance/addTitle.st (100%) rename {TelegramClient-UI.package => packages/TelegramClient-UI.package}/TCUChatListItem.class/instance/chatName..st (100%) rename {TelegramClient-UI.package => packages/TelegramClient-UI.package}/TCUChatListItem.class/instance/chatName.st (100%) rename {TelegramClient-UI.package => packages/TelegramClient-UI.package}/TCUChatListItem.class/instance/defaultHeight.st (100%) rename {TelegramClient-UI.package => packages/TelegramClient-UI.package}/TCUChatListItem.class/instance/initialize.st (100%) rename {TelegramClient-UI.package => packages/TelegramClient-UI.package}/TCUChatListItem.class/methodProperties.json (100%) rename {TelegramClient-UI.package => packages/TelegramClient-UI.package}/TCUChatListItem.class/properties.json (100%) rename {TelegramClient-UI.package => packages/TelegramClient-UI.package}/TCUChatWindow.class/README.md (100%) rename {TelegramClient-UI.package => packages/TelegramClient-UI.package}/TCUChatWindow.class/instance/initialize.st (100%) rename {TelegramClient-UI.package => packages/TelegramClient-UI.package}/TCUChatWindow.class/methodProperties.json (100%) rename {TelegramClient-UI.package => packages/TelegramClient-UI.package}/TCUChatWindow.class/properties.json (100%) rename {TelegramClient-UI.package => packages/TelegramClient-UI.package}/TCUChatsList.class/README.md (100%) rename {TelegramClient-UI.package => packages/TelegramClient-UI.package}/TCUChatsList.class/instance/addItem..st (100%) create mode 100644 packages/TelegramClient-UI.package/TCUChatsList.class/instance/clearChats.st rename {TelegramClient-UI.package => packages/TelegramClient-UI.package}/TCUChatsList.class/instance/defaultWidth.st (100%) rename {TelegramClient-UI.package => packages/TelegramClient-UI.package}/TCUChatsList.class/instance/initialize.st (100%) rename {TelegramClient-UI.package => packages/TelegramClient-UI.package}/TCUChatsList.class/instance/initializeLayout.st (100%) rename {TelegramClient-UI.package => packages/TelegramClient-UI.package}/TCUChatsList.class/instance/items..st (100%) rename {TelegramClient-UI.package => packages/TelegramClient-UI.package}/TCUChatsList.class/instance/items.st (100%) rename {TelegramClient-UI.package => packages/TelegramClient-UI.package}/TCUChatsList.class/methodProperties.json (87%) rename {TelegramClient-UI.package => packages/TelegramClient-UI.package}/TCUChatsList.class/properties.json (100%) rename {TelegramClient-UI.package => packages/TelegramClient-UI.package}/TCUDefaultValues.class/README.md (100%) rename {TelegramClient-UI.package => packages/TelegramClient-UI.package}/TCUDefaultValues.class/class/colorGray.st (100%) rename {TelegramClient-UI.package => packages/TelegramClient-UI.package}/TCUDefaultValues.class/class/colorLightBlue.st (100%) rename {TelegramClient-UI.package => packages/TelegramClient-UI.package}/TCUDefaultValues.class/class/colorLightGray.st (100%) rename {TelegramClient-UI.package => packages/TelegramClient-UI.package}/TCUDefaultValues.class/methodProperties.json (100%) rename {TelegramClient-UI.package => packages/TelegramClient-UI.package}/TCUDefaultValues.class/properties.json (100%) rename {TelegramClient-UI.package => packages/TelegramClient-UI.package}/TCUMain.class/README.md (100%) rename {TelegramClient-UI.package => packages/TelegramClient-UI.package}/TCUMain.class/class/newWithCore..st (100%) rename {TelegramClient-UI.package => packages/TelegramClient-UI.package}/TCUMain.class/instance/addChatWindow.st (100%) rename {TelegramClient-UI.package => packages/TelegramClient-UI.package}/TCUMain.class/instance/addChatsList.st (100%) rename {TelegramClient-UI.package => packages/TelegramClient-UI.package}/TCUMain.class/instance/addHeader.st (100%) rename {TelegramClient-UI.package => packages/TelegramClient-UI.package}/TCUMain.class/instance/addTitle.to..st (100%) rename {TelegramClient-UI.package => packages/TelegramClient-UI.package}/TCUMain.class/instance/chatWindow..st (100%) rename {TelegramClient-UI.package => packages/TelegramClient-UI.package}/TCUMain.class/instance/chatWindow.st (100%) rename {TelegramClient-UI.package => packages/TelegramClient-UI.package}/TCUMain.class/instance/chatsList..st (100%) rename {TelegramClient-UI.package => packages/TelegramClient-UI.package}/TCUMain.class/instance/chatsList.st (100%) rename {TelegramClient-UI.package => packages/TelegramClient-UI.package}/TCUMain.class/instance/core..st (100%) rename {TelegramClient-UI.package => packages/TelegramClient-UI.package}/TCUMain.class/instance/core.st (100%) rename {TelegramClient-UI.package => packages/TelegramClient-UI.package}/TCUMain.class/instance/defaultExtent.st (100%) rename {TelegramClient-UI.package => packages/TelegramClient-UI.package}/TCUMain.class/instance/defaultHeaderHeight.st (100%) rename {TelegramClient-UI.package => packages/TelegramClient-UI.package}/TCUMain.class/instance/delete.st (100%) rename {TelegramClient-UI.package => packages/TelegramClient-UI.package}/TCUMain.class/instance/initialize.st (100%) rename {TelegramClient-UI.package => packages/TelegramClient-UI.package}/TCUMain.class/instance/logout.st (100%) rename {TelegramClient-UI.package => packages/TelegramClient-UI.package}/TCUMain.class/instance/subscribeCore.st (100%) rename {TelegramClient-UI.package => packages/TelegramClient-UI.package}/TCUMain.class/instance/updateChatsList.st (100%) rename {TelegramClient-UI.package => packages/TelegramClient-UI.package}/TCUMain.class/methodProperties.json (100%) rename {TelegramClient-UI.package => packages/TelegramClient-UI.package}/TCUMain.class/properties.json (100%) diff --git a/.squot b/.squot index ca3d6b017..186abbbdb 100644 --- a/.squot +++ b/.squot @@ -2,5 +2,5 @@ OrderedDictionary { 'packages\/TelegramClient-Core.package' : #SquotCypressCodeSerializer, 'packages\/TelegramClient-Tests.package' : #SquotCypressCodeSerializer, 'packages\/BaselineOfTelegramClient.package' : #SquotCypressCodeSerializer, - 'TelegramClient-UI.package' : #SquotCypressCodeSerializer + 'packages\/TelegramClient-UI.package' : #SquotCypressCodeSerializer } \ No newline at end of file diff --git a/TelegramClient-UI.package/.filetree b/TelegramClient-UI.package/.filetree deleted file mode 100644 index 8998102c2..000000000 --- a/TelegramClient-UI.package/.filetree +++ /dev/null @@ -1,4 +0,0 @@ -{ - "noMethodMetaData" : true, - "separateMethodMetaAndSource" : false, - "useCypressPropertiesFile" : true } diff --git a/TelegramClient-UI.package/.squot-contents b/TelegramClient-UI.package/.squot-contents deleted file mode 100644 index 239ddebb0..000000000 --- a/TelegramClient-UI.package/.squot-contents +++ /dev/null @@ -1,5 +0,0 @@ -SquotTrackedObjectMetadata { - #objectClassName : #PackageInfo, - #objectsReplacedByNames : true, - #serializer : #SquotCypressCodeSerializer -} \ No newline at end of file diff --git a/TelegramClient-UI.package/TCUChatsList.class/instance/clearChats.st b/TelegramClient-UI.package/TCUChatsList.class/instance/clearChats.st deleted file mode 100644 index 335214383..000000000 --- a/TelegramClient-UI.package/TCUChatsList.class/instance/clearChats.st +++ /dev/null @@ -1,6 +0,0 @@ -initialization -clearChats - - self items do: [:aItem | aItem delete. - self items remove: aItem]. - \ No newline at end of file diff --git a/TelegramClient-UI.package/monticello.meta/categories.st b/TelegramClient-UI.package/monticello.meta/categories.st deleted file mode 100644 index 4320f13cf..000000000 --- a/TelegramClient-UI.package/monticello.meta/categories.st +++ /dev/null @@ -1 +0,0 @@ -SystemOrganization addCategory: #'TelegramClient-UI'! diff --git a/TelegramClient-UI.package/monticello.meta/initializers.st b/TelegramClient-UI.package/monticello.meta/initializers.st deleted file mode 100644 index e69de29bb..000000000 diff --git a/TelegramClient-UI.package/properties.json b/TelegramClient-UI.package/properties.json deleted file mode 100644 index f037444a7..000000000 --- a/TelegramClient-UI.package/properties.json +++ /dev/null @@ -1,2 +0,0 @@ -{ - } diff --git a/packages/TelegramClient-UI.package/TCAuthentication.class/README.md b/packages/TelegramClient-UI.package/TCAuthentication.class/README.md deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/TelegramClient-UI.package/TCAuthentication.class/instance/addHeader.st b/packages/TelegramClient-UI.package/TCAuthentication.class/instance/addHeader.st deleted file mode 100644 index 5a1157e21..000000000 --- a/packages/TelegramClient-UI.package/TCAuthentication.class/instance/addHeader.st +++ /dev/null @@ -1,12 +0,0 @@ -initialization -addHeader - - | header | - header := RectangleMorph new - borderWidth: 0; - color: TCDefaultValues colorGray; - extent: self width @ 40. - - self - addMorph: header; - addTitle: 'Telegram' to: header. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCAuthentication.class/instance/addTitle.to..st b/packages/TelegramClient-UI.package/TCAuthentication.class/instance/addTitle.to..st deleted file mode 100644 index 6fab03ac3..000000000 --- a/packages/TelegramClient-UI.package/TCAuthentication.class/instance/addTitle.to..st +++ /dev/null @@ -1,10 +0,0 @@ -initialization -addTitle: aString to: aMorph - - | titleLable font | - font:= (TextFontReference toFont: (StrikeFont familyName: 'DefaultTextStyle' size: 35)). - titleLable := TextMorph new - contents: (aString asText addAttribute: font); - color: Color white. - - aMorph addMorphCentered: titleLable. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCAuthentication.class/instance/buttonBack..st b/packages/TelegramClient-UI.package/TCAuthentication.class/instance/buttonBack..st deleted file mode 100644 index 994d8536b..000000000 --- a/packages/TelegramClient-UI.package/TCAuthentication.class/instance/buttonBack..st +++ /dev/null @@ -1,4 +0,0 @@ -initialization -buttonBack: aButton - - buttonBack := aButton. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCAuthentication.class/instance/buttonBack.st b/packages/TelegramClient-UI.package/TCAuthentication.class/instance/buttonBack.st deleted file mode 100644 index 97e81cacb..000000000 --- a/packages/TelegramClient-UI.package/TCAuthentication.class/instance/buttonBack.st +++ /dev/null @@ -1,4 +0,0 @@ -initialization -buttonBack - - ^ buttonBack \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCAuthentication.class/instance/buttonBackPressed.st b/packages/TelegramClient-UI.package/TCAuthentication.class/instance/buttonBackPressed.st deleted file mode 100644 index a491d3a73..000000000 --- a/packages/TelegramClient-UI.package/TCAuthentication.class/instance/buttonBackPressed.st +++ /dev/null @@ -1,11 +0,0 @@ -initialization -buttonBackPressed - - self instructionLabel delete. - self inputField delete. - self buttonVerify delete. - self buttonBack delete. - self errorLabel delete. - self showFirstStep. - - \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCAuthentication.class/instance/buttonNext..st b/packages/TelegramClient-UI.package/TCAuthentication.class/instance/buttonNext..st deleted file mode 100644 index 1dbb10f10..000000000 --- a/packages/TelegramClient-UI.package/TCAuthentication.class/instance/buttonNext..st +++ /dev/null @@ -1,4 +0,0 @@ -accessing -buttonNext: aTCButton - - buttonNext := aTCButton \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCAuthentication.class/instance/buttonNext.st b/packages/TelegramClient-UI.package/TCAuthentication.class/instance/buttonNext.st deleted file mode 100644 index 611133c49..000000000 --- a/packages/TelegramClient-UI.package/TCAuthentication.class/instance/buttonNext.st +++ /dev/null @@ -1,4 +0,0 @@ -accessing -buttonNext - - ^ buttonNext \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCAuthentication.class/instance/buttonNextPressed.st b/packages/TelegramClient-UI.package/TCAuthentication.class/instance/buttonNextPressed.st deleted file mode 100644 index b4d9e97b2..000000000 --- a/packages/TelegramClient-UI.package/TCAuthentication.class/instance/buttonNextPressed.st +++ /dev/null @@ -1,7 +0,0 @@ -initialization -buttonNextPressed - - "call to API here" - self buttonNext delete. - self showSecondStep. - self errorLabel delete. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCAuthentication.class/instance/buttonVerify..st b/packages/TelegramClient-UI.package/TCAuthentication.class/instance/buttonVerify..st deleted file mode 100644 index 74e3537e5..000000000 --- a/packages/TelegramClient-UI.package/TCAuthentication.class/instance/buttonVerify..st +++ /dev/null @@ -1,4 +0,0 @@ -initialization -buttonVerify: aButton - - buttonVerify := aButton. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCAuthentication.class/instance/buttonVerify.st b/packages/TelegramClient-UI.package/TCAuthentication.class/instance/buttonVerify.st deleted file mode 100644 index 6fb382315..000000000 --- a/packages/TelegramClient-UI.package/TCAuthentication.class/instance/buttonVerify.st +++ /dev/null @@ -1,4 +0,0 @@ -initialization -buttonVerify - - ^ buttonVerify \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCAuthentication.class/instance/createErrorLabel..st b/packages/TelegramClient-UI.package/TCAuthentication.class/instance/createErrorLabel..st deleted file mode 100644 index 2c54fd1ce..000000000 --- a/packages/TelegramClient-UI.package/TCAuthentication.class/instance/createErrorLabel..st +++ /dev/null @@ -1,11 +0,0 @@ -initialization -createErrorLabel: aString - - self errorLabel: (TextMorph new - contents: aString asText; - center: (self center + (0 @ (self defaultExtent y / 3))); - color: Color red; - lock). - - self addMorph: self errorLabel. - \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCAuthentication.class/instance/createInputField..st b/packages/TelegramClient-UI.package/TCAuthentication.class/instance/createInputField..st deleted file mode 100644 index 892f22466..000000000 --- a/packages/TelegramClient-UI.package/TCAuthentication.class/instance/createInputField..st +++ /dev/null @@ -1,12 +0,0 @@ -initialization -createInputField: aString - - self inputField: (TextMorph new - contentsWrapped: aString asText; - extent: 150@ 50; - borderColor: TCDefaultValues colorGray; - borderWidth: 1; - center: self instructionLabel center + (0 @ 30)). - - ^ inputField - \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCAuthentication.class/instance/createLabel..st b/packages/TelegramClient-UI.package/TCAuthentication.class/instance/createLabel..st deleted file mode 100644 index a08bb615a..000000000 --- a/packages/TelegramClient-UI.package/TCAuthentication.class/instance/createLabel..st +++ /dev/null @@ -1,8 +0,0 @@ -initialization -createLabel: aString - - self instructionLabel: (TextMorph new - contents: aString asText; - lock). - - ^ self instructionLabel \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCAuthentication.class/instance/defaultExtent.st b/packages/TelegramClient-UI.package/TCAuthentication.class/instance/defaultExtent.st deleted file mode 100644 index a087e83ee..000000000 --- a/packages/TelegramClient-UI.package/TCAuthentication.class/instance/defaultExtent.st +++ /dev/null @@ -1,4 +0,0 @@ -defaultValues -defaultExtent - - ^ 600 @ 400 \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCAuthentication.class/instance/defaultInputWidth.st b/packages/TelegramClient-UI.package/TCAuthentication.class/instance/defaultInputWidth.st deleted file mode 100644 index 889c910eb..000000000 --- a/packages/TelegramClient-UI.package/TCAuthentication.class/instance/defaultInputWidth.st +++ /dev/null @@ -1,4 +0,0 @@ -initialization -defaultInputWidth - - ^ 150 \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCAuthentication.class/instance/errorLabel..st b/packages/TelegramClient-UI.package/TCAuthentication.class/instance/errorLabel..st deleted file mode 100644 index b548c3f1e..000000000 --- a/packages/TelegramClient-UI.package/TCAuthentication.class/instance/errorLabel..st +++ /dev/null @@ -1,4 +0,0 @@ -accessing -errorLabel: aMorph - - errorLabel := aMorph. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCAuthentication.class/instance/errorLabel.st b/packages/TelegramClient-UI.package/TCAuthentication.class/instance/errorLabel.st deleted file mode 100644 index 11422c1cd..000000000 --- a/packages/TelegramClient-UI.package/TCAuthentication.class/instance/errorLabel.st +++ /dev/null @@ -1,4 +0,0 @@ -accessing -errorLabel - - ^ errorLabel \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCAuthentication.class/instance/initialize.st b/packages/TelegramClient-UI.package/TCAuthentication.class/instance/initialize.st deleted file mode 100644 index b54053bfe..000000000 --- a/packages/TelegramClient-UI.package/TCAuthentication.class/instance/initialize.st +++ /dev/null @@ -1,12 +0,0 @@ -initialization -initialize - - super initialize. - self - extent: self defaultExtent; - color: Color white; - borderWidth: 1; - borderColor: TCDefaultValues colorGray; - addHeader; - showFirstStep; - openCenteredInWorld. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCAuthentication.class/instance/inputField..st b/packages/TelegramClient-UI.package/TCAuthentication.class/instance/inputField..st deleted file mode 100644 index ec289a9e3..000000000 --- a/packages/TelegramClient-UI.package/TCAuthentication.class/instance/inputField..st +++ /dev/null @@ -1,4 +0,0 @@ -accessing -inputField: aMoprh - - inputField := aMoprh. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCAuthentication.class/instance/inputField.st b/packages/TelegramClient-UI.package/TCAuthentication.class/instance/inputField.st deleted file mode 100644 index 6c08cb638..000000000 --- a/packages/TelegramClient-UI.package/TCAuthentication.class/instance/inputField.st +++ /dev/null @@ -1,4 +0,0 @@ -accessing -inputField - - ^ inputField \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCAuthentication.class/instance/instructionLabel..st b/packages/TelegramClient-UI.package/TCAuthentication.class/instance/instructionLabel..st deleted file mode 100644 index 235359477..000000000 --- a/packages/TelegramClient-UI.package/TCAuthentication.class/instance/instructionLabel..st +++ /dev/null @@ -1,4 +0,0 @@ -accessing -instructionLabel: aMorph - - instructionLabel := aMorph. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCAuthentication.class/instance/instructionLabel.st b/packages/TelegramClient-UI.package/TCAuthentication.class/instance/instructionLabel.st deleted file mode 100644 index 7edeb9ea4..000000000 --- a/packages/TelegramClient-UI.package/TCAuthentication.class/instance/instructionLabel.st +++ /dev/null @@ -1,4 +0,0 @@ -accessing -instructionLabel - - ^ instructionLabel \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCAuthentication.class/instance/showFirstStep.st b/packages/TelegramClient-UI.package/TCAuthentication.class/instance/showFirstStep.st deleted file mode 100644 index a9b95d071..000000000 --- a/packages/TelegramClient-UI.package/TCAuthentication.class/instance/showFirstStep.st +++ /dev/null @@ -1,12 +0,0 @@ -initialization -showFirstStep - - self - addMorphCentered: (self createLabel: 'Enter Phone number'); - addMorph: (self createInputField: '+49'); - buttonNext: (TCButton new - text: 'Next'; - center: inputField center + (0 @ 50); - on: #mouseDown send: #buttonNextPressed to: self); - addMorph: buttonNext; - createErrorLabel: ''. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCAuthentication.class/instance/showSecondStep.st b/packages/TelegramClient-UI.package/TCAuthentication.class/instance/showSecondStep.st deleted file mode 100644 index 38324d7ef..000000000 --- a/packages/TelegramClient-UI.package/TCAuthentication.class/instance/showSecondStep.st +++ /dev/null @@ -1,19 +0,0 @@ -initialization -showSecondStep - - self instructionLabel - contents: 'Enter the code your recieved on your phone'; - center: self center. - - self inputField contents: ' '. - - self - buttonBack: (TCButton new - text: '<- Back'; - center: self inputField center + ((-70) @ 50); - on: #mouseDown send: #buttonBackPressed to: self); - buttonVerify: (TCButton new - text: 'Verify'; - center: self inputField center + (70 @ 50)); - "addMorph: self buttonBack;" - addMorph: self buttonVerify. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCAuthentication.class/methodProperties.json b/packages/TelegramClient-UI.package/TCAuthentication.class/methodProperties.json deleted file mode 100644 index 636f69250..000000000 --- a/packages/TelegramClient-UI.package/TCAuthentication.class/methodProperties.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "class" : { - }, - "instance" : { - "addHeader" : "R.S 5/10/2020 17:24", - "addTitle:to:" : "R.S 5/7/2020 20:50", - "buttonBack" : "R.S 5/11/2020 16:58", - "buttonBack:" : "R.S 5/11/2020 16:59", - "buttonBackPressed" : "R.S 5/12/2020 12:45", - "buttonNext" : "R.S 5/11/2020 16:52", - "buttonNext:" : "R.S 5/11/2020 16:52", - "buttonNextPressed" : "R.S 5/12/2020 12:31", - "buttonVerify" : "R.S 5/11/2020 16:57", - "buttonVerify:" : "R.S 5/11/2020 16:59", - "createErrorLabel:" : "R.S 5/12/2020 12:35", - "createInputField:" : "R.S 5/19/2020 09:54", - "createLabel:" : "R.S 5/19/2020 09:55", - "defaultExtent" : "R.S 5/7/2020 14:55", - "defaultInputWidth" : "R.S 5/10/2020 12:17", - "errorLabel" : "R.S 5/12/2020 12:27", - "errorLabel:" : "R.S 5/12/2020 12:27", - "initialize" : "R.S 5/19/2020 09:51", - "inputField" : "R.S 5/10/2020 14:40", - "inputField:" : "R.S 5/10/2020 14:40", - "instructionLabel" : "R.S 5/19/2020 09:55", - "instructionLabel:" : "R.S 5/19/2020 09:55", - "showFirstStep" : "R.S 5/12/2020 12:45", - "showSecondStep" : "R.S 5/19/2020 10:49" } } diff --git a/packages/TelegramClient-UI.package/TCAuthentication.class/properties.json b/packages/TelegramClient-UI.package/TCAuthentication.class/properties.json deleted file mode 100644 index 0311f3dc4..000000000 --- a/packages/TelegramClient-UI.package/TCAuthentication.class/properties.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "category" : "TelegramClient-UI", - "classinstvars" : [ - ], - "classvars" : [ - ], - "commentStamp" : "", - "instvars" : [ - "inputField", - "instructionLabel", - "errorLabel", - "buttonVerify", - "buttonNext", - "buttonBack" ], - "name" : "TCAuthentication", - "pools" : [ - ], - "super" : "RectangleMorph", - "type" : "normal" } diff --git a/packages/TelegramClient-UI.package/TCButton.class/README.md b/packages/TelegramClient-UI.package/TCButton.class/README.md deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/TelegramClient-UI.package/TCButton.class/instance/initialize.st b/packages/TelegramClient-UI.package/TCButton.class/instance/initialize.st deleted file mode 100644 index b7410263b..000000000 --- a/packages/TelegramClient-UI.package/TCButton.class/instance/initialize.st +++ /dev/null @@ -1,9 +0,0 @@ -initialization -initialize - - super initialize. - self - useRoundedCorners; - color: TCDefaultValues colorLightBlue; - extent: (100 @ 30); - borderWidth: 0. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCButton.class/instance/text..st b/packages/TelegramClient-UI.package/TCButton.class/instance/text..st deleted file mode 100644 index 2a33c699e..000000000 --- a/packages/TelegramClient-UI.package/TCButton.class/instance/text..st +++ /dev/null @@ -1,9 +0,0 @@ -accessing -text: aString - - text := TextMorph new. - text - contents: aString asText; - lock. - - self addMorphCentered: text. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCButton.class/instance/text.st b/packages/TelegramClient-UI.package/TCButton.class/instance/text.st deleted file mode 100644 index c9bb36307..000000000 --- a/packages/TelegramClient-UI.package/TCButton.class/instance/text.st +++ /dev/null @@ -1,4 +0,0 @@ -accessing -text - - ^ text \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCButton.class/methodProperties.json b/packages/TelegramClient-UI.package/TCButton.class/methodProperties.json deleted file mode 100644 index 69005eb6e..000000000 --- a/packages/TelegramClient-UI.package/TCButton.class/methodProperties.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "class" : { - }, - "instance" : { - "initialize" : "R.S 5/10/2020 17:05", - "text" : "R.S 5/19/2020 09:57", - "text:" : "R.S 5/10/2020 17:11" } } diff --git a/packages/TelegramClient-UI.package/TCButton.class/properties.json b/packages/TelegramClient-UI.package/TCButton.class/properties.json deleted file mode 100644 index 755e5184d..000000000 --- a/packages/TelegramClient-UI.package/TCButton.class/properties.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "category" : "TelegramClient-UI", - "classinstvars" : [ - ], - "classvars" : [ - ], - "commentStamp" : "", - "instvars" : [ - "text" ], - "name" : "TCButton", - "pools" : [ - ], - "super" : "RectangleMorph", - "type" : "normal" } diff --git a/packages/TelegramClient-UI.package/TCDefaultValues.class/README.md b/packages/TelegramClient-UI.package/TCDefaultValues.class/README.md deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/TelegramClient-UI.package/TCDefaultValues.class/class/colorGray.st b/packages/TelegramClient-UI.package/TCDefaultValues.class/class/colorGray.st deleted file mode 100644 index ca71420f0..000000000 --- a/packages/TelegramClient-UI.package/TCDefaultValues.class/class/colorGray.st +++ /dev/null @@ -1,4 +0,0 @@ -colors -colorGray - - ^ (Color r: (53 /255) g: (60 / 255) b: (74 / 255)) \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCDefaultValues.class/class/colorLightBlue.st b/packages/TelegramClient-UI.package/TCDefaultValues.class/class/colorLightBlue.st deleted file mode 100644 index 62ab12bf2..000000000 --- a/packages/TelegramClient-UI.package/TCDefaultValues.class/class/colorLightBlue.st +++ /dev/null @@ -1,4 +0,0 @@ -colors -colorLightBlue - - ^ (Color r: (64 /255) g: (167 / 255) b: (227 / 255)) \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCDefaultValues.class/methodProperties.json b/packages/TelegramClient-UI.package/TCDefaultValues.class/methodProperties.json deleted file mode 100644 index 473020ab7..000000000 --- a/packages/TelegramClient-UI.package/TCDefaultValues.class/methodProperties.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "class" : { - "colorGray" : "R.S 5/7/2020 20:03", - "colorLightBlue" : "R.S 5/7/2020 20:51" }, - "instance" : { - } } diff --git a/packages/TelegramClient-UI.package/TCDefaultValues.class/properties.json b/packages/TelegramClient-UI.package/TCDefaultValues.class/properties.json deleted file mode 100644 index b59212630..000000000 --- a/packages/TelegramClient-UI.package/TCDefaultValues.class/properties.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "category" : "TelegramClient-UI", - "classinstvars" : [ - ], - "classvars" : [ - ], - "commentStamp" : "", - "instvars" : [ - ], - "name" : "TCDefaultValues", - "pools" : [ - ], - "super" : "Object", - "type" : "normal" } diff --git a/TelegramClient-UI.package/TCUApp.class/README.md b/packages/TelegramClient-UI.package/TCUApp.class/README.md similarity index 100% rename from TelegramClient-UI.package/TCUApp.class/README.md rename to packages/TelegramClient-UI.package/TCUApp.class/README.md diff --git a/TelegramClient-UI.package/TCUApp.class/class/newWithCore..st b/packages/TelegramClient-UI.package/TCUApp.class/class/newWithCore..st similarity index 100% rename from TelegramClient-UI.package/TCUApp.class/class/newWithCore..st rename to packages/TelegramClient-UI.package/TCUApp.class/class/newWithCore..st diff --git a/TelegramClient-UI.package/TCUApp.class/class/newWithTCCApp.st b/packages/TelegramClient-UI.package/TCUApp.class/class/newWithTCCApp.st similarity index 100% rename from TelegramClient-UI.package/TCUApp.class/class/newWithTCCApp.st rename to packages/TelegramClient-UI.package/TCUApp.class/class/newWithTCCApp.st diff --git a/TelegramClient-UI.package/TCUApp.class/instance/core..st b/packages/TelegramClient-UI.package/TCUApp.class/instance/core..st similarity index 100% rename from TelegramClient-UI.package/TCUApp.class/instance/core..st rename to packages/TelegramClient-UI.package/TCUApp.class/instance/core..st diff --git a/TelegramClient-UI.package/TCUApp.class/instance/core.st b/packages/TelegramClient-UI.package/TCUApp.class/instance/core.st similarity index 100% rename from TelegramClient-UI.package/TCUApp.class/instance/core.st rename to packages/TelegramClient-UI.package/TCUApp.class/instance/core.st diff --git a/TelegramClient-UI.package/TCUApp.class/instance/initialize.st b/packages/TelegramClient-UI.package/TCUApp.class/instance/initialize.st similarity index 100% rename from TelegramClient-UI.package/TCUApp.class/instance/initialize.st rename to packages/TelegramClient-UI.package/TCUApp.class/instance/initialize.st diff --git a/TelegramClient-UI.package/TCUApp.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUApp.class/methodProperties.json similarity index 100% rename from TelegramClient-UI.package/TCUApp.class/methodProperties.json rename to packages/TelegramClient-UI.package/TCUApp.class/methodProperties.json diff --git a/TelegramClient-UI.package/TCUApp.class/properties.json b/packages/TelegramClient-UI.package/TCUApp.class/properties.json similarity index 100% rename from TelegramClient-UI.package/TCUApp.class/properties.json rename to packages/TelegramClient-UI.package/TCUApp.class/properties.json diff --git a/TelegramClient-UI.package/TCUAuthentication.class/README.md b/packages/TelegramClient-UI.package/TCUAuthentication.class/README.md similarity index 100% rename from TelegramClient-UI.package/TCUAuthentication.class/README.md rename to packages/TelegramClient-UI.package/TCUAuthentication.class/README.md diff --git a/TelegramClient-UI.package/TCUAuthentication.class/class/newWithCore..st b/packages/TelegramClient-UI.package/TCUAuthentication.class/class/newWithCore..st similarity index 100% rename from TelegramClient-UI.package/TCUAuthentication.class/class/newWithCore..st rename to packages/TelegramClient-UI.package/TCUAuthentication.class/class/newWithCore..st diff --git a/TelegramClient-UI.package/TCUAuthentication.class/instance/addHeader.st b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/addHeader.st similarity index 100% rename from TelegramClient-UI.package/TCUAuthentication.class/instance/addHeader.st rename to packages/TelegramClient-UI.package/TCUAuthentication.class/instance/addHeader.st diff --git a/TelegramClient-UI.package/TCUAuthentication.class/instance/addTitle.to..st b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/addTitle.to..st similarity index 100% rename from TelegramClient-UI.package/TCUAuthentication.class/instance/addTitle.to..st rename to packages/TelegramClient-UI.package/TCUAuthentication.class/instance/addTitle.to..st diff --git a/TelegramClient-UI.package/TCUAuthentication.class/instance/buttonNext..st b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/buttonNext..st similarity index 100% rename from TelegramClient-UI.package/TCUAuthentication.class/instance/buttonNext..st rename to packages/TelegramClient-UI.package/TCUAuthentication.class/instance/buttonNext..st diff --git a/TelegramClient-UI.package/TCUAuthentication.class/instance/buttonNext.st b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/buttonNext.st similarity index 100% rename from TelegramClient-UI.package/TCUAuthentication.class/instance/buttonNext.st rename to packages/TelegramClient-UI.package/TCUAuthentication.class/instance/buttonNext.st diff --git a/TelegramClient-UI.package/TCUAuthentication.class/instance/buttonNextPressed.st b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/buttonNextPressed.st similarity index 100% rename from TelegramClient-UI.package/TCUAuthentication.class/instance/buttonNextPressed.st rename to packages/TelegramClient-UI.package/TCUAuthentication.class/instance/buttonNextPressed.st diff --git a/TelegramClient-UI.package/TCUAuthentication.class/instance/buttonVerify..st b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/buttonVerify..st similarity index 100% rename from TelegramClient-UI.package/TCUAuthentication.class/instance/buttonVerify..st rename to packages/TelegramClient-UI.package/TCUAuthentication.class/instance/buttonVerify..st diff --git a/TelegramClient-UI.package/TCUAuthentication.class/instance/buttonVerify.st b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/buttonVerify.st similarity index 100% rename from TelegramClient-UI.package/TCUAuthentication.class/instance/buttonVerify.st rename to packages/TelegramClient-UI.package/TCUAuthentication.class/instance/buttonVerify.st diff --git a/TelegramClient-UI.package/TCUAuthentication.class/instance/buttonVerifyPressed.st b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/buttonVerifyPressed.st similarity index 100% rename from TelegramClient-UI.package/TCUAuthentication.class/instance/buttonVerifyPressed.st rename to packages/TelegramClient-UI.package/TCUAuthentication.class/instance/buttonVerifyPressed.st diff --git a/TelegramClient-UI.package/TCUAuthentication.class/instance/core..st b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/core..st similarity index 100% rename from TelegramClient-UI.package/TCUAuthentication.class/instance/core..st rename to packages/TelegramClient-UI.package/TCUAuthentication.class/instance/core..st diff --git a/TelegramClient-UI.package/TCUAuthentication.class/instance/core.st b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/core.st similarity index 100% rename from TelegramClient-UI.package/TCUAuthentication.class/instance/core.st rename to packages/TelegramClient-UI.package/TCUAuthentication.class/instance/core.st diff --git a/TelegramClient-UI.package/TCUAuthentication.class/instance/createErrorLabel..st b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createErrorLabel..st similarity index 100% rename from TelegramClient-UI.package/TCUAuthentication.class/instance/createErrorLabel..st rename to packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createErrorLabel..st diff --git a/TelegramClient-UI.package/TCUAuthentication.class/instance/createInputField..st b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createInputField..st similarity index 100% rename from TelegramClient-UI.package/TCUAuthentication.class/instance/createInputField..st rename to packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createInputField..st diff --git a/TelegramClient-UI.package/TCUAuthentication.class/instance/createLabel..st b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createLabel..st similarity index 100% rename from TelegramClient-UI.package/TCUAuthentication.class/instance/createLabel..st rename to packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createLabel..st diff --git a/TelegramClient-UI.package/TCUAuthentication.class/instance/defaultExtent.st b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/defaultExtent.st similarity index 100% rename from TelegramClient-UI.package/TCUAuthentication.class/instance/defaultExtent.st rename to packages/TelegramClient-UI.package/TCUAuthentication.class/instance/defaultExtent.st diff --git a/TelegramClient-UI.package/TCUAuthentication.class/instance/defaultInputWidth.st b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/defaultInputWidth.st similarity index 100% rename from TelegramClient-UI.package/TCUAuthentication.class/instance/defaultInputWidth.st rename to packages/TelegramClient-UI.package/TCUAuthentication.class/instance/defaultInputWidth.st diff --git a/TelegramClient-UI.package/TCUAuthentication.class/instance/delete.st b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/delete.st similarity index 100% rename from TelegramClient-UI.package/TCUAuthentication.class/instance/delete.st rename to packages/TelegramClient-UI.package/TCUAuthentication.class/instance/delete.st diff --git a/TelegramClient-UI.package/TCUAuthentication.class/instance/errorLabel..st b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/errorLabel..st similarity index 100% rename from TelegramClient-UI.package/TCUAuthentication.class/instance/errorLabel..st rename to packages/TelegramClient-UI.package/TCUAuthentication.class/instance/errorLabel..st diff --git a/TelegramClient-UI.package/TCUAuthentication.class/instance/errorLabel.st b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/errorLabel.st similarity index 100% rename from TelegramClient-UI.package/TCUAuthentication.class/instance/errorLabel.st rename to packages/TelegramClient-UI.package/TCUAuthentication.class/instance/errorLabel.st diff --git a/TelegramClient-UI.package/TCUAuthentication.class/instance/initialize.st b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/initialize.st similarity index 100% rename from TelegramClient-UI.package/TCUAuthentication.class/instance/initialize.st rename to packages/TelegramClient-UI.package/TCUAuthentication.class/instance/initialize.st diff --git a/TelegramClient-UI.package/TCUAuthentication.class/instance/inputField..st b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/inputField..st similarity index 100% rename from TelegramClient-UI.package/TCUAuthentication.class/instance/inputField..st rename to packages/TelegramClient-UI.package/TCUAuthentication.class/instance/inputField..st diff --git a/TelegramClient-UI.package/TCUAuthentication.class/instance/inputField.st b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/inputField.st similarity index 100% rename from TelegramClient-UI.package/TCUAuthentication.class/instance/inputField.st rename to packages/TelegramClient-UI.package/TCUAuthentication.class/instance/inputField.st diff --git a/TelegramClient-UI.package/TCUAuthentication.class/instance/instructionLabel..st b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/instructionLabel..st similarity index 100% rename from TelegramClient-UI.package/TCUAuthentication.class/instance/instructionLabel..st rename to packages/TelegramClient-UI.package/TCUAuthentication.class/instance/instructionLabel..st diff --git a/TelegramClient-UI.package/TCUAuthentication.class/instance/instructionLabel.st b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/instructionLabel.st similarity index 100% rename from TelegramClient-UI.package/TCUAuthentication.class/instance/instructionLabel.st rename to packages/TelegramClient-UI.package/TCUAuthentication.class/instance/instructionLabel.st diff --git a/TelegramClient-UI.package/TCUAuthentication.class/instance/logInCompleted.st b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/logInCompleted.st similarity index 100% rename from TelegramClient-UI.package/TCUAuthentication.class/instance/logInCompleted.st rename to packages/TelegramClient-UI.package/TCUAuthentication.class/instance/logInCompleted.st diff --git a/TelegramClient-UI.package/TCUAuthentication.class/instance/showFirstStep.st b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/showFirstStep.st similarity index 100% rename from TelegramClient-UI.package/TCUAuthentication.class/instance/showFirstStep.st rename to packages/TelegramClient-UI.package/TCUAuthentication.class/instance/showFirstStep.st diff --git a/TelegramClient-UI.package/TCUAuthentication.class/instance/showLoadingMessage.st b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/showLoadingMessage.st similarity index 100% rename from TelegramClient-UI.package/TCUAuthentication.class/instance/showLoadingMessage.st rename to packages/TelegramClient-UI.package/TCUAuthentication.class/instance/showLoadingMessage.st diff --git a/TelegramClient-UI.package/TCUAuthentication.class/instance/showSecondStep.st b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/showSecondStep.st similarity index 100% rename from TelegramClient-UI.package/TCUAuthentication.class/instance/showSecondStep.st rename to packages/TelegramClient-UI.package/TCUAuthentication.class/instance/showSecondStep.st diff --git a/TelegramClient-UI.package/TCUAuthentication.class/instance/subscribeCore.st b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/subscribeCore.st similarity index 100% rename from TelegramClient-UI.package/TCUAuthentication.class/instance/subscribeCore.st rename to packages/TelegramClient-UI.package/TCUAuthentication.class/instance/subscribeCore.st diff --git a/TelegramClient-UI.package/TCUAuthentication.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUAuthentication.class/methodProperties.json similarity index 100% rename from TelegramClient-UI.package/TCUAuthentication.class/methodProperties.json rename to packages/TelegramClient-UI.package/TCUAuthentication.class/methodProperties.json diff --git a/TelegramClient-UI.package/TCUAuthentication.class/properties.json b/packages/TelegramClient-UI.package/TCUAuthentication.class/properties.json similarity index 100% rename from TelegramClient-UI.package/TCUAuthentication.class/properties.json rename to packages/TelegramClient-UI.package/TCUAuthentication.class/properties.json diff --git a/TelegramClient-UI.package/TCUButton.class/README.md b/packages/TelegramClient-UI.package/TCUButton.class/README.md similarity index 100% rename from TelegramClient-UI.package/TCUButton.class/README.md rename to packages/TelegramClient-UI.package/TCUButton.class/README.md diff --git a/TelegramClient-UI.package/TCUButton.class/instance/initialize.st b/packages/TelegramClient-UI.package/TCUButton.class/instance/initialize.st similarity index 100% rename from TelegramClient-UI.package/TCUButton.class/instance/initialize.st rename to packages/TelegramClient-UI.package/TCUButton.class/instance/initialize.st diff --git a/TelegramClient-UI.package/TCUButton.class/instance/text..st b/packages/TelegramClient-UI.package/TCUButton.class/instance/text..st similarity index 100% rename from TelegramClient-UI.package/TCUButton.class/instance/text..st rename to packages/TelegramClient-UI.package/TCUButton.class/instance/text..st diff --git a/TelegramClient-UI.package/TCUButton.class/instance/text.st b/packages/TelegramClient-UI.package/TCUButton.class/instance/text.st similarity index 100% rename from TelegramClient-UI.package/TCUButton.class/instance/text.st rename to packages/TelegramClient-UI.package/TCUButton.class/instance/text.st diff --git a/TelegramClient-UI.package/TCUButton.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUButton.class/methodProperties.json similarity index 100% rename from TelegramClient-UI.package/TCUButton.class/methodProperties.json rename to packages/TelegramClient-UI.package/TCUButton.class/methodProperties.json diff --git a/TelegramClient-UI.package/TCUButton.class/properties.json b/packages/TelegramClient-UI.package/TCUButton.class/properties.json similarity index 100% rename from TelegramClient-UI.package/TCUButton.class/properties.json rename to packages/TelegramClient-UI.package/TCUButton.class/properties.json diff --git a/TelegramClient-UI.package/TCUChatListItem.class/README.md b/packages/TelegramClient-UI.package/TCUChatListItem.class/README.md similarity index 100% rename from TelegramClient-UI.package/TCUChatListItem.class/README.md rename to packages/TelegramClient-UI.package/TCUChatListItem.class/README.md diff --git a/TelegramClient-UI.package/TCUChatListItem.class/class/newWithChatName.andWidth..st b/packages/TelegramClient-UI.package/TCUChatListItem.class/class/newWithChatName.andWidth..st similarity index 100% rename from TelegramClient-UI.package/TCUChatListItem.class/class/newWithChatName.andWidth..st rename to packages/TelegramClient-UI.package/TCUChatListItem.class/class/newWithChatName.andWidth..st diff --git a/TelegramClient-UI.package/TCUChatListItem.class/instance/addBorder.st b/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/addBorder.st similarity index 100% rename from TelegramClient-UI.package/TCUChatListItem.class/instance/addBorder.st rename to packages/TelegramClient-UI.package/TCUChatListItem.class/instance/addBorder.st diff --git a/TelegramClient-UI.package/TCUChatListItem.class/instance/addTitle.st b/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/addTitle.st similarity index 100% rename from TelegramClient-UI.package/TCUChatListItem.class/instance/addTitle.st rename to packages/TelegramClient-UI.package/TCUChatListItem.class/instance/addTitle.st diff --git a/TelegramClient-UI.package/TCUChatListItem.class/instance/chatName..st b/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/chatName..st similarity index 100% rename from TelegramClient-UI.package/TCUChatListItem.class/instance/chatName..st rename to packages/TelegramClient-UI.package/TCUChatListItem.class/instance/chatName..st diff --git a/TelegramClient-UI.package/TCUChatListItem.class/instance/chatName.st b/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/chatName.st similarity index 100% rename from TelegramClient-UI.package/TCUChatListItem.class/instance/chatName.st rename to packages/TelegramClient-UI.package/TCUChatListItem.class/instance/chatName.st diff --git a/TelegramClient-UI.package/TCUChatListItem.class/instance/defaultHeight.st b/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/defaultHeight.st similarity index 100% rename from TelegramClient-UI.package/TCUChatListItem.class/instance/defaultHeight.st rename to packages/TelegramClient-UI.package/TCUChatListItem.class/instance/defaultHeight.st diff --git a/TelegramClient-UI.package/TCUChatListItem.class/instance/initialize.st b/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/initialize.st similarity index 100% rename from TelegramClient-UI.package/TCUChatListItem.class/instance/initialize.st rename to packages/TelegramClient-UI.package/TCUChatListItem.class/instance/initialize.st diff --git a/TelegramClient-UI.package/TCUChatListItem.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUChatListItem.class/methodProperties.json similarity index 100% rename from TelegramClient-UI.package/TCUChatListItem.class/methodProperties.json rename to packages/TelegramClient-UI.package/TCUChatListItem.class/methodProperties.json diff --git a/TelegramClient-UI.package/TCUChatListItem.class/properties.json b/packages/TelegramClient-UI.package/TCUChatListItem.class/properties.json similarity index 100% rename from TelegramClient-UI.package/TCUChatListItem.class/properties.json rename to packages/TelegramClient-UI.package/TCUChatListItem.class/properties.json diff --git a/TelegramClient-UI.package/TCUChatWindow.class/README.md b/packages/TelegramClient-UI.package/TCUChatWindow.class/README.md similarity index 100% rename from TelegramClient-UI.package/TCUChatWindow.class/README.md rename to packages/TelegramClient-UI.package/TCUChatWindow.class/README.md diff --git a/TelegramClient-UI.package/TCUChatWindow.class/instance/initialize.st b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/initialize.st similarity index 100% rename from TelegramClient-UI.package/TCUChatWindow.class/instance/initialize.st rename to packages/TelegramClient-UI.package/TCUChatWindow.class/instance/initialize.st diff --git a/TelegramClient-UI.package/TCUChatWindow.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUChatWindow.class/methodProperties.json similarity index 100% rename from TelegramClient-UI.package/TCUChatWindow.class/methodProperties.json rename to packages/TelegramClient-UI.package/TCUChatWindow.class/methodProperties.json diff --git a/TelegramClient-UI.package/TCUChatWindow.class/properties.json b/packages/TelegramClient-UI.package/TCUChatWindow.class/properties.json similarity index 100% rename from TelegramClient-UI.package/TCUChatWindow.class/properties.json rename to packages/TelegramClient-UI.package/TCUChatWindow.class/properties.json diff --git a/TelegramClient-UI.package/TCUChatsList.class/README.md b/packages/TelegramClient-UI.package/TCUChatsList.class/README.md similarity index 100% rename from TelegramClient-UI.package/TCUChatsList.class/README.md rename to packages/TelegramClient-UI.package/TCUChatsList.class/README.md diff --git a/TelegramClient-UI.package/TCUChatsList.class/instance/addItem..st b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/addItem..st similarity index 100% rename from TelegramClient-UI.package/TCUChatsList.class/instance/addItem..st rename to packages/TelegramClient-UI.package/TCUChatsList.class/instance/addItem..st diff --git a/packages/TelegramClient-UI.package/TCUChatsList.class/instance/clearChats.st b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/clearChats.st new file mode 100644 index 000000000..f9cd4e265 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/clearChats.st @@ -0,0 +1,6 @@ +initialization +clearChats + + self items do: [:aItem | aItem delete]. + self items removeAll. + \ No newline at end of file diff --git a/TelegramClient-UI.package/TCUChatsList.class/instance/defaultWidth.st b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/defaultWidth.st similarity index 100% rename from TelegramClient-UI.package/TCUChatsList.class/instance/defaultWidth.st rename to packages/TelegramClient-UI.package/TCUChatsList.class/instance/defaultWidth.st diff --git a/TelegramClient-UI.package/TCUChatsList.class/instance/initialize.st b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/initialize.st similarity index 100% rename from TelegramClient-UI.package/TCUChatsList.class/instance/initialize.st rename to packages/TelegramClient-UI.package/TCUChatsList.class/instance/initialize.st diff --git a/TelegramClient-UI.package/TCUChatsList.class/instance/initializeLayout.st b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/initializeLayout.st similarity index 100% rename from TelegramClient-UI.package/TCUChatsList.class/instance/initializeLayout.st rename to packages/TelegramClient-UI.package/TCUChatsList.class/instance/initializeLayout.st diff --git a/TelegramClient-UI.package/TCUChatsList.class/instance/items..st b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/items..st similarity index 100% rename from TelegramClient-UI.package/TCUChatsList.class/instance/items..st rename to packages/TelegramClient-UI.package/TCUChatsList.class/instance/items..st diff --git a/TelegramClient-UI.package/TCUChatsList.class/instance/items.st b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/items.st similarity index 100% rename from TelegramClient-UI.package/TCUChatsList.class/instance/items.st rename to packages/TelegramClient-UI.package/TCUChatsList.class/instance/items.st diff --git a/TelegramClient-UI.package/TCUChatsList.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUChatsList.class/methodProperties.json similarity index 87% rename from TelegramClient-UI.package/TCUChatsList.class/methodProperties.json rename to packages/TelegramClient-UI.package/TCUChatsList.class/methodProperties.json index f2945127e..b26b31904 100644 --- a/TelegramClient-UI.package/TCUChatsList.class/methodProperties.json +++ b/packages/TelegramClient-UI.package/TCUChatsList.class/methodProperties.json @@ -3,7 +3,7 @@ }, "instance" : { "addItem:" : "R.S 6/4/2020 09:52", - "clearChats" : "R.S 6/3/2020 21:18", + "clearChats" : "js 5/29/2020 12:15", "defaultWidth" : "R.S 6/1/2020 14:24", "initialize" : "R.S 6/3/2020 21:19", "initializeLayout" : "R.S 6/1/2020 15:00", diff --git a/TelegramClient-UI.package/TCUChatsList.class/properties.json b/packages/TelegramClient-UI.package/TCUChatsList.class/properties.json similarity index 100% rename from TelegramClient-UI.package/TCUChatsList.class/properties.json rename to packages/TelegramClient-UI.package/TCUChatsList.class/properties.json diff --git a/TelegramClient-UI.package/TCUDefaultValues.class/README.md b/packages/TelegramClient-UI.package/TCUDefaultValues.class/README.md similarity index 100% rename from TelegramClient-UI.package/TCUDefaultValues.class/README.md rename to packages/TelegramClient-UI.package/TCUDefaultValues.class/README.md diff --git a/TelegramClient-UI.package/TCUDefaultValues.class/class/colorGray.st b/packages/TelegramClient-UI.package/TCUDefaultValues.class/class/colorGray.st similarity index 100% rename from TelegramClient-UI.package/TCUDefaultValues.class/class/colorGray.st rename to packages/TelegramClient-UI.package/TCUDefaultValues.class/class/colorGray.st diff --git a/TelegramClient-UI.package/TCUDefaultValues.class/class/colorLightBlue.st b/packages/TelegramClient-UI.package/TCUDefaultValues.class/class/colorLightBlue.st similarity index 100% rename from TelegramClient-UI.package/TCUDefaultValues.class/class/colorLightBlue.st rename to packages/TelegramClient-UI.package/TCUDefaultValues.class/class/colorLightBlue.st diff --git a/TelegramClient-UI.package/TCUDefaultValues.class/class/colorLightGray.st b/packages/TelegramClient-UI.package/TCUDefaultValues.class/class/colorLightGray.st similarity index 100% rename from TelegramClient-UI.package/TCUDefaultValues.class/class/colorLightGray.st rename to packages/TelegramClient-UI.package/TCUDefaultValues.class/class/colorLightGray.st diff --git a/TelegramClient-UI.package/TCUDefaultValues.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUDefaultValues.class/methodProperties.json similarity index 100% rename from TelegramClient-UI.package/TCUDefaultValues.class/methodProperties.json rename to packages/TelegramClient-UI.package/TCUDefaultValues.class/methodProperties.json diff --git a/TelegramClient-UI.package/TCUDefaultValues.class/properties.json b/packages/TelegramClient-UI.package/TCUDefaultValues.class/properties.json similarity index 100% rename from TelegramClient-UI.package/TCUDefaultValues.class/properties.json rename to packages/TelegramClient-UI.package/TCUDefaultValues.class/properties.json diff --git a/TelegramClient-UI.package/TCUMain.class/README.md b/packages/TelegramClient-UI.package/TCUMain.class/README.md similarity index 100% rename from TelegramClient-UI.package/TCUMain.class/README.md rename to packages/TelegramClient-UI.package/TCUMain.class/README.md diff --git a/TelegramClient-UI.package/TCUMain.class/class/newWithCore..st b/packages/TelegramClient-UI.package/TCUMain.class/class/newWithCore..st similarity index 100% rename from TelegramClient-UI.package/TCUMain.class/class/newWithCore..st rename to packages/TelegramClient-UI.package/TCUMain.class/class/newWithCore..st diff --git a/TelegramClient-UI.package/TCUMain.class/instance/addChatWindow.st b/packages/TelegramClient-UI.package/TCUMain.class/instance/addChatWindow.st similarity index 100% rename from TelegramClient-UI.package/TCUMain.class/instance/addChatWindow.st rename to packages/TelegramClient-UI.package/TCUMain.class/instance/addChatWindow.st diff --git a/TelegramClient-UI.package/TCUMain.class/instance/addChatsList.st b/packages/TelegramClient-UI.package/TCUMain.class/instance/addChatsList.st similarity index 100% rename from TelegramClient-UI.package/TCUMain.class/instance/addChatsList.st rename to packages/TelegramClient-UI.package/TCUMain.class/instance/addChatsList.st diff --git a/TelegramClient-UI.package/TCUMain.class/instance/addHeader.st b/packages/TelegramClient-UI.package/TCUMain.class/instance/addHeader.st similarity index 100% rename from TelegramClient-UI.package/TCUMain.class/instance/addHeader.st rename to packages/TelegramClient-UI.package/TCUMain.class/instance/addHeader.st diff --git a/TelegramClient-UI.package/TCUMain.class/instance/addTitle.to..st b/packages/TelegramClient-UI.package/TCUMain.class/instance/addTitle.to..st similarity index 100% rename from TelegramClient-UI.package/TCUMain.class/instance/addTitle.to..st rename to packages/TelegramClient-UI.package/TCUMain.class/instance/addTitle.to..st diff --git a/TelegramClient-UI.package/TCUMain.class/instance/chatWindow..st b/packages/TelegramClient-UI.package/TCUMain.class/instance/chatWindow..st similarity index 100% rename from TelegramClient-UI.package/TCUMain.class/instance/chatWindow..st rename to packages/TelegramClient-UI.package/TCUMain.class/instance/chatWindow..st diff --git a/TelegramClient-UI.package/TCUMain.class/instance/chatWindow.st b/packages/TelegramClient-UI.package/TCUMain.class/instance/chatWindow.st similarity index 100% rename from TelegramClient-UI.package/TCUMain.class/instance/chatWindow.st rename to packages/TelegramClient-UI.package/TCUMain.class/instance/chatWindow.st diff --git a/TelegramClient-UI.package/TCUMain.class/instance/chatsList..st b/packages/TelegramClient-UI.package/TCUMain.class/instance/chatsList..st similarity index 100% rename from TelegramClient-UI.package/TCUMain.class/instance/chatsList..st rename to packages/TelegramClient-UI.package/TCUMain.class/instance/chatsList..st diff --git a/TelegramClient-UI.package/TCUMain.class/instance/chatsList.st b/packages/TelegramClient-UI.package/TCUMain.class/instance/chatsList.st similarity index 100% rename from TelegramClient-UI.package/TCUMain.class/instance/chatsList.st rename to packages/TelegramClient-UI.package/TCUMain.class/instance/chatsList.st diff --git a/TelegramClient-UI.package/TCUMain.class/instance/core..st b/packages/TelegramClient-UI.package/TCUMain.class/instance/core..st similarity index 100% rename from TelegramClient-UI.package/TCUMain.class/instance/core..st rename to packages/TelegramClient-UI.package/TCUMain.class/instance/core..st diff --git a/TelegramClient-UI.package/TCUMain.class/instance/core.st b/packages/TelegramClient-UI.package/TCUMain.class/instance/core.st similarity index 100% rename from TelegramClient-UI.package/TCUMain.class/instance/core.st rename to packages/TelegramClient-UI.package/TCUMain.class/instance/core.st diff --git a/TelegramClient-UI.package/TCUMain.class/instance/defaultExtent.st b/packages/TelegramClient-UI.package/TCUMain.class/instance/defaultExtent.st similarity index 100% rename from TelegramClient-UI.package/TCUMain.class/instance/defaultExtent.st rename to packages/TelegramClient-UI.package/TCUMain.class/instance/defaultExtent.st diff --git a/TelegramClient-UI.package/TCUMain.class/instance/defaultHeaderHeight.st b/packages/TelegramClient-UI.package/TCUMain.class/instance/defaultHeaderHeight.st similarity index 100% rename from TelegramClient-UI.package/TCUMain.class/instance/defaultHeaderHeight.st rename to packages/TelegramClient-UI.package/TCUMain.class/instance/defaultHeaderHeight.st diff --git a/TelegramClient-UI.package/TCUMain.class/instance/delete.st b/packages/TelegramClient-UI.package/TCUMain.class/instance/delete.st similarity index 100% rename from TelegramClient-UI.package/TCUMain.class/instance/delete.st rename to packages/TelegramClient-UI.package/TCUMain.class/instance/delete.st diff --git a/TelegramClient-UI.package/TCUMain.class/instance/initialize.st b/packages/TelegramClient-UI.package/TCUMain.class/instance/initialize.st similarity index 100% rename from TelegramClient-UI.package/TCUMain.class/instance/initialize.st rename to packages/TelegramClient-UI.package/TCUMain.class/instance/initialize.st diff --git a/TelegramClient-UI.package/TCUMain.class/instance/logout.st b/packages/TelegramClient-UI.package/TCUMain.class/instance/logout.st similarity index 100% rename from TelegramClient-UI.package/TCUMain.class/instance/logout.st rename to packages/TelegramClient-UI.package/TCUMain.class/instance/logout.st diff --git a/TelegramClient-UI.package/TCUMain.class/instance/subscribeCore.st b/packages/TelegramClient-UI.package/TCUMain.class/instance/subscribeCore.st similarity index 100% rename from TelegramClient-UI.package/TCUMain.class/instance/subscribeCore.st rename to packages/TelegramClient-UI.package/TCUMain.class/instance/subscribeCore.st diff --git a/TelegramClient-UI.package/TCUMain.class/instance/updateChatsList.st b/packages/TelegramClient-UI.package/TCUMain.class/instance/updateChatsList.st similarity index 100% rename from TelegramClient-UI.package/TCUMain.class/instance/updateChatsList.st rename to packages/TelegramClient-UI.package/TCUMain.class/instance/updateChatsList.st diff --git a/TelegramClient-UI.package/TCUMain.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUMain.class/methodProperties.json similarity index 100% rename from TelegramClient-UI.package/TCUMain.class/methodProperties.json rename to packages/TelegramClient-UI.package/TCUMain.class/methodProperties.json index 240937c3a..524714351 100644 --- a/TelegramClient-UI.package/TCUMain.class/methodProperties.json +++ b/packages/TelegramClient-UI.package/TCUMain.class/methodProperties.json @@ -10,12 +10,12 @@ "chatWindow:" : "R.S 6/1/2020 14:27", "chatsList" : "R.S 6/1/2020 14:27", "chatsList:" : "R.S 6/1/2020 14:27", - "logout" : "js 5/29/2020 09:35", "core" : "R.S 6/1/2020 22:27", "core:" : "R.S 6/1/2020 22:27", "defaultExtent" : "R.S 6/1/2020 14:27", "defaultHeaderHeight" : "R.S 6/1/2020 14:27", "delete" : "R.S 6/3/2020 20:54", "initialize" : "R.S 6/3/2020 21:21", + "logout" : "js 5/29/2020 09:35", "subscribeCore" : "R.S 6/3/2020 21:03", "updateChatsList" : "R.S 6/4/2020 10:12" } } diff --git a/TelegramClient-UI.package/TCUMain.class/properties.json b/packages/TelegramClient-UI.package/TCUMain.class/properties.json similarity index 100% rename from TelegramClient-UI.package/TCUMain.class/properties.json rename to packages/TelegramClient-UI.package/TCUMain.class/properties.json From 3b8cbd00ac1686e826258c8be862a99e711ce9e2 Mon Sep 17 00:00:00 2001 From: Lasklu <49564344+Lasklu@users.noreply.github.com> Date: Fri, 12 Jun 2020 19:25:17 +0200 Subject: [PATCH 04/81] Fixed installation Instructions * fixed linux installation instructions * added FFI installation instruction * detailled instruction 2, removed instruction 5 * Update Windows installation instructions * Fixed image link * Removed duplicate text Co-authored-by: sspangenberg <49531479+sspangenberg@users.noreply.github.com> Co-authored-by: Niklas Schilli --- README.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 8363a0d55..fdba115c3 100644 --- a/README.md +++ b/README.md @@ -9,13 +9,13 @@ TelegramClient is a **Squeak-Client** for the widely used Telegram-Messenger. It ## Installation Make sure you have the current version of Squeak installed. -1. Install the Squeak Git Client -2. Install the Squeak FFI Workload -3. Download the required native Binaries for your system. - * [Windows](https://drive.google.com/open?id=14tOoIfxioIe8bn2kPxPKmCk_Eg0tSYiJ) - * [Mac](https://drive.google.com/open?id=1H2l_V6zkIx4t_SKQKL3MmdtvOV2haFjV) - * [Ubuntu 18 lts](https://drive.google.com/open?id=1CpSPcB-5MPA95fEWI-X5MxbUEZUcU3g2) -4. Place the unzipped binaries inside of your squeak image. On Windows, place them inside the Win32 folder, on Linux and Mac Os place them inside the resources folder. +* Step 1: Install the Squeak Git Client +* Step 2: Install the Squeak FFI Workload. To do so, open the Workspace in Squeak and execute the following command: `(Installer repository: 'http://source.squeak.org/FFI') +install: 'FFI-Pools'; +install: 'FFI-Kernel'.` +* Step 3: Download the required native Binaries for your system. [Windows](https://drive.google.com/open?id=14tOoIfxioIe8bn2kPxPKmCk_Eg0tSYiJ), [Mac](https://drive.google.com/open?id=1H2l_V6zkIx4t_SKQKL3MmdtvOV2haFjV), [Ubuntu 18 lts](https://drive.google.com/open?id=1CpSPcB-5MPA95fEWI-X5MxbUEZUcU3g2). +* Step 4: Place the unzipped binaries inside of your squeak image. On Windows, place them inside the Win32 folder, on Linux in "Contents/Linux-x86_64/lib/squeak/\/" and on Mac place them inside the resources folder. +* Step 5 (Windows only): Install Visual C++ Redistributable for Visual Studio 2015, 2017 and 2019: [32Bit](https://aka.ms/vs/16/release/vc_redist.x86.exe) or [64Bit](https://aka.ms/vs/16/release/vc_redist.x64.exe) ## Running TelegramClient In a workspace window execute the command From 43fc1d2887e51932143bedea41da22402616c5bb Mon Sep 17 00:00:00 2001 From: Rohan Sawahn <49531442+rohansaw@users.noreply.github.com> Date: Fri, 12 Jun 2020 19:48:40 +0200 Subject: [PATCH 05/81] Refactored chatsList and added Back Button at Auth (#135) * added tccchats * added tccrequest * fixed tdparams * fixes * Fixed UI problems * Now properly sorting chatsList * Started refactoring loading of Chats. This is only a Backup commit if squeak crashes! * Now cleanly handling loading of Chats with ChatsHandler. But order not working yet * removed accidental halt * addChat is now part of ChatsHandler * Added BackButton, in case that User enters wrong phone number and want to go a step back * Merged Dev into this branch Co-authored-by: Jonas Schmidt --- .github/ci.yml | 3 +- .github/workflows/main.yml | 3 +- README.md | 14 ++++---- .../instance/createClient..st | 2 +- .../TCCApp.class/instance/addChat..st | 11 ------- .../TCCApp.class/instance/authSucceeded.st | 5 +++ .../TCCApp.class/instance/chatsHandler..st | 4 +++ .../TCCApp.class/instance/chatsHandler.st | 4 +++ .../TCCApp.class/instance/getChats.st | 4 --- .../TCCApp.class/instance/handleEvent..st | 12 ++----- .../TCCApp.class/instance/initialize.st | 2 +- .../instance/initializeHandlers.st | 2 +- .../TCCApp.class/instance/messageHandler..st | 4 --- .../TCCApp.class/instance/messageHandler.st | 4 --- .../TCCApp.class/instance/setChatInfos..st | 11 ------- .../TCCApp.class/methodProperties.json | 14 ++++---- .../TCCApp.class/properties.json | 2 +- .../instance/checkAuthenticationCode..st | 4 ++- .../instance/handleEvent..st | 2 +- .../instance/sendPhoneNumber..st | 4 ++- .../instance/setDBEncryptionKey..st | 4 ++- .../instance/setTDLibParams.st | 24 +++++++------- .../methodProperties.json | 10 +++--- .../TCCChat.class/instance/fullName..st | 4 --- .../TCCChat.class/instance/fullName.st | 4 --- .../TCCChat.class/instance/id..st | 4 +++ .../TCCChat.class/instance/id.st | 4 +++ .../TCCChat.class/instance/title..st | 4 +++ .../TCCChat.class/instance/title.st | 4 +++ .../TCCChat.class/methodProperties.json | 6 ++-- .../TCCChat.class/properties.json | 5 +-- .../README.md | 0 .../TCCChats.class/class/new.st | 6 ++++ .../TCCChats.class/instance/getChat..st | 4 +++ .../TCCChats.class/instance/initialize.st | 6 ++++ .../TCCChats.class/instance/sortBlock.st | 4 +++ .../TCCChats.class/methodProperties.json | 7 ++++ .../TCCChats.class/properties.json | 14 ++++++++ .../TCCChatsHandler.class/README.md | 0 .../instance/addChat..st | 12 +++++++ .../instance/app..st | 0 .../instance/app.st | 0 .../instance/client.st | 0 .../instance/getChatInfos..st | 6 ++++ .../instance/getChats.st | 8 +++++ .../instance/handleEvent..st | 2 +- .../methodProperties.json | 11 +++++++ .../properties.json | 2 +- .../instance/getChatInfos..st | 4 --- .../instance/getChats.st | 4 --- .../methodProperties.json | 10 ------ .../TCCRequest.class/README.md | 0 .../class/newWithType.from..st | 6 ++++ .../TCCRequest.class/instance/asString.st | 9 ++++++ .../TCCRequest.class/methodProperties.json | 5 +++ .../TCCRequest.class/properties.json | 14 ++++++++ .../TCCTeleClient.class/instance/receive..st | 2 +- .../TCCTeleClient.class/instance/send..st | 4 +-- .../TCCTeleClient.class/methodProperties.json | 4 +-- .../instance/createClient..st | 2 +- .../instance/createClient.st | 2 +- .../TDJSONClientMock.class/README.md | 0 .../TDJSONClientMock.class/class/chatCount.st | 3 ++ .../class/messageInChat1Count.st | 3 ++ .../instance/answerSend..st | 32 +++++++++++++++++++ .../instance/destroy.st | 3 ++ .../instance/execute..st | 3 ++ .../instance/initialize.st | 5 +++ .../instance/receive..st | 4 +++ .../TDJSONClientMock.class/instance/send..st | 3 ++ .../methodProperties.json | 11 +++++++ .../TDJSONClientMock.class/properties.json | 14 ++++++++ .../TCUApp.class/methodProperties.json | 2 +- .../instance/buttonBack..st | 4 +++ .../instance/buttonBack.st | 4 +++ .../instance/buttonBackPressed.st | 4 +++ .../instance/createButtonBack.st | 10 ++++++ .../instance/createButtonNext.st | 10 ++++++ .../instance/createButtonVerify.st | 10 ++++++ .../instance/createInputField..st | 3 +- .../instance/initialize.st | 3 +- .../instance/initializeMorphs.st | 11 +++++++ .../instance/showFirstStep.st | 14 +++----- .../instance/showSecondStep.st | 16 ++++------ .../methodProperties.json | 15 ++++++--- .../TCUAuthentication.class/properties.json | 3 +- .../TCUChatsList.class/instance/clearChats.st | 4 +-- .../TCUChatsList.class/methodProperties.json | 2 +- .../TCUMain.class/instance/addHeader.st | 2 -- .../TCUMain.class/instance/addTitle.to..st | 1 + .../TCUMain.class/instance/initialize.st | 4 +-- .../TCUMain.class/instance/updateChatsList.st | 6 ++-- .../TCUMain.class/methodProperties.json | 8 ++--- 93 files changed, 382 insertions(+), 167 deletions(-) delete mode 100644 packages/TelegramClient-Core.package/TCCApp.class/instance/addChat..st create mode 100644 packages/TelegramClient-Core.package/TCCApp.class/instance/authSucceeded.st create mode 100644 packages/TelegramClient-Core.package/TCCApp.class/instance/chatsHandler..st create mode 100644 packages/TelegramClient-Core.package/TCCApp.class/instance/chatsHandler.st delete mode 100644 packages/TelegramClient-Core.package/TCCApp.class/instance/getChats.st delete mode 100644 packages/TelegramClient-Core.package/TCCApp.class/instance/messageHandler..st delete mode 100644 packages/TelegramClient-Core.package/TCCApp.class/instance/messageHandler.st delete mode 100644 packages/TelegramClient-Core.package/TCCApp.class/instance/setChatInfos..st delete mode 100644 packages/TelegramClient-Core.package/TCCChat.class/instance/fullName..st delete mode 100644 packages/TelegramClient-Core.package/TCCChat.class/instance/fullName.st create mode 100644 packages/TelegramClient-Core.package/TCCChat.class/instance/id..st create mode 100644 packages/TelegramClient-Core.package/TCCChat.class/instance/id.st create mode 100644 packages/TelegramClient-Core.package/TCCChat.class/instance/title..st create mode 100644 packages/TelegramClient-Core.package/TCCChat.class/instance/title.st rename packages/TelegramClient-Core.package/{TCCMessageHandler.class => TCCChats.class}/README.md (100%) create mode 100644 packages/TelegramClient-Core.package/TCCChats.class/class/new.st create mode 100644 packages/TelegramClient-Core.package/TCCChats.class/instance/getChat..st create mode 100644 packages/TelegramClient-Core.package/TCCChats.class/instance/initialize.st create mode 100644 packages/TelegramClient-Core.package/TCCChats.class/instance/sortBlock.st create mode 100644 packages/TelegramClient-Core.package/TCCChats.class/methodProperties.json create mode 100644 packages/TelegramClient-Core.package/TCCChats.class/properties.json create mode 100644 packages/TelegramClient-Core.package/TCCChatsHandler.class/README.md create mode 100644 packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/addChat..st rename packages/TelegramClient-Core.package/{TCCMessageHandler.class => TCCChatsHandler.class}/instance/app..st (100%) rename packages/TelegramClient-Core.package/{TCCMessageHandler.class => TCCChatsHandler.class}/instance/app.st (100%) rename packages/TelegramClient-Core.package/{TCCMessageHandler.class => TCCChatsHandler.class}/instance/client.st (100%) create mode 100644 packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/getChatInfos..st create mode 100644 packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/getChats.st rename packages/TelegramClient-Core.package/{TCCMessageHandler.class => TCCChatsHandler.class}/instance/handleEvent..st (50%) create mode 100644 packages/TelegramClient-Core.package/TCCChatsHandler.class/methodProperties.json rename packages/TelegramClient-Core.package/{TCCMessageHandler.class => TCCChatsHandler.class}/properties.json (86%) delete mode 100644 packages/TelegramClient-Core.package/TCCMessageHandler.class/instance/getChatInfos..st delete mode 100644 packages/TelegramClient-Core.package/TCCMessageHandler.class/instance/getChats.st delete mode 100644 packages/TelegramClient-Core.package/TCCMessageHandler.class/methodProperties.json create mode 100644 packages/TelegramClient-Core.package/TCCRequest.class/README.md create mode 100644 packages/TelegramClient-Core.package/TCCRequest.class/class/newWithType.from..st create mode 100644 packages/TelegramClient-Core.package/TCCRequest.class/instance/asString.st create mode 100644 packages/TelegramClient-Core.package/TCCRequest.class/methodProperties.json create mode 100644 packages/TelegramClient-Core.package/TCCRequest.class/properties.json create mode 100644 packages/TelegramClient-Tests.package/TDJSONClientMock.class/README.md create mode 100644 packages/TelegramClient-Tests.package/TDJSONClientMock.class/class/chatCount.st create mode 100644 packages/TelegramClient-Tests.package/TDJSONClientMock.class/class/messageInChat1Count.st create mode 100644 packages/TelegramClient-Tests.package/TDJSONClientMock.class/instance/answerSend..st create mode 100644 packages/TelegramClient-Tests.package/TDJSONClientMock.class/instance/destroy.st create mode 100644 packages/TelegramClient-Tests.package/TDJSONClientMock.class/instance/execute..st create mode 100644 packages/TelegramClient-Tests.package/TDJSONClientMock.class/instance/initialize.st create mode 100644 packages/TelegramClient-Tests.package/TDJSONClientMock.class/instance/receive..st create mode 100644 packages/TelegramClient-Tests.package/TDJSONClientMock.class/instance/send..st create mode 100644 packages/TelegramClient-Tests.package/TDJSONClientMock.class/methodProperties.json create mode 100644 packages/TelegramClient-Tests.package/TDJSONClientMock.class/properties.json create mode 100644 packages/TelegramClient-UI.package/TCUAuthentication.class/instance/buttonBack..st create mode 100644 packages/TelegramClient-UI.package/TCUAuthentication.class/instance/buttonBack.st create mode 100644 packages/TelegramClient-UI.package/TCUAuthentication.class/instance/buttonBackPressed.st create mode 100644 packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createButtonBack.st create mode 100644 packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createButtonNext.st create mode 100644 packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createButtonVerify.st create mode 100644 packages/TelegramClient-UI.package/TCUAuthentication.class/instance/initializeMorphs.st diff --git a/.github/ci.yml b/.github/ci.yml index da6cad11e..9a848cc48 100644 --- a/.github/ci.yml +++ b/.github/ci.yml @@ -22,8 +22,7 @@ jobs: # Select platform(s) os: [ ubuntu-latest, macos-latest ] # Select compatible Smalltalk image(s) - # currently not running on Squeak64-trunk - smalltalk: [ Squeak64-5.3, Squeak64-5.2 ] + smalltalk: [ Squeak64-trunk, Squeak64-5.3, Squeak64-5.2 ] name: ${{ matrix.smalltalk }} on ${{ matrix.os }} steps: - uses: actions/checkout@v2 diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 00a794adf..85c1b36af 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -18,8 +18,7 @@ jobs: # Select platform(s) os: [ ubuntu-latest, macos-latest ] # Select compatible Smalltalk image(s) - # currently not running on Squeak64-trunk - smalltalk: [ Squeak64-5.3, Squeak64-5.2 ] + smalltalk: [ Squeak64-trunk, Squeak64-5.3, Squeak64-5.2 ] name: ${{ matrix.smalltalk }} on ${{ matrix.os }} steps: - uses: actions/checkout@v2 diff --git a/README.md b/README.md index fdba115c3..8363a0d55 100644 --- a/README.md +++ b/README.md @@ -9,13 +9,13 @@ TelegramClient is a **Squeak-Client** for the widely used Telegram-Messenger. It ## Installation Make sure you have the current version of Squeak installed. -* Step 1: Install the Squeak Git Client -* Step 2: Install the Squeak FFI Workload. To do so, open the Workspace in Squeak and execute the following command: `(Installer repository: 'http://source.squeak.org/FFI') -install: 'FFI-Pools'; -install: 'FFI-Kernel'.` -* Step 3: Download the required native Binaries for your system. [Windows](https://drive.google.com/open?id=14tOoIfxioIe8bn2kPxPKmCk_Eg0tSYiJ), [Mac](https://drive.google.com/open?id=1H2l_V6zkIx4t_SKQKL3MmdtvOV2haFjV), [Ubuntu 18 lts](https://drive.google.com/open?id=1CpSPcB-5MPA95fEWI-X5MxbUEZUcU3g2). -* Step 4: Place the unzipped binaries inside of your squeak image. On Windows, place them inside the Win32 folder, on Linux in "Contents/Linux-x86_64/lib/squeak/\/" and on Mac place them inside the resources folder. -* Step 5 (Windows only): Install Visual C++ Redistributable for Visual Studio 2015, 2017 and 2019: [32Bit](https://aka.ms/vs/16/release/vc_redist.x86.exe) or [64Bit](https://aka.ms/vs/16/release/vc_redist.x64.exe) +1. Install the Squeak Git Client +2. Install the Squeak FFI Workload +3. Download the required native Binaries for your system. + * [Windows](https://drive.google.com/open?id=14tOoIfxioIe8bn2kPxPKmCk_Eg0tSYiJ) + * [Mac](https://drive.google.com/open?id=1H2l_V6zkIx4t_SKQKL3MmdtvOV2haFjV) + * [Ubuntu 18 lts](https://drive.google.com/open?id=1CpSPcB-5MPA95fEWI-X5MxbUEZUcU3g2) +4. Place the unzipped binaries inside of your squeak image. On Windows, place them inside the Win32 folder, on Linux and Mac Os place them inside the resources folder. ## Running TelegramClient In a workspace window execute the command diff --git a/packages/TelegramClient-Core.package/TCCAbstractTeleClientFactory.class/instance/createClient..st b/packages/TelegramClient-Core.package/TCCAbstractTeleClientFactory.class/instance/createClient..st index d92d859f2..e5eae37cc 100644 --- a/packages/TelegramClient-Core.package/TCCAbstractTeleClientFactory.class/instance/createClient..st +++ b/packages/TelegramClient-Core.package/TCCAbstractTeleClientFactory.class/instance/createClient..st @@ -1,4 +1,4 @@ -Creation +creation createClient: anOsName ^ self subclassResponsibility \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCApp.class/instance/addChat..st b/packages/TelegramClient-Core.package/TCCApp.class/instance/addChat..st deleted file mode 100644 index 4f769b130..000000000 --- a/packages/TelegramClient-Core.package/TCCApp.class/instance/addChat..st +++ /dev/null @@ -1,11 +0,0 @@ -accessing -addChat: aChatEvent - - | userId chat | - - userId := aChatEvent at: 'user_id'. - chat := TCCChat new userId: userId. - chat fullName ifNil: [self messageHandler getChatInfos: userId]. - chat order ifNil: [chat order: '0']. - - self chats at: userId put: chat. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCApp.class/instance/authSucceeded.st b/packages/TelegramClient-Core.package/TCCApp.class/instance/authSucceeded.st new file mode 100644 index 000000000..cd2304af9 --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCApp.class/instance/authSucceeded.st @@ -0,0 +1,5 @@ +initialization +authSucceeded + + self chatsHandler getChats. + ^ #authReady \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCApp.class/instance/chatsHandler..st b/packages/TelegramClient-Core.package/TCCApp.class/instance/chatsHandler..st new file mode 100644 index 000000000..4a7562a45 --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCApp.class/instance/chatsHandler..st @@ -0,0 +1,4 @@ +accessing +chatsHandler: aChatsHandler + + chatsHandler := aChatsHandler. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCApp.class/instance/chatsHandler.st b/packages/TelegramClient-Core.package/TCCApp.class/instance/chatsHandler.st new file mode 100644 index 000000000..af78b0d51 --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCApp.class/instance/chatsHandler.st @@ -0,0 +1,4 @@ +accessing +chatsHandler + + ^ chatsHandler \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCApp.class/instance/getChats.st b/packages/TelegramClient-Core.package/TCCApp.class/instance/getChats.st deleted file mode 100644 index cab93e8f5..000000000 --- a/packages/TelegramClient-Core.package/TCCApp.class/instance/getChats.st +++ /dev/null @@ -1,4 +0,0 @@ -accessing -getChats - - self messageHandler getChats. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCApp.class/instance/handleEvent..st b/packages/TelegramClient-Core.package/TCCApp.class/instance/handleEvent..st index 29849a793..a665d4c20 100644 --- a/packages/TelegramClient-Core.package/TCCApp.class/instance/handleEvent..st +++ b/packages/TelegramClient-Core.package/TCCApp.class/instance/handleEvent..st @@ -5,18 +5,12 @@ handleEvent: anEvent update := nil. (((anEvent at: '@type') = 'error') and: [(anEvent at: 'code') = 400 ]) - ifTrue: [self halt: 'There probably already is an instance of TCClient running']. + ifTrue: [self halt: 'An Error Occured. Check Transcript Output.']. (anEvent at: '@type') = 'updateAuthorizationState' ifTrue: [update := self authHandler handleEvent: anEvent]. - (anEvent at: '@type') = 'chats' - ifTrue: [update := self messageHandler handleEvent: anEvent]. - - (anEvent at: '@type') = 'updateUserFullInfo' - ifTrue: [self addChat: anEvent]. - - (anEvent at: '@type') = 'chat' - ifTrue: [self setChatInfos: anEvent]. + (anEvent at: '@type') = 'updateNewChat' + ifTrue: [self chatsHandler addChat: anEvent]. update isSymbol ifTrue: [self triggerEvent: update]. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCApp.class/instance/initialize.st b/packages/TelegramClient-Core.package/TCCApp.class/instance/initialize.st index 56bfc6034..83c481ca1 100644 --- a/packages/TelegramClient-Core.package/TCCApp.class/instance/initialize.st +++ b/packages/TelegramClient-Core.package/TCCApp.class/instance/initialize.st @@ -4,6 +4,6 @@ initialize self initializeClient; initializeHandlers; - chats: Dictionary new. + chats: TCCChats new. [self receiveLoop] fork. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCApp.class/instance/initializeHandlers.st b/packages/TelegramClient-Core.package/TCCApp.class/instance/initializeHandlers.st index 6de508a53..7ccd1ef60 100644 --- a/packages/TelegramClient-Core.package/TCCApp.class/instance/initializeHandlers.st +++ b/packages/TelegramClient-Core.package/TCCApp.class/instance/initializeHandlers.st @@ -3,4 +3,4 @@ initializeHandlers self authHandler: (TCCAuthHandler new app: self); - messageHandler: (TCCMessageHandler new app: self). \ No newline at end of file + chatsHandler: (TCCChatsHandler new app: self). \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCApp.class/instance/messageHandler..st b/packages/TelegramClient-Core.package/TCCApp.class/instance/messageHandler..st deleted file mode 100644 index a66760e20..000000000 --- a/packages/TelegramClient-Core.package/TCCApp.class/instance/messageHandler..st +++ /dev/null @@ -1,4 +0,0 @@ -accessing -messageHandler: aMessageHandler - - messageHandler := aMessageHandler. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCApp.class/instance/messageHandler.st b/packages/TelegramClient-Core.package/TCCApp.class/instance/messageHandler.st deleted file mode 100644 index 9f4bcfa44..000000000 --- a/packages/TelegramClient-Core.package/TCCApp.class/instance/messageHandler.st +++ /dev/null @@ -1,4 +0,0 @@ -accessing -messageHandler - - ^ messageHandler \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCApp.class/instance/setChatInfos..st b/packages/TelegramClient-Core.package/TCCApp.class/instance/setChatInfos..st deleted file mode 100644 index cc6639a7a..000000000 --- a/packages/TelegramClient-Core.package/TCCApp.class/instance/setChatInfos..st +++ /dev/null @@ -1,11 +0,0 @@ -accessing -setChatInfos: anEvent - - | chatId | - - chatId := anEvent at: 'id'. - (self chats at: chatId) - fullName: (anEvent at: 'title'); - order: (anEvent at: 'order'). - - self triggerEvent: #newChatLoaded. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCApp.class/methodProperties.json b/packages/TelegramClient-Core.package/TCCApp.class/methodProperties.json index 69ace99c0..d0d9a3244 100644 --- a/packages/TelegramClient-Core.package/TCCApp.class/methodProperties.json +++ b/packages/TelegramClient-Core.package/TCCApp.class/methodProperties.json @@ -2,23 +2,21 @@ "class" : { }, "instance" : { - "addChat:" : "R.S 6/4/2020 10:11", "authHandler" : "R.S 5/20/2020 16:10", "authHandler:" : "R.S 5/20/2020 16:10", + "authSucceeded" : "rs 6/8/2020 14:13", "chats" : "R.S 6/1/2020 15:34", "chats:" : "R.S 6/1/2020 15:34", + "chatsHandler" : "rs 6/7/2020 21:50", + "chatsHandler:" : "rs 6/7/2020 21:50", "checkAuthenticationCode:" : "js 5/31/2020 20:10", "client" : "R.S 5/20/2020 16:08", "client:" : "R.S 5/20/2020 16:08", - "getChats" : "js 6/1/2020 15:06", - "handleEvent:" : "js 5/29/2020 09:38", - "initialize" : "R.S 6/1/2020 15:52", + "handleEvent:" : "rs 6/8/2020 14:07", + "initialize" : "rs 6/6/2020 17:56", "initializeClient" : "f.w. 5/31/2020 19:01", - "initializeHandlers" : "js 6/1/2020 14:45", + "initializeHandlers" : "rs 6/7/2020 21:51", "isClientAlive" : "js 5/28/2020 17:18", - "messageHandler" : "js 6/1/2020 14:46", - "messageHandler:" : "js 6/1/2020 14:46", "receiveLoop" : "R.S 6/1/2020 15:24", "sendPhoneNumber:" : "js 5/31/2020 20:08", - "setChatInfos:" : "R.S 6/4/2020 10:11", "update" : "js 5/28/2020 17:28" } } diff --git a/packages/TelegramClient-Core.package/TCCApp.class/properties.json b/packages/TelegramClient-Core.package/TCCApp.class/properties.json index ca67e1af1..133d12707 100644 --- a/packages/TelegramClient-Core.package/TCCApp.class/properties.json +++ b/packages/TelegramClient-Core.package/TCCApp.class/properties.json @@ -9,7 +9,7 @@ "client", "authUI", "authHandler", - "messageHandler", + "chatsHandler", "chats" ], "name" : "TCCApp", "pools" : [ diff --git a/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/checkAuthenticationCode..st b/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/checkAuthenticationCode..st index 53cc97b51..f2d779972 100644 --- a/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/checkAuthenticationCode..st +++ b/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/checkAuthenticationCode..st @@ -1,4 +1,6 @@ accessing checkAuthenticationCode: aString - self client send: '{"@type": "checkAuthenticationCode", "code": "', aString, '"}'. \ No newline at end of file + self client send: (TCCRequest + newWithType: 'checkAuthenticationCode' + from: {'code' -> aString}). \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/handleEvent..st b/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/handleEvent..st index b0763a0a5..e84a58433 100644 --- a/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/handleEvent..st +++ b/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/handleEvent..st @@ -13,4 +13,4 @@ handleEvent: anEvent self isAwaitingAuthCode ifTrue: [^ #awaitAuthCode]. - self isAuthorizationStateReady ifTrue: [^ #authReady]. \ No newline at end of file + self isAuthorizationStateReady ifTrue: [^ self app authSucceeded]. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/sendPhoneNumber..st b/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/sendPhoneNumber..st index 6ff5b8477..ca83ebac3 100644 --- a/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/sendPhoneNumber..st +++ b/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/sendPhoneNumber..st @@ -1,4 +1,6 @@ accessing sendPhoneNumber: aNumber - self client send: '{"@type": "setAuthenticationPhoneNumber", "phone_number": "', aNumber, '"}'. \ No newline at end of file + self client send: (TCCRequest + newWithType: 'setAuthenticationPhoneNumber' + from: {'phone_number' -> aNumber}). \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/setDBEncryptionKey..st b/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/setDBEncryptionKey..st index 0f42e4552..65969223f 100644 --- a/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/setDBEncryptionKey..st +++ b/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/setDBEncryptionKey..st @@ -1,4 +1,6 @@ accessing setDBEncryptionKey: aString - self client send: '{"@type": "checkDatabaseEncryptionKey", "encryption_key": "', aString, '"}'. \ No newline at end of file + self client send: (TCCRequest + newWithType: 'checkDatabaseEncryptionKey' + from: {'encryption_key' -> aString}). \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/setTDLibParams.st b/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/setTDLibParams.st index d7e95c5de..8fab13917 100644 --- a/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/setTDLibParams.st +++ b/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/setTDLibParams.st @@ -1,14 +1,16 @@ accessing setTDLibParams - self client send: '{"@type": "setTdlibParameters", "parameters": { - "database_directory": "tdlib", - "use_message_database": true, - "use_secret_chats": true, - "api_id": 94575, - "api_hash": "a3406de8d171bb422bb6ddf3bbd800e2", - "system_language_code": "en", - "device_model": "Desktop", - "system_version": "', self client specificClient type, '", - "application_version": "1.0", - "enable_storage_optimizer": true}}'. \ No newline at end of file + self client send: (TCCRequest + newWithType: 'setTdlibParameters' + from: {'parameters' -> (Dictionary newFrom: { + 'database_directory' -> 'tdlib'. + 'use_message_database' -> true. + 'use_secret_chats' -> true. + 'api_id' -> 94575. + 'api_hash' -> 'a3406de8d171bb422bb6ddf3bbd800e2'. + 'system_language_code' -> 'en'. + 'device_model' -> 'Desktop'. + 'system_version' -> self client specificClient type. + 'application_version' -> '1.0'. + 'enable_storage_optimizer' -> true})}). \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCAuthHandler.class/methodProperties.json b/packages/TelegramClient-Core.package/TCCAuthHandler.class/methodProperties.json index 452a3f344..4d273d686 100644 --- a/packages/TelegramClient-Core.package/TCCAuthHandler.class/methodProperties.json +++ b/packages/TelegramClient-Core.package/TCCAuthHandler.class/methodProperties.json @@ -6,9 +6,9 @@ "app:" : "js 5/28/2020 17:02", "authState" : "R.S 5/18/2020 17:54", "authState:" : "R.S 5/18/2020 17:54", - "checkAuthenticationCode:" : "R.S 5/19/2020 10:23", + "checkAuthenticationCode:" : "rs 6/6/2020 16:23", "client" : "js 5/28/2020 18:36", - "handleEvent:" : "js 6/1/2020 15:04", + "handleEvent:" : "rs 6/8/2020 14:13", "isAuthStateClosed" : "R.S 5/19/2020 10:29", "isAuthorizationStateReady" : "R.S 5/20/2020 16:59", "isAwaitingAuthCode" : "R.S 5/19/2020 10:30", @@ -16,6 +16,6 @@ "isAwaitingPhoneNumber" : "R.S 5/19/2020 10:28", "isAwaitingTDLibParams" : "R.S 5/19/2020 10:28", "logout" : "f.w. 6/3/2020 20:41", - "sendPhoneNumber:" : "js 5/31/2020 20:09", - "setDBEncryptionKey:" : "js 5/28/2020 17:04", - "setTDLibParams" : "R.S 5/23/2020 12:22" } } + "sendPhoneNumber:" : "rs 6/6/2020 16:25", + "setDBEncryptionKey:" : "rs 6/6/2020 16:26", + "setTDLibParams" : "rs 6/6/2020 16:41" } } diff --git a/packages/TelegramClient-Core.package/TCCChat.class/instance/fullName..st b/packages/TelegramClient-Core.package/TCCChat.class/instance/fullName..st deleted file mode 100644 index b8ae47334..000000000 --- a/packages/TelegramClient-Core.package/TCCChat.class/instance/fullName..st +++ /dev/null @@ -1,4 +0,0 @@ -accessing -fullName: aString - - fullName := aString. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCChat.class/instance/fullName.st b/packages/TelegramClient-Core.package/TCCChat.class/instance/fullName.st deleted file mode 100644 index 3e176ec3f..000000000 --- a/packages/TelegramClient-Core.package/TCCChat.class/instance/fullName.st +++ /dev/null @@ -1,4 +0,0 @@ -accessing -fullName - - ^ fullName \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCChat.class/instance/id..st b/packages/TelegramClient-Core.package/TCCChat.class/instance/id..st new file mode 100644 index 000000000..7a9230e8c --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCChat.class/instance/id..st @@ -0,0 +1,4 @@ +accessing +id: aNumber + + id := aNumber. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCChat.class/instance/id.st b/packages/TelegramClient-Core.package/TCCChat.class/instance/id.st new file mode 100644 index 000000000..44798f6fa --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCChat.class/instance/id.st @@ -0,0 +1,4 @@ +accessing +id + + ^ id \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCChat.class/instance/title..st b/packages/TelegramClient-Core.package/TCCChat.class/instance/title..st new file mode 100644 index 000000000..b49b5a4aa --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCChat.class/instance/title..st @@ -0,0 +1,4 @@ +accessing +title: aString + + title := aString. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCChat.class/instance/title.st b/packages/TelegramClient-Core.package/TCCChat.class/instance/title.st new file mode 100644 index 000000000..3c1da9ab9 --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCChat.class/instance/title.st @@ -0,0 +1,4 @@ +accessing +title + + ^ title \ 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 3980f54db..9d50dc182 100644 --- a/packages/TelegramClient-Core.package/TCCChat.class/methodProperties.json +++ b/packages/TelegramClient-Core.package/TCCChat.class/methodProperties.json @@ -2,11 +2,13 @@ "class" : { }, "instance" : { - "fullName" : "R.S 6/1/2020 15:36", - "fullName:" : "R.S 6/1/2020 15:37", + "id" : "rs 6/7/2020 22:20", + "id:" : "rs 6/7/2020 22:20", "messages" : "R.S 6/1/2020 15:37", "messages:" : "R.S 6/1/2020 15:37", "order" : "R.S 6/4/2020 09:56", "order:" : "R.S 6/4/2020 09:56", + "title" : "rs 6/7/2020 22:24", + "title:" : "rs 6/7/2020 22:24", "userId" : "R.S 6/1/2020 15:37", "userId:" : "R.S 6/1/2020 15:37" } } diff --git a/packages/TelegramClient-Core.package/TCCChat.class/properties.json b/packages/TelegramClient-Core.package/TCCChat.class/properties.json index 56959b22e..ee10992ae 100644 --- a/packages/TelegramClient-Core.package/TCCChat.class/properties.json +++ b/packages/TelegramClient-Core.package/TCCChat.class/properties.json @@ -7,9 +7,10 @@ "commentStamp" : "", "instvars" : [ "userId", - "fullName", "messages", - "order" ], + "order", + "id", + "title" ], "name" : "TCCChat", "pools" : [ ], diff --git a/packages/TelegramClient-Core.package/TCCMessageHandler.class/README.md b/packages/TelegramClient-Core.package/TCCChats.class/README.md similarity index 100% rename from packages/TelegramClient-Core.package/TCCMessageHandler.class/README.md rename to packages/TelegramClient-Core.package/TCCChats.class/README.md diff --git a/packages/TelegramClient-Core.package/TCCChats.class/class/new.st b/packages/TelegramClient-Core.package/TCCChats.class/class/new.st new file mode 100644 index 000000000..02683351f --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCChats.class/class/new.st @@ -0,0 +1,6 @@ +as yet unclassified +new + + ^ super new + initialize; + yourself \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCChats.class/instance/getChat..st b/packages/TelegramClient-Core.package/TCCChats.class/instance/getChat..st new file mode 100644 index 000000000..0f86d02e9 --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCChats.class/instance/getChat..st @@ -0,0 +1,4 @@ +accessing +getChat: anID + + ^ self detect: [:aChat | aChat userId = anID] \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCChats.class/instance/initialize.st b/packages/TelegramClient-Core.package/TCCChats.class/instance/initialize.st new file mode 100644 index 000000000..d9eac0c2d --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCChats.class/instance/initialize.st @@ -0,0 +1,6 @@ +initialize-release +initialize + + super initialize. + + self sortBlock: [:aChat :anotherChat | aChat order >= anotherChat order]. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCChats.class/instance/sortBlock.st b/packages/TelegramClient-Core.package/TCCChats.class/instance/sortBlock.st new file mode 100644 index 000000000..3495175bb --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCChats.class/instance/sortBlock.st @@ -0,0 +1,4 @@ +initialize-release +sortBlock + + ^ [:aChat :anotherChat | aChat order >= anotherChat order] \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCChats.class/methodProperties.json b/packages/TelegramClient-Core.package/TCCChats.class/methodProperties.json new file mode 100644 index 000000000..381d44b50 --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCChats.class/methodProperties.json @@ -0,0 +1,7 @@ +{ + "class" : { + "new" : "rs 6/6/2020 17:58" }, + "instance" : { + "getChat:" : "rs 6/6/2020 17:02", + "initialize" : "rs 6/6/2020 17:57", + "sortBlock" : "rs 6/6/2020 17:56" } } diff --git a/packages/TelegramClient-Core.package/TCCChats.class/properties.json b/packages/TelegramClient-Core.package/TCCChats.class/properties.json new file mode 100644 index 000000000..4a2d7df02 --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCChats.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "TelegramClient-Core", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "TCCChats", + "pools" : [ + ], + "super" : "SortedCollection", + "type" : "normal" } diff --git a/packages/TelegramClient-Core.package/TCCChatsHandler.class/README.md b/packages/TelegramClient-Core.package/TCCChatsHandler.class/README.md new file mode 100644 index 000000000..e69de29bb diff --git a/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/addChat..st b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/addChat..st new file mode 100644 index 000000000..11fccc43a --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/addChat..st @@ -0,0 +1,12 @@ +events +addChat: aChatEvent + + | chat | + + chat := TCCChat new + id: ((aChatEvent at: 'chat') at: 'id'); + title: ((aChatEvent at: 'chat') at: 'title'); + order: ((aChatEvent at: 'chat') at: 'order'). + + self app chats add: chat. + self app triggerEvent: #newChatLoaded. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCMessageHandler.class/instance/app..st b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/app..st similarity index 100% rename from packages/TelegramClient-Core.package/TCCMessageHandler.class/instance/app..st rename to packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/app..st diff --git a/packages/TelegramClient-Core.package/TCCMessageHandler.class/instance/app.st b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/app.st similarity index 100% rename from packages/TelegramClient-Core.package/TCCMessageHandler.class/instance/app.st rename to packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/app.st diff --git a/packages/TelegramClient-Core.package/TCCMessageHandler.class/instance/client.st b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/client.st similarity index 100% rename from packages/TelegramClient-Core.package/TCCMessageHandler.class/instance/client.st rename to packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/client.st diff --git a/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/getChatInfos..st b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/getChatInfos..st new file mode 100644 index 000000000..fc1bbc5d3 --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/getChatInfos..st @@ -0,0 +1,6 @@ +accessing +getChatInfos: aChatID + + self client send: (TCCRequest + newWithType: 'getChat' + from: {'chat_id' -> aChatID}). \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/getChats.st b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/getChats.st new file mode 100644 index 000000000..a84d4d47b --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/getChats.st @@ -0,0 +1,8 @@ +accessing +getChats + + self client send: (TCCRequest + newWithType: 'getChats' + from: { + 'limit' -> '5'. + 'offset_order' -> '9223372036854775807'}). \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCMessageHandler.class/instance/handleEvent..st b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/handleEvent..st similarity index 50% rename from packages/TelegramClient-Core.package/TCCMessageHandler.class/instance/handleEvent..st rename to packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/handleEvent..st index 3befd0026..c66da2815 100644 --- a/packages/TelegramClient-Core.package/TCCMessageHandler.class/instance/handleEvent..st +++ b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/handleEvent..st @@ -1,4 +1,4 @@ events handleEvent: anEvent - "Transcript show: anEvent." \ No newline at end of file + Transcript show: anEvent. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCChatsHandler.class/methodProperties.json b/packages/TelegramClient-Core.package/TCCChatsHandler.class/methodProperties.json new file mode 100644 index 000000000..7d6609937 --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCChatsHandler.class/methodProperties.json @@ -0,0 +1,11 @@ +{ + "class" : { + }, + "instance" : { + "addChat:" : "rs 6/8/2020 14:03", + "app" : "js 6/1/2020 14:44", + "app:" : "js 6/1/2020 14:45", + "client" : "js 6/1/2020 14:44", + "getChatInfos:" : "rs 6/6/2020 16:33", + "getChats" : "rs 6/6/2020 16:36", + "handleEvent:" : "rs 6/8/2020 14:02" } } diff --git a/packages/TelegramClient-Core.package/TCCMessageHandler.class/properties.json b/packages/TelegramClient-Core.package/TCCChatsHandler.class/properties.json similarity index 86% rename from packages/TelegramClient-Core.package/TCCMessageHandler.class/properties.json rename to packages/TelegramClient-Core.package/TCCChatsHandler.class/properties.json index f8f7efa66..b91527d1d 100644 --- a/packages/TelegramClient-Core.package/TCCMessageHandler.class/properties.json +++ b/packages/TelegramClient-Core.package/TCCChatsHandler.class/properties.json @@ -7,7 +7,7 @@ "commentStamp" : "", "instvars" : [ "app" ], - "name" : "TCCMessageHandler", + "name" : "TCCChatsHandler", "pools" : [ ], "super" : "Object", diff --git a/packages/TelegramClient-Core.package/TCCMessageHandler.class/instance/getChatInfos..st b/packages/TelegramClient-Core.package/TCCMessageHandler.class/instance/getChatInfos..st deleted file mode 100644 index a361782f8..000000000 --- a/packages/TelegramClient-Core.package/TCCMessageHandler.class/instance/getChatInfos..st +++ /dev/null @@ -1,4 +0,0 @@ -accessing -getChatInfos: aChatId - - self client send: '{"@type": "getChat", "chat_id": "', aChatId, '"}'. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCMessageHandler.class/instance/getChats.st b/packages/TelegramClient-Core.package/TCCMessageHandler.class/instance/getChats.st deleted file mode 100644 index bf5b35132..000000000 --- a/packages/TelegramClient-Core.package/TCCMessageHandler.class/instance/getChats.st +++ /dev/null @@ -1,4 +0,0 @@ -accessing -getChats - - self client send: '{"@type": "getChats", "limit": "', 5, '", "offset_order": "', 9223372036854775807, '"}'. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCMessageHandler.class/methodProperties.json b/packages/TelegramClient-Core.package/TCCMessageHandler.class/methodProperties.json deleted file mode 100644 index b3fcb962d..000000000 --- a/packages/TelegramClient-Core.package/TCCMessageHandler.class/methodProperties.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "class" : { - }, - "instance" : { - "app" : "js 6/1/2020 14:44", - "app:" : "js 6/1/2020 14:45", - "client" : "js 6/1/2020 14:44", - "getChatInfos:" : "R.S 6/1/2020 16:15", - "getChats" : "js 6/1/2020 14:59", - "handleEvent:" : "js 6/1/2020 16:37" } } diff --git a/packages/TelegramClient-Core.package/TCCRequest.class/README.md b/packages/TelegramClient-Core.package/TCCRequest.class/README.md new file mode 100644 index 000000000..e69de29bb diff --git a/packages/TelegramClient-Core.package/TCCRequest.class/class/newWithType.from..st b/packages/TelegramClient-Core.package/TCCRequest.class/class/newWithType.from..st new file mode 100644 index 000000000..59174dc2b --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCRequest.class/class/newWithType.from..st @@ -0,0 +1,6 @@ +instance creation +newWithType: aString from: aDictionary + + ^ (self newFrom: aDictionary) + at: '@type' put: aString; + yourself \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCRequest.class/instance/asString.st b/packages/TelegramClient-Core.package/TCCRequest.class/instance/asString.st new file mode 100644 index 000000000..c336bca88 --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCRequest.class/instance/asString.st @@ -0,0 +1,9 @@ +accessing +asString + + | aStream | + + aStream := ReadWriteStream on: ''. + self jsonWriteOn: aStream. + + ^ aStream contents \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCRequest.class/methodProperties.json b/packages/TelegramClient-Core.package/TCCRequest.class/methodProperties.json new file mode 100644 index 000000000..6e8b8a484 --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCRequest.class/methodProperties.json @@ -0,0 +1,5 @@ +{ + "class" : { + "newWithType:from:" : "rs 6/6/2020 16:21" }, + "instance" : { + "asString" : "rs 6/6/2020 16:11" } } diff --git a/packages/TelegramClient-Core.package/TCCRequest.class/properties.json b/packages/TelegramClient-Core.package/TCCRequest.class/properties.json new file mode 100644 index 000000000..a21acf7f9 --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCRequest.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "TelegramClient-Core", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "TCCRequest", + "pools" : [ + ], + "super" : "Dictionary", + "type" : "normal" } diff --git a/packages/TelegramClient-Core.package/TCCTeleClient.class/instance/receive..st b/packages/TelegramClient-Core.package/TCCTeleClient.class/instance/receive..st index 608b10a09..05812be61 100644 --- a/packages/TelegramClient-Core.package/TCCTeleClient.class/instance/receive..st +++ b/packages/TelegramClient-Core.package/TCCTeleClient.class/instance/receive..st @@ -5,5 +5,5 @@ receive: aTimeoutNumber event := self specificClient receive: self handle with: aTimeoutNumber. event ifNil: [^nil]. - + "Transcript show: event, Character cr." ^ Json new readFromString: event \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCTeleClient.class/instance/send..st b/packages/TelegramClient-Core.package/TCCTeleClient.class/instance/send..st index 955ab8f9c..b9476481c 100644 --- a/packages/TelegramClient-Core.package/TCCTeleClient.class/instance/send..st +++ b/packages/TelegramClient-Core.package/TCCTeleClient.class/instance/send..st @@ -1,4 +1,4 @@ accessing -send: aMessage +send: aRequest - self specificClient send: self handle with: aMessage. \ No newline at end of file + self specificClient send: self handle with: aRequest asString. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCTeleClient.class/methodProperties.json b/packages/TelegramClient-Core.package/TCCTeleClient.class/methodProperties.json index b102a63ef..c87f9b4f9 100644 --- a/packages/TelegramClient-Core.package/TCCTeleClient.class/methodProperties.json +++ b/packages/TelegramClient-Core.package/TCCTeleClient.class/methodProperties.json @@ -8,7 +8,7 @@ "handle:" : "R.S 5/18/2020 18:20", "initialize:" : "R.S 5/20/2020 16:10", "isAlive" : "js 5/28/2020 17:23", - "receive:" : "R.S 5/18/2020 18:12", - "send:" : "js 5/28/2020 17:24", + "receive:" : "rs 6/7/2020 22:14", + "send:" : "rs 6/6/2020 16:09", "specificClient" : "js 5/28/2020 17:23", "specificClient:" : "js 5/28/2020 17:23" } } diff --git a/packages/TelegramClient-Core.package/TCCTeleClientFactory.class/instance/createClient..st b/packages/TelegramClient-Core.package/TCCTeleClientFactory.class/instance/createClient..st index 222f503d5..01344a0a7 100644 --- a/packages/TelegramClient-Core.package/TCCTeleClientFactory.class/instance/createClient..st +++ b/packages/TelegramClient-Core.package/TCCTeleClientFactory.class/instance/createClient..st @@ -1,4 +1,4 @@ -Creation +creation createClient: anOsName ^ (anOsName startsWith: 'Win32') diff --git a/packages/TelegramClient-Core.package/TCCTeleClientFactory.class/instance/createClient.st b/packages/TelegramClient-Core.package/TCCTeleClientFactory.class/instance/createClient.st index 2731b84f0..a0c96d039 100644 --- a/packages/TelegramClient-Core.package/TCCTeleClientFactory.class/instance/createClient.st +++ b/packages/TelegramClient-Core.package/TCCTeleClientFactory.class/instance/createClient.st @@ -1,4 +1,4 @@ -Creation +creation createClient ^ self createClient: Smalltalk platformName \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TDJSONClientMock.class/README.md b/packages/TelegramClient-Tests.package/TDJSONClientMock.class/README.md new file mode 100644 index 000000000..e69de29bb diff --git a/packages/TelegramClient-Tests.package/TDJSONClientMock.class/class/chatCount.st b/packages/TelegramClient-Tests.package/TDJSONClientMock.class/class/chatCount.st new file mode 100644 index 000000000..c0d8be7c7 --- /dev/null +++ b/packages/TelegramClient-Tests.package/TDJSONClientMock.class/class/chatCount.st @@ -0,0 +1,3 @@ +as yet unclassified +chatCount +^ 4. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TDJSONClientMock.class/class/messageInChat1Count.st b/packages/TelegramClient-Tests.package/TDJSONClientMock.class/class/messageInChat1Count.st new file mode 100644 index 000000000..cdfbd4b65 --- /dev/null +++ b/packages/TelegramClient-Tests.package/TDJSONClientMock.class/class/messageInChat1Count.st @@ -0,0 +1,3 @@ +as yet unclassified +messageInChat1Count +^ 3. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TDJSONClientMock.class/instance/answerSend..st b/packages/TelegramClient-Tests.package/TDJSONClientMock.class/instance/answerSend..st new file mode 100644 index 000000000..8c98fe736 --- /dev/null +++ b/packages/TelegramClient-Tests.package/TDJSONClientMock.class/instance/answerSend..st @@ -0,0 +1,32 @@ +as yet unclassified +answerSend: msg + msg class = TD_getChats ifTrue: [ |ids| + ids := Array new: self class chatCount. + 1 to: self class chatCount do: [:i | ids at: i put: i]. + ^ receivingMsgQueue addLast: ((TD_chats new) chat_ids: ids)]. + + msg class = TD_getChat ifTrue: [ + (msg chat_id >= 1 + and: msg chat_id <= self class chatCount) ifTrue: [ |chat| + chat := (TD_chat new) + title: 'TestChat', msg chat_id asString; + id: msg chat_id; + order: msg chat_id. + receivingMsgQueue addLast: chat]. + ^ nil]. + + msg class = TD_getChatHistory ifTrue: [ | messages strings| + (msg chat_id = 1 and: msg from_message_id = 0) ifFalse: [^nil]. + messages := TD_messages new. + messages total_count: self class messageInChat1Count. + strings := Array new: self class messageInChat1Count. + 1 to: strings size do: [:i | |m| + m := TD_message new. + m chat_id: 1. + m id: i. + m content: ((TD_inputMessageText new) text: 'Test Message: ', i asString). + m is_outgoing: true. + strings at: i put: m]. + messages messages: strings. + receivingMsgQueue addLast: messages. + ] \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TDJSONClientMock.class/instance/destroy.st b/packages/TelegramClient-Tests.package/TDJSONClientMock.class/instance/destroy.st new file mode 100644 index 000000000..677777b30 --- /dev/null +++ b/packages/TelegramClient-Tests.package/TDJSONClientMock.class/instance/destroy.st @@ -0,0 +1,3 @@ +as yet unclassified +destroy + destroyed := true \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TDJSONClientMock.class/instance/execute..st b/packages/TelegramClient-Tests.package/TDJSONClientMock.class/instance/execute..st new file mode 100644 index 000000000..c101599d0 --- /dev/null +++ b/packages/TelegramClient-Tests.package/TDJSONClientMock.class/instance/execute..st @@ -0,0 +1,3 @@ +as yet unclassified +execute: request + \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TDJSONClientMock.class/instance/initialize.st b/packages/TelegramClient-Tests.package/TDJSONClientMock.class/instance/initialize.st new file mode 100644 index 000000000..3ec0d0dff --- /dev/null +++ b/packages/TelegramClient-Tests.package/TDJSONClientMock.class/instance/initialize.st @@ -0,0 +1,5 @@ +as yet unclassified +initialize + jsonParser := TDJSONParser new. + destroyed := false. + receivingMsgQueue := OrderedCollection new. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TDJSONClientMock.class/instance/receive..st b/packages/TelegramClient-Tests.package/TDJSONClientMock.class/instance/receive..st new file mode 100644 index 000000000..e6d6ab544 --- /dev/null +++ b/packages/TelegramClient-Tests.package/TDJSONClientMock.class/instance/receive..st @@ -0,0 +1,4 @@ +as yet unclassified +receive: timeout + receivingMsgQueue size > 0 ifTrue: [ ^ receivingMsgQueue removeFirst]. + ^ nil \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TDJSONClientMock.class/instance/send..st b/packages/TelegramClient-Tests.package/TDJSONClientMock.class/instance/send..st new file mode 100644 index 000000000..1a68ee134 --- /dev/null +++ b/packages/TelegramClient-Tests.package/TDJSONClientMock.class/instance/send..st @@ -0,0 +1,3 @@ +as yet unclassified +send: request + self answerSend: request \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TDJSONClientMock.class/methodProperties.json b/packages/TelegramClient-Tests.package/TDJSONClientMock.class/methodProperties.json new file mode 100644 index 000000000..b25bcbde3 --- /dev/null +++ b/packages/TelegramClient-Tests.package/TDJSONClientMock.class/methodProperties.json @@ -0,0 +1,11 @@ +{ + "class" : { + "chatCount" : "HB 7/26/2019 13:25", + "messageInChat1Count" : "HB 7/26/2019 14:26" }, + "instance" : { + "answerSend:" : "HB 7/26/2019 14:57", + "destroy" : "HB 7/26/2019 12:43", + "execute:" : "HB 7/26/2019 12:43", + "initialize" : "HB 7/26/2019 13:45", + "receive:" : "HB 7/26/2019 12:46", + "send:" : "HB 7/26/2019 13:50" } } diff --git a/packages/TelegramClient-Tests.package/TDJSONClientMock.class/properties.json b/packages/TelegramClient-Tests.package/TDJSONClientMock.class/properties.json new file mode 100644 index 000000000..43c9fa374 --- /dev/null +++ b/packages/TelegramClient-Tests.package/TDJSONClientMock.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "TelegramClient-Tests", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + "receivingMsgQueue" ], + "name" : "TDJSONClientMock", + "pools" : [ + ], + "super" : "AnObsoleteTDJSONClient", + "type" : "normal" } diff --git a/packages/TelegramClient-UI.package/TCUApp.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUApp.class/methodProperties.json index a03b4e564..a2795d870 100644 --- a/packages/TelegramClient-UI.package/TCUApp.class/methodProperties.json +++ b/packages/TelegramClient-UI.package/TCUApp.class/methodProperties.json @@ -5,4 +5,4 @@ "instance" : { "core" : "js 5/31/2020 20:04", "core:" : "js 5/31/2020 20:04", - "initialize" : "js 5/31/2020 20:05" } } + "initialize" : "rs 6/6/2020 17:39" } } diff --git a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/buttonBack..st b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/buttonBack..st new file mode 100644 index 000000000..c1a24e0e1 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/buttonBack..st @@ -0,0 +1,4 @@ +accessing +buttonBack: aButton + + buttonBack := aButton. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/buttonBack.st b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/buttonBack.st new file mode 100644 index 000000000..e8f208f02 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/buttonBack.st @@ -0,0 +1,4 @@ +accessing +buttonBack + + ^ buttonBack \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/buttonBackPressed.st b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/buttonBackPressed.st new file mode 100644 index 000000000..8128028a9 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/buttonBackPressed.st @@ -0,0 +1,4 @@ +initialization +buttonBackPressed + + self showFirstStep. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createButtonBack.st b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createButtonBack.st new file mode 100644 index 000000000..02c5a0b6d --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createButtonBack.st @@ -0,0 +1,10 @@ +initialization +createButtonBack + + self buttonBack: (TCUButton new + text: 'Back'; + center: inputField center + ((-100) @ 50); + hide; + on: #mouseDown send: #buttonBackPressed to: self). + + self addMorph: buttonBack. diff --git a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createButtonNext.st b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createButtonNext.st new file mode 100644 index 000000000..59b217dab --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createButtonNext.st @@ -0,0 +1,10 @@ +initialization +createButtonNext + + self buttonNext: (TCUButton new + text: 'Next'; + center: inputField center + (100 @ 50); + hide; + on: #mouseDown send: #buttonNextPressed to: self). + + self addMorph: buttonNext. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createButtonVerify.st b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createButtonVerify.st new file mode 100644 index 000000000..8a18a4ea8 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createButtonVerify.st @@ -0,0 +1,10 @@ +initialization +createButtonVerify + + self + buttonVerify: (TCUButton new + text: 'Verify'; + center: self inputField center + (70 @ 50); + on: #mouseDown send: #buttonVerifyPressed to: self; + hide); + addMorph: self buttonVerify. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createInputField..st b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createInputField..st index 794c18c48..396199d62 100644 --- a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createInputField..st +++ b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createInputField..st @@ -7,6 +7,7 @@ createInputField: aString borderColor: TCUDefaultValues colorGray; borderWidth: 1; center: self instructionLabel center + (0 @ 30); + hide; crAction: [self buttonNextPressed]). - ^ self inputField \ No newline at end of file + self addMorph: self inputField. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/initialize.st b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/initialize.st index 39bcfec89..17bd9e6f3 100644 --- a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/initialize.st +++ b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/initialize.st @@ -10,4 +10,5 @@ initialize borderColor: TCUDefaultValues colorGray; addHeader; showLoadingMessage; - openCenteredInWorld. \ No newline at end of file + initializeMorphs. + \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/initializeMorphs.st b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/initializeMorphs.st new file mode 100644 index 000000000..d63605e55 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/initializeMorphs.st @@ -0,0 +1,11 @@ +initialization +initializeMorphs + + self + createInputField: '+49'; + createButtonNext; + createErrorLabel: ''; + createButtonBack; + createButtonVerify. + + \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/showFirstStep.st b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/showFirstStep.st index 5755073bf..75363aa9e 100644 --- a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/showFirstStep.st +++ b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/showFirstStep.st @@ -4,12 +4,8 @@ showFirstStep self instructionLabel contents: 'Enter Phonenumber: ' asText; center: self center. - - self - addMorph: (self createInputField: '+49'); - buttonNext: (TCUButton new - text: 'Next'; - center: inputField center + (0 @ 50); - on: #mouseDown send: #buttonNextPressed to: self); - addMorph: buttonNext; - createErrorLabel: ''. \ No newline at end of file + + self buttonVerify hide. + self inputField show. + self buttonNext show. + self instructionLabel show. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/showSecondStep.st b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/showSecondStep.st index 9862ff2f8..14e57f692 100644 --- a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/showSecondStep.st +++ b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/showSecondStep.st @@ -1,17 +1,13 @@ accessing showSecondStep - - self buttonNext delete. + + self buttonNext hide. + self buttonBack show. + self buttonVerify show. + self instructionLabel contents: 'Enter the code your recieved on your phone'; center: self center. self inputField contents: ' '. - self errorLabel delete. - - self - buttonVerify: (TCUButton new - text: 'Verify'; - center: self inputField center + (70 @ 50); - on: #mouseDown send: #buttonVerifyPressed to: self); - addMorph: self buttonVerify. \ No newline at end of file + self errorLabel hide. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUAuthentication.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUAuthentication.class/methodProperties.json index 26f5a88ac..538a7fd74 100644 --- a/packages/TelegramClient-UI.package/TCUAuthentication.class/methodProperties.json +++ b/packages/TelegramClient-UI.package/TCUAuthentication.class/methodProperties.json @@ -4,6 +4,9 @@ "instance" : { "addHeader" : "js 5/28/2020 17:47", "addTitle:to:" : "js 5/28/2020 17:48", + "buttonBack" : "rs 6/11/2020 18:53", + "buttonBack:" : "rs 6/11/2020 18:53", + "buttonBackPressed" : "rs 6/11/2020 19:00", "buttonNext" : "R.S 5/20/2020 13:50", "buttonNext:" : "js 5/28/2020 17:49", "buttonNextPressed" : "js 5/31/2020 20:06", @@ -12,21 +15,25 @@ "buttonVerifyPressed" : "js 5/31/2020 20:10", "core" : "R.S 5/31/2020 20:18", "core:" : "R.S 5/31/2020 20:18", + "createButtonBack" : "rs 6/11/2020 18:54", + "createButtonNext" : "rs 6/11/2020 18:54", + "createButtonVerify" : "rs 6/11/2020 18:55", "createErrorLabel:" : "R.S 5/20/2020 13:50", - "createInputField:" : "js 5/28/2020 17:55", + "createInputField:" : "rs 6/6/2020 17:40", "createLabel:" : "R.S 5/20/2020 13:51", "defaultExtent" : "R.S 5/20/2020 13:51", "defaultInputWidth" : "R.S 5/20/2020 13:51", "delete" : "f.w. 6/3/2020 20:51", "errorLabel" : "R.S 5/20/2020 13:51", "errorLabel:" : "R.S 5/20/2020 13:51", - "initialize" : "js 5/31/2020 20:05", + "initialize" : "rs 6/6/2020 17:40", + "initializeMorphs" : "rs 6/11/2020 18:57", "inputField" : "R.S 5/20/2020 13:51", "inputField:" : "js 5/31/2020 20:07", "instructionLabel" : "R.S 5/20/2020 13:52", "instructionLabel:" : "js 5/28/2020 17:51", "logInCompleted" : "R.S 6/3/2020 20:54", - "showFirstStep" : "js 5/28/2020 17:52", + "showFirstStep" : "rs 6/11/2020 18:56", "showLoadingMessage" : "R.S 5/24/2020 16:09", - "showSecondStep" : "js 5/28/2020 17:53", + "showSecondStep" : "rs 6/11/2020 18:56", "subscribeCore" : "R.S 5/31/2020 20:21" } } diff --git a/packages/TelegramClient-UI.package/TCUAuthentication.class/properties.json b/packages/TelegramClient-UI.package/TCUAuthentication.class/properties.json index d434b03bd..2c618106e 100644 --- a/packages/TelegramClient-UI.package/TCUAuthentication.class/properties.json +++ b/packages/TelegramClient-UI.package/TCUAuthentication.class/properties.json @@ -13,7 +13,8 @@ "instructionLabel", "event", "authState", - "core" ], + "core", + "buttonBack" ], "name" : "TCUAuthentication", "pools" : [ ], diff --git a/packages/TelegramClient-UI.package/TCUChatsList.class/instance/clearChats.st b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/clearChats.st index f9cd4e265..335214383 100644 --- a/packages/TelegramClient-UI.package/TCUChatsList.class/instance/clearChats.st +++ b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/clearChats.st @@ -1,6 +1,6 @@ initialization clearChats - self items do: [:aItem | aItem delete]. - self items removeAll. + self items do: [:aItem | aItem delete. + self items remove: aItem]. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatsList.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUChatsList.class/methodProperties.json index b26b31904..f2945127e 100644 --- a/packages/TelegramClient-UI.package/TCUChatsList.class/methodProperties.json +++ b/packages/TelegramClient-UI.package/TCUChatsList.class/methodProperties.json @@ -3,7 +3,7 @@ }, "instance" : { "addItem:" : "R.S 6/4/2020 09:52", - "clearChats" : "js 5/29/2020 12:15", + "clearChats" : "R.S 6/3/2020 21:18", "defaultWidth" : "R.S 6/1/2020 14:24", "initialize" : "R.S 6/3/2020 21:19", "initializeLayout" : "R.S 6/1/2020 15:00", diff --git a/packages/TelegramClient-UI.package/TCUMain.class/instance/addHeader.st b/packages/TelegramClient-UI.package/TCUMain.class/instance/addHeader.st index bb643ae5c..3578a12e2 100644 --- a/packages/TelegramClient-UI.package/TCUMain.class/instance/addHeader.st +++ b/packages/TelegramClient-UI.package/TCUMain.class/instance/addHeader.st @@ -3,8 +3,6 @@ addHeader | header logoutButton | - - header := RectangleMorph new borderWidth: 0; color: TCUDefaultValues colorGray; diff --git a/packages/TelegramClient-UI.package/TCUMain.class/instance/addTitle.to..st b/packages/TelegramClient-UI.package/TCUMain.class/instance/addTitle.to..st index 145f195a0..e9a9cfca5 100644 --- a/packages/TelegramClient-UI.package/TCUMain.class/instance/addTitle.to..st +++ b/packages/TelegramClient-UI.package/TCUMain.class/instance/addTitle.to..st @@ -2,6 +2,7 @@ accessing addTitle: aString to: aMorph | titleLable font | + font:= (TextFontReference toFont: (StrikeFont familyName: 'DefaultTextStyle' size: 35)). titleLable := TextMorph new contents: (aString asText addAttribute: font); diff --git a/packages/TelegramClient-UI.package/TCUMain.class/instance/initialize.st b/packages/TelegramClient-UI.package/TCUMain.class/instance/initialize.st index 924c25d78..eee975b26 100644 --- a/packages/TelegramClient-UI.package/TCUMain.class/instance/initialize.st +++ b/packages/TelegramClient-UI.package/TCUMain.class/instance/initialize.st @@ -9,6 +9,4 @@ initialize addChatsList; addChatWindow; subscribeCore; - clipSubmorphs: true. - - self core getChats. \ No newline at end of file + clipSubmorphs: true. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMain.class/instance/updateChatsList.st b/packages/TelegramClient-UI.package/TCUMain.class/instance/updateChatsList.st index 777e4e7c5..76717b8fc 100644 --- a/packages/TelegramClient-UI.package/TCUMain.class/instance/updateChatsList.st +++ b/packages/TelegramClient-UI.package/TCUMain.class/instance/updateChatsList.st @@ -3,10 +3,10 @@ updateChatsList | chats i| self chatsList clearChats. - chats := self core chats asSortedCollection: [:x :y| x order < y order]. + chats := self core chats asSortedCollection: [:x :y| x order > y order]. i := 0. chats do: [:aChat| i < 10 ifTrue: [ - aChat fullName isNil not ifTrue: [ - self chatsList addItem: aChat fullName]]]. \ No newline at end of file + aChat title isNil not ifTrue: [ + self chatsList addItem: aChat title.]]]. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMain.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUMain.class/methodProperties.json index 524714351..1bd9ef014 100644 --- a/packages/TelegramClient-UI.package/TCUMain.class/methodProperties.json +++ b/packages/TelegramClient-UI.package/TCUMain.class/methodProperties.json @@ -4,8 +4,8 @@ "instance" : { "addChatWindow" : "R.S 6/1/2020 14:26", "addChatsList" : "R.S 6/1/2020 14:26", - "addHeader" : "f.w. 6/3/2020 20:23", - "addTitle:to:" : "R.S 6/1/2020 14:26", + "addHeader" : "rs 6/11/2020 19:21", + "addTitle:to:" : "rs 6/11/2020 19:21", "chatWindow" : "R.S 6/1/2020 14:27", "chatWindow:" : "R.S 6/1/2020 14:27", "chatsList" : "R.S 6/1/2020 14:27", @@ -15,7 +15,7 @@ "defaultExtent" : "R.S 6/1/2020 14:27", "defaultHeaderHeight" : "R.S 6/1/2020 14:27", "delete" : "R.S 6/3/2020 20:54", - "initialize" : "R.S 6/3/2020 21:21", + "initialize" : "rs 6/7/2020 21:53", "logout" : "js 5/29/2020 09:35", "subscribeCore" : "R.S 6/3/2020 21:03", - "updateChatsList" : "R.S 6/4/2020 10:12" } } + "updateChatsList" : "rs 6/8/2020 14:01" } } From e93730bef4b4066ef25365de543d6fbdacde06a8 Mon Sep 17 00:00:00 2001 From: Rohan Sawahn <49531442+rohansaw@users.noreply.github.com> Date: Fri, 12 Jun 2020 20:14:21 +0200 Subject: [PATCH 06/81] Revert "Refactored chatsList and added Back Button at Auth (#135)" (#136) This reverts commit 43fc1d2887e51932143bedea41da22402616c5bb. --- .github/ci.yml | 3 +- .github/workflows/main.yml | 3 +- README.md | 14 ++++---- .../instance/createClient..st | 2 +- .../TCCApp.class/instance/addChat..st | 11 +++++++ .../TCCApp.class/instance/authSucceeded.st | 5 --- .../TCCApp.class/instance/chatsHandler..st | 4 --- .../TCCApp.class/instance/chatsHandler.st | 4 --- .../TCCApp.class/instance/getChats.st | 4 +++ .../TCCApp.class/instance/handleEvent..st | 12 +++++-- .../TCCApp.class/instance/initialize.st | 2 +- .../instance/initializeHandlers.st | 2 +- .../TCCApp.class/instance/messageHandler..st | 4 +++ .../TCCApp.class/instance/messageHandler.st | 4 +++ .../TCCApp.class/instance/setChatInfos..st | 11 +++++++ .../TCCApp.class/methodProperties.json | 14 ++++---- .../TCCApp.class/properties.json | 2 +- .../instance/checkAuthenticationCode..st | 4 +-- .../instance/handleEvent..st | 2 +- .../instance/sendPhoneNumber..st | 4 +-- .../instance/setDBEncryptionKey..st | 4 +-- .../instance/setTDLibParams.st | 24 +++++++------- .../methodProperties.json | 10 +++--- .../TCCChat.class/instance/fullName..st | 4 +++ .../TCCChat.class/instance/fullName.st | 4 +++ .../TCCChat.class/instance/id..st | 4 --- .../TCCChat.class/instance/id.st | 4 --- .../TCCChat.class/instance/title..st | 4 --- .../TCCChat.class/instance/title.st | 4 --- .../TCCChat.class/methodProperties.json | 6 ++-- .../TCCChat.class/properties.json | 5 ++- .../TCCChats.class/class/new.st | 6 ---- .../TCCChats.class/instance/getChat..st | 4 --- .../TCCChats.class/instance/initialize.st | 6 ---- .../TCCChats.class/instance/sortBlock.st | 4 --- .../TCCChats.class/methodProperties.json | 7 ---- .../TCCChats.class/properties.json | 14 -------- .../TCCChatsHandler.class/README.md | 0 .../instance/addChat..st | 12 ------- .../instance/getChatInfos..st | 6 ---- .../instance/getChats.st | 8 ----- .../methodProperties.json | 11 ------- .../README.md | 0 .../instance/app..st | 0 .../instance/app.st | 0 .../instance/client.st | 0 .../instance/getChatInfos..st | 4 +++ .../instance/getChats.st | 4 +++ .../instance/handleEvent..st | 2 +- .../methodProperties.json | 10 ++++++ .../properties.json | 2 +- .../TCCRequest.class/README.md | 0 .../class/newWithType.from..st | 6 ---- .../TCCRequest.class/instance/asString.st | 9 ------ .../TCCRequest.class/methodProperties.json | 5 --- .../TCCRequest.class/properties.json | 14 -------- .../TCCTeleClient.class/instance/receive..st | 2 +- .../TCCTeleClient.class/instance/send..st | 4 +-- .../TCCTeleClient.class/methodProperties.json | 4 +-- .../instance/createClient..st | 2 +- .../instance/createClient.st | 2 +- .../TDJSONClientMock.class/README.md | 0 .../TDJSONClientMock.class/class/chatCount.st | 3 -- .../class/messageInChat1Count.st | 3 -- .../instance/answerSend..st | 32 ------------------- .../instance/destroy.st | 3 -- .../instance/execute..st | 3 -- .../instance/initialize.st | 5 --- .../instance/receive..st | 4 --- .../TDJSONClientMock.class/instance/send..st | 3 -- .../methodProperties.json | 11 ------- .../TDJSONClientMock.class/properties.json | 14 -------- .../TCUApp.class/methodProperties.json | 2 +- .../instance/buttonBack..st | 4 --- .../instance/buttonBack.st | 4 --- .../instance/buttonBackPressed.st | 4 --- .../instance/createButtonBack.st | 10 ------ .../instance/createButtonNext.st | 10 ------ .../instance/createButtonVerify.st | 10 ------ .../instance/createInputField..st | 3 +- .../instance/initialize.st | 3 +- .../instance/initializeMorphs.st | 11 ------- .../instance/showFirstStep.st | 14 +++++--- .../instance/showSecondStep.st | 16 ++++++---- .../methodProperties.json | 15 +++------ .../TCUAuthentication.class/properties.json | 3 +- .../TCUChatsList.class/instance/clearChats.st | 4 +-- .../TCUChatsList.class/methodProperties.json | 2 +- .../TCUMain.class/instance/addHeader.st | 2 ++ .../TCUMain.class/instance/addTitle.to..st | 1 - .../TCUMain.class/instance/initialize.st | 4 ++- .../TCUMain.class/instance/updateChatsList.st | 6 ++-- .../TCUMain.class/methodProperties.json | 8 ++--- 93 files changed, 167 insertions(+), 382 deletions(-) create mode 100644 packages/TelegramClient-Core.package/TCCApp.class/instance/addChat..st delete mode 100644 packages/TelegramClient-Core.package/TCCApp.class/instance/authSucceeded.st delete mode 100644 packages/TelegramClient-Core.package/TCCApp.class/instance/chatsHandler..st delete mode 100644 packages/TelegramClient-Core.package/TCCApp.class/instance/chatsHandler.st create mode 100644 packages/TelegramClient-Core.package/TCCApp.class/instance/getChats.st create mode 100644 packages/TelegramClient-Core.package/TCCApp.class/instance/messageHandler..st create mode 100644 packages/TelegramClient-Core.package/TCCApp.class/instance/messageHandler.st create mode 100644 packages/TelegramClient-Core.package/TCCApp.class/instance/setChatInfos..st create mode 100644 packages/TelegramClient-Core.package/TCCChat.class/instance/fullName..st create mode 100644 packages/TelegramClient-Core.package/TCCChat.class/instance/fullName.st delete mode 100644 packages/TelegramClient-Core.package/TCCChat.class/instance/id..st delete mode 100644 packages/TelegramClient-Core.package/TCCChat.class/instance/id.st delete mode 100644 packages/TelegramClient-Core.package/TCCChat.class/instance/title..st delete mode 100644 packages/TelegramClient-Core.package/TCCChat.class/instance/title.st delete mode 100644 packages/TelegramClient-Core.package/TCCChats.class/class/new.st delete mode 100644 packages/TelegramClient-Core.package/TCCChats.class/instance/getChat..st delete mode 100644 packages/TelegramClient-Core.package/TCCChats.class/instance/initialize.st delete mode 100644 packages/TelegramClient-Core.package/TCCChats.class/instance/sortBlock.st delete mode 100644 packages/TelegramClient-Core.package/TCCChats.class/methodProperties.json delete mode 100644 packages/TelegramClient-Core.package/TCCChats.class/properties.json delete mode 100644 packages/TelegramClient-Core.package/TCCChatsHandler.class/README.md delete mode 100644 packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/addChat..st delete mode 100644 packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/getChatInfos..st delete mode 100644 packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/getChats.st delete mode 100644 packages/TelegramClient-Core.package/TCCChatsHandler.class/methodProperties.json rename packages/TelegramClient-Core.package/{TCCChats.class => TCCMessageHandler.class}/README.md (100%) rename packages/TelegramClient-Core.package/{TCCChatsHandler.class => TCCMessageHandler.class}/instance/app..st (100%) rename packages/TelegramClient-Core.package/{TCCChatsHandler.class => TCCMessageHandler.class}/instance/app.st (100%) rename packages/TelegramClient-Core.package/{TCCChatsHandler.class => TCCMessageHandler.class}/instance/client.st (100%) create mode 100644 packages/TelegramClient-Core.package/TCCMessageHandler.class/instance/getChatInfos..st create mode 100644 packages/TelegramClient-Core.package/TCCMessageHandler.class/instance/getChats.st rename packages/TelegramClient-Core.package/{TCCChatsHandler.class => TCCMessageHandler.class}/instance/handleEvent..st (50%) create mode 100644 packages/TelegramClient-Core.package/TCCMessageHandler.class/methodProperties.json rename packages/TelegramClient-Core.package/{TCCChatsHandler.class => TCCMessageHandler.class}/properties.json (86%) delete mode 100644 packages/TelegramClient-Core.package/TCCRequest.class/README.md delete mode 100644 packages/TelegramClient-Core.package/TCCRequest.class/class/newWithType.from..st delete mode 100644 packages/TelegramClient-Core.package/TCCRequest.class/instance/asString.st delete mode 100644 packages/TelegramClient-Core.package/TCCRequest.class/methodProperties.json delete mode 100644 packages/TelegramClient-Core.package/TCCRequest.class/properties.json delete mode 100644 packages/TelegramClient-Tests.package/TDJSONClientMock.class/README.md delete mode 100644 packages/TelegramClient-Tests.package/TDJSONClientMock.class/class/chatCount.st delete mode 100644 packages/TelegramClient-Tests.package/TDJSONClientMock.class/class/messageInChat1Count.st delete mode 100644 packages/TelegramClient-Tests.package/TDJSONClientMock.class/instance/answerSend..st delete mode 100644 packages/TelegramClient-Tests.package/TDJSONClientMock.class/instance/destroy.st delete mode 100644 packages/TelegramClient-Tests.package/TDJSONClientMock.class/instance/execute..st delete mode 100644 packages/TelegramClient-Tests.package/TDJSONClientMock.class/instance/initialize.st delete mode 100644 packages/TelegramClient-Tests.package/TDJSONClientMock.class/instance/receive..st delete mode 100644 packages/TelegramClient-Tests.package/TDJSONClientMock.class/instance/send..st delete mode 100644 packages/TelegramClient-Tests.package/TDJSONClientMock.class/methodProperties.json delete mode 100644 packages/TelegramClient-Tests.package/TDJSONClientMock.class/properties.json delete mode 100644 packages/TelegramClient-UI.package/TCUAuthentication.class/instance/buttonBack..st delete mode 100644 packages/TelegramClient-UI.package/TCUAuthentication.class/instance/buttonBack.st delete mode 100644 packages/TelegramClient-UI.package/TCUAuthentication.class/instance/buttonBackPressed.st delete mode 100644 packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createButtonBack.st delete mode 100644 packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createButtonNext.st delete mode 100644 packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createButtonVerify.st delete mode 100644 packages/TelegramClient-UI.package/TCUAuthentication.class/instance/initializeMorphs.st diff --git a/.github/ci.yml b/.github/ci.yml index 9a848cc48..da6cad11e 100644 --- a/.github/ci.yml +++ b/.github/ci.yml @@ -22,7 +22,8 @@ jobs: # Select platform(s) os: [ ubuntu-latest, macos-latest ] # Select compatible Smalltalk image(s) - smalltalk: [ Squeak64-trunk, Squeak64-5.3, Squeak64-5.2 ] + # currently not running on Squeak64-trunk + smalltalk: [ Squeak64-5.3, Squeak64-5.2 ] name: ${{ matrix.smalltalk }} on ${{ matrix.os }} steps: - uses: actions/checkout@v2 diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 85c1b36af..00a794adf 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -18,7 +18,8 @@ jobs: # Select platform(s) os: [ ubuntu-latest, macos-latest ] # Select compatible Smalltalk image(s) - smalltalk: [ Squeak64-trunk, Squeak64-5.3, Squeak64-5.2 ] + # currently not running on Squeak64-trunk + smalltalk: [ Squeak64-5.3, Squeak64-5.2 ] name: ${{ matrix.smalltalk }} on ${{ matrix.os }} steps: - uses: actions/checkout@v2 diff --git a/README.md b/README.md index 8363a0d55..fdba115c3 100644 --- a/README.md +++ b/README.md @@ -9,13 +9,13 @@ TelegramClient is a **Squeak-Client** for the widely used Telegram-Messenger. It ## Installation Make sure you have the current version of Squeak installed. -1. Install the Squeak Git Client -2. Install the Squeak FFI Workload -3. Download the required native Binaries for your system. - * [Windows](https://drive.google.com/open?id=14tOoIfxioIe8bn2kPxPKmCk_Eg0tSYiJ) - * [Mac](https://drive.google.com/open?id=1H2l_V6zkIx4t_SKQKL3MmdtvOV2haFjV) - * [Ubuntu 18 lts](https://drive.google.com/open?id=1CpSPcB-5MPA95fEWI-X5MxbUEZUcU3g2) -4. Place the unzipped binaries inside of your squeak image. On Windows, place them inside the Win32 folder, on Linux and Mac Os place them inside the resources folder. +* Step 1: Install the Squeak Git Client +* Step 2: Install the Squeak FFI Workload. To do so, open the Workspace in Squeak and execute the following command: `(Installer repository: 'http://source.squeak.org/FFI') +install: 'FFI-Pools'; +install: 'FFI-Kernel'.` +* Step 3: Download the required native Binaries for your system. [Windows](https://drive.google.com/open?id=14tOoIfxioIe8bn2kPxPKmCk_Eg0tSYiJ), [Mac](https://drive.google.com/open?id=1H2l_V6zkIx4t_SKQKL3MmdtvOV2haFjV), [Ubuntu 18 lts](https://drive.google.com/open?id=1CpSPcB-5MPA95fEWI-X5MxbUEZUcU3g2). +* Step 4: Place the unzipped binaries inside of your squeak image. On Windows, place them inside the Win32 folder, on Linux in "Contents/Linux-x86_64/lib/squeak/\/" and on Mac place them inside the resources folder. +* Step 5 (Windows only): Install Visual C++ Redistributable for Visual Studio 2015, 2017 and 2019: [32Bit](https://aka.ms/vs/16/release/vc_redist.x86.exe) or [64Bit](https://aka.ms/vs/16/release/vc_redist.x64.exe) ## Running TelegramClient In a workspace window execute the command diff --git a/packages/TelegramClient-Core.package/TCCAbstractTeleClientFactory.class/instance/createClient..st b/packages/TelegramClient-Core.package/TCCAbstractTeleClientFactory.class/instance/createClient..st index e5eae37cc..d92d859f2 100644 --- a/packages/TelegramClient-Core.package/TCCAbstractTeleClientFactory.class/instance/createClient..st +++ b/packages/TelegramClient-Core.package/TCCAbstractTeleClientFactory.class/instance/createClient..st @@ -1,4 +1,4 @@ -creation +Creation createClient: anOsName ^ self subclassResponsibility \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCApp.class/instance/addChat..st b/packages/TelegramClient-Core.package/TCCApp.class/instance/addChat..st new file mode 100644 index 000000000..4f769b130 --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCApp.class/instance/addChat..st @@ -0,0 +1,11 @@ +accessing +addChat: aChatEvent + + | userId chat | + + userId := aChatEvent at: 'user_id'. + chat := TCCChat new userId: userId. + chat fullName ifNil: [self messageHandler getChatInfos: userId]. + chat order ifNil: [chat order: '0']. + + self chats at: userId put: chat. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCApp.class/instance/authSucceeded.st b/packages/TelegramClient-Core.package/TCCApp.class/instance/authSucceeded.st deleted file mode 100644 index cd2304af9..000000000 --- a/packages/TelegramClient-Core.package/TCCApp.class/instance/authSucceeded.st +++ /dev/null @@ -1,5 +0,0 @@ -initialization -authSucceeded - - self chatsHandler getChats. - ^ #authReady \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCApp.class/instance/chatsHandler..st b/packages/TelegramClient-Core.package/TCCApp.class/instance/chatsHandler..st deleted file mode 100644 index 4a7562a45..000000000 --- a/packages/TelegramClient-Core.package/TCCApp.class/instance/chatsHandler..st +++ /dev/null @@ -1,4 +0,0 @@ -accessing -chatsHandler: aChatsHandler - - chatsHandler := aChatsHandler. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCApp.class/instance/chatsHandler.st b/packages/TelegramClient-Core.package/TCCApp.class/instance/chatsHandler.st deleted file mode 100644 index af78b0d51..000000000 --- a/packages/TelegramClient-Core.package/TCCApp.class/instance/chatsHandler.st +++ /dev/null @@ -1,4 +0,0 @@ -accessing -chatsHandler - - ^ chatsHandler \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCApp.class/instance/getChats.st b/packages/TelegramClient-Core.package/TCCApp.class/instance/getChats.st new file mode 100644 index 000000000..cab93e8f5 --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCApp.class/instance/getChats.st @@ -0,0 +1,4 @@ +accessing +getChats + + self messageHandler getChats. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCApp.class/instance/handleEvent..st b/packages/TelegramClient-Core.package/TCCApp.class/instance/handleEvent..st index a665d4c20..29849a793 100644 --- a/packages/TelegramClient-Core.package/TCCApp.class/instance/handleEvent..st +++ b/packages/TelegramClient-Core.package/TCCApp.class/instance/handleEvent..st @@ -5,12 +5,18 @@ handleEvent: anEvent update := nil. (((anEvent at: '@type') = 'error') and: [(anEvent at: 'code') = 400 ]) - ifTrue: [self halt: 'An Error Occured. Check Transcript Output.']. + ifTrue: [self halt: 'There probably already is an instance of TCClient running']. (anEvent at: '@type') = 'updateAuthorizationState' ifTrue: [update := self authHandler handleEvent: anEvent]. - (anEvent at: '@type') = 'updateNewChat' - ifTrue: [self chatsHandler addChat: anEvent]. + (anEvent at: '@type') = 'chats' + ifTrue: [update := self messageHandler handleEvent: anEvent]. + + (anEvent at: '@type') = 'updateUserFullInfo' + ifTrue: [self addChat: anEvent]. + + (anEvent at: '@type') = 'chat' + ifTrue: [self setChatInfos: anEvent]. update isSymbol ifTrue: [self triggerEvent: update]. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCApp.class/instance/initialize.st b/packages/TelegramClient-Core.package/TCCApp.class/instance/initialize.st index 83c481ca1..56bfc6034 100644 --- a/packages/TelegramClient-Core.package/TCCApp.class/instance/initialize.st +++ b/packages/TelegramClient-Core.package/TCCApp.class/instance/initialize.st @@ -4,6 +4,6 @@ initialize self initializeClient; initializeHandlers; - chats: TCCChats new. + chats: Dictionary new. [self receiveLoop] fork. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCApp.class/instance/initializeHandlers.st b/packages/TelegramClient-Core.package/TCCApp.class/instance/initializeHandlers.st index 7ccd1ef60..6de508a53 100644 --- a/packages/TelegramClient-Core.package/TCCApp.class/instance/initializeHandlers.st +++ b/packages/TelegramClient-Core.package/TCCApp.class/instance/initializeHandlers.st @@ -3,4 +3,4 @@ initializeHandlers self authHandler: (TCCAuthHandler new app: self); - chatsHandler: (TCCChatsHandler new app: self). \ No newline at end of file + messageHandler: (TCCMessageHandler new app: self). \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCApp.class/instance/messageHandler..st b/packages/TelegramClient-Core.package/TCCApp.class/instance/messageHandler..st new file mode 100644 index 000000000..a66760e20 --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCApp.class/instance/messageHandler..st @@ -0,0 +1,4 @@ +accessing +messageHandler: aMessageHandler + + messageHandler := aMessageHandler. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCApp.class/instance/messageHandler.st b/packages/TelegramClient-Core.package/TCCApp.class/instance/messageHandler.st new file mode 100644 index 000000000..9f4bcfa44 --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCApp.class/instance/messageHandler.st @@ -0,0 +1,4 @@ +accessing +messageHandler + + ^ messageHandler \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCApp.class/instance/setChatInfos..st b/packages/TelegramClient-Core.package/TCCApp.class/instance/setChatInfos..st new file mode 100644 index 000000000..cc6639a7a --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCApp.class/instance/setChatInfos..st @@ -0,0 +1,11 @@ +accessing +setChatInfos: anEvent + + | chatId | + + chatId := anEvent at: 'id'. + (self chats at: chatId) + fullName: (anEvent at: 'title'); + order: (anEvent at: 'order'). + + self triggerEvent: #newChatLoaded. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCApp.class/methodProperties.json b/packages/TelegramClient-Core.package/TCCApp.class/methodProperties.json index d0d9a3244..69ace99c0 100644 --- a/packages/TelegramClient-Core.package/TCCApp.class/methodProperties.json +++ b/packages/TelegramClient-Core.package/TCCApp.class/methodProperties.json @@ -2,21 +2,23 @@ "class" : { }, "instance" : { + "addChat:" : "R.S 6/4/2020 10:11", "authHandler" : "R.S 5/20/2020 16:10", "authHandler:" : "R.S 5/20/2020 16:10", - "authSucceeded" : "rs 6/8/2020 14:13", "chats" : "R.S 6/1/2020 15:34", "chats:" : "R.S 6/1/2020 15:34", - "chatsHandler" : "rs 6/7/2020 21:50", - "chatsHandler:" : "rs 6/7/2020 21:50", "checkAuthenticationCode:" : "js 5/31/2020 20:10", "client" : "R.S 5/20/2020 16:08", "client:" : "R.S 5/20/2020 16:08", - "handleEvent:" : "rs 6/8/2020 14:07", - "initialize" : "rs 6/6/2020 17:56", + "getChats" : "js 6/1/2020 15:06", + "handleEvent:" : "js 5/29/2020 09:38", + "initialize" : "R.S 6/1/2020 15:52", "initializeClient" : "f.w. 5/31/2020 19:01", - "initializeHandlers" : "rs 6/7/2020 21:51", + "initializeHandlers" : "js 6/1/2020 14:45", "isClientAlive" : "js 5/28/2020 17:18", + "messageHandler" : "js 6/1/2020 14:46", + "messageHandler:" : "js 6/1/2020 14:46", "receiveLoop" : "R.S 6/1/2020 15:24", "sendPhoneNumber:" : "js 5/31/2020 20:08", + "setChatInfos:" : "R.S 6/4/2020 10:11", "update" : "js 5/28/2020 17:28" } } diff --git a/packages/TelegramClient-Core.package/TCCApp.class/properties.json b/packages/TelegramClient-Core.package/TCCApp.class/properties.json index 133d12707..ca67e1af1 100644 --- a/packages/TelegramClient-Core.package/TCCApp.class/properties.json +++ b/packages/TelegramClient-Core.package/TCCApp.class/properties.json @@ -9,7 +9,7 @@ "client", "authUI", "authHandler", - "chatsHandler", + "messageHandler", "chats" ], "name" : "TCCApp", "pools" : [ diff --git a/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/checkAuthenticationCode..st b/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/checkAuthenticationCode..st index f2d779972..53cc97b51 100644 --- a/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/checkAuthenticationCode..st +++ b/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/checkAuthenticationCode..st @@ -1,6 +1,4 @@ accessing checkAuthenticationCode: aString - self client send: (TCCRequest - newWithType: 'checkAuthenticationCode' - from: {'code' -> aString}). \ No newline at end of file + self client send: '{"@type": "checkAuthenticationCode", "code": "', aString, '"}'. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/handleEvent..st b/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/handleEvent..st index e84a58433..b0763a0a5 100644 --- a/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/handleEvent..st +++ b/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/handleEvent..st @@ -13,4 +13,4 @@ handleEvent: anEvent self isAwaitingAuthCode ifTrue: [^ #awaitAuthCode]. - self isAuthorizationStateReady ifTrue: [^ self app authSucceeded]. \ No newline at end of file + self isAuthorizationStateReady ifTrue: [^ #authReady]. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/sendPhoneNumber..st b/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/sendPhoneNumber..st index ca83ebac3..6ff5b8477 100644 --- a/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/sendPhoneNumber..st +++ b/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/sendPhoneNumber..st @@ -1,6 +1,4 @@ accessing sendPhoneNumber: aNumber - self client send: (TCCRequest - newWithType: 'setAuthenticationPhoneNumber' - from: {'phone_number' -> aNumber}). \ No newline at end of file + self client send: '{"@type": "setAuthenticationPhoneNumber", "phone_number": "', aNumber, '"}'. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/setDBEncryptionKey..st b/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/setDBEncryptionKey..st index 65969223f..0f42e4552 100644 --- a/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/setDBEncryptionKey..st +++ b/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/setDBEncryptionKey..st @@ -1,6 +1,4 @@ accessing setDBEncryptionKey: aString - self client send: (TCCRequest - newWithType: 'checkDatabaseEncryptionKey' - from: {'encryption_key' -> aString}). \ No newline at end of file + self client send: '{"@type": "checkDatabaseEncryptionKey", "encryption_key": "', aString, '"}'. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/setTDLibParams.st b/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/setTDLibParams.st index 8fab13917..d7e95c5de 100644 --- a/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/setTDLibParams.st +++ b/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/setTDLibParams.st @@ -1,16 +1,14 @@ accessing setTDLibParams - self client send: (TCCRequest - newWithType: 'setTdlibParameters' - from: {'parameters' -> (Dictionary newFrom: { - 'database_directory' -> 'tdlib'. - 'use_message_database' -> true. - 'use_secret_chats' -> true. - 'api_id' -> 94575. - 'api_hash' -> 'a3406de8d171bb422bb6ddf3bbd800e2'. - 'system_language_code' -> 'en'. - 'device_model' -> 'Desktop'. - 'system_version' -> self client specificClient type. - 'application_version' -> '1.0'. - 'enable_storage_optimizer' -> true})}). \ No newline at end of file + self client send: '{"@type": "setTdlibParameters", "parameters": { + "database_directory": "tdlib", + "use_message_database": true, + "use_secret_chats": true, + "api_id": 94575, + "api_hash": "a3406de8d171bb422bb6ddf3bbd800e2", + "system_language_code": "en", + "device_model": "Desktop", + "system_version": "', self client specificClient type, '", + "application_version": "1.0", + "enable_storage_optimizer": true}}'. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCAuthHandler.class/methodProperties.json b/packages/TelegramClient-Core.package/TCCAuthHandler.class/methodProperties.json index 4d273d686..452a3f344 100644 --- a/packages/TelegramClient-Core.package/TCCAuthHandler.class/methodProperties.json +++ b/packages/TelegramClient-Core.package/TCCAuthHandler.class/methodProperties.json @@ -6,9 +6,9 @@ "app:" : "js 5/28/2020 17:02", "authState" : "R.S 5/18/2020 17:54", "authState:" : "R.S 5/18/2020 17:54", - "checkAuthenticationCode:" : "rs 6/6/2020 16:23", + "checkAuthenticationCode:" : "R.S 5/19/2020 10:23", "client" : "js 5/28/2020 18:36", - "handleEvent:" : "rs 6/8/2020 14:13", + "handleEvent:" : "js 6/1/2020 15:04", "isAuthStateClosed" : "R.S 5/19/2020 10:29", "isAuthorizationStateReady" : "R.S 5/20/2020 16:59", "isAwaitingAuthCode" : "R.S 5/19/2020 10:30", @@ -16,6 +16,6 @@ "isAwaitingPhoneNumber" : "R.S 5/19/2020 10:28", "isAwaitingTDLibParams" : "R.S 5/19/2020 10:28", "logout" : "f.w. 6/3/2020 20:41", - "sendPhoneNumber:" : "rs 6/6/2020 16:25", - "setDBEncryptionKey:" : "rs 6/6/2020 16:26", - "setTDLibParams" : "rs 6/6/2020 16:41" } } + "sendPhoneNumber:" : "js 5/31/2020 20:09", + "setDBEncryptionKey:" : "js 5/28/2020 17:04", + "setTDLibParams" : "R.S 5/23/2020 12:22" } } diff --git a/packages/TelegramClient-Core.package/TCCChat.class/instance/fullName..st b/packages/TelegramClient-Core.package/TCCChat.class/instance/fullName..st new file mode 100644 index 000000000..b8ae47334 --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCChat.class/instance/fullName..st @@ -0,0 +1,4 @@ +accessing +fullName: aString + + fullName := aString. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCChat.class/instance/fullName.st b/packages/TelegramClient-Core.package/TCCChat.class/instance/fullName.st new file mode 100644 index 000000000..3e176ec3f --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCChat.class/instance/fullName.st @@ -0,0 +1,4 @@ +accessing +fullName + + ^ fullName \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCChat.class/instance/id..st b/packages/TelegramClient-Core.package/TCCChat.class/instance/id..st deleted file mode 100644 index 7a9230e8c..000000000 --- a/packages/TelegramClient-Core.package/TCCChat.class/instance/id..st +++ /dev/null @@ -1,4 +0,0 @@ -accessing -id: aNumber - - id := aNumber. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCChat.class/instance/id.st b/packages/TelegramClient-Core.package/TCCChat.class/instance/id.st deleted file mode 100644 index 44798f6fa..000000000 --- a/packages/TelegramClient-Core.package/TCCChat.class/instance/id.st +++ /dev/null @@ -1,4 +0,0 @@ -accessing -id - - ^ id \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCChat.class/instance/title..st b/packages/TelegramClient-Core.package/TCCChat.class/instance/title..st deleted file mode 100644 index b49b5a4aa..000000000 --- a/packages/TelegramClient-Core.package/TCCChat.class/instance/title..st +++ /dev/null @@ -1,4 +0,0 @@ -accessing -title: aString - - title := aString. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCChat.class/instance/title.st b/packages/TelegramClient-Core.package/TCCChat.class/instance/title.st deleted file mode 100644 index 3c1da9ab9..000000000 --- a/packages/TelegramClient-Core.package/TCCChat.class/instance/title.st +++ /dev/null @@ -1,4 +0,0 @@ -accessing -title - - ^ title \ 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 9d50dc182..3980f54db 100644 --- a/packages/TelegramClient-Core.package/TCCChat.class/methodProperties.json +++ b/packages/TelegramClient-Core.package/TCCChat.class/methodProperties.json @@ -2,13 +2,11 @@ "class" : { }, "instance" : { - "id" : "rs 6/7/2020 22:20", - "id:" : "rs 6/7/2020 22:20", + "fullName" : "R.S 6/1/2020 15:36", + "fullName:" : "R.S 6/1/2020 15:37", "messages" : "R.S 6/1/2020 15:37", "messages:" : "R.S 6/1/2020 15:37", "order" : "R.S 6/4/2020 09:56", "order:" : "R.S 6/4/2020 09:56", - "title" : "rs 6/7/2020 22:24", - "title:" : "rs 6/7/2020 22:24", "userId" : "R.S 6/1/2020 15:37", "userId:" : "R.S 6/1/2020 15:37" } } diff --git a/packages/TelegramClient-Core.package/TCCChat.class/properties.json b/packages/TelegramClient-Core.package/TCCChat.class/properties.json index ee10992ae..56959b22e 100644 --- a/packages/TelegramClient-Core.package/TCCChat.class/properties.json +++ b/packages/TelegramClient-Core.package/TCCChat.class/properties.json @@ -7,10 +7,9 @@ "commentStamp" : "", "instvars" : [ "userId", + "fullName", "messages", - "order", - "id", - "title" ], + "order" ], "name" : "TCCChat", "pools" : [ ], diff --git a/packages/TelegramClient-Core.package/TCCChats.class/class/new.st b/packages/TelegramClient-Core.package/TCCChats.class/class/new.st deleted file mode 100644 index 02683351f..000000000 --- a/packages/TelegramClient-Core.package/TCCChats.class/class/new.st +++ /dev/null @@ -1,6 +0,0 @@ -as yet unclassified -new - - ^ super new - initialize; - yourself \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCChats.class/instance/getChat..st b/packages/TelegramClient-Core.package/TCCChats.class/instance/getChat..st deleted file mode 100644 index 0f86d02e9..000000000 --- a/packages/TelegramClient-Core.package/TCCChats.class/instance/getChat..st +++ /dev/null @@ -1,4 +0,0 @@ -accessing -getChat: anID - - ^ self detect: [:aChat | aChat userId = anID] \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCChats.class/instance/initialize.st b/packages/TelegramClient-Core.package/TCCChats.class/instance/initialize.st deleted file mode 100644 index d9eac0c2d..000000000 --- a/packages/TelegramClient-Core.package/TCCChats.class/instance/initialize.st +++ /dev/null @@ -1,6 +0,0 @@ -initialize-release -initialize - - super initialize. - - self sortBlock: [:aChat :anotherChat | aChat order >= anotherChat order]. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCChats.class/instance/sortBlock.st b/packages/TelegramClient-Core.package/TCCChats.class/instance/sortBlock.st deleted file mode 100644 index 3495175bb..000000000 --- a/packages/TelegramClient-Core.package/TCCChats.class/instance/sortBlock.st +++ /dev/null @@ -1,4 +0,0 @@ -initialize-release -sortBlock - - ^ [:aChat :anotherChat | aChat order >= anotherChat order] \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCChats.class/methodProperties.json b/packages/TelegramClient-Core.package/TCCChats.class/methodProperties.json deleted file mode 100644 index 381d44b50..000000000 --- a/packages/TelegramClient-Core.package/TCCChats.class/methodProperties.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "class" : { - "new" : "rs 6/6/2020 17:58" }, - "instance" : { - "getChat:" : "rs 6/6/2020 17:02", - "initialize" : "rs 6/6/2020 17:57", - "sortBlock" : "rs 6/6/2020 17:56" } } diff --git a/packages/TelegramClient-Core.package/TCCChats.class/properties.json b/packages/TelegramClient-Core.package/TCCChats.class/properties.json deleted file mode 100644 index 4a2d7df02..000000000 --- a/packages/TelegramClient-Core.package/TCCChats.class/properties.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "category" : "TelegramClient-Core", - "classinstvars" : [ - ], - "classvars" : [ - ], - "commentStamp" : "", - "instvars" : [ - ], - "name" : "TCCChats", - "pools" : [ - ], - "super" : "SortedCollection", - "type" : "normal" } diff --git a/packages/TelegramClient-Core.package/TCCChatsHandler.class/README.md b/packages/TelegramClient-Core.package/TCCChatsHandler.class/README.md deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/addChat..st b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/addChat..st deleted file mode 100644 index 11fccc43a..000000000 --- a/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/addChat..st +++ /dev/null @@ -1,12 +0,0 @@ -events -addChat: aChatEvent - - | chat | - - chat := TCCChat new - id: ((aChatEvent at: 'chat') at: 'id'); - title: ((aChatEvent at: 'chat') at: 'title'); - order: ((aChatEvent at: 'chat') at: 'order'). - - self app chats add: chat. - self app triggerEvent: #newChatLoaded. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/getChatInfos..st b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/getChatInfos..st deleted file mode 100644 index fc1bbc5d3..000000000 --- a/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/getChatInfos..st +++ /dev/null @@ -1,6 +0,0 @@ -accessing -getChatInfos: aChatID - - self client send: (TCCRequest - newWithType: 'getChat' - from: {'chat_id' -> aChatID}). \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/getChats.st b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/getChats.st deleted file mode 100644 index a84d4d47b..000000000 --- a/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/getChats.st +++ /dev/null @@ -1,8 +0,0 @@ -accessing -getChats - - self client send: (TCCRequest - newWithType: 'getChats' - from: { - 'limit' -> '5'. - 'offset_order' -> '9223372036854775807'}). \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCChatsHandler.class/methodProperties.json b/packages/TelegramClient-Core.package/TCCChatsHandler.class/methodProperties.json deleted file mode 100644 index 7d6609937..000000000 --- a/packages/TelegramClient-Core.package/TCCChatsHandler.class/methodProperties.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "class" : { - }, - "instance" : { - "addChat:" : "rs 6/8/2020 14:03", - "app" : "js 6/1/2020 14:44", - "app:" : "js 6/1/2020 14:45", - "client" : "js 6/1/2020 14:44", - "getChatInfos:" : "rs 6/6/2020 16:33", - "getChats" : "rs 6/6/2020 16:36", - "handleEvent:" : "rs 6/8/2020 14:02" } } diff --git a/packages/TelegramClient-Core.package/TCCChats.class/README.md b/packages/TelegramClient-Core.package/TCCMessageHandler.class/README.md similarity index 100% rename from packages/TelegramClient-Core.package/TCCChats.class/README.md rename to packages/TelegramClient-Core.package/TCCMessageHandler.class/README.md diff --git a/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/app..st b/packages/TelegramClient-Core.package/TCCMessageHandler.class/instance/app..st similarity index 100% rename from packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/app..st rename to packages/TelegramClient-Core.package/TCCMessageHandler.class/instance/app..st diff --git a/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/app.st b/packages/TelegramClient-Core.package/TCCMessageHandler.class/instance/app.st similarity index 100% rename from packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/app.st rename to packages/TelegramClient-Core.package/TCCMessageHandler.class/instance/app.st diff --git a/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/client.st b/packages/TelegramClient-Core.package/TCCMessageHandler.class/instance/client.st similarity index 100% rename from packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/client.st rename to packages/TelegramClient-Core.package/TCCMessageHandler.class/instance/client.st diff --git a/packages/TelegramClient-Core.package/TCCMessageHandler.class/instance/getChatInfos..st b/packages/TelegramClient-Core.package/TCCMessageHandler.class/instance/getChatInfos..st new file mode 100644 index 000000000..a361782f8 --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCMessageHandler.class/instance/getChatInfos..st @@ -0,0 +1,4 @@ +accessing +getChatInfos: aChatId + + self client send: '{"@type": "getChat", "chat_id": "', aChatId, '"}'. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCMessageHandler.class/instance/getChats.st b/packages/TelegramClient-Core.package/TCCMessageHandler.class/instance/getChats.st new file mode 100644 index 000000000..bf5b35132 --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCMessageHandler.class/instance/getChats.st @@ -0,0 +1,4 @@ +accessing +getChats + + self client send: '{"@type": "getChats", "limit": "', 5, '", "offset_order": "', 9223372036854775807, '"}'. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/handleEvent..st b/packages/TelegramClient-Core.package/TCCMessageHandler.class/instance/handleEvent..st similarity index 50% rename from packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/handleEvent..st rename to packages/TelegramClient-Core.package/TCCMessageHandler.class/instance/handleEvent..st index c66da2815..3befd0026 100644 --- a/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/handleEvent..st +++ b/packages/TelegramClient-Core.package/TCCMessageHandler.class/instance/handleEvent..st @@ -1,4 +1,4 @@ events handleEvent: anEvent - Transcript show: anEvent. \ No newline at end of file + "Transcript show: anEvent." \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCMessageHandler.class/methodProperties.json b/packages/TelegramClient-Core.package/TCCMessageHandler.class/methodProperties.json new file mode 100644 index 000000000..b3fcb962d --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCMessageHandler.class/methodProperties.json @@ -0,0 +1,10 @@ +{ + "class" : { + }, + "instance" : { + "app" : "js 6/1/2020 14:44", + "app:" : "js 6/1/2020 14:45", + "client" : "js 6/1/2020 14:44", + "getChatInfos:" : "R.S 6/1/2020 16:15", + "getChats" : "js 6/1/2020 14:59", + "handleEvent:" : "js 6/1/2020 16:37" } } diff --git a/packages/TelegramClient-Core.package/TCCChatsHandler.class/properties.json b/packages/TelegramClient-Core.package/TCCMessageHandler.class/properties.json similarity index 86% rename from packages/TelegramClient-Core.package/TCCChatsHandler.class/properties.json rename to packages/TelegramClient-Core.package/TCCMessageHandler.class/properties.json index b91527d1d..f8f7efa66 100644 --- a/packages/TelegramClient-Core.package/TCCChatsHandler.class/properties.json +++ b/packages/TelegramClient-Core.package/TCCMessageHandler.class/properties.json @@ -7,7 +7,7 @@ "commentStamp" : "", "instvars" : [ "app" ], - "name" : "TCCChatsHandler", + "name" : "TCCMessageHandler", "pools" : [ ], "super" : "Object", diff --git a/packages/TelegramClient-Core.package/TCCRequest.class/README.md b/packages/TelegramClient-Core.package/TCCRequest.class/README.md deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/TelegramClient-Core.package/TCCRequest.class/class/newWithType.from..st b/packages/TelegramClient-Core.package/TCCRequest.class/class/newWithType.from..st deleted file mode 100644 index 59174dc2b..000000000 --- a/packages/TelegramClient-Core.package/TCCRequest.class/class/newWithType.from..st +++ /dev/null @@ -1,6 +0,0 @@ -instance creation -newWithType: aString from: aDictionary - - ^ (self newFrom: aDictionary) - at: '@type' put: aString; - yourself \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCRequest.class/instance/asString.st b/packages/TelegramClient-Core.package/TCCRequest.class/instance/asString.st deleted file mode 100644 index c336bca88..000000000 --- a/packages/TelegramClient-Core.package/TCCRequest.class/instance/asString.st +++ /dev/null @@ -1,9 +0,0 @@ -accessing -asString - - | aStream | - - aStream := ReadWriteStream on: ''. - self jsonWriteOn: aStream. - - ^ aStream contents \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCRequest.class/methodProperties.json b/packages/TelegramClient-Core.package/TCCRequest.class/methodProperties.json deleted file mode 100644 index 6e8b8a484..000000000 --- a/packages/TelegramClient-Core.package/TCCRequest.class/methodProperties.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "class" : { - "newWithType:from:" : "rs 6/6/2020 16:21" }, - "instance" : { - "asString" : "rs 6/6/2020 16:11" } } diff --git a/packages/TelegramClient-Core.package/TCCRequest.class/properties.json b/packages/TelegramClient-Core.package/TCCRequest.class/properties.json deleted file mode 100644 index a21acf7f9..000000000 --- a/packages/TelegramClient-Core.package/TCCRequest.class/properties.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "category" : "TelegramClient-Core", - "classinstvars" : [ - ], - "classvars" : [ - ], - "commentStamp" : "", - "instvars" : [ - ], - "name" : "TCCRequest", - "pools" : [ - ], - "super" : "Dictionary", - "type" : "normal" } diff --git a/packages/TelegramClient-Core.package/TCCTeleClient.class/instance/receive..st b/packages/TelegramClient-Core.package/TCCTeleClient.class/instance/receive..st index 05812be61..608b10a09 100644 --- a/packages/TelegramClient-Core.package/TCCTeleClient.class/instance/receive..st +++ b/packages/TelegramClient-Core.package/TCCTeleClient.class/instance/receive..st @@ -5,5 +5,5 @@ receive: aTimeoutNumber event := self specificClient receive: self handle with: aTimeoutNumber. event ifNil: [^nil]. - "Transcript show: event, Character cr." + ^ Json new readFromString: event \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCTeleClient.class/instance/send..st b/packages/TelegramClient-Core.package/TCCTeleClient.class/instance/send..st index b9476481c..955ab8f9c 100644 --- a/packages/TelegramClient-Core.package/TCCTeleClient.class/instance/send..st +++ b/packages/TelegramClient-Core.package/TCCTeleClient.class/instance/send..st @@ -1,4 +1,4 @@ accessing -send: aRequest +send: aMessage - self specificClient send: self handle with: aRequest asString. \ No newline at end of file + self specificClient send: self handle with: aMessage. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCTeleClient.class/methodProperties.json b/packages/TelegramClient-Core.package/TCCTeleClient.class/methodProperties.json index c87f9b4f9..b102a63ef 100644 --- a/packages/TelegramClient-Core.package/TCCTeleClient.class/methodProperties.json +++ b/packages/TelegramClient-Core.package/TCCTeleClient.class/methodProperties.json @@ -8,7 +8,7 @@ "handle:" : "R.S 5/18/2020 18:20", "initialize:" : "R.S 5/20/2020 16:10", "isAlive" : "js 5/28/2020 17:23", - "receive:" : "rs 6/7/2020 22:14", - "send:" : "rs 6/6/2020 16:09", + "receive:" : "R.S 5/18/2020 18:12", + "send:" : "js 5/28/2020 17:24", "specificClient" : "js 5/28/2020 17:23", "specificClient:" : "js 5/28/2020 17:23" } } diff --git a/packages/TelegramClient-Core.package/TCCTeleClientFactory.class/instance/createClient..st b/packages/TelegramClient-Core.package/TCCTeleClientFactory.class/instance/createClient..st index 01344a0a7..222f503d5 100644 --- a/packages/TelegramClient-Core.package/TCCTeleClientFactory.class/instance/createClient..st +++ b/packages/TelegramClient-Core.package/TCCTeleClientFactory.class/instance/createClient..st @@ -1,4 +1,4 @@ -creation +Creation createClient: anOsName ^ (anOsName startsWith: 'Win32') diff --git a/packages/TelegramClient-Core.package/TCCTeleClientFactory.class/instance/createClient.st b/packages/TelegramClient-Core.package/TCCTeleClientFactory.class/instance/createClient.st index a0c96d039..2731b84f0 100644 --- a/packages/TelegramClient-Core.package/TCCTeleClientFactory.class/instance/createClient.st +++ b/packages/TelegramClient-Core.package/TCCTeleClientFactory.class/instance/createClient.st @@ -1,4 +1,4 @@ -creation +Creation createClient ^ self createClient: Smalltalk platformName \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TDJSONClientMock.class/README.md b/packages/TelegramClient-Tests.package/TDJSONClientMock.class/README.md deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/TelegramClient-Tests.package/TDJSONClientMock.class/class/chatCount.st b/packages/TelegramClient-Tests.package/TDJSONClientMock.class/class/chatCount.st deleted file mode 100644 index c0d8be7c7..000000000 --- a/packages/TelegramClient-Tests.package/TDJSONClientMock.class/class/chatCount.st +++ /dev/null @@ -1,3 +0,0 @@ -as yet unclassified -chatCount -^ 4. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TDJSONClientMock.class/class/messageInChat1Count.st b/packages/TelegramClient-Tests.package/TDJSONClientMock.class/class/messageInChat1Count.st deleted file mode 100644 index cdfbd4b65..000000000 --- a/packages/TelegramClient-Tests.package/TDJSONClientMock.class/class/messageInChat1Count.st +++ /dev/null @@ -1,3 +0,0 @@ -as yet unclassified -messageInChat1Count -^ 3. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TDJSONClientMock.class/instance/answerSend..st b/packages/TelegramClient-Tests.package/TDJSONClientMock.class/instance/answerSend..st deleted file mode 100644 index 8c98fe736..000000000 --- a/packages/TelegramClient-Tests.package/TDJSONClientMock.class/instance/answerSend..st +++ /dev/null @@ -1,32 +0,0 @@ -as yet unclassified -answerSend: msg - msg class = TD_getChats ifTrue: [ |ids| - ids := Array new: self class chatCount. - 1 to: self class chatCount do: [:i | ids at: i put: i]. - ^ receivingMsgQueue addLast: ((TD_chats new) chat_ids: ids)]. - - msg class = TD_getChat ifTrue: [ - (msg chat_id >= 1 - and: msg chat_id <= self class chatCount) ifTrue: [ |chat| - chat := (TD_chat new) - title: 'TestChat', msg chat_id asString; - id: msg chat_id; - order: msg chat_id. - receivingMsgQueue addLast: chat]. - ^ nil]. - - msg class = TD_getChatHistory ifTrue: [ | messages strings| - (msg chat_id = 1 and: msg from_message_id = 0) ifFalse: [^nil]. - messages := TD_messages new. - messages total_count: self class messageInChat1Count. - strings := Array new: self class messageInChat1Count. - 1 to: strings size do: [:i | |m| - m := TD_message new. - m chat_id: 1. - m id: i. - m content: ((TD_inputMessageText new) text: 'Test Message: ', i asString). - m is_outgoing: true. - strings at: i put: m]. - messages messages: strings. - receivingMsgQueue addLast: messages. - ] \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TDJSONClientMock.class/instance/destroy.st b/packages/TelegramClient-Tests.package/TDJSONClientMock.class/instance/destroy.st deleted file mode 100644 index 677777b30..000000000 --- a/packages/TelegramClient-Tests.package/TDJSONClientMock.class/instance/destroy.st +++ /dev/null @@ -1,3 +0,0 @@ -as yet unclassified -destroy - destroyed := true \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TDJSONClientMock.class/instance/execute..st b/packages/TelegramClient-Tests.package/TDJSONClientMock.class/instance/execute..st deleted file mode 100644 index c101599d0..000000000 --- a/packages/TelegramClient-Tests.package/TDJSONClientMock.class/instance/execute..st +++ /dev/null @@ -1,3 +0,0 @@ -as yet unclassified -execute: request - \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TDJSONClientMock.class/instance/initialize.st b/packages/TelegramClient-Tests.package/TDJSONClientMock.class/instance/initialize.st deleted file mode 100644 index 3ec0d0dff..000000000 --- a/packages/TelegramClient-Tests.package/TDJSONClientMock.class/instance/initialize.st +++ /dev/null @@ -1,5 +0,0 @@ -as yet unclassified -initialize - jsonParser := TDJSONParser new. - destroyed := false. - receivingMsgQueue := OrderedCollection new. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TDJSONClientMock.class/instance/receive..st b/packages/TelegramClient-Tests.package/TDJSONClientMock.class/instance/receive..st deleted file mode 100644 index e6d6ab544..000000000 --- a/packages/TelegramClient-Tests.package/TDJSONClientMock.class/instance/receive..st +++ /dev/null @@ -1,4 +0,0 @@ -as yet unclassified -receive: timeout - receivingMsgQueue size > 0 ifTrue: [ ^ receivingMsgQueue removeFirst]. - ^ nil \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TDJSONClientMock.class/instance/send..st b/packages/TelegramClient-Tests.package/TDJSONClientMock.class/instance/send..st deleted file mode 100644 index 1a68ee134..000000000 --- a/packages/TelegramClient-Tests.package/TDJSONClientMock.class/instance/send..st +++ /dev/null @@ -1,3 +0,0 @@ -as yet unclassified -send: request - self answerSend: request \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TDJSONClientMock.class/methodProperties.json b/packages/TelegramClient-Tests.package/TDJSONClientMock.class/methodProperties.json deleted file mode 100644 index b25bcbde3..000000000 --- a/packages/TelegramClient-Tests.package/TDJSONClientMock.class/methodProperties.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "class" : { - "chatCount" : "HB 7/26/2019 13:25", - "messageInChat1Count" : "HB 7/26/2019 14:26" }, - "instance" : { - "answerSend:" : "HB 7/26/2019 14:57", - "destroy" : "HB 7/26/2019 12:43", - "execute:" : "HB 7/26/2019 12:43", - "initialize" : "HB 7/26/2019 13:45", - "receive:" : "HB 7/26/2019 12:46", - "send:" : "HB 7/26/2019 13:50" } } diff --git a/packages/TelegramClient-Tests.package/TDJSONClientMock.class/properties.json b/packages/TelegramClient-Tests.package/TDJSONClientMock.class/properties.json deleted file mode 100644 index 43c9fa374..000000000 --- a/packages/TelegramClient-Tests.package/TDJSONClientMock.class/properties.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "category" : "TelegramClient-Tests", - "classinstvars" : [ - ], - "classvars" : [ - ], - "commentStamp" : "", - "instvars" : [ - "receivingMsgQueue" ], - "name" : "TDJSONClientMock", - "pools" : [ - ], - "super" : "AnObsoleteTDJSONClient", - "type" : "normal" } diff --git a/packages/TelegramClient-UI.package/TCUApp.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUApp.class/methodProperties.json index a2795d870..a03b4e564 100644 --- a/packages/TelegramClient-UI.package/TCUApp.class/methodProperties.json +++ b/packages/TelegramClient-UI.package/TCUApp.class/methodProperties.json @@ -5,4 +5,4 @@ "instance" : { "core" : "js 5/31/2020 20:04", "core:" : "js 5/31/2020 20:04", - "initialize" : "rs 6/6/2020 17:39" } } + "initialize" : "js 5/31/2020 20:05" } } diff --git a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/buttonBack..st b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/buttonBack..st deleted file mode 100644 index c1a24e0e1..000000000 --- a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/buttonBack..st +++ /dev/null @@ -1,4 +0,0 @@ -accessing -buttonBack: aButton - - buttonBack := aButton. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/buttonBack.st b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/buttonBack.st deleted file mode 100644 index e8f208f02..000000000 --- a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/buttonBack.st +++ /dev/null @@ -1,4 +0,0 @@ -accessing -buttonBack - - ^ buttonBack \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/buttonBackPressed.st b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/buttonBackPressed.st deleted file mode 100644 index 8128028a9..000000000 --- a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/buttonBackPressed.st +++ /dev/null @@ -1,4 +0,0 @@ -initialization -buttonBackPressed - - self showFirstStep. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createButtonBack.st b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createButtonBack.st deleted file mode 100644 index 02c5a0b6d..000000000 --- a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createButtonBack.st +++ /dev/null @@ -1,10 +0,0 @@ -initialization -createButtonBack - - self buttonBack: (TCUButton new - text: 'Back'; - center: inputField center + ((-100) @ 50); - hide; - on: #mouseDown send: #buttonBackPressed to: self). - - self addMorph: buttonBack. diff --git a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createButtonNext.st b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createButtonNext.st deleted file mode 100644 index 59b217dab..000000000 --- a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createButtonNext.st +++ /dev/null @@ -1,10 +0,0 @@ -initialization -createButtonNext - - self buttonNext: (TCUButton new - text: 'Next'; - center: inputField center + (100 @ 50); - hide; - on: #mouseDown send: #buttonNextPressed to: self). - - self addMorph: buttonNext. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createButtonVerify.st b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createButtonVerify.st deleted file mode 100644 index 8a18a4ea8..000000000 --- a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createButtonVerify.st +++ /dev/null @@ -1,10 +0,0 @@ -initialization -createButtonVerify - - self - buttonVerify: (TCUButton new - text: 'Verify'; - center: self inputField center + (70 @ 50); - on: #mouseDown send: #buttonVerifyPressed to: self; - hide); - addMorph: self buttonVerify. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createInputField..st b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createInputField..st index 396199d62..794c18c48 100644 --- a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createInputField..st +++ b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createInputField..st @@ -7,7 +7,6 @@ createInputField: aString borderColor: TCUDefaultValues colorGray; borderWidth: 1; center: self instructionLabel center + (0 @ 30); - hide; crAction: [self buttonNextPressed]). - self addMorph: self inputField. \ No newline at end of file + ^ self inputField \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/initialize.st b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/initialize.st index 17bd9e6f3..39bcfec89 100644 --- a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/initialize.st +++ b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/initialize.st @@ -10,5 +10,4 @@ initialize borderColor: TCUDefaultValues colorGray; addHeader; showLoadingMessage; - initializeMorphs. - \ No newline at end of file + openCenteredInWorld. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/initializeMorphs.st b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/initializeMorphs.st deleted file mode 100644 index d63605e55..000000000 --- a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/initializeMorphs.st +++ /dev/null @@ -1,11 +0,0 @@ -initialization -initializeMorphs - - self - createInputField: '+49'; - createButtonNext; - createErrorLabel: ''; - createButtonBack; - createButtonVerify. - - \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/showFirstStep.st b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/showFirstStep.st index 75363aa9e..5755073bf 100644 --- a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/showFirstStep.st +++ b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/showFirstStep.st @@ -4,8 +4,12 @@ showFirstStep self instructionLabel contents: 'Enter Phonenumber: ' asText; center: self center. - - self buttonVerify hide. - self inputField show. - self buttonNext show. - self instructionLabel show. \ No newline at end of file + + self + addMorph: (self createInputField: '+49'); + buttonNext: (TCUButton new + text: 'Next'; + center: inputField center + (0 @ 50); + on: #mouseDown send: #buttonNextPressed to: self); + addMorph: buttonNext; + createErrorLabel: ''. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/showSecondStep.st b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/showSecondStep.st index 14e57f692..9862ff2f8 100644 --- a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/showSecondStep.st +++ b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/showSecondStep.st @@ -1,13 +1,17 @@ accessing showSecondStep - - self buttonNext hide. - self buttonBack show. - self buttonVerify show. - + + self buttonNext delete. self instructionLabel contents: 'Enter the code your recieved on your phone'; center: self center. self inputField contents: ' '. - self errorLabel hide. \ No newline at end of file + self errorLabel delete. + + self + buttonVerify: (TCUButton new + text: 'Verify'; + center: self inputField center + (70 @ 50); + on: #mouseDown send: #buttonVerifyPressed to: self); + addMorph: self buttonVerify. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUAuthentication.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUAuthentication.class/methodProperties.json index 538a7fd74..26f5a88ac 100644 --- a/packages/TelegramClient-UI.package/TCUAuthentication.class/methodProperties.json +++ b/packages/TelegramClient-UI.package/TCUAuthentication.class/methodProperties.json @@ -4,9 +4,6 @@ "instance" : { "addHeader" : "js 5/28/2020 17:47", "addTitle:to:" : "js 5/28/2020 17:48", - "buttonBack" : "rs 6/11/2020 18:53", - "buttonBack:" : "rs 6/11/2020 18:53", - "buttonBackPressed" : "rs 6/11/2020 19:00", "buttonNext" : "R.S 5/20/2020 13:50", "buttonNext:" : "js 5/28/2020 17:49", "buttonNextPressed" : "js 5/31/2020 20:06", @@ -15,25 +12,21 @@ "buttonVerifyPressed" : "js 5/31/2020 20:10", "core" : "R.S 5/31/2020 20:18", "core:" : "R.S 5/31/2020 20:18", - "createButtonBack" : "rs 6/11/2020 18:54", - "createButtonNext" : "rs 6/11/2020 18:54", - "createButtonVerify" : "rs 6/11/2020 18:55", "createErrorLabel:" : "R.S 5/20/2020 13:50", - "createInputField:" : "rs 6/6/2020 17:40", + "createInputField:" : "js 5/28/2020 17:55", "createLabel:" : "R.S 5/20/2020 13:51", "defaultExtent" : "R.S 5/20/2020 13:51", "defaultInputWidth" : "R.S 5/20/2020 13:51", "delete" : "f.w. 6/3/2020 20:51", "errorLabel" : "R.S 5/20/2020 13:51", "errorLabel:" : "R.S 5/20/2020 13:51", - "initialize" : "rs 6/6/2020 17:40", - "initializeMorphs" : "rs 6/11/2020 18:57", + "initialize" : "js 5/31/2020 20:05", "inputField" : "R.S 5/20/2020 13:51", "inputField:" : "js 5/31/2020 20:07", "instructionLabel" : "R.S 5/20/2020 13:52", "instructionLabel:" : "js 5/28/2020 17:51", "logInCompleted" : "R.S 6/3/2020 20:54", - "showFirstStep" : "rs 6/11/2020 18:56", + "showFirstStep" : "js 5/28/2020 17:52", "showLoadingMessage" : "R.S 5/24/2020 16:09", - "showSecondStep" : "rs 6/11/2020 18:56", + "showSecondStep" : "js 5/28/2020 17:53", "subscribeCore" : "R.S 5/31/2020 20:21" } } diff --git a/packages/TelegramClient-UI.package/TCUAuthentication.class/properties.json b/packages/TelegramClient-UI.package/TCUAuthentication.class/properties.json index 2c618106e..d434b03bd 100644 --- a/packages/TelegramClient-UI.package/TCUAuthentication.class/properties.json +++ b/packages/TelegramClient-UI.package/TCUAuthentication.class/properties.json @@ -13,8 +13,7 @@ "instructionLabel", "event", "authState", - "core", - "buttonBack" ], + "core" ], "name" : "TCUAuthentication", "pools" : [ ], diff --git a/packages/TelegramClient-UI.package/TCUChatsList.class/instance/clearChats.st b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/clearChats.st index 335214383..f9cd4e265 100644 --- a/packages/TelegramClient-UI.package/TCUChatsList.class/instance/clearChats.st +++ b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/clearChats.st @@ -1,6 +1,6 @@ initialization clearChats - self items do: [:aItem | aItem delete. - self items remove: aItem]. + self items do: [:aItem | aItem delete]. + self items removeAll. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatsList.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUChatsList.class/methodProperties.json index f2945127e..b26b31904 100644 --- a/packages/TelegramClient-UI.package/TCUChatsList.class/methodProperties.json +++ b/packages/TelegramClient-UI.package/TCUChatsList.class/methodProperties.json @@ -3,7 +3,7 @@ }, "instance" : { "addItem:" : "R.S 6/4/2020 09:52", - "clearChats" : "R.S 6/3/2020 21:18", + "clearChats" : "js 5/29/2020 12:15", "defaultWidth" : "R.S 6/1/2020 14:24", "initialize" : "R.S 6/3/2020 21:19", "initializeLayout" : "R.S 6/1/2020 15:00", diff --git a/packages/TelegramClient-UI.package/TCUMain.class/instance/addHeader.st b/packages/TelegramClient-UI.package/TCUMain.class/instance/addHeader.st index 3578a12e2..bb643ae5c 100644 --- a/packages/TelegramClient-UI.package/TCUMain.class/instance/addHeader.st +++ b/packages/TelegramClient-UI.package/TCUMain.class/instance/addHeader.st @@ -3,6 +3,8 @@ addHeader | header logoutButton | + + header := RectangleMorph new borderWidth: 0; color: TCUDefaultValues colorGray; diff --git a/packages/TelegramClient-UI.package/TCUMain.class/instance/addTitle.to..st b/packages/TelegramClient-UI.package/TCUMain.class/instance/addTitle.to..st index e9a9cfca5..145f195a0 100644 --- a/packages/TelegramClient-UI.package/TCUMain.class/instance/addTitle.to..st +++ b/packages/TelegramClient-UI.package/TCUMain.class/instance/addTitle.to..st @@ -2,7 +2,6 @@ accessing addTitle: aString to: aMorph | titleLable font | - font:= (TextFontReference toFont: (StrikeFont familyName: 'DefaultTextStyle' size: 35)). titleLable := TextMorph new contents: (aString asText addAttribute: font); diff --git a/packages/TelegramClient-UI.package/TCUMain.class/instance/initialize.st b/packages/TelegramClient-UI.package/TCUMain.class/instance/initialize.st index eee975b26..924c25d78 100644 --- a/packages/TelegramClient-UI.package/TCUMain.class/instance/initialize.st +++ b/packages/TelegramClient-UI.package/TCUMain.class/instance/initialize.st @@ -9,4 +9,6 @@ initialize addChatsList; addChatWindow; subscribeCore; - clipSubmorphs: true. \ No newline at end of file + clipSubmorphs: true. + + self core getChats. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMain.class/instance/updateChatsList.st b/packages/TelegramClient-UI.package/TCUMain.class/instance/updateChatsList.st index 76717b8fc..777e4e7c5 100644 --- a/packages/TelegramClient-UI.package/TCUMain.class/instance/updateChatsList.st +++ b/packages/TelegramClient-UI.package/TCUMain.class/instance/updateChatsList.st @@ -3,10 +3,10 @@ updateChatsList | chats i| self chatsList clearChats. - chats := self core chats asSortedCollection: [:x :y| x order > y order]. + chats := self core chats asSortedCollection: [:x :y| x order < y order]. i := 0. chats do: [:aChat| i < 10 ifTrue: [ - aChat title isNil not ifTrue: [ - self chatsList addItem: aChat title.]]]. \ No newline at end of file + aChat fullName isNil not ifTrue: [ + self chatsList addItem: aChat fullName]]]. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMain.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUMain.class/methodProperties.json index 1bd9ef014..524714351 100644 --- a/packages/TelegramClient-UI.package/TCUMain.class/methodProperties.json +++ b/packages/TelegramClient-UI.package/TCUMain.class/methodProperties.json @@ -4,8 +4,8 @@ "instance" : { "addChatWindow" : "R.S 6/1/2020 14:26", "addChatsList" : "R.S 6/1/2020 14:26", - "addHeader" : "rs 6/11/2020 19:21", - "addTitle:to:" : "rs 6/11/2020 19:21", + "addHeader" : "f.w. 6/3/2020 20:23", + "addTitle:to:" : "R.S 6/1/2020 14:26", "chatWindow" : "R.S 6/1/2020 14:27", "chatWindow:" : "R.S 6/1/2020 14:27", "chatsList" : "R.S 6/1/2020 14:27", @@ -15,7 +15,7 @@ "defaultExtent" : "R.S 6/1/2020 14:27", "defaultHeaderHeight" : "R.S 6/1/2020 14:27", "delete" : "R.S 6/3/2020 20:54", - "initialize" : "rs 6/7/2020 21:53", + "initialize" : "R.S 6/3/2020 21:21", "logout" : "js 5/29/2020 09:35", "subscribeCore" : "R.S 6/3/2020 21:03", - "updateChatsList" : "rs 6/8/2020 14:01" } } + "updateChatsList" : "R.S 6/4/2020 10:12" } } From cf9c422a2a88318d57969e8418831e42b9c4e363 Mon Sep 17 00:00:00 2001 From: Rohan Sawahn <49531442+rohansaw@users.noreply.github.com> Date: Fri, 12 Jun 2020 20:58:47 +0200 Subject: [PATCH 07/81] Refactored chatsList to follow tdLib standards (#137) * small fixes * removed debugging code * added tccchats * added tccrequest * fixed tdparams * fixes * Fixed UI problems * Now properly sorting chatsList * Started refactoring loading of Chats. This is only a Backup commit if squeak crashes! * Now cleanly handling loading of Chats with ChatsHandler. But order not working yet * removed accidental halt * addChat is now part of ChatsHandler * Added BackButton, in case that User enters wrong phone number and want to go a step back Co-authored-by: Jonas Schmidt Co-authored-by: Jonas Schmidt Co-authored-by: Jonas Schmidt --- .../instance/createClient..st | 2 +- .../TCCApp.class/instance/addChat..st | 11 --------- .../TCCApp.class/instance/authSucceeded.st | 5 ++++ .../TCCApp.class/instance/chatsHandler..st | 4 ++++ .../TCCApp.class/instance/chatsHandler.st | 4 ++++ .../TCCApp.class/instance/getChats.st | 4 ---- .../TCCApp.class/instance/handleEvent..st | 12 +++------- .../TCCApp.class/instance/initialize.st | 2 +- .../instance/initializeHandlers.st | 2 +- .../TCCApp.class/instance/messageHandler..st | 4 ---- .../TCCApp.class/instance/messageHandler.st | 4 ---- .../TCCApp.class/instance/setChatInfos..st | 11 --------- .../TCCApp.class/methodProperties.json | 14 +++++------ .../TCCApp.class/properties.json | 2 +- .../instance/checkAuthenticationCode..st | 4 +++- .../instance/handleEvent..st | 2 +- .../instance/sendPhoneNumber..st | 4 +++- .../instance/setDBEncryptionKey..st | 4 +++- .../instance/setTDLibParams.st | 24 ++++++++++--------- .../methodProperties.json | 10 ++++---- .../TCCChat.class/instance/fullName..st | 4 ---- .../TCCChat.class/instance/fullName.st | 4 ---- .../TCCChat.class/instance/id..st | 4 ++++ .../TCCChat.class/instance/id.st | 4 ++++ .../TCCChat.class/instance/title..st | 4 ++++ .../TCCChat.class/instance/title.st | 4 ++++ .../TCCChat.class/methodProperties.json | 6 +++-- .../TCCChat.class/properties.json | 5 ++-- .../README.md | 0 .../TCCChats.class/class/new.st | 6 +++++ .../TCCChats.class/instance/getChat..st | 4 ++++ .../TCCChats.class/instance/initialize.st | 6 +++++ .../TCCChats.class/instance/sortBlock.st | 4 ++++ .../TCCChats.class/methodProperties.json | 7 ++++++ .../TCCChats.class/properties.json | 14 +++++++++++ .../TCCChatsHandler.class/README.md | 0 .../instance/addChat..st | 12 ++++++++++ .../instance/app..st | 0 .../instance/app.st | 0 .../instance/client.st | 0 .../instance/getChatInfos..st | 6 +++++ .../instance/getChats.st | 8 +++++++ .../methodProperties.json | 6 ++--- .../properties.json | 2 +- .../instance/getChatInfos..st | 4 ---- .../instance/getChats.st | 4 ---- .../instance/handleEvent..st | 4 ---- .../TCCRequest.class/README.md | 0 .../class/newWithType.from..st | 6 +++++ .../TCCRequest.class/instance/asString.st | 9 +++++++ .../TCCRequest.class/methodProperties.json | 5 ++++ .../TCCRequest.class/properties.json | 14 +++++++++++ .../TCCTeleClient.class/instance/receive..st | 2 +- .../TCCTeleClient.class/instance/send..st | 4 ++-- .../TCCTeleClient.class/methodProperties.json | 4 ++-- .../instance/createClient..st | 2 +- .../instance/createClient.st | 2 +- .../TCUApp.class/methodProperties.json | 2 +- .../instance/buttonBack..st | 4 ++++ .../instance/buttonBack.st | 4 ++++ .../instance/buttonBackPressed.st | 4 ++++ .../instance/createButtonBack.st | 10 ++++++++ .../instance/createButtonNext.st | 10 ++++++++ .../instance/createButtonVerify.st | 10 ++++++++ .../instance/createInputField..st | 3 ++- .../instance/initialize.st | 2 +- .../instance/initializeMorphs.st | 9 +++++++ .../instance/showFirstStep.st | 14 ++++------- .../instance/showSecondStep.st | 16 +++++-------- .../methodProperties.json | 15 ++++++++---- .../TCUAuthentication.class/properties.json | 3 ++- .../TCUMain.class/instance/initialize.st | 4 +--- .../TCUMain.class/instance/updateChatsList.st | 6 ++--- .../TCUMain.class/methodProperties.json | 2 +- 74 files changed, 273 insertions(+), 144 deletions(-) delete mode 100644 packages/TelegramClient-Core.package/TCCApp.class/instance/addChat..st create mode 100644 packages/TelegramClient-Core.package/TCCApp.class/instance/authSucceeded.st create mode 100644 packages/TelegramClient-Core.package/TCCApp.class/instance/chatsHandler..st create mode 100644 packages/TelegramClient-Core.package/TCCApp.class/instance/chatsHandler.st delete mode 100644 packages/TelegramClient-Core.package/TCCApp.class/instance/getChats.st delete mode 100644 packages/TelegramClient-Core.package/TCCApp.class/instance/messageHandler..st delete mode 100644 packages/TelegramClient-Core.package/TCCApp.class/instance/messageHandler.st delete mode 100644 packages/TelegramClient-Core.package/TCCApp.class/instance/setChatInfos..st delete mode 100644 packages/TelegramClient-Core.package/TCCChat.class/instance/fullName..st delete mode 100644 packages/TelegramClient-Core.package/TCCChat.class/instance/fullName.st create mode 100644 packages/TelegramClient-Core.package/TCCChat.class/instance/id..st create mode 100644 packages/TelegramClient-Core.package/TCCChat.class/instance/id.st create mode 100644 packages/TelegramClient-Core.package/TCCChat.class/instance/title..st create mode 100644 packages/TelegramClient-Core.package/TCCChat.class/instance/title.st rename packages/TelegramClient-Core.package/{TCCMessageHandler.class => TCCChats.class}/README.md (100%) create mode 100644 packages/TelegramClient-Core.package/TCCChats.class/class/new.st create mode 100644 packages/TelegramClient-Core.package/TCCChats.class/instance/getChat..st create mode 100644 packages/TelegramClient-Core.package/TCCChats.class/instance/initialize.st create mode 100644 packages/TelegramClient-Core.package/TCCChats.class/instance/sortBlock.st create mode 100644 packages/TelegramClient-Core.package/TCCChats.class/methodProperties.json create mode 100644 packages/TelegramClient-Core.package/TCCChats.class/properties.json create mode 100644 packages/TelegramClient-Core.package/TCCChatsHandler.class/README.md create mode 100644 packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/addChat..st rename packages/TelegramClient-Core.package/{TCCMessageHandler.class => TCCChatsHandler.class}/instance/app..st (100%) rename packages/TelegramClient-Core.package/{TCCMessageHandler.class => TCCChatsHandler.class}/instance/app.st (100%) rename packages/TelegramClient-Core.package/{TCCMessageHandler.class => TCCChatsHandler.class}/instance/client.st (100%) create mode 100644 packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/getChatInfos..st create mode 100644 packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/getChats.st rename packages/TelegramClient-Core.package/{TCCMessageHandler.class => TCCChatsHandler.class}/methodProperties.json (52%) rename packages/TelegramClient-Core.package/{TCCMessageHandler.class => TCCChatsHandler.class}/properties.json (86%) delete mode 100644 packages/TelegramClient-Core.package/TCCMessageHandler.class/instance/getChatInfos..st delete mode 100644 packages/TelegramClient-Core.package/TCCMessageHandler.class/instance/getChats.st delete mode 100644 packages/TelegramClient-Core.package/TCCMessageHandler.class/instance/handleEvent..st create mode 100644 packages/TelegramClient-Core.package/TCCRequest.class/README.md create mode 100644 packages/TelegramClient-Core.package/TCCRequest.class/class/newWithType.from..st create mode 100644 packages/TelegramClient-Core.package/TCCRequest.class/instance/asString.st create mode 100644 packages/TelegramClient-Core.package/TCCRequest.class/methodProperties.json create mode 100644 packages/TelegramClient-Core.package/TCCRequest.class/properties.json create mode 100644 packages/TelegramClient-UI.package/TCUAuthentication.class/instance/buttonBack..st create mode 100644 packages/TelegramClient-UI.package/TCUAuthentication.class/instance/buttonBack.st create mode 100644 packages/TelegramClient-UI.package/TCUAuthentication.class/instance/buttonBackPressed.st create mode 100644 packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createButtonBack.st create mode 100644 packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createButtonNext.st create mode 100644 packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createButtonVerify.st create mode 100644 packages/TelegramClient-UI.package/TCUAuthentication.class/instance/initializeMorphs.st diff --git a/packages/TelegramClient-Core.package/TCCAbstractTeleClientFactory.class/instance/createClient..st b/packages/TelegramClient-Core.package/TCCAbstractTeleClientFactory.class/instance/createClient..st index d92d859f2..e5eae37cc 100644 --- a/packages/TelegramClient-Core.package/TCCAbstractTeleClientFactory.class/instance/createClient..st +++ b/packages/TelegramClient-Core.package/TCCAbstractTeleClientFactory.class/instance/createClient..st @@ -1,4 +1,4 @@ -Creation +creation createClient: anOsName ^ self subclassResponsibility \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCApp.class/instance/addChat..st b/packages/TelegramClient-Core.package/TCCApp.class/instance/addChat..st deleted file mode 100644 index 4f769b130..000000000 --- a/packages/TelegramClient-Core.package/TCCApp.class/instance/addChat..st +++ /dev/null @@ -1,11 +0,0 @@ -accessing -addChat: aChatEvent - - | userId chat | - - userId := aChatEvent at: 'user_id'. - chat := TCCChat new userId: userId. - chat fullName ifNil: [self messageHandler getChatInfos: userId]. - chat order ifNil: [chat order: '0']. - - self chats at: userId put: chat. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCApp.class/instance/authSucceeded.st b/packages/TelegramClient-Core.package/TCCApp.class/instance/authSucceeded.st new file mode 100644 index 000000000..cd2304af9 --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCApp.class/instance/authSucceeded.st @@ -0,0 +1,5 @@ +initialization +authSucceeded + + self chatsHandler getChats. + ^ #authReady \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCApp.class/instance/chatsHandler..st b/packages/TelegramClient-Core.package/TCCApp.class/instance/chatsHandler..st new file mode 100644 index 000000000..4a7562a45 --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCApp.class/instance/chatsHandler..st @@ -0,0 +1,4 @@ +accessing +chatsHandler: aChatsHandler + + chatsHandler := aChatsHandler. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCApp.class/instance/chatsHandler.st b/packages/TelegramClient-Core.package/TCCApp.class/instance/chatsHandler.st new file mode 100644 index 000000000..af78b0d51 --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCApp.class/instance/chatsHandler.st @@ -0,0 +1,4 @@ +accessing +chatsHandler + + ^ chatsHandler \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCApp.class/instance/getChats.st b/packages/TelegramClient-Core.package/TCCApp.class/instance/getChats.st deleted file mode 100644 index cab93e8f5..000000000 --- a/packages/TelegramClient-Core.package/TCCApp.class/instance/getChats.st +++ /dev/null @@ -1,4 +0,0 @@ -accessing -getChats - - self messageHandler getChats. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCApp.class/instance/handleEvent..st b/packages/TelegramClient-Core.package/TCCApp.class/instance/handleEvent..st index 29849a793..a665d4c20 100644 --- a/packages/TelegramClient-Core.package/TCCApp.class/instance/handleEvent..st +++ b/packages/TelegramClient-Core.package/TCCApp.class/instance/handleEvent..st @@ -5,18 +5,12 @@ handleEvent: anEvent update := nil. (((anEvent at: '@type') = 'error') and: [(anEvent at: 'code') = 400 ]) - ifTrue: [self halt: 'There probably already is an instance of TCClient running']. + ifTrue: [self halt: 'An Error Occured. Check Transcript Output.']. (anEvent at: '@type') = 'updateAuthorizationState' ifTrue: [update := self authHandler handleEvent: anEvent]. - (anEvent at: '@type') = 'chats' - ifTrue: [update := self messageHandler handleEvent: anEvent]. - - (anEvent at: '@type') = 'updateUserFullInfo' - ifTrue: [self addChat: anEvent]. - - (anEvent at: '@type') = 'chat' - ifTrue: [self setChatInfos: anEvent]. + (anEvent at: '@type') = 'updateNewChat' + ifTrue: [self chatsHandler addChat: anEvent]. update isSymbol ifTrue: [self triggerEvent: update]. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCApp.class/instance/initialize.st b/packages/TelegramClient-Core.package/TCCApp.class/instance/initialize.st index 56bfc6034..83c481ca1 100644 --- a/packages/TelegramClient-Core.package/TCCApp.class/instance/initialize.st +++ b/packages/TelegramClient-Core.package/TCCApp.class/instance/initialize.st @@ -4,6 +4,6 @@ initialize self initializeClient; initializeHandlers; - chats: Dictionary new. + chats: TCCChats new. [self receiveLoop] fork. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCApp.class/instance/initializeHandlers.st b/packages/TelegramClient-Core.package/TCCApp.class/instance/initializeHandlers.st index 6de508a53..7ccd1ef60 100644 --- a/packages/TelegramClient-Core.package/TCCApp.class/instance/initializeHandlers.st +++ b/packages/TelegramClient-Core.package/TCCApp.class/instance/initializeHandlers.st @@ -3,4 +3,4 @@ initializeHandlers self authHandler: (TCCAuthHandler new app: self); - messageHandler: (TCCMessageHandler new app: self). \ No newline at end of file + chatsHandler: (TCCChatsHandler new app: self). \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCApp.class/instance/messageHandler..st b/packages/TelegramClient-Core.package/TCCApp.class/instance/messageHandler..st deleted file mode 100644 index a66760e20..000000000 --- a/packages/TelegramClient-Core.package/TCCApp.class/instance/messageHandler..st +++ /dev/null @@ -1,4 +0,0 @@ -accessing -messageHandler: aMessageHandler - - messageHandler := aMessageHandler. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCApp.class/instance/messageHandler.st b/packages/TelegramClient-Core.package/TCCApp.class/instance/messageHandler.st deleted file mode 100644 index 9f4bcfa44..000000000 --- a/packages/TelegramClient-Core.package/TCCApp.class/instance/messageHandler.st +++ /dev/null @@ -1,4 +0,0 @@ -accessing -messageHandler - - ^ messageHandler \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCApp.class/instance/setChatInfos..st b/packages/TelegramClient-Core.package/TCCApp.class/instance/setChatInfos..st deleted file mode 100644 index cc6639a7a..000000000 --- a/packages/TelegramClient-Core.package/TCCApp.class/instance/setChatInfos..st +++ /dev/null @@ -1,11 +0,0 @@ -accessing -setChatInfos: anEvent - - | chatId | - - chatId := anEvent at: 'id'. - (self chats at: chatId) - fullName: (anEvent at: 'title'); - order: (anEvent at: 'order'). - - self triggerEvent: #newChatLoaded. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCApp.class/methodProperties.json b/packages/TelegramClient-Core.package/TCCApp.class/methodProperties.json index 69ace99c0..d0d9a3244 100644 --- a/packages/TelegramClient-Core.package/TCCApp.class/methodProperties.json +++ b/packages/TelegramClient-Core.package/TCCApp.class/methodProperties.json @@ -2,23 +2,21 @@ "class" : { }, "instance" : { - "addChat:" : "R.S 6/4/2020 10:11", "authHandler" : "R.S 5/20/2020 16:10", "authHandler:" : "R.S 5/20/2020 16:10", + "authSucceeded" : "rs 6/8/2020 14:13", "chats" : "R.S 6/1/2020 15:34", "chats:" : "R.S 6/1/2020 15:34", + "chatsHandler" : "rs 6/7/2020 21:50", + "chatsHandler:" : "rs 6/7/2020 21:50", "checkAuthenticationCode:" : "js 5/31/2020 20:10", "client" : "R.S 5/20/2020 16:08", "client:" : "R.S 5/20/2020 16:08", - "getChats" : "js 6/1/2020 15:06", - "handleEvent:" : "js 5/29/2020 09:38", - "initialize" : "R.S 6/1/2020 15:52", + "handleEvent:" : "rs 6/8/2020 14:07", + "initialize" : "rs 6/6/2020 17:56", "initializeClient" : "f.w. 5/31/2020 19:01", - "initializeHandlers" : "js 6/1/2020 14:45", + "initializeHandlers" : "rs 6/7/2020 21:51", "isClientAlive" : "js 5/28/2020 17:18", - "messageHandler" : "js 6/1/2020 14:46", - "messageHandler:" : "js 6/1/2020 14:46", "receiveLoop" : "R.S 6/1/2020 15:24", "sendPhoneNumber:" : "js 5/31/2020 20:08", - "setChatInfos:" : "R.S 6/4/2020 10:11", "update" : "js 5/28/2020 17:28" } } diff --git a/packages/TelegramClient-Core.package/TCCApp.class/properties.json b/packages/TelegramClient-Core.package/TCCApp.class/properties.json index ca67e1af1..133d12707 100644 --- a/packages/TelegramClient-Core.package/TCCApp.class/properties.json +++ b/packages/TelegramClient-Core.package/TCCApp.class/properties.json @@ -9,7 +9,7 @@ "client", "authUI", "authHandler", - "messageHandler", + "chatsHandler", "chats" ], "name" : "TCCApp", "pools" : [ diff --git a/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/checkAuthenticationCode..st b/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/checkAuthenticationCode..st index 53cc97b51..f2d779972 100644 --- a/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/checkAuthenticationCode..st +++ b/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/checkAuthenticationCode..st @@ -1,4 +1,6 @@ accessing checkAuthenticationCode: aString - self client send: '{"@type": "checkAuthenticationCode", "code": "', aString, '"}'. \ No newline at end of file + self client send: (TCCRequest + newWithType: 'checkAuthenticationCode' + from: {'code' -> aString}). \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/handleEvent..st b/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/handleEvent..st index b0763a0a5..e84a58433 100644 --- a/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/handleEvent..st +++ b/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/handleEvent..st @@ -13,4 +13,4 @@ handleEvent: anEvent self isAwaitingAuthCode ifTrue: [^ #awaitAuthCode]. - self isAuthorizationStateReady ifTrue: [^ #authReady]. \ No newline at end of file + self isAuthorizationStateReady ifTrue: [^ self app authSucceeded]. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/sendPhoneNumber..st b/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/sendPhoneNumber..st index 6ff5b8477..ca83ebac3 100644 --- a/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/sendPhoneNumber..st +++ b/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/sendPhoneNumber..st @@ -1,4 +1,6 @@ accessing sendPhoneNumber: aNumber - self client send: '{"@type": "setAuthenticationPhoneNumber", "phone_number": "', aNumber, '"}'. \ No newline at end of file + self client send: (TCCRequest + newWithType: 'setAuthenticationPhoneNumber' + from: {'phone_number' -> aNumber}). \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/setDBEncryptionKey..st b/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/setDBEncryptionKey..st index 0f42e4552..65969223f 100644 --- a/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/setDBEncryptionKey..st +++ b/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/setDBEncryptionKey..st @@ -1,4 +1,6 @@ accessing setDBEncryptionKey: aString - self client send: '{"@type": "checkDatabaseEncryptionKey", "encryption_key": "', aString, '"}'. \ No newline at end of file + self client send: (TCCRequest + newWithType: 'checkDatabaseEncryptionKey' + from: {'encryption_key' -> aString}). \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/setTDLibParams.st b/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/setTDLibParams.st index d7e95c5de..8fab13917 100644 --- a/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/setTDLibParams.st +++ b/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/setTDLibParams.st @@ -1,14 +1,16 @@ accessing setTDLibParams - self client send: '{"@type": "setTdlibParameters", "parameters": { - "database_directory": "tdlib", - "use_message_database": true, - "use_secret_chats": true, - "api_id": 94575, - "api_hash": "a3406de8d171bb422bb6ddf3bbd800e2", - "system_language_code": "en", - "device_model": "Desktop", - "system_version": "', self client specificClient type, '", - "application_version": "1.0", - "enable_storage_optimizer": true}}'. \ No newline at end of file + self client send: (TCCRequest + newWithType: 'setTdlibParameters' + from: {'parameters' -> (Dictionary newFrom: { + 'database_directory' -> 'tdlib'. + 'use_message_database' -> true. + 'use_secret_chats' -> true. + 'api_id' -> 94575. + 'api_hash' -> 'a3406de8d171bb422bb6ddf3bbd800e2'. + 'system_language_code' -> 'en'. + 'device_model' -> 'Desktop'. + 'system_version' -> self client specificClient type. + 'application_version' -> '1.0'. + 'enable_storage_optimizer' -> true})}). \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCAuthHandler.class/methodProperties.json b/packages/TelegramClient-Core.package/TCCAuthHandler.class/methodProperties.json index 452a3f344..4d273d686 100644 --- a/packages/TelegramClient-Core.package/TCCAuthHandler.class/methodProperties.json +++ b/packages/TelegramClient-Core.package/TCCAuthHandler.class/methodProperties.json @@ -6,9 +6,9 @@ "app:" : "js 5/28/2020 17:02", "authState" : "R.S 5/18/2020 17:54", "authState:" : "R.S 5/18/2020 17:54", - "checkAuthenticationCode:" : "R.S 5/19/2020 10:23", + "checkAuthenticationCode:" : "rs 6/6/2020 16:23", "client" : "js 5/28/2020 18:36", - "handleEvent:" : "js 6/1/2020 15:04", + "handleEvent:" : "rs 6/8/2020 14:13", "isAuthStateClosed" : "R.S 5/19/2020 10:29", "isAuthorizationStateReady" : "R.S 5/20/2020 16:59", "isAwaitingAuthCode" : "R.S 5/19/2020 10:30", @@ -16,6 +16,6 @@ "isAwaitingPhoneNumber" : "R.S 5/19/2020 10:28", "isAwaitingTDLibParams" : "R.S 5/19/2020 10:28", "logout" : "f.w. 6/3/2020 20:41", - "sendPhoneNumber:" : "js 5/31/2020 20:09", - "setDBEncryptionKey:" : "js 5/28/2020 17:04", - "setTDLibParams" : "R.S 5/23/2020 12:22" } } + "sendPhoneNumber:" : "rs 6/6/2020 16:25", + "setDBEncryptionKey:" : "rs 6/6/2020 16:26", + "setTDLibParams" : "rs 6/6/2020 16:41" } } diff --git a/packages/TelegramClient-Core.package/TCCChat.class/instance/fullName..st b/packages/TelegramClient-Core.package/TCCChat.class/instance/fullName..st deleted file mode 100644 index b8ae47334..000000000 --- a/packages/TelegramClient-Core.package/TCCChat.class/instance/fullName..st +++ /dev/null @@ -1,4 +0,0 @@ -accessing -fullName: aString - - fullName := aString. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCChat.class/instance/fullName.st b/packages/TelegramClient-Core.package/TCCChat.class/instance/fullName.st deleted file mode 100644 index 3e176ec3f..000000000 --- a/packages/TelegramClient-Core.package/TCCChat.class/instance/fullName.st +++ /dev/null @@ -1,4 +0,0 @@ -accessing -fullName - - ^ fullName \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCChat.class/instance/id..st b/packages/TelegramClient-Core.package/TCCChat.class/instance/id..st new file mode 100644 index 000000000..7a9230e8c --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCChat.class/instance/id..st @@ -0,0 +1,4 @@ +accessing +id: aNumber + + id := aNumber. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCChat.class/instance/id.st b/packages/TelegramClient-Core.package/TCCChat.class/instance/id.st new file mode 100644 index 000000000..44798f6fa --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCChat.class/instance/id.st @@ -0,0 +1,4 @@ +accessing +id + + ^ id \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCChat.class/instance/title..st b/packages/TelegramClient-Core.package/TCCChat.class/instance/title..st new file mode 100644 index 000000000..b49b5a4aa --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCChat.class/instance/title..st @@ -0,0 +1,4 @@ +accessing +title: aString + + title := aString. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCChat.class/instance/title.st b/packages/TelegramClient-Core.package/TCCChat.class/instance/title.st new file mode 100644 index 000000000..3c1da9ab9 --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCChat.class/instance/title.st @@ -0,0 +1,4 @@ +accessing +title + + ^ title \ 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 3980f54db..9d50dc182 100644 --- a/packages/TelegramClient-Core.package/TCCChat.class/methodProperties.json +++ b/packages/TelegramClient-Core.package/TCCChat.class/methodProperties.json @@ -2,11 +2,13 @@ "class" : { }, "instance" : { - "fullName" : "R.S 6/1/2020 15:36", - "fullName:" : "R.S 6/1/2020 15:37", + "id" : "rs 6/7/2020 22:20", + "id:" : "rs 6/7/2020 22:20", "messages" : "R.S 6/1/2020 15:37", "messages:" : "R.S 6/1/2020 15:37", "order" : "R.S 6/4/2020 09:56", "order:" : "R.S 6/4/2020 09:56", + "title" : "rs 6/7/2020 22:24", + "title:" : "rs 6/7/2020 22:24", "userId" : "R.S 6/1/2020 15:37", "userId:" : "R.S 6/1/2020 15:37" } } diff --git a/packages/TelegramClient-Core.package/TCCChat.class/properties.json b/packages/TelegramClient-Core.package/TCCChat.class/properties.json index 56959b22e..ee10992ae 100644 --- a/packages/TelegramClient-Core.package/TCCChat.class/properties.json +++ b/packages/TelegramClient-Core.package/TCCChat.class/properties.json @@ -7,9 +7,10 @@ "commentStamp" : "", "instvars" : [ "userId", - "fullName", "messages", - "order" ], + "order", + "id", + "title" ], "name" : "TCCChat", "pools" : [ ], diff --git a/packages/TelegramClient-Core.package/TCCMessageHandler.class/README.md b/packages/TelegramClient-Core.package/TCCChats.class/README.md similarity index 100% rename from packages/TelegramClient-Core.package/TCCMessageHandler.class/README.md rename to packages/TelegramClient-Core.package/TCCChats.class/README.md diff --git a/packages/TelegramClient-Core.package/TCCChats.class/class/new.st b/packages/TelegramClient-Core.package/TCCChats.class/class/new.st new file mode 100644 index 000000000..c8f4cc4ee --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCChats.class/class/new.st @@ -0,0 +1,6 @@ +instance creation +new + + ^ super new + initialize; + yourself \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCChats.class/instance/getChat..st b/packages/TelegramClient-Core.package/TCCChats.class/instance/getChat..st new file mode 100644 index 000000000..0f86d02e9 --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCChats.class/instance/getChat..st @@ -0,0 +1,4 @@ +accessing +getChat: anID + + ^ self detect: [:aChat | aChat userId = anID] \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCChats.class/instance/initialize.st b/packages/TelegramClient-Core.package/TCCChats.class/instance/initialize.st new file mode 100644 index 000000000..d9eac0c2d --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCChats.class/instance/initialize.st @@ -0,0 +1,6 @@ +initialize-release +initialize + + super initialize. + + self sortBlock: [:aChat :anotherChat | aChat order >= anotherChat order]. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCChats.class/instance/sortBlock.st b/packages/TelegramClient-Core.package/TCCChats.class/instance/sortBlock.st new file mode 100644 index 000000000..3495175bb --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCChats.class/instance/sortBlock.st @@ -0,0 +1,4 @@ +initialize-release +sortBlock + + ^ [:aChat :anotherChat | aChat order >= anotherChat order] \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCChats.class/methodProperties.json b/packages/TelegramClient-Core.package/TCCChats.class/methodProperties.json new file mode 100644 index 000000000..381d44b50 --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCChats.class/methodProperties.json @@ -0,0 +1,7 @@ +{ + "class" : { + "new" : "rs 6/6/2020 17:58" }, + "instance" : { + "getChat:" : "rs 6/6/2020 17:02", + "initialize" : "rs 6/6/2020 17:57", + "sortBlock" : "rs 6/6/2020 17:56" } } diff --git a/packages/TelegramClient-Core.package/TCCChats.class/properties.json b/packages/TelegramClient-Core.package/TCCChats.class/properties.json new file mode 100644 index 000000000..4a2d7df02 --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCChats.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "TelegramClient-Core", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "TCCChats", + "pools" : [ + ], + "super" : "SortedCollection", + "type" : "normal" } diff --git a/packages/TelegramClient-Core.package/TCCChatsHandler.class/README.md b/packages/TelegramClient-Core.package/TCCChatsHandler.class/README.md new file mode 100644 index 000000000..e69de29bb diff --git a/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/addChat..st b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/addChat..st new file mode 100644 index 000000000..11fccc43a --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/addChat..st @@ -0,0 +1,12 @@ +events +addChat: aChatEvent + + | chat | + + chat := TCCChat new + id: ((aChatEvent at: 'chat') at: 'id'); + title: ((aChatEvent at: 'chat') at: 'title'); + order: ((aChatEvent at: 'chat') at: 'order'). + + self app chats add: chat. + self app triggerEvent: #newChatLoaded. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCMessageHandler.class/instance/app..st b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/app..st similarity index 100% rename from packages/TelegramClient-Core.package/TCCMessageHandler.class/instance/app..st rename to packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/app..st diff --git a/packages/TelegramClient-Core.package/TCCMessageHandler.class/instance/app.st b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/app.st similarity index 100% rename from packages/TelegramClient-Core.package/TCCMessageHandler.class/instance/app.st rename to packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/app.st diff --git a/packages/TelegramClient-Core.package/TCCMessageHandler.class/instance/client.st b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/client.st similarity index 100% rename from packages/TelegramClient-Core.package/TCCMessageHandler.class/instance/client.st rename to packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/client.st diff --git a/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/getChatInfos..st b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/getChatInfos..st new file mode 100644 index 000000000..fc1bbc5d3 --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/getChatInfos..st @@ -0,0 +1,6 @@ +accessing +getChatInfos: aChatID + + self client send: (TCCRequest + newWithType: 'getChat' + from: {'chat_id' -> aChatID}). \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/getChats.st b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/getChats.st new file mode 100644 index 000000000..a84d4d47b --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/getChats.st @@ -0,0 +1,8 @@ +accessing +getChats + + self client send: (TCCRequest + newWithType: 'getChats' + from: { + 'limit' -> '5'. + 'offset_order' -> '9223372036854775807'}). \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCMessageHandler.class/methodProperties.json b/packages/TelegramClient-Core.package/TCCChatsHandler.class/methodProperties.json similarity index 52% rename from packages/TelegramClient-Core.package/TCCMessageHandler.class/methodProperties.json rename to packages/TelegramClient-Core.package/TCCChatsHandler.class/methodProperties.json index b3fcb962d..780720040 100644 --- a/packages/TelegramClient-Core.package/TCCMessageHandler.class/methodProperties.json +++ b/packages/TelegramClient-Core.package/TCCChatsHandler.class/methodProperties.json @@ -2,9 +2,9 @@ "class" : { }, "instance" : { + "addChat:" : "rs 6/8/2020 14:03", "app" : "js 6/1/2020 14:44", "app:" : "js 6/1/2020 14:45", "client" : "js 6/1/2020 14:44", - "getChatInfos:" : "R.S 6/1/2020 16:15", - "getChats" : "js 6/1/2020 14:59", - "handleEvent:" : "js 6/1/2020 16:37" } } + "getChatInfos:" : "rs 6/6/2020 16:33", + "getChats" : "rs 6/6/2020 16:36" } } diff --git a/packages/TelegramClient-Core.package/TCCMessageHandler.class/properties.json b/packages/TelegramClient-Core.package/TCCChatsHandler.class/properties.json similarity index 86% rename from packages/TelegramClient-Core.package/TCCMessageHandler.class/properties.json rename to packages/TelegramClient-Core.package/TCCChatsHandler.class/properties.json index f8f7efa66..b91527d1d 100644 --- a/packages/TelegramClient-Core.package/TCCMessageHandler.class/properties.json +++ b/packages/TelegramClient-Core.package/TCCChatsHandler.class/properties.json @@ -7,7 +7,7 @@ "commentStamp" : "", "instvars" : [ "app" ], - "name" : "TCCMessageHandler", + "name" : "TCCChatsHandler", "pools" : [ ], "super" : "Object", diff --git a/packages/TelegramClient-Core.package/TCCMessageHandler.class/instance/getChatInfos..st b/packages/TelegramClient-Core.package/TCCMessageHandler.class/instance/getChatInfos..st deleted file mode 100644 index a361782f8..000000000 --- a/packages/TelegramClient-Core.package/TCCMessageHandler.class/instance/getChatInfos..st +++ /dev/null @@ -1,4 +0,0 @@ -accessing -getChatInfos: aChatId - - self client send: '{"@type": "getChat", "chat_id": "', aChatId, '"}'. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCMessageHandler.class/instance/getChats.st b/packages/TelegramClient-Core.package/TCCMessageHandler.class/instance/getChats.st deleted file mode 100644 index bf5b35132..000000000 --- a/packages/TelegramClient-Core.package/TCCMessageHandler.class/instance/getChats.st +++ /dev/null @@ -1,4 +0,0 @@ -accessing -getChats - - self client send: '{"@type": "getChats", "limit": "', 5, '", "offset_order": "', 9223372036854775807, '"}'. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCMessageHandler.class/instance/handleEvent..st b/packages/TelegramClient-Core.package/TCCMessageHandler.class/instance/handleEvent..st deleted file mode 100644 index 3befd0026..000000000 --- a/packages/TelegramClient-Core.package/TCCMessageHandler.class/instance/handleEvent..st +++ /dev/null @@ -1,4 +0,0 @@ -events -handleEvent: anEvent - - "Transcript show: anEvent." \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCRequest.class/README.md b/packages/TelegramClient-Core.package/TCCRequest.class/README.md new file mode 100644 index 000000000..e69de29bb diff --git a/packages/TelegramClient-Core.package/TCCRequest.class/class/newWithType.from..st b/packages/TelegramClient-Core.package/TCCRequest.class/class/newWithType.from..st new file mode 100644 index 000000000..59174dc2b --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCRequest.class/class/newWithType.from..st @@ -0,0 +1,6 @@ +instance creation +newWithType: aString from: aDictionary + + ^ (self newFrom: aDictionary) + at: '@type' put: aString; + yourself \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCRequest.class/instance/asString.st b/packages/TelegramClient-Core.package/TCCRequest.class/instance/asString.st new file mode 100644 index 000000000..c336bca88 --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCRequest.class/instance/asString.st @@ -0,0 +1,9 @@ +accessing +asString + + | aStream | + + aStream := ReadWriteStream on: ''. + self jsonWriteOn: aStream. + + ^ aStream contents \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCRequest.class/methodProperties.json b/packages/TelegramClient-Core.package/TCCRequest.class/methodProperties.json new file mode 100644 index 000000000..6e8b8a484 --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCRequest.class/methodProperties.json @@ -0,0 +1,5 @@ +{ + "class" : { + "newWithType:from:" : "rs 6/6/2020 16:21" }, + "instance" : { + "asString" : "rs 6/6/2020 16:11" } } diff --git a/packages/TelegramClient-Core.package/TCCRequest.class/properties.json b/packages/TelegramClient-Core.package/TCCRequest.class/properties.json new file mode 100644 index 000000000..a21acf7f9 --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCRequest.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "TelegramClient-Core", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "TCCRequest", + "pools" : [ + ], + "super" : "Dictionary", + "type" : "normal" } diff --git a/packages/TelegramClient-Core.package/TCCTeleClient.class/instance/receive..st b/packages/TelegramClient-Core.package/TCCTeleClient.class/instance/receive..st index 608b10a09..05812be61 100644 --- a/packages/TelegramClient-Core.package/TCCTeleClient.class/instance/receive..st +++ b/packages/TelegramClient-Core.package/TCCTeleClient.class/instance/receive..st @@ -5,5 +5,5 @@ receive: aTimeoutNumber event := self specificClient receive: self handle with: aTimeoutNumber. event ifNil: [^nil]. - + "Transcript show: event, Character cr." ^ Json new readFromString: event \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCTeleClient.class/instance/send..st b/packages/TelegramClient-Core.package/TCCTeleClient.class/instance/send..st index 955ab8f9c..b9476481c 100644 --- a/packages/TelegramClient-Core.package/TCCTeleClient.class/instance/send..st +++ b/packages/TelegramClient-Core.package/TCCTeleClient.class/instance/send..st @@ -1,4 +1,4 @@ accessing -send: aMessage +send: aRequest - self specificClient send: self handle with: aMessage. \ No newline at end of file + self specificClient send: self handle with: aRequest asString. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCTeleClient.class/methodProperties.json b/packages/TelegramClient-Core.package/TCCTeleClient.class/methodProperties.json index b102a63ef..c87f9b4f9 100644 --- a/packages/TelegramClient-Core.package/TCCTeleClient.class/methodProperties.json +++ b/packages/TelegramClient-Core.package/TCCTeleClient.class/methodProperties.json @@ -8,7 +8,7 @@ "handle:" : "R.S 5/18/2020 18:20", "initialize:" : "R.S 5/20/2020 16:10", "isAlive" : "js 5/28/2020 17:23", - "receive:" : "R.S 5/18/2020 18:12", - "send:" : "js 5/28/2020 17:24", + "receive:" : "rs 6/7/2020 22:14", + "send:" : "rs 6/6/2020 16:09", "specificClient" : "js 5/28/2020 17:23", "specificClient:" : "js 5/28/2020 17:23" } } diff --git a/packages/TelegramClient-Core.package/TCCTeleClientFactory.class/instance/createClient..st b/packages/TelegramClient-Core.package/TCCTeleClientFactory.class/instance/createClient..st index 222f503d5..01344a0a7 100644 --- a/packages/TelegramClient-Core.package/TCCTeleClientFactory.class/instance/createClient..st +++ b/packages/TelegramClient-Core.package/TCCTeleClientFactory.class/instance/createClient..st @@ -1,4 +1,4 @@ -Creation +creation createClient: anOsName ^ (anOsName startsWith: 'Win32') diff --git a/packages/TelegramClient-Core.package/TCCTeleClientFactory.class/instance/createClient.st b/packages/TelegramClient-Core.package/TCCTeleClientFactory.class/instance/createClient.st index 2731b84f0..a0c96d039 100644 --- a/packages/TelegramClient-Core.package/TCCTeleClientFactory.class/instance/createClient.st +++ b/packages/TelegramClient-Core.package/TCCTeleClientFactory.class/instance/createClient.st @@ -1,4 +1,4 @@ -Creation +creation createClient ^ self createClient: Smalltalk platformName \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUApp.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUApp.class/methodProperties.json index a03b4e564..a2795d870 100644 --- a/packages/TelegramClient-UI.package/TCUApp.class/methodProperties.json +++ b/packages/TelegramClient-UI.package/TCUApp.class/methodProperties.json @@ -5,4 +5,4 @@ "instance" : { "core" : "js 5/31/2020 20:04", "core:" : "js 5/31/2020 20:04", - "initialize" : "js 5/31/2020 20:05" } } + "initialize" : "rs 6/6/2020 17:39" } } diff --git a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/buttonBack..st b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/buttonBack..st new file mode 100644 index 000000000..c1a24e0e1 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/buttonBack..st @@ -0,0 +1,4 @@ +accessing +buttonBack: aButton + + buttonBack := aButton. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/buttonBack.st b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/buttonBack.st new file mode 100644 index 000000000..e8f208f02 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/buttonBack.st @@ -0,0 +1,4 @@ +accessing +buttonBack + + ^ buttonBack \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/buttonBackPressed.st b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/buttonBackPressed.st new file mode 100644 index 000000000..8128028a9 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/buttonBackPressed.st @@ -0,0 +1,4 @@ +initialization +buttonBackPressed + + self showFirstStep. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createButtonBack.st b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createButtonBack.st new file mode 100644 index 000000000..02c5a0b6d --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createButtonBack.st @@ -0,0 +1,10 @@ +initialization +createButtonBack + + self buttonBack: (TCUButton new + text: 'Back'; + center: inputField center + ((-100) @ 50); + hide; + on: #mouseDown send: #buttonBackPressed to: self). + + self addMorph: buttonBack. diff --git a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createButtonNext.st b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createButtonNext.st new file mode 100644 index 000000000..59b217dab --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createButtonNext.st @@ -0,0 +1,10 @@ +initialization +createButtonNext + + self buttonNext: (TCUButton new + text: 'Next'; + center: inputField center + (100 @ 50); + hide; + on: #mouseDown send: #buttonNextPressed to: self). + + self addMorph: buttonNext. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createButtonVerify.st b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createButtonVerify.st new file mode 100644 index 000000000..8a18a4ea8 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createButtonVerify.st @@ -0,0 +1,10 @@ +initialization +createButtonVerify + + self + buttonVerify: (TCUButton new + text: 'Verify'; + center: self inputField center + (70 @ 50); + on: #mouseDown send: #buttonVerifyPressed to: self; + hide); + addMorph: self buttonVerify. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createInputField..st b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createInputField..st index 794c18c48..396199d62 100644 --- a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createInputField..st +++ b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createInputField..st @@ -7,6 +7,7 @@ createInputField: aString borderColor: TCUDefaultValues colorGray; borderWidth: 1; center: self instructionLabel center + (0 @ 30); + hide; crAction: [self buttonNextPressed]). - ^ self inputField \ No newline at end of file + self addMorph: self inputField. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/initialize.st b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/initialize.st index 39bcfec89..25656becd 100644 --- a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/initialize.st +++ b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/initialize.st @@ -10,4 +10,4 @@ initialize borderColor: TCUDefaultValues colorGray; addHeader; showLoadingMessage; - openCenteredInWorld. \ No newline at end of file + initializeMorphs. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/initializeMorphs.st b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/initializeMorphs.st new file mode 100644 index 000000000..b106cc7bf --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/initializeMorphs.st @@ -0,0 +1,9 @@ +initialization +initializeMorphs + + self + createInputField: '+49'; + createButtonNext; + createErrorLabel: ''; + createButtonBack; + createButtonVerify. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/showFirstStep.st b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/showFirstStep.st index 5755073bf..75363aa9e 100644 --- a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/showFirstStep.st +++ b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/showFirstStep.st @@ -4,12 +4,8 @@ showFirstStep self instructionLabel contents: 'Enter Phonenumber: ' asText; center: self center. - - self - addMorph: (self createInputField: '+49'); - buttonNext: (TCUButton new - text: 'Next'; - center: inputField center + (0 @ 50); - on: #mouseDown send: #buttonNextPressed to: self); - addMorph: buttonNext; - createErrorLabel: ''. \ No newline at end of file + + self buttonVerify hide. + self inputField show. + self buttonNext show. + self instructionLabel show. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/showSecondStep.st b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/showSecondStep.st index 9862ff2f8..14e57f692 100644 --- a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/showSecondStep.st +++ b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/showSecondStep.st @@ -1,17 +1,13 @@ accessing showSecondStep - - self buttonNext delete. + + self buttonNext hide. + self buttonBack show. + self buttonVerify show. + self instructionLabel contents: 'Enter the code your recieved on your phone'; center: self center. self inputField contents: ' '. - self errorLabel delete. - - self - buttonVerify: (TCUButton new - text: 'Verify'; - center: self inputField center + (70 @ 50); - on: #mouseDown send: #buttonVerifyPressed to: self); - addMorph: self buttonVerify. \ No newline at end of file + self errorLabel hide. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUAuthentication.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUAuthentication.class/methodProperties.json index 26f5a88ac..f6a34a712 100644 --- a/packages/TelegramClient-UI.package/TCUAuthentication.class/methodProperties.json +++ b/packages/TelegramClient-UI.package/TCUAuthentication.class/methodProperties.json @@ -4,6 +4,9 @@ "instance" : { "addHeader" : "js 5/28/2020 17:47", "addTitle:to:" : "js 5/28/2020 17:48", + "buttonBack" : "rs 6/11/2020 18:53", + "buttonBack:" : "rs 6/11/2020 18:53", + "buttonBackPressed" : "rs 6/11/2020 19:00", "buttonNext" : "R.S 5/20/2020 13:50", "buttonNext:" : "js 5/28/2020 17:49", "buttonNextPressed" : "js 5/31/2020 20:06", @@ -12,21 +15,25 @@ "buttonVerifyPressed" : "js 5/31/2020 20:10", "core" : "R.S 5/31/2020 20:18", "core:" : "R.S 5/31/2020 20:18", + "createButtonBack" : "rs 6/11/2020 18:54", + "createButtonNext" : "rs 6/11/2020 18:54", + "createButtonVerify" : "rs 6/11/2020 18:55", "createErrorLabel:" : "R.S 5/20/2020 13:50", - "createInputField:" : "js 5/28/2020 17:55", + "createInputField:" : "rs 6/6/2020 17:40", "createLabel:" : "R.S 5/20/2020 13:51", "defaultExtent" : "R.S 5/20/2020 13:51", "defaultInputWidth" : "R.S 5/20/2020 13:51", "delete" : "f.w. 6/3/2020 20:51", "errorLabel" : "R.S 5/20/2020 13:51", "errorLabel:" : "R.S 5/20/2020 13:51", - "initialize" : "js 5/31/2020 20:05", + "initialize" : "js 5/29/2020 20:11", + "initializeMorphs" : "js 5/29/2020 20:11", "inputField" : "R.S 5/20/2020 13:51", "inputField:" : "js 5/31/2020 20:07", "instructionLabel" : "R.S 5/20/2020 13:52", "instructionLabel:" : "js 5/28/2020 17:51", "logInCompleted" : "R.S 6/3/2020 20:54", - "showFirstStep" : "js 5/28/2020 17:52", + "showFirstStep" : "rs 6/11/2020 18:56", "showLoadingMessage" : "R.S 5/24/2020 16:09", - "showSecondStep" : "js 5/28/2020 17:53", + "showSecondStep" : "rs 6/11/2020 18:56", "subscribeCore" : "R.S 5/31/2020 20:21" } } diff --git a/packages/TelegramClient-UI.package/TCUAuthentication.class/properties.json b/packages/TelegramClient-UI.package/TCUAuthentication.class/properties.json index d434b03bd..2c618106e 100644 --- a/packages/TelegramClient-UI.package/TCUAuthentication.class/properties.json +++ b/packages/TelegramClient-UI.package/TCUAuthentication.class/properties.json @@ -13,7 +13,8 @@ "instructionLabel", "event", "authState", - "core" ], + "core", + "buttonBack" ], "name" : "TCUAuthentication", "pools" : [ ], diff --git a/packages/TelegramClient-UI.package/TCUMain.class/instance/initialize.st b/packages/TelegramClient-UI.package/TCUMain.class/instance/initialize.st index 924c25d78..eee975b26 100644 --- a/packages/TelegramClient-UI.package/TCUMain.class/instance/initialize.st +++ b/packages/TelegramClient-UI.package/TCUMain.class/instance/initialize.st @@ -9,6 +9,4 @@ initialize addChatsList; addChatWindow; subscribeCore; - clipSubmorphs: true. - - self core getChats. \ No newline at end of file + clipSubmorphs: true. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMain.class/instance/updateChatsList.st b/packages/TelegramClient-UI.package/TCUMain.class/instance/updateChatsList.st index 777e4e7c5..76717b8fc 100644 --- a/packages/TelegramClient-UI.package/TCUMain.class/instance/updateChatsList.st +++ b/packages/TelegramClient-UI.package/TCUMain.class/instance/updateChatsList.st @@ -3,10 +3,10 @@ updateChatsList | chats i| self chatsList clearChats. - chats := self core chats asSortedCollection: [:x :y| x order < y order]. + chats := self core chats asSortedCollection: [:x :y| x order > y order]. i := 0. chats do: [:aChat| i < 10 ifTrue: [ - aChat fullName isNil not ifTrue: [ - self chatsList addItem: aChat fullName]]]. \ No newline at end of file + aChat title isNil not ifTrue: [ + self chatsList addItem: aChat title.]]]. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMain.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUMain.class/methodProperties.json index 524714351..63cc50b7d 100644 --- a/packages/TelegramClient-UI.package/TCUMain.class/methodProperties.json +++ b/packages/TelegramClient-UI.package/TCUMain.class/methodProperties.json @@ -18,4 +18,4 @@ "initialize" : "R.S 6/3/2020 21:21", "logout" : "js 5/29/2020 09:35", "subscribeCore" : "R.S 6/3/2020 21:03", - "updateChatsList" : "R.S 6/4/2020 10:12" } } + "updateChatsList" : "rs 6/8/2020 14:01" } } From 75fd75ac92cf32400e8f6cf99f9787065ee61e62 Mon Sep 17 00:00:00 2001 From: Rohan Sawahn <49531442+rohansaw@users.noreply.github.com> Date: Sat, 13 Jun 2020 15:09:34 +0200 Subject: [PATCH 08/81] Sending of Messages added (#138) * added tccchats * added tccrequest * fixed tdparams * fixes * Fixed UI problems * Now properly sorting chatsList * Started refactoring loading of Chats. This is only a Backup commit if squeak crashes! * Now cleanly handling loading of Chats with ChatsHandler. But order not working yet * removed accidental halt * addChat is now part of ChatsHandler * added send message methods in core without ui wip * merge * random merge * merge fix * Fixed identation * Satisfiying linterTests - categorized all uncategorized * Removed Legacy Stuff Co-authored-by: Jonas Schmidt Co-authored-by: Frederik Wollny Co-authored-by: Jonas Schmidt --- .../TCCChatsHandler.class/instance/sendMessage.to..st | 11 +++++++++++ .../TCCChatsHandler.class/methodProperties.json | 3 ++- 2 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/sendMessage.to..st diff --git a/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/sendMessage.to..st b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/sendMessage.to..st new file mode 100644 index 000000000..c3c863ace --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/sendMessage.to..st @@ -0,0 +1,11 @@ +accessing +sendMessage: aString to: aChatID + + self client send: (TCCRequest + newWithType: 'sendMessage' + from: { 'chat_id' -> aChatID. + 'input_message_content' -> (Dictionary newFrom: { + '@type' -> 'inputMessageText'. + 'text' -> (Dictionary newFrom: { + '@type' -> 'formattedText'. + 'text' -> aString})})}). \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCChatsHandler.class/methodProperties.json b/packages/TelegramClient-Core.package/TCCChatsHandler.class/methodProperties.json index 780720040..909660796 100644 --- a/packages/TelegramClient-Core.package/TCCChatsHandler.class/methodProperties.json +++ b/packages/TelegramClient-Core.package/TCCChatsHandler.class/methodProperties.json @@ -7,4 +7,5 @@ "app:" : "js 6/1/2020 14:45", "client" : "js 6/1/2020 14:44", "getChatInfos:" : "rs 6/6/2020 16:33", - "getChats" : "rs 6/6/2020 16:36" } } + "getChats" : "rs 6/6/2020 16:36", + "sendMessage:to:" : "rs 6/13/2020 14:57" } } From 51e1c2f8aa221a5c179037c9ca45aafe156cf916 Mon Sep 17 00:00:00 2001 From: Rohan Sawahn <49531442+rohansaw@users.noreply.github.com> Date: Sat, 13 Jun 2020 17:25:10 +0200 Subject: [PATCH 09/81] Support sending Messages via UI (#139) * Can now selected and deselct chats - hiding and showing inputField for sending Message to this chat * Added Welcome Message and Listeners * Send Button and TextInput added, needs to be connected to Core now * Connected UI to chat sending * Linter Tests satisfied now :) * classified class-side methods --- .../TCCApp.class/instance/sendMessage.to..st | 4 ++++ .../TCCApp.class/methodProperties.json | 1 + .../methodProperties.json | 2 +- .../class/newWithClient..st | 2 +- .../NullChatListItem.class/README.md | 0 .../NullChatListItem.class/instance/chatId.st | 4 ++++ .../instance/deselect.st | 2 ++ .../methodProperties.json | 6 +++++ .../NullChatListItem.class/properties.json | 14 +++++++++++ .../class/newWithCore..st | 2 +- .../instance/createInputBar..st | 13 +++++++++++ .../methodProperties.json | 1 + .../class/newWithChatName.andWidth..st | 2 +- .../TCUChatListItem.class/instance/chatId..st | 4 ++++ .../TCUChatListItem.class/instance/chatId.st | 4 ++++ .../instance/deselect.st | 4 ++++ .../TCUChatListItem.class/instance/select.st | 4 ++++ .../methodProperties.json | 6 ++++- .../TCUChatListItem.class/properties.json | 3 ++- .../class/newWithHeight.width..st | 9 ++++++++ .../instance/addInputBar.st | 23 +++++++++++++++++++ .../instance/addSendButton.st | 6 +++++ .../instance/addTextInputField.st | 8 +++++++ .../instance/addWelcomeMessage.st | 8 +++++++ .../instance/buttonSendPressed.st | 8 +++++++ .../TCUChatWindow.class/instance/clear.st | 5 ++++ .../instance/defaultInputfieldHeight.st | 4 ++++ .../TCUChatWindow.class/instance/inputBar..st | 4 ++++ .../TCUChatWindow.class/instance/inputBar.st | 4 ++++ .../instance/newChatSelected..st | 6 +++++ .../instance/selectedChat..st | 4 ++++ .../instance/selectedChat.st | 4 ++++ .../instance/textInputField..st | 4 ++++ .../instance/textInputField.st | 4 ++++ .../instance/welcomeMessage..st | 4 ++++ .../instance/welcomeMessage.st | 4 ++++ .../TCUChatWindow.class/methodProperties.json | 20 ++++++++++++++-- .../TCUChatWindow.class/properties.json | 6 ++++- .../TCUChatsList.class/instance/addItem..st | 6 +++-- .../instance/chatItemClicked.event.from..st | 20 ++++++++++++++++ .../TCUChatsList.class/instance/initialize.st | 3 ++- .../instance/selectedChat..st | 4 ++++ .../instance/selectedChat.st | 4 ++++ .../TCUChatsList.class/methodProperties.json | 9 +++++--- .../TCUChatsList.class/properties.json | 3 ++- .../TCUMain.class/instance/addChatWindow.st | 10 -------- .../TCUMain.class/instance/addChatsList.st | 7 +++--- .../TCUMain.class/instance/initialize.st | 4 +++- .../instance/initializeChatWindow.st | 11 +++++++++ .../instance/newChatSelected..st | 4 ++++ .../TCUMain.class/instance/newChatSelected.st | 4 ++++ .../TCUMain.class/instance/sendMessage..st | 4 ++++ .../instance/subscribeChatsList.st | 6 +++++ .../TCUMain.class/instance/updateChatsList.st | 2 +- .../TCUMain.class/methodProperties.json | 12 ++++++---- 55 files changed, 291 insertions(+), 35 deletions(-) create mode 100644 packages/TelegramClient-Core.package/TCCApp.class/instance/sendMessage.to..st create mode 100644 packages/TelegramClient-UI.package/NullChatListItem.class/README.md create mode 100644 packages/TelegramClient-UI.package/NullChatListItem.class/instance/chatId.st create mode 100644 packages/TelegramClient-UI.package/NullChatListItem.class/instance/deselect.st create mode 100644 packages/TelegramClient-UI.package/NullChatListItem.class/methodProperties.json create mode 100644 packages/TelegramClient-UI.package/NullChatListItem.class/properties.json create mode 100644 packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createInputBar..st create mode 100644 packages/TelegramClient-UI.package/TCUChatListItem.class/instance/chatId..st create mode 100644 packages/TelegramClient-UI.package/TCUChatListItem.class/instance/chatId.st create mode 100644 packages/TelegramClient-UI.package/TCUChatListItem.class/instance/deselect.st create mode 100644 packages/TelegramClient-UI.package/TCUChatListItem.class/instance/select.st create mode 100644 packages/TelegramClient-UI.package/TCUChatWindow.class/class/newWithHeight.width..st create mode 100644 packages/TelegramClient-UI.package/TCUChatWindow.class/instance/addInputBar.st create mode 100644 packages/TelegramClient-UI.package/TCUChatWindow.class/instance/addSendButton.st create mode 100644 packages/TelegramClient-UI.package/TCUChatWindow.class/instance/addTextInputField.st create mode 100644 packages/TelegramClient-UI.package/TCUChatWindow.class/instance/addWelcomeMessage.st create mode 100644 packages/TelegramClient-UI.package/TCUChatWindow.class/instance/buttonSendPressed.st create mode 100644 packages/TelegramClient-UI.package/TCUChatWindow.class/instance/clear.st create mode 100644 packages/TelegramClient-UI.package/TCUChatWindow.class/instance/defaultInputfieldHeight.st create mode 100644 packages/TelegramClient-UI.package/TCUChatWindow.class/instance/inputBar..st create mode 100644 packages/TelegramClient-UI.package/TCUChatWindow.class/instance/inputBar.st create mode 100644 packages/TelegramClient-UI.package/TCUChatWindow.class/instance/newChatSelected..st create mode 100644 packages/TelegramClient-UI.package/TCUChatWindow.class/instance/selectedChat..st create mode 100644 packages/TelegramClient-UI.package/TCUChatWindow.class/instance/selectedChat.st create mode 100644 packages/TelegramClient-UI.package/TCUChatWindow.class/instance/textInputField..st create mode 100644 packages/TelegramClient-UI.package/TCUChatWindow.class/instance/textInputField.st create mode 100644 packages/TelegramClient-UI.package/TCUChatWindow.class/instance/welcomeMessage..st create mode 100644 packages/TelegramClient-UI.package/TCUChatWindow.class/instance/welcomeMessage.st create mode 100644 packages/TelegramClient-UI.package/TCUChatsList.class/instance/chatItemClicked.event.from..st create mode 100644 packages/TelegramClient-UI.package/TCUChatsList.class/instance/selectedChat..st create mode 100644 packages/TelegramClient-UI.package/TCUChatsList.class/instance/selectedChat.st delete mode 100644 packages/TelegramClient-UI.package/TCUMain.class/instance/addChatWindow.st create mode 100644 packages/TelegramClient-UI.package/TCUMain.class/instance/initializeChatWindow.st create mode 100644 packages/TelegramClient-UI.package/TCUMain.class/instance/newChatSelected..st create mode 100644 packages/TelegramClient-UI.package/TCUMain.class/instance/newChatSelected.st create mode 100644 packages/TelegramClient-UI.package/TCUMain.class/instance/sendMessage..st create mode 100644 packages/TelegramClient-UI.package/TCUMain.class/instance/subscribeChatsList.st diff --git a/packages/TelegramClient-Core.package/TCCApp.class/instance/sendMessage.to..st b/packages/TelegramClient-Core.package/TCCApp.class/instance/sendMessage.to..st new file mode 100644 index 000000000..7dd397b52 --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCApp.class/instance/sendMessage.to..st @@ -0,0 +1,4 @@ +initialization +sendMessage: aString to: aChatId + + self chatsHandler sendMessage: aString to: aChatId. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCApp.class/methodProperties.json b/packages/TelegramClient-Core.package/TCCApp.class/methodProperties.json index d0d9a3244..acd559ad4 100644 --- a/packages/TelegramClient-Core.package/TCCApp.class/methodProperties.json +++ b/packages/TelegramClient-Core.package/TCCApp.class/methodProperties.json @@ -18,5 +18,6 @@ "initializeHandlers" : "rs 6/7/2020 21:51", "isClientAlive" : "js 5/28/2020 17:18", "receiveLoop" : "R.S 6/1/2020 15:24", + "sendMessage:to:" : "rs 6/13/2020 15:26", "sendPhoneNumber:" : "js 5/31/2020 20:08", "update" : "js 5/28/2020 17:28" } } diff --git a/packages/TelegramClient-Core.package/TCCChatsHandler.class/methodProperties.json b/packages/TelegramClient-Core.package/TCCChatsHandler.class/methodProperties.json index 909660796..7c0f986f1 100644 --- a/packages/TelegramClient-Core.package/TCCChatsHandler.class/methodProperties.json +++ b/packages/TelegramClient-Core.package/TCCChatsHandler.class/methodProperties.json @@ -8,4 +8,4 @@ "client" : "js 6/1/2020 14:44", "getChatInfos:" : "rs 6/6/2020 16:33", "getChats" : "rs 6/6/2020 16:36", - "sendMessage:to:" : "rs 6/13/2020 14:57" } } + "sendMessage:to:" : "rs 6/13/2020 15:40" } } diff --git a/packages/TelegramClient-Core.package/TCCTeleClient.class/class/newWithClient..st b/packages/TelegramClient-Core.package/TCCTeleClient.class/class/newWithClient..st index ebfc67add..5e754a98f 100644 --- a/packages/TelegramClient-Core.package/TCCTeleClient.class/class/newWithClient..st +++ b/packages/TelegramClient-Core.package/TCCTeleClient.class/class/newWithClient..st @@ -1,4 +1,4 @@ -as yet unclassified +creation newWithClient: anActualClient | specificClient | diff --git a/packages/TelegramClient-UI.package/NullChatListItem.class/README.md b/packages/TelegramClient-UI.package/NullChatListItem.class/README.md new file mode 100644 index 000000000..e69de29bb diff --git a/packages/TelegramClient-UI.package/NullChatListItem.class/instance/chatId.st b/packages/TelegramClient-UI.package/NullChatListItem.class/instance/chatId.st new file mode 100644 index 000000000..0bdae99ec --- /dev/null +++ b/packages/TelegramClient-UI.package/NullChatListItem.class/instance/chatId.st @@ -0,0 +1,4 @@ +accessing +chatId + + ^ -1 \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/NullChatListItem.class/instance/deselect.st b/packages/TelegramClient-UI.package/NullChatListItem.class/instance/deselect.st new file mode 100644 index 000000000..b17009e88 --- /dev/null +++ b/packages/TelegramClient-UI.package/NullChatListItem.class/instance/deselect.st @@ -0,0 +1,2 @@ +accessing +deselect \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/NullChatListItem.class/methodProperties.json b/packages/TelegramClient-UI.package/NullChatListItem.class/methodProperties.json new file mode 100644 index 000000000..d1a14347a --- /dev/null +++ b/packages/TelegramClient-UI.package/NullChatListItem.class/methodProperties.json @@ -0,0 +1,6 @@ +{ + "class" : { + }, + "instance" : { + "chatId" : "rs 6/13/2020 09:00", + "deselect" : "rs 6/13/2020 09:03" } } diff --git a/packages/TelegramClient-UI.package/NullChatListItem.class/properties.json b/packages/TelegramClient-UI.package/NullChatListItem.class/properties.json new file mode 100644 index 000000000..6a96de7ea --- /dev/null +++ b/packages/TelegramClient-UI.package/NullChatListItem.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "TelegramClient-UI", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "NullChatListItem", + "pools" : [ + ], + "super" : "TCUChatListItem", + "type" : "normal" } diff --git a/packages/TelegramClient-UI.package/TCUAuthentication.class/class/newWithCore..st b/packages/TelegramClient-UI.package/TCUAuthentication.class/class/newWithCore..st index 806d37952..4315d5317 100644 --- a/packages/TelegramClient-UI.package/TCUAuthentication.class/class/newWithCore..st +++ b/packages/TelegramClient-UI.package/TCUAuthentication.class/class/newWithCore..st @@ -1,4 +1,4 @@ -as yet unclassified +creation newWithCore: aCore ^ self basicNew diff --git a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createInputBar..st b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createInputBar..st new file mode 100644 index 000000000..154d5f1ae --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createInputBar..st @@ -0,0 +1,13 @@ +initialization +createInputBar: aString + + self inputField: (TextMorph new + contentsWrapped: aString asText; + extent: 150 @ 50; + borderColor: TCUDefaultValues colorGray; + borderWidth: 1; + center: self instructionLabel center + (0 @ 30); + hide; + crAction: [self buttonNextPressed]). + + self addMorph: self inputField. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUAuthentication.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUAuthentication.class/methodProperties.json index f6a34a712..f1255d6ac 100644 --- a/packages/TelegramClient-UI.package/TCUAuthentication.class/methodProperties.json +++ b/packages/TelegramClient-UI.package/TCUAuthentication.class/methodProperties.json @@ -19,6 +19,7 @@ "createButtonNext" : "rs 6/11/2020 18:54", "createButtonVerify" : "rs 6/11/2020 18:55", "createErrorLabel:" : "R.S 5/20/2020 13:50", + "createInputBar:" : "rs 6/13/2020 10:38", "createInputField:" : "rs 6/6/2020 17:40", "createLabel:" : "R.S 5/20/2020 13:51", "defaultExtent" : "R.S 5/20/2020 13:51", diff --git a/packages/TelegramClient-UI.package/TCUChatListItem.class/class/newWithChatName.andWidth..st b/packages/TelegramClient-UI.package/TCUChatListItem.class/class/newWithChatName.andWidth..st index b01cee454..bf4ac83e1 100644 --- a/packages/TelegramClient-UI.package/TCUChatListItem.class/class/newWithChatName.andWidth..st +++ b/packages/TelegramClient-UI.package/TCUChatListItem.class/class/newWithChatName.andWidth..st @@ -1,4 +1,4 @@ -as yet unclassified +creation newWithChatName: aChatName andWidth: aWidth ^ self basicNew diff --git a/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/chatId..st b/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/chatId..st new file mode 100644 index 000000000..eccac9c81 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/chatId..st @@ -0,0 +1,4 @@ +initialization +chatId: aNumber + + chatId := aNumber. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/chatId.st b/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/chatId.st new file mode 100644 index 000000000..0911d2fda --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/chatId.st @@ -0,0 +1,4 @@ +initialization +chatId + + ^ chatId \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/deselect.st b/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/deselect.st new file mode 100644 index 000000000..7a469f0bc --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/deselect.st @@ -0,0 +1,4 @@ +initialization +deselect + + self color: Color white. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/select.st b/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/select.st new file mode 100644 index 000000000..7660f7981 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/select.st @@ -0,0 +1,4 @@ +initialization +select + + self color: TCUDefaultValues colorLightBlue. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatListItem.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUChatListItem.class/methodProperties.json index d95338a8a..7606eca65 100644 --- a/packages/TelegramClient-UI.package/TCUChatListItem.class/methodProperties.json +++ b/packages/TelegramClient-UI.package/TCUChatListItem.class/methodProperties.json @@ -4,7 +4,11 @@ "instance" : { "addBorder" : "R.S 6/1/2020 22:20", "addTitle" : "R.S 6/1/2020 14:53", + "chatId" : "rs 6/13/2020 08:55", + "chatId:" : "rs 6/13/2020 08:55", "chatName" : "R.S 6/1/2020 14:22", "chatName:" : "R.S 6/1/2020 14:21", "defaultHeight" : "R.S 6/1/2020 14:22", - "initialize" : "R.S 6/4/2020 09:51" } } + "deselect" : "rs 6/13/2020 09:02", + "initialize" : "rs 6/13/2020 08:54", + "select" : "rs 6/13/2020 08:49" } } diff --git a/packages/TelegramClient-UI.package/TCUChatListItem.class/properties.json b/packages/TelegramClient-UI.package/TCUChatListItem.class/properties.json index 9db8900e4..914d89409 100644 --- a/packages/TelegramClient-UI.package/TCUChatListItem.class/properties.json +++ b/packages/TelegramClient-UI.package/TCUChatListItem.class/properties.json @@ -6,7 +6,8 @@ ], "commentStamp" : "", "instvars" : [ - "chatName" ], + "chatName", + "chatId" ], "name" : "TCUChatListItem", "pools" : [ ], diff --git a/packages/TelegramClient-UI.package/TCUChatWindow.class/class/newWithHeight.width..st b/packages/TelegramClient-UI.package/TCUChatWindow.class/class/newWithHeight.width..st new file mode 100644 index 000000000..72a4890f1 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUChatWindow.class/class/newWithHeight.width..st @@ -0,0 +1,9 @@ +creation +newWithHeight: aHeight width: aWidth + + ^ self basicNew + initialize; + height: aHeight; + width: aWidth; + addWelcomeMessage; + addInputBar. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/addInputBar.st b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/addInputBar.st new file mode 100644 index 000000000..1af40848a --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/addInputBar.st @@ -0,0 +1,23 @@ +initialization +addInputBar + + self inputBar: (RectangleMorph new + borderWidth: 0; + color: Color white; + width: self width; + height: self defaultInputfieldHeight; + position: (self position + (0 @ (self height - self defaultInputfieldHeight))); + layoutPolicy: TableLayout new; + listDirection: #leftToRight; + layoutInset: 2; + vResizing: #shrinkWrap; + cellInset: 12; + hide). + + self + addMorph: self inputBar; + addSendButton; + addTextInputField. + + + \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/addSendButton.st b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/addSendButton.st new file mode 100644 index 000000000..3bf13b463 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/addSendButton.st @@ -0,0 +1,6 @@ +initialization +addSendButton + + self inputBar addMorph: (TCUButton new + text: 'Send'; + on: #mouseDown send: #buttonSendPressed to: self). \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/addTextInputField.st b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/addTextInputField.st new file mode 100644 index 000000000..c6168fdc4 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/addTextInputField.st @@ -0,0 +1,8 @@ +initialization +addTextInputField + + self textInputField: (TextMorph new + contentsWrapped: ' ' asText; + extent: ((self inputBar width - 200) @ self defaultInputfieldHeight)). + + self inputBar addMorph: self textInputField. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/addWelcomeMessage.st b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/addWelcomeMessage.st new file mode 100644 index 000000000..84b692a44 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/addWelcomeMessage.st @@ -0,0 +1,8 @@ +initialization +addWelcomeMessage + + self + welcomeMessage: (TextMorph new + contents: 'Welcome!' asText); + addMorphCentered: self welcomeMessage. + \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/buttonSendPressed.st b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/buttonSendPressed.st new file mode 100644 index 000000000..97e5e79bb --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/buttonSendPressed.st @@ -0,0 +1,8 @@ +initialization +buttonSendPressed + + self triggerEvent: #buttonSendPressed with: (Dictionary newFrom: { + 'chatId' -> self selectedChat chatId. + 'message' -> self textInputField contents}). + + self textInputField contents: ' '. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/clear.st b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/clear.st new file mode 100644 index 000000000..e3197a257 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/clear.st @@ -0,0 +1,5 @@ +initialization +clear + + self inputBar hide. + self welcomeMessage show. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/defaultInputfieldHeight.st b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/defaultInputfieldHeight.st new file mode 100644 index 000000000..5fb7c2f63 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/defaultInputfieldHeight.st @@ -0,0 +1,4 @@ +initialization +defaultInputfieldHeight + + ^ 70 \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/inputBar..st b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/inputBar..st new file mode 100644 index 000000000..408f81a82 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/inputBar..st @@ -0,0 +1,4 @@ +accessing +inputBar: aMorph + + inputBar := aMorph. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/inputBar.st b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/inputBar.st new file mode 100644 index 000000000..1777c439d --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/inputBar.st @@ -0,0 +1,4 @@ +accessing +inputBar + + ^ inputBar \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/newChatSelected..st b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/newChatSelected..st new file mode 100644 index 000000000..3bb32c062 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/newChatSelected..st @@ -0,0 +1,6 @@ +initialization +newChatSelected: aChat + + self welcomeMessage hide. + self inputBar show. + self selectedChat: aChat. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/selectedChat..st b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/selectedChat..st new file mode 100644 index 000000000..cef8356a6 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/selectedChat..st @@ -0,0 +1,4 @@ +initialization +selectedChat: aChat + + selectedChat := aChat. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/selectedChat.st b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/selectedChat.st new file mode 100644 index 000000000..c665c9757 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/selectedChat.st @@ -0,0 +1,4 @@ +initialization +selectedChat + + ^ selectedChat \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/textInputField..st b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/textInputField..st new file mode 100644 index 000000000..ddeee619d --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/textInputField..st @@ -0,0 +1,4 @@ +accessing +textInputField: aTextMorph + + textInputField := aTextMorph. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/textInputField.st b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/textInputField.st new file mode 100644 index 000000000..cc604305d --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/textInputField.st @@ -0,0 +1,4 @@ +accessing +textInputField + + ^ textInputField \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/welcomeMessage..st b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/welcomeMessage..st new file mode 100644 index 000000000..30fc4275b --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/welcomeMessage..st @@ -0,0 +1,4 @@ +accessing +welcomeMessage: aMorph + + welcomeMessage := aMorph. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/welcomeMessage.st b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/welcomeMessage.st new file mode 100644 index 000000000..37403ded1 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/welcomeMessage.st @@ -0,0 +1,4 @@ +accessing +welcomeMessage + + ^ welcomeMessage \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatWindow.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUChatWindow.class/methodProperties.json index b4a306d78..86249d62d 100644 --- a/packages/TelegramClient-UI.package/TCUChatWindow.class/methodProperties.json +++ b/packages/TelegramClient-UI.package/TCUChatWindow.class/methodProperties.json @@ -1,5 +1,21 @@ { "class" : { - }, + "newWithHeight:width:" : "rs 6/13/2020 10:37" }, "instance" : { - "initialize" : "R.S 6/1/2020 14:23" } } + "addInputBar" : "rs 6/13/2020 11:10", + "addSendButton" : "rs 6/13/2020 15:20", + "addTextInputField" : "rs 6/13/2020 11:11", + "addWelcomeMessage" : "rs 6/13/2020 09:36", + "buttonSendPressed" : "rs 6/13/2020 15:39", + "clear" : "rs 6/13/2020 10:40", + "defaultInputfieldHeight" : "rs 6/12/2020 20:03", + "initialize" : "rs 6/13/2020 15:34", + "inputBar" : "rs 6/13/2020 10:38", + "inputBar:" : "rs 6/13/2020 10:38", + "newChatSelected:" : "rs 6/13/2020 10:39", + "selectedChat" : "rs 6/13/2020 09:11", + "selectedChat:" : "rs 6/13/2020 09:11", + "textInputField" : "rs 6/13/2020 10:41", + "textInputField:" : "rs 6/13/2020 10:42", + "welcomeMessage" : "rs 6/13/2020 09:36", + "welcomeMessage:" : "rs 6/13/2020 09:36" } } diff --git a/packages/TelegramClient-UI.package/TCUChatWindow.class/properties.json b/packages/TelegramClient-UI.package/TCUChatWindow.class/properties.json index 8e851e445..baed34bdf 100644 --- a/packages/TelegramClient-UI.package/TCUChatWindow.class/properties.json +++ b/packages/TelegramClient-UI.package/TCUChatWindow.class/properties.json @@ -6,7 +6,11 @@ ], "commentStamp" : "", "instvars" : [ - ], + "inputBar", + "selectedChat", + "scrollableMessageField", + "welcomeMessage", + "textInputField" ], "name" : "TCUChatWindow", "pools" : [ ], diff --git a/packages/TelegramClient-UI.package/TCUChatsList.class/instance/addItem..st b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/addItem..st index 949a6edbe..36e8bf874 100644 --- a/packages/TelegramClient-UI.package/TCUChatsList.class/instance/addItem..st +++ b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/addItem..st @@ -1,8 +1,10 @@ accessing -addItem: aTitle +addItem: aChat | item | - item := TCUChatListItem newWithChatName: aTitle andWidth: self width. + item := TCUChatListItem newWithChatName: aChat title andWidth: self width. + item chatId: aChat id. + item on: #mouseDown send: #chatItemClicked:event:from: to: self withValue: item. self items add: item. self addMorph: item. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatsList.class/instance/chatItemClicked.event.from..st b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/chatItemClicked.event.from..st new file mode 100644 index 000000000..225d53b06 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/chatItemClicked.event.from..st @@ -0,0 +1,20 @@ +initialization +chatItemClicked: aChatListItem event: anEvent from: aSender + + self selectedChat deselect. + + (aChatListItem chatId~= self selectedChat chatId) + ifTrue: [ + aChatListItem select. + self + selectedChat: aChatListItem; + triggerEvent: #newChatSelected with: aChatListItem] + ifFalse: [ + self + selectedChat: NullChatListItem new; + triggerEvent: #chatDeselected] + + + + + \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatsList.class/instance/initialize.st b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/initialize.st index e3024ef6c..b1fce8d19 100644 --- a/packages/TelegramClient-UI.package/TCUChatsList.class/instance/initialize.st +++ b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/initialize.st @@ -8,4 +8,5 @@ initialize color: Color white; borderWidth: 0; initializeLayout; - items: OrderedCollection new. \ No newline at end of file + items: OrderedCollection new; + selectedChat: NullChatListItem new. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatsList.class/instance/selectedChat..st b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/selectedChat..st new file mode 100644 index 000000000..09b6e2160 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/selectedChat..st @@ -0,0 +1,4 @@ +accessing +selectedChat: aChatListItem + + selectedChat := aChatListItem. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatsList.class/instance/selectedChat.st b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/selectedChat.st new file mode 100644 index 000000000..83fe8d278 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/selectedChat.st @@ -0,0 +1,4 @@ +accessing +selectedChat + + ^ selectedChat \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatsList.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUChatsList.class/methodProperties.json index b26b31904..9ee251a3a 100644 --- a/packages/TelegramClient-UI.package/TCUChatsList.class/methodProperties.json +++ b/packages/TelegramClient-UI.package/TCUChatsList.class/methodProperties.json @@ -2,10 +2,13 @@ "class" : { }, "instance" : { - "addItem:" : "R.S 6/4/2020 09:52", + "addItem:" : "rs 6/13/2020 16:16", + "chatItemClicked:event:from:" : "rs 6/13/2020 15:37", "clearChats" : "js 5/29/2020 12:15", "defaultWidth" : "R.S 6/1/2020 14:24", - "initialize" : "R.S 6/3/2020 21:19", + "initialize" : "rs 6/13/2020 09:02", "initializeLayout" : "R.S 6/1/2020 15:00", "items" : "R.S 6/3/2020 21:15", - "items:" : "R.S 6/3/2020 21:15" } } + "items:" : "R.S 6/3/2020 21:15", + "selectedChat" : "rs 6/13/2020 08:51", + "selectedChat:" : "rs 6/13/2020 08:51" } } diff --git a/packages/TelegramClient-UI.package/TCUChatsList.class/properties.json b/packages/TelegramClient-UI.package/TCUChatsList.class/properties.json index 400095e6f..ce9d266ce 100644 --- a/packages/TelegramClient-UI.package/TCUChatsList.class/properties.json +++ b/packages/TelegramClient-UI.package/TCUChatsList.class/properties.json @@ -6,7 +6,8 @@ ], "commentStamp" : "", "instvars" : [ - "items" ], + "items", + "selectedChat" ], "name" : "TCUChatsList", "pools" : [ ], diff --git a/packages/TelegramClient-UI.package/TCUMain.class/instance/addChatWindow.st b/packages/TelegramClient-UI.package/TCUMain.class/instance/addChatWindow.st deleted file mode 100644 index f011584a9..000000000 --- a/packages/TelegramClient-UI.package/TCUMain.class/instance/addChatWindow.st +++ /dev/null @@ -1,10 +0,0 @@ -initialization -addChatWindow - - self - chatWindow: (TCUChatWindow new - height: (self height - self defaultHeaderHeight); - width: (self width - self chatsList width); - position: (self position + (self chatsList width @ self defaultHeaderHeight))); - addMorph: self chatWindow. - \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMain.class/instance/addChatsList.st b/packages/TelegramClient-UI.package/TCUMain.class/instance/addChatsList.st index 881d8ea4e..323e1d15b 100644 --- a/packages/TelegramClient-UI.package/TCUMain.class/instance/addChatsList.st +++ b/packages/TelegramClient-UI.package/TCUMain.class/instance/addChatsList.st @@ -1,8 +1,9 @@ initialization addChatsList + + self chatsList: (TCUChatsList new + height: (self height - self defaultHeaderHeight); + position: (self position + (0 @ self defaultHeaderHeight))). self - chatsList: (TCUChatsList new - height: (self height - self defaultHeaderHeight); - position: (self position + (0 @ self defaultHeaderHeight))); addMorph: self chatsList . \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMain.class/instance/initialize.st b/packages/TelegramClient-UI.package/TCUMain.class/instance/initialize.st index eee975b26..0ff8a7b54 100644 --- a/packages/TelegramClient-UI.package/TCUMain.class/instance/initialize.st +++ b/packages/TelegramClient-UI.package/TCUMain.class/instance/initialize.st @@ -6,7 +6,9 @@ initialize extent: self defaultExtent; borderWidth: 0; addHeader; + chatWindow: TCUChatWindow new; addChatsList; - addChatWindow; + initializeChatWindow; + subscribeChatsList; subscribeCore; clipSubmorphs: true. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMain.class/instance/initializeChatWindow.st b/packages/TelegramClient-UI.package/TCUMain.class/instance/initializeChatWindow.st new file mode 100644 index 000000000..90da0ef37 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUMain.class/instance/initializeChatWindow.st @@ -0,0 +1,11 @@ +initialization +initializeChatWindow + + self chatWindow: (TCUChatWindow + newWithHeight: (self height - self defaultHeaderHeight) + width: (self width - self chatsList width)). + + self chatWindow + position: (self position + (self chatsList width @ self defaultHeaderHeight)); + when: #buttonSendPressed send: #sendMessage: to: self. + self addMorph: self chatWindow. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMain.class/instance/newChatSelected..st b/packages/TelegramClient-UI.package/TCUMain.class/instance/newChatSelected..st new file mode 100644 index 000000000..a813c21c8 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUMain.class/instance/newChatSelected..st @@ -0,0 +1,4 @@ +initialization +newChatSelected: aChat + + self chatWindow newChatSelected: aChat. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMain.class/instance/newChatSelected.st b/packages/TelegramClient-UI.package/TCUMain.class/instance/newChatSelected.st new file mode 100644 index 000000000..b8b4eaaa3 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUMain.class/instance/newChatSelected.st @@ -0,0 +1,4 @@ +initialization +newChatSelected + + self chatWindow newChatSelected: self chatsList selectedChat. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMain.class/instance/sendMessage..st b/packages/TelegramClient-UI.package/TCUMain.class/instance/sendMessage..st new file mode 100644 index 000000000..f43b9034b --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUMain.class/instance/sendMessage..st @@ -0,0 +1,4 @@ +initialization +sendMessage: aDictionary + + self core sendMessage: (aDictionary at: 'message') to: (aDictionary at: 'chatId'). \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMain.class/instance/subscribeChatsList.st b/packages/TelegramClient-UI.package/TCUMain.class/instance/subscribeChatsList.st new file mode 100644 index 000000000..3c3fcb513 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUMain.class/instance/subscribeChatsList.st @@ -0,0 +1,6 @@ +initialization +subscribeChatsList + + self chatsList + when: #chatDeselected send: #clear to: self chatWindow; + when: #newChatSelected send: #newChatSelected: to: self chatWindow with: chatsList selectedChat. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMain.class/instance/updateChatsList.st b/packages/TelegramClient-UI.package/TCUMain.class/instance/updateChatsList.st index 76717b8fc..6232262f7 100644 --- a/packages/TelegramClient-UI.package/TCUMain.class/instance/updateChatsList.st +++ b/packages/TelegramClient-UI.package/TCUMain.class/instance/updateChatsList.st @@ -9,4 +9,4 @@ updateChatsList chats do: [:aChat| i < 10 ifTrue: [ aChat title isNil not ifTrue: [ - self chatsList addItem: aChat title.]]]. \ No newline at end of file + self chatsList addItem: aChat]]]. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMain.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUMain.class/methodProperties.json index 63cc50b7d..da5ee94c2 100644 --- a/packages/TelegramClient-UI.package/TCUMain.class/methodProperties.json +++ b/packages/TelegramClient-UI.package/TCUMain.class/methodProperties.json @@ -2,8 +2,7 @@ "class" : { "newWithCore:" : "f.w. 6/3/2020 20:31" }, "instance" : { - "addChatWindow" : "R.S 6/1/2020 14:26", - "addChatsList" : "R.S 6/1/2020 14:26", + "addChatsList" : "rs 6/13/2020 16:15", "addHeader" : "f.w. 6/3/2020 20:23", "addTitle:to:" : "R.S 6/1/2020 14:26", "chatWindow" : "R.S 6/1/2020 14:27", @@ -15,7 +14,12 @@ "defaultExtent" : "R.S 6/1/2020 14:27", "defaultHeaderHeight" : "R.S 6/1/2020 14:27", "delete" : "R.S 6/3/2020 20:54", - "initialize" : "R.S 6/3/2020 21:21", + "initialize" : "rs 6/13/2020 09:44", + "initializeChatWindow" : "rs 6/13/2020 11:36", "logout" : "js 5/29/2020 09:35", + "newChatSelected" : "rs 6/13/2020 09:20", + "newChatSelected:" : "rs 6/13/2020 15:38", + "sendMessage:" : "rs 6/13/2020 15:15", + "subscribeChatsList" : "rs 6/13/2020 09:44", "subscribeCore" : "R.S 6/3/2020 21:03", - "updateChatsList" : "rs 6/8/2020 14:01" } } + "updateChatsList" : "rs 6/13/2020 08:45" } } From e9dafab450bd04e8474872c796234052d04748b4 Mon Sep 17 00:00:00 2001 From: Jonas Schmidt <43679965+schmidtjonas@users.noreply.github.com> Date: Sat, 13 Jun 2020 19:39:05 +0200 Subject: [PATCH 10/81] Custom Linting Tests and Refactoring of Testing Package (#140) * started editing linting rules * refactoring linter tests * some linter fixes * formatting linter * no more testing for ffi methods * wip linting * custom linter tests yay * better custom linter tests * more linter tests * class comments and scoped environment for faster testing * some fixes * linter fixes * refactoring * refactored to make all linter tests happy * final linting changes * removed two tests --- .../README.md | 1 + .../properties.json | 2 +- .../TCCApp.class/README.md | 1 + .../TCCApp.class/instance/client..st | 4 +- .../TCCApp.class/instance/handleEvent..st | 10 +-- .../TCCApp.class/instance/initialize.st | 2 +- .../TCCApp.class/instance/initializeClient.st | 2 +- .../TCCApp.class/instance/sendPhoneNumber..st | 2 +- .../TCCApp.class/instance/update.st | 4 +- .../TCCApp.class/methodProperties.json | 12 +-- .../TCCApp.class/properties.json | 3 +- .../TCCAuthHandler.class/README.md | 1 + .../TCCAuthHandler.class/instance/app.st | 2 +- .../instance/checkAuthenticationCode..st | 4 +- .../instance/handleEvent..st | 14 +-- .../instance/isAuthStateClosed.st | 2 +- .../instance/isAuthorizationStateReady.st | 4 +- .../instance/isAwaitingAuthCode.st | 3 +- .../instance/sendPhoneNumber..st | 2 +- .../methodProperties.json | 14 +-- .../TCCAuthHandler.class/properties.json | 2 +- .../TCCChat.class/README.md | 1 + .../TCCChat.class/instance/order..st | 5 +- .../TCCChat.class/instance/order.st | 1 + .../TCCChat.class/methodProperties.json | 4 +- .../TCCChat.class/properties.json | 2 +- .../TCCChats.class/README.md | 1 + .../TCCChats.class/properties.json | 2 +- .../TCCChatsHandler.class/README.md | 1 + .../instance/addChat..st | 4 +- .../instance/getChatInfos..st | 6 -- .../methodProperties.json | 3 +- .../TCCChatsHandler.class/properties.json | 2 +- .../TCCFFIClient.class/README.md | 1 + .../TCCFFIClient.class/instance/create.st | 2 +- .../instance/execute.with..st | 2 +- .../TCCFFIClient.class/instance/free..st | 2 +- .../instance/receive.with..st | 2 +- .../TCCFFIClient.class/instance/send.with..st | 2 +- .../TCCFFIClient.class/methodProperties.json | 10 +-- .../TCCFFIClient.class/properties.json | 2 +- .../TCCLinuxClient.class/README.md | 1 + .../TCCLinuxClient.class/properties.json | 2 +- .../TCCMacClient.class/README.md | 1 + .../TCCMacClient.class/properties.json | 2 +- .../TCCRequest.class/README.md | 1 + .../TCCRequest.class/instance/asString.st | 4 +- .../TCCRequest.class/methodProperties.json | 2 +- .../TCCRequest.class/properties.json | 2 +- .../TCCTeleClient.class/README.md | 1 + .../class/newWithClient..st | 6 +- .../TCCTeleClient.class/instance/receive..st | 5 +- .../TCCTeleClient.class/methodProperties.json | 4 +- .../TCCTeleClient.class/properties.json | 3 +- .../TCCTeleClientFactory.class/README.md | 1 + .../instance/createClient..st | 2 +- .../methodProperties.json | 2 +- .../properties.json | 2 +- .../TCCWindowsClient.class/README.md | 1 + .../TCCWindowsClient.class/properties.json | 2 +- .../README.md | 1 + .../properties.json | 2 +- .../TCTFFIClientMock.class/README.md | 1 + .../instance/created..st | 4 + .../TCTFFIClientMock.class/instance/freed..st | 4 + .../instance/setCreated.st | 2 +- .../instance/setFreed.st | 2 +- .../methodProperties.json | 6 +- .../TCTFFIClientMock.class/properties.json | 2 +- .../instance/ArbitraryCodeRule..st | 12 --- .../instance/PrecedenceRuleForMath.st | 4 - .../instance/arbitraryCodeRule..st | 4 + .../instance/arbitraryCodeRule.plugIn..st | 15 ++++ .../instance/classTestObjects..st | 4 + .../instance/classTestObjects.st | 4 + .../TCTLinterTests.class/instance/classes..st | 4 + .../TCTLinterTests.class/instance/classes.st | 4 + .../instance/environmentFor.withRule..st | 6 ++ .../instance/ifTrueReturnsRule.st | 4 - .../instance/initialize.st | 14 +-- .../instance/isLineWithOnlyTabsAndSpaces..st | 4 + .../instance/methodTestObjects.st | 4 + .../instance/methodsLinesDo..st | 5 ++ .../instance/smallLintContains.st | 4 - .../instance/smallLintSentNotImplemented.st | 4 - .../instance/smallLintUndeclaredReference.st | 4 - .../instance/testCorrectClassPrefix.st | 12 +++ .../instance/testIfTrueReturnsRule.st | 5 ++ .../instance/testInstanceVarAccess.st | 4 + .../instance/testLongMethods.st | 4 + .../instance/testMethodHasEmptyLine.st | 5 ++ .../instance/testMethodNameIsLowerCase.st | 4 + .../instance/testMethodNoEmptyLineAtEnd.st | 4 + .../testMethodNoLinesWithOnlyTabsAndSpaces.st | 5 ++ .../testMethodNoTrailingWhitespaces.st | 5 ++ ...stMethodNoTwoWhitespacesNextToEachOther.st | 5 ++ .../testMethodNotTooManyEmptyLines.st | 7 ++ .../testMethodParamsHaveMeaningFulNames.st | 4 + .../instance/testNoClassComments.st | 4 + .../instance/testNoDotAfterReturn.st | 9 ++ .../instance/testNoUnclassifiedMethods.st | 7 +- .../instance/testNoUnconditionalRecursion.st | 7 +- .../instance/testNoUnreferencedVariables.st | 5 +- .../instance/testSmallLintContains.st | 5 ++ .../testTemporaryVariableCapitalization.st | 7 +- ...estsmallLintClassVariableCapitalization.st | 9 +- .../testsmallLintCodeCruftLeftInMethods.st | 9 +- .../testsmallLintCollectSelectNotUsed.st | 7 +- .../instance/testsmallLintConsistencyCheck.st | 9 +- .../testsmallLintDefinesEqualNotHash.st | 9 +- .../testsmallLintEmptyExceptionHandler.st | 9 +- .../instance/testsmallLintEqualNotUsed.st | 9 +- .../testsmallLintFloatEqualityComparison.st | 7 +- .../testsmallLintLiteralArrayCharacters.st | 9 +- .../testsmallLintMethodModifierOverride.st | 9 +- ...testsmallLintMissingTranslationsInMenus.st | 9 +- .../testsmallLintModifiesCollection.st | 9 +- ...testsmallLintOnlyReadOrWrittenTemporary.st | 4 + .../testsmallLintReturnsBooleanAndOther.st | 9 +- ...estsmallLintSendsUnknownMessageToGlobal.st | 9 +- .../instance/testsmallLintSizeCheck.st | 9 +- .../testsmallLintStringConcatenation.st | 9 +- .../testsmallLintTempVarOverridesInstVar.st | 9 +- ...mallLintTemporaryVariableCapitalization.st | 9 +- .../testsmallLintTempsReadBeforeWritten.st | 9 +- .../instance/testsmallLintUnoptimizedAndOr.st | 9 +- .../instance/testsmallLintUnpackagedCode.st | 9 +- .../instance/testsmallLintUsesAdd.st | 9 +- .../instance/testsmallLintUsesTrue.st | 9 +- .../methodProperties.json | 88 ++++++++++++------- .../TCTLinterTests.class/properties.json | 3 +- .../TCTScopedEnvironment.class/README.md | 1 + .../class/newFor.test.plugIn..st | 4 + .../instance/fetchClasses..st | 7 ++ .../initializeForClasses.test.plugIn..st | 10 +++ .../instance/loadTest.plugIn..st | 6 ++ .../instance/systemClasses..st | 4 + .../methodProperties.json | 8 ++ .../properties.json | 14 +++ .../instance/testClientDestroysHandle.st | 7 +- ...tFactoryCreatesCorrectClientForPlatform.st | 10 +-- .../methodProperties.json | 4 +- .../NullChatListItem.class/README.md | 0 .../TCUApp.class/README.md | 1 + .../TCUApp.class/instance/initialize.st | 2 +- .../TCUApp.class/methodProperties.json | 2 +- .../TCUApp.class/properties.json | 2 +- .../TCUAuthentication.class/README.md | 1 + .../instance/addHeader.st | 4 +- .../instance/addTitle.to..st | 2 +- .../instance/buttonNextPressed.st | 2 +- .../TCUAuthentication.class/instance/core.st | 3 +- .../instance/createButtonBack.st | 8 +- .../instance/createButtonNext.st | 8 +- .../instance/createButtonVerify.st | 2 +- .../instance/createErrorLabel..st | 5 +- .../instance/createInputBar..st | 13 --- .../instance/createInputField..st | 8 +- .../instance/createLabel..st | 2 +- .../instance/initialize.st | 2 +- .../instance/logInCompleted.st | 2 +- .../instance/showFirstStep.st | 4 +- .../instance/showLoadingMessage.st | 6 +- .../instance/showSecondStep.st | 8 +- .../methodProperties.json | 31 ++++--- .../TCUAuthentication.class/properties.json | 4 +- .../TCUButton.class/README.md | 1 + .../TCUButton.class/instance/initialize.st | 1 + .../TCUButton.class/instance/text..st | 2 +- .../TCUButton.class/methodProperties.json | 4 +- .../TCUButton.class/properties.json | 2 +- .../TCUChatListItem.class/README.md | 1 + .../class/newWithChatName.andWidth..st | 4 +- .../instance/addTitle.st | 7 +- .../instance/chatName..st | 4 +- .../instance/defaultHeight.st | 2 +- .../instance/initialize.st | 2 +- .../methodProperties.json | 10 +-- .../TCUChatListItem.class/properties.json | 2 +- .../TCUChatWindow.class/README.md | 1 + .../class/newWithHeight.width..st | 2 +- .../instance/addInputBar.st | 21 +---- .../instance/addSendButton.st | 2 +- .../instance/addTextInputField.st | 2 +- .../instance/addWelcomeMessage.st | 5 +- .../instance/buttonSendPressed.st | 4 +- .../instance/createInputBar.st | 15 ++++ .../instance/initialize.st | 2 +- .../instance/newChatSelected..st | 2 +- .../TCUChatWindow.class/methodProperties.json | 17 ++-- .../TCUChatWindow.class/properties.json | 3 +- .../TCUChatsList.class/README.md | 1 + .../TCUChatsList.class/instance/addItem..st | 2 +- .../instance/chatItemClicked.event.from..st | 23 ++--- .../TCUChatsList.class/instance/clearChats.st | 3 +- .../TCUChatsList.class/instance/initialize.st | 4 +- .../instance/initializeLayout.st | 2 +- .../TCUChatsList.class/instance/items..st | 5 +- .../TCUChatsList.class/instance/items.st | 1 + .../TCUChatsList.class/methodProperties.json | 14 +-- .../TCUChatsList.class/properties.json | 2 +- .../TCUDefaultValues.class/README.md | 1 + .../TCUDefaultValues.class/properties.json | 2 +- .../TCUMain.class/README.md | 1 + .../TCUMain.class/instance/addChatsList.st | 8 +- .../TCUMain.class/instance/addHeader.st | 19 ++-- .../TCUMain.class/instance/addTitle.to..st | 6 +- .../TCUMain.class/instance/core..st | 2 +- .../TCUMain.class/instance/core.st | 2 +- .../instance/createHeaderMorph.st | 7 ++ .../TCUMain.class/instance/initialize.st | 2 +- .../instance/initializeChatWindow.st | 8 +- .../TCUMain.class/instance/logout.st | 2 +- .../instance/subscribeChatsList.st | 4 +- .../TCUMain.class/instance/updateChatsList.st | 15 ++-- .../TCUMain.class/methodProperties.json | 21 ++--- .../TCUMain.class/properties.json | 2 +- .../TCUNullChatListItem.class/README.md | 1 + .../instance/chatId.st | 0 .../instance/deselect.st | 0 .../methodProperties.json | 0 .../properties.json | 4 +- 222 files changed, 701 insertions(+), 498 deletions(-) delete mode 100644 packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/getChatInfos..st create mode 100644 packages/TelegramClient-Tests.package/TCTFFIClientMock.class/instance/created..st create mode 100644 packages/TelegramClient-Tests.package/TCTFFIClientMock.class/instance/freed..st delete mode 100644 packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/ArbitraryCodeRule..st delete mode 100644 packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/PrecedenceRuleForMath.st create mode 100644 packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/arbitraryCodeRule..st create mode 100644 packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/arbitraryCodeRule.plugIn..st create mode 100644 packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/classTestObjects..st create mode 100644 packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/classTestObjects.st create mode 100644 packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/classes..st create mode 100644 packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/classes.st create mode 100644 packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/environmentFor.withRule..st delete mode 100644 packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/ifTrueReturnsRule.st create mode 100644 packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/isLineWithOnlyTabsAndSpaces..st create mode 100644 packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/methodTestObjects.st create mode 100644 packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/methodsLinesDo..st delete mode 100644 packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/smallLintContains.st delete mode 100644 packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/smallLintSentNotImplemented.st delete mode 100644 packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/smallLintUndeclaredReference.st create mode 100644 packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testCorrectClassPrefix.st create mode 100644 packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testIfTrueReturnsRule.st create mode 100644 packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testInstanceVarAccess.st create mode 100644 packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testLongMethods.st create mode 100644 packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testMethodHasEmptyLine.st create mode 100644 packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testMethodNameIsLowerCase.st create mode 100644 packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testMethodNoEmptyLineAtEnd.st create mode 100644 packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testMethodNoLinesWithOnlyTabsAndSpaces.st create mode 100644 packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testMethodNoTrailingWhitespaces.st create mode 100644 packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testMethodNoTwoWhitespacesNextToEachOther.st create mode 100644 packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testMethodNotTooManyEmptyLines.st create mode 100644 packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testMethodParamsHaveMeaningFulNames.st create mode 100644 packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testNoClassComments.st create mode 100644 packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testNoDotAfterReturn.st create mode 100644 packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testSmallLintContains.st create mode 100644 packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testsmallLintOnlyReadOrWrittenTemporary.st create mode 100644 packages/TelegramClient-Tests.package/TCTScopedEnvironment.class/README.md create mode 100644 packages/TelegramClient-Tests.package/TCTScopedEnvironment.class/class/newFor.test.plugIn..st create mode 100644 packages/TelegramClient-Tests.package/TCTScopedEnvironment.class/instance/fetchClasses..st create mode 100644 packages/TelegramClient-Tests.package/TCTScopedEnvironment.class/instance/initializeForClasses.test.plugIn..st create mode 100644 packages/TelegramClient-Tests.package/TCTScopedEnvironment.class/instance/loadTest.plugIn..st create mode 100644 packages/TelegramClient-Tests.package/TCTScopedEnvironment.class/instance/systemClasses..st create mode 100644 packages/TelegramClient-Tests.package/TCTScopedEnvironment.class/methodProperties.json create mode 100644 packages/TelegramClient-Tests.package/TCTScopedEnvironment.class/properties.json delete mode 100644 packages/TelegramClient-UI.package/NullChatListItem.class/README.md delete mode 100644 packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createInputBar..st create mode 100644 packages/TelegramClient-UI.package/TCUChatWindow.class/instance/createInputBar.st create mode 100644 packages/TelegramClient-UI.package/TCUMain.class/instance/createHeaderMorph.st create mode 100644 packages/TelegramClient-UI.package/TCUNullChatListItem.class/README.md rename packages/TelegramClient-UI.package/{NullChatListItem.class => TCUNullChatListItem.class}/instance/chatId.st (100%) rename packages/TelegramClient-UI.package/{NullChatListItem.class => TCUNullChatListItem.class}/instance/deselect.st (100%) rename packages/TelegramClient-UI.package/{NullChatListItem.class => TCUNullChatListItem.class}/methodProperties.json (100%) rename packages/TelegramClient-UI.package/{NullChatListItem.class => TCUNullChatListItem.class}/properties.json (71%) diff --git a/packages/TelegramClient-Core.package/TCCAbstractTeleClientFactory.class/README.md b/packages/TelegramClient-Core.package/TCCAbstractTeleClientFactory.class/README.md index e69de29bb..634c0fd30 100644 --- a/packages/TelegramClient-Core.package/TCCAbstractTeleClientFactory.class/README.md +++ b/packages/TelegramClient-Core.package/TCCAbstractTeleClientFactory.class/README.md @@ -0,0 +1 @@ +This abstract factory can be used to create a new TeleClient. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCAbstractTeleClientFactory.class/properties.json b/packages/TelegramClient-Core.package/TCCAbstractTeleClientFactory.class/properties.json index 6aa574007..047b1839c 100644 --- a/packages/TelegramClient-Core.package/TCCAbstractTeleClientFactory.class/properties.json +++ b/packages/TelegramClient-Core.package/TCCAbstractTeleClientFactory.class/properties.json @@ -4,7 +4,7 @@ ], "classvars" : [ ], - "commentStamp" : "", + "commentStamp" : "js 6/13/2020 16:24", "instvars" : [ ], "name" : "TCCAbstractTeleClientFactory", diff --git a/packages/TelegramClient-Core.package/TCCApp.class/README.md b/packages/TelegramClient-Core.package/TCCApp.class/README.md index e69de29bb..c1f61fa7b 100644 --- a/packages/TelegramClient-Core.package/TCCApp.class/README.md +++ b/packages/TelegramClient-Core.package/TCCApp.class/README.md @@ -0,0 +1 @@ +The main component for the core, that handles incoming events. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCApp.class/instance/client..st b/packages/TelegramClient-Core.package/TCCApp.class/instance/client..st index 96c693d73..a46f6fa10 100644 --- a/packages/TelegramClient-Core.package/TCCApp.class/instance/client..st +++ b/packages/TelegramClient-Core.package/TCCApp.class/instance/client..st @@ -1,4 +1,4 @@ accessing -client: anObject +client: aClient - client := anObject \ No newline at end of file + client := aClient. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCApp.class/instance/handleEvent..st b/packages/TelegramClient-Core.package/TCCApp.class/instance/handleEvent..st index a665d4c20..af8df9a87 100644 --- a/packages/TelegramClient-Core.package/TCCApp.class/instance/handleEvent..st +++ b/packages/TelegramClient-Core.package/TCCApp.class/instance/handleEvent..st @@ -1,16 +1,16 @@ accessing handleEvent: anEvent - + | update | update := nil. (((anEvent at: '@type') = 'error') and: [(anEvent at: 'code') = 400 ]) ifTrue: [self halt: 'An Error Occured. Check Transcript Output.']. - - (anEvent at: '@type') = 'updateAuthorizationState' + + (anEvent at: '@type') = 'updateAuthorizationState' ifTrue: [update := self authHandler handleEvent: anEvent]. - + (anEvent at: '@type') = 'updateNewChat' ifTrue: [self chatsHandler addChat: anEvent]. - + update isSymbol ifTrue: [self triggerEvent: update]. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCApp.class/instance/initialize.st b/packages/TelegramClient-Core.package/TCCApp.class/instance/initialize.st index 83c481ca1..245df75fa 100644 --- a/packages/TelegramClient-Core.package/TCCApp.class/instance/initialize.st +++ b/packages/TelegramClient-Core.package/TCCApp.class/instance/initialize.st @@ -5,5 +5,5 @@ initialize initializeClient; initializeHandlers; chats: TCCChats new. - + [self receiveLoop] fork. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCApp.class/instance/initializeClient.st b/packages/TelegramClient-Core.package/TCCApp.class/instance/initializeClient.st index 4e83f2502..19d67b948 100644 --- a/packages/TelegramClient-Core.package/TCCApp.class/instance/initializeClient.st +++ b/packages/TelegramClient-Core.package/TCCApp.class/instance/initializeClient.st @@ -3,5 +3,5 @@ initializeClient | specificClient | specificClient := TCCTeleClientFactory new createClient. - + self client: (TCCTeleClient newWithClient: specificClient). \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCApp.class/instance/sendPhoneNumber..st b/packages/TelegramClient-Core.package/TCCApp.class/instance/sendPhoneNumber..st index 001e28f4a..33bf0cfa3 100644 --- a/packages/TelegramClient-Core.package/TCCApp.class/instance/sendPhoneNumber..st +++ b/packages/TelegramClient-Core.package/TCCApp.class/instance/sendPhoneNumber..st @@ -1,4 +1,4 @@ accessing sendPhoneNumber: aString - + self authHandler sendPhoneNumber: aString. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCApp.class/instance/update.st b/packages/TelegramClient-Core.package/TCCApp.class/instance/update.st index 8da04157d..e11a8bccc 100644 --- a/packages/TelegramClient-Core.package/TCCApp.class/instance/update.st +++ b/packages/TelegramClient-Core.package/TCCApp.class/instance/update.st @@ -2,6 +2,6 @@ accessing update | event | - + event := self client receive: 0.05. - event isNil ifFalse: [self handleEvent: event]. \ No newline at end of file + event ifNotNil: [self handleEvent: event]. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCApp.class/methodProperties.json b/packages/TelegramClient-Core.package/TCCApp.class/methodProperties.json index acd559ad4..6e44b5598 100644 --- a/packages/TelegramClient-Core.package/TCCApp.class/methodProperties.json +++ b/packages/TelegramClient-Core.package/TCCApp.class/methodProperties.json @@ -11,13 +11,13 @@ "chatsHandler:" : "rs 6/7/2020 21:50", "checkAuthenticationCode:" : "js 5/31/2020 20:10", "client" : "R.S 5/20/2020 16:08", - "client:" : "R.S 5/20/2020 16:08", - "handleEvent:" : "rs 6/8/2020 14:07", - "initialize" : "rs 6/6/2020 17:56", - "initializeClient" : "f.w. 5/31/2020 19:01", + "client:" : "js 6/13/2020 19:10", + "handleEvent:" : "js 6/13/2020 18:42", + "initialize" : "js 6/13/2020 18:19", + "initializeClient" : "js 6/13/2020 18:20", "initializeHandlers" : "rs 6/7/2020 21:51", "isClientAlive" : "js 5/28/2020 17:18", "receiveLoop" : "R.S 6/1/2020 15:24", "sendMessage:to:" : "rs 6/13/2020 15:26", - "sendPhoneNumber:" : "js 5/31/2020 20:08", - "update" : "js 5/28/2020 17:28" } } + "sendPhoneNumber:" : "js 6/13/2020 15:35", + "update" : "js 6/13/2020 19:14" } } diff --git a/packages/TelegramClient-Core.package/TCCApp.class/properties.json b/packages/TelegramClient-Core.package/TCCApp.class/properties.json index 133d12707..6ec036628 100644 --- a/packages/TelegramClient-Core.package/TCCApp.class/properties.json +++ b/packages/TelegramClient-Core.package/TCCApp.class/properties.json @@ -4,10 +4,9 @@ ], "classvars" : [ ], - "commentStamp" : "", + "commentStamp" : "js 6/13/2020 16:24", "instvars" : [ "client", - "authUI", "authHandler", "chatsHandler", "chats" ], diff --git a/packages/TelegramClient-Core.package/TCCAuthHandler.class/README.md b/packages/TelegramClient-Core.package/TCCAuthHandler.class/README.md index e69de29bb..e3e165f4b 100644 --- a/packages/TelegramClient-Core.package/TCCAuthHandler.class/README.md +++ b/packages/TelegramClient-Core.package/TCCAuthHandler.class/README.md @@ -0,0 +1 @@ +This class handles everything that is required to authenticate with tdlib. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/app.st b/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/app.st index e1ec06e29..903c29d40 100644 --- a/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/app.st +++ b/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/app.st @@ -1,4 +1,4 @@ accessing app - + ^ app \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/checkAuthenticationCode..st b/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/checkAuthenticationCode..st index f2d779972..be5562286 100644 --- a/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/checkAuthenticationCode..st +++ b/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/checkAuthenticationCode..st @@ -1,6 +1,6 @@ accessing checkAuthenticationCode: aString - self client send: (TCCRequest - newWithType: 'checkAuthenticationCode' + self client send: (TCCRequest + newWithType: 'checkAuthenticationCode' from: {'code' -> aString}). \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/handleEvent..st b/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/handleEvent..st index e84a58433..e1c11f490 100644 --- a/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/handleEvent..st +++ b/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/handleEvent..st @@ -1,16 +1,16 @@ accessing handleEvent: anEvent - self authState: (anEvent at: 'authorization_state'). - + self authState: (anEvent at: 'authorization_state'). + self isAuthStateClosed ifTrue: [self client free]. - + self isAwaitingTDLibParams ifTrue: [self setTDLibParams]. - + self isAwaitingDBEncryptionKey ifTrue: [self setDBEncryptionKey: '']. - + self isAwaitingPhoneNumber ifTrue: [^ #awaitPhoneNumber]. - + self isAwaitingAuthCode ifTrue: [^ #awaitAuthCode]. - + self isAuthorizationStateReady ifTrue: [^ self app authSucceeded]. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/isAuthStateClosed.st b/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/isAuthStateClosed.st index 4b6ec5f36..536edc3bd 100644 --- a/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/isAuthStateClosed.st +++ b/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/isAuthStateClosed.st @@ -1,4 +1,4 @@ accessing isAuthStateClosed - ^ (self authState at: '@type') = 'authorizationStateClosed' \ No newline at end of file + ^ (self authState at: '@type') = 'authorizationStateClosed' \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/isAuthorizationStateReady.st b/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/isAuthorizationStateReady.st index f782d0b10..4224ce0be 100644 --- a/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/isAuthorizationStateReady.st +++ b/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/isAuthorizationStateReady.st @@ -1,6 +1,4 @@ initialize isAuthorizationStateReady - ^ (self authState at: '@type') = 'authorizationStateReady' - - \ No newline at end of file + ^ (self authState at: '@type') = 'authorizationStateReady' \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/isAwaitingAuthCode.st b/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/isAwaitingAuthCode.st index 4a39fe03d..9fd0db706 100644 --- a/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/isAwaitingAuthCode.st +++ b/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/isAwaitingAuthCode.st @@ -1,5 +1,4 @@ accessing isAwaitingAuthCode - ^ (self authState at: '@type') = 'authorizationStateWaitCode' - \ No newline at end of file + ^ (self authState at: '@type') = 'authorizationStateWaitCode' \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/sendPhoneNumber..st b/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/sendPhoneNumber..st index ca83ebac3..2b918f923 100644 --- a/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/sendPhoneNumber..st +++ b/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/sendPhoneNumber..st @@ -1,6 +1,6 @@ accessing sendPhoneNumber: aNumber - self client send: (TCCRequest + self client send: (TCCRequest newWithType: 'setAuthenticationPhoneNumber' from: {'phone_number' -> aNumber}). \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCAuthHandler.class/methodProperties.json b/packages/TelegramClient-Core.package/TCCAuthHandler.class/methodProperties.json index 4d273d686..d39c89e4c 100644 --- a/packages/TelegramClient-Core.package/TCCAuthHandler.class/methodProperties.json +++ b/packages/TelegramClient-Core.package/TCCAuthHandler.class/methodProperties.json @@ -2,20 +2,20 @@ "class" : { }, "instance" : { - "app" : "js 5/28/2020 17:02", + "app" : "js 6/13/2020 18:12", "app:" : "js 5/28/2020 17:02", "authState" : "R.S 5/18/2020 17:54", "authState:" : "R.S 5/18/2020 17:54", - "checkAuthenticationCode:" : "rs 6/6/2020 16:23", + "checkAuthenticationCode:" : "js 6/13/2020 18:31", "client" : "js 5/28/2020 18:36", - "handleEvent:" : "rs 6/8/2020 14:13", - "isAuthStateClosed" : "R.S 5/19/2020 10:29", - "isAuthorizationStateReady" : "R.S 5/20/2020 16:59", - "isAwaitingAuthCode" : "R.S 5/19/2020 10:30", + "handleEvent:" : "js 6/13/2020 18:31", + "isAuthStateClosed" : "js 6/13/2020 18:31", + "isAuthorizationStateReady" : "js 6/13/2020 18:29", + "isAwaitingAuthCode" : "js 6/13/2020 18:29", "isAwaitingDBEncryptionKey" : "R.S 5/19/2020 10:28", "isAwaitingPhoneNumber" : "R.S 5/19/2020 10:28", "isAwaitingTDLibParams" : "R.S 5/19/2020 10:28", "logout" : "f.w. 6/3/2020 20:41", - "sendPhoneNumber:" : "rs 6/6/2020 16:25", + "sendPhoneNumber:" : "js 6/13/2020 18:54", "setDBEncryptionKey:" : "rs 6/6/2020 16:26", "setTDLibParams" : "rs 6/6/2020 16:41" } } diff --git a/packages/TelegramClient-Core.package/TCCAuthHandler.class/properties.json b/packages/TelegramClient-Core.package/TCCAuthHandler.class/properties.json index 67806a176..8a37f6f7c 100644 --- a/packages/TelegramClient-Core.package/TCCAuthHandler.class/properties.json +++ b/packages/TelegramClient-Core.package/TCCAuthHandler.class/properties.json @@ -4,7 +4,7 @@ ], "classvars" : [ ], - "commentStamp" : "", + "commentStamp" : "js 6/13/2020 16:25", "instvars" : [ "authState", "app" ], diff --git a/packages/TelegramClient-Core.package/TCCChat.class/README.md b/packages/TelegramClient-Core.package/TCCChat.class/README.md index e69de29bb..58b04e498 100644 --- a/packages/TelegramClient-Core.package/TCCChat.class/README.md +++ b/packages/TelegramClient-Core.package/TCCChat.class/README.md @@ -0,0 +1 @@ +a Data Class for a single Chat \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCChat.class/instance/order..st b/packages/TelegramClient-Core.package/TCCChat.class/instance/order..st index e9a4c7c57..3ea50be66 100644 --- a/packages/TelegramClient-Core.package/TCCChat.class/instance/order..st +++ b/packages/TelegramClient-Core.package/TCCChat.class/instance/order..st @@ -1,3 +1,4 @@ accessing -order: anObject - order := anObject \ No newline at end of file +order: aNumber + + order := aNumber. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCChat.class/instance/order.st b/packages/TelegramClient-Core.package/TCCChat.class/instance/order.st index 2216237bd..029a7574f 100644 --- a/packages/TelegramClient-Core.package/TCCChat.class/instance/order.st +++ b/packages/TelegramClient-Core.package/TCCChat.class/instance/order.st @@ -1,3 +1,4 @@ accessing order + ^ order \ 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 9d50dc182..f4be6622a 100644 --- a/packages/TelegramClient-Core.package/TCCChat.class/methodProperties.json +++ b/packages/TelegramClient-Core.package/TCCChat.class/methodProperties.json @@ -6,8 +6,8 @@ "id:" : "rs 6/7/2020 22:20", "messages" : "R.S 6/1/2020 15:37", "messages:" : "R.S 6/1/2020 15:37", - "order" : "R.S 6/4/2020 09:56", - "order:" : "R.S 6/4/2020 09:56", + "order" : "js 6/13/2020 18:09", + "order:" : "js 6/13/2020 19:11", "title" : "rs 6/7/2020 22:24", "title:" : "rs 6/7/2020 22:24", "userId" : "R.S 6/1/2020 15:37", diff --git a/packages/TelegramClient-Core.package/TCCChat.class/properties.json b/packages/TelegramClient-Core.package/TCCChat.class/properties.json index ee10992ae..fd4ace32c 100644 --- a/packages/TelegramClient-Core.package/TCCChat.class/properties.json +++ b/packages/TelegramClient-Core.package/TCCChat.class/properties.json @@ -4,7 +4,7 @@ ], "classvars" : [ ], - "commentStamp" : "", + "commentStamp" : "js 6/13/2020 16:25", "instvars" : [ "userId", "messages", diff --git a/packages/TelegramClient-Core.package/TCCChats.class/README.md b/packages/TelegramClient-Core.package/TCCChats.class/README.md index e69de29bb..b8bfb1660 100644 --- a/packages/TelegramClient-Core.package/TCCChats.class/README.md +++ b/packages/TelegramClient-Core.package/TCCChats.class/README.md @@ -0,0 +1 @@ +a sorted collection to keep the current chats in their right order \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCChats.class/properties.json b/packages/TelegramClient-Core.package/TCCChats.class/properties.json index 4a2d7df02..b1d225761 100644 --- a/packages/TelegramClient-Core.package/TCCChats.class/properties.json +++ b/packages/TelegramClient-Core.package/TCCChats.class/properties.json @@ -4,7 +4,7 @@ ], "classvars" : [ ], - "commentStamp" : "", + "commentStamp" : "js 6/13/2020 16:26", "instvars" : [ ], "name" : "TCCChats", diff --git a/packages/TelegramClient-Core.package/TCCChatsHandler.class/README.md b/packages/TelegramClient-Core.package/TCCChatsHandler.class/README.md index e69de29bb..f85e6ec3d 100644 --- a/packages/TelegramClient-Core.package/TCCChatsHandler.class/README.md +++ b/packages/TelegramClient-Core.package/TCCChatsHandler.class/README.md @@ -0,0 +1 @@ +This handles event needed to work with chats and messages. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/addChat..st b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/addChat..st index 11fccc43a..5b472f1bd 100644 --- a/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/addChat..st +++ b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/addChat..st @@ -2,11 +2,11 @@ events addChat: aChatEvent | chat | - + chat := TCCChat new id: ((aChatEvent at: 'chat') at: 'id'); title: ((aChatEvent at: 'chat') at: 'title'); order: ((aChatEvent at: 'chat') at: 'order'). - + self app chats add: chat. self app triggerEvent: #newChatLoaded. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/getChatInfos..st b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/getChatInfos..st deleted file mode 100644 index fc1bbc5d3..000000000 --- a/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/getChatInfos..st +++ /dev/null @@ -1,6 +0,0 @@ -accessing -getChatInfos: aChatID - - self client send: (TCCRequest - newWithType: 'getChat' - from: {'chat_id' -> aChatID}). \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCChatsHandler.class/methodProperties.json b/packages/TelegramClient-Core.package/TCCChatsHandler.class/methodProperties.json index 7c0f986f1..4440c107e 100644 --- a/packages/TelegramClient-Core.package/TCCChatsHandler.class/methodProperties.json +++ b/packages/TelegramClient-Core.package/TCCChatsHandler.class/methodProperties.json @@ -2,10 +2,9 @@ "class" : { }, "instance" : { - "addChat:" : "rs 6/8/2020 14:03", + "addChat:" : "js 6/13/2020 19:18", "app" : "js 6/1/2020 14:44", "app:" : "js 6/1/2020 14:45", "client" : "js 6/1/2020 14:44", - "getChatInfos:" : "rs 6/6/2020 16:33", "getChats" : "rs 6/6/2020 16:36", "sendMessage:to:" : "rs 6/13/2020 15:40" } } diff --git a/packages/TelegramClient-Core.package/TCCChatsHandler.class/properties.json b/packages/TelegramClient-Core.package/TCCChatsHandler.class/properties.json index b91527d1d..a7d7d04a5 100644 --- a/packages/TelegramClient-Core.package/TCCChatsHandler.class/properties.json +++ b/packages/TelegramClient-Core.package/TCCChatsHandler.class/properties.json @@ -4,7 +4,7 @@ ], "classvars" : [ ], - "commentStamp" : "", + "commentStamp" : "js 6/13/2020 16:26", "instvars" : [ "app" ], "name" : "TCCChatsHandler", diff --git a/packages/TelegramClient-Core.package/TCCFFIClient.class/README.md b/packages/TelegramClient-Core.package/TCCFFIClient.class/README.md index e69de29bb..4e88de6ab 100644 --- a/packages/TelegramClient-Core.package/TCCFFIClient.class/README.md +++ b/packages/TelegramClient-Core.package/TCCFFIClient.class/README.md @@ -0,0 +1 @@ +This is a low-level class, that communicates directly with tdlib. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCFFIClient.class/instance/create.st b/packages/TelegramClient-Core.package/TCCFFIClient.class/instance/create.st index 4481e0998..f3465cff5 100644 --- a/packages/TelegramClient-Core.package/TCCFFIClient.class/instance/create.st +++ b/packages/TelegramClient-Core.package/TCCFFIClient.class/instance/create.st @@ -1,5 +1,5 @@ ExternalCalls create - + ^ self externalCallFailed \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCFFIClient.class/instance/execute.with..st b/packages/TelegramClient-Core.package/TCCFFIClient.class/instance/execute.with..st index 7baca2761..7b9b3722c 100644 --- a/packages/TelegramClient-Core.package/TCCFFIClient.class/instance/execute.with..st +++ b/packages/TelegramClient-Core.package/TCCFFIClient.class/instance/execute.with..st @@ -1,5 +1,5 @@ ExternalCalls execute: aHandle with: aMessage - + ^ self externalCallFailed \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCFFIClient.class/instance/free..st b/packages/TelegramClient-Core.package/TCCFFIClient.class/instance/free..st index 6e8ea2a49..10fec14fa 100644 --- a/packages/TelegramClient-Core.package/TCCFFIClient.class/instance/free..st +++ b/packages/TelegramClient-Core.package/TCCFFIClient.class/instance/free..st @@ -1,5 +1,5 @@ ExternalCalls free: aHandle - + ^ self externalCallFailed \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCFFIClient.class/instance/receive.with..st b/packages/TelegramClient-Core.package/TCCFFIClient.class/instance/receive.with..st index 9da9ae46b..ef3909cf2 100644 --- a/packages/TelegramClient-Core.package/TCCFFIClient.class/instance/receive.with..st +++ b/packages/TelegramClient-Core.package/TCCFFIClient.class/instance/receive.with..st @@ -1,5 +1,5 @@ ExternalCalls receive: aHandle with: aTimeout - + ^ self externalCallFailed \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCFFIClient.class/instance/send.with..st b/packages/TelegramClient-Core.package/TCCFFIClient.class/instance/send.with..st index 4bf952b6b..6643e9262 100644 --- a/packages/TelegramClient-Core.package/TCCFFIClient.class/instance/send.with..st +++ b/packages/TelegramClient-Core.package/TCCFFIClient.class/instance/send.with..st @@ -1,5 +1,5 @@ ExternalCalls send: aHandle with: aMessage - + ^ self externalCallFailed \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCFFIClient.class/methodProperties.json b/packages/TelegramClient-Core.package/TCCFFIClient.class/methodProperties.json index 8939da4e6..fc0198184 100644 --- a/packages/TelegramClient-Core.package/TCCFFIClient.class/methodProperties.json +++ b/packages/TelegramClient-Core.package/TCCFFIClient.class/methodProperties.json @@ -2,8 +2,8 @@ "class" : { "moduleName" : "js 5/14/2020 22:48" }, "instance" : { - "create" : "js 5/28/2020 17:05", - "execute:with:" : "js 5/28/2020 17:05", - "free:" : "js 5/28/2020 17:05", - "receive:with:" : "js 5/28/2020 17:05", - "send:with:" : "js 5/28/2020 17:05" } } + "create" : "js 6/13/2020 12:53", + "execute:with:" : "js 6/13/2020 18:33", + "free:" : "js 6/13/2020 18:33", + "receive:with:" : "js 6/13/2020 18:33", + "send:with:" : "js 6/13/2020 18:33" } } diff --git a/packages/TelegramClient-Core.package/TCCFFIClient.class/properties.json b/packages/TelegramClient-Core.package/TCCFFIClient.class/properties.json index cb5eafb40..d2e63b1cc 100644 --- a/packages/TelegramClient-Core.package/TCCFFIClient.class/properties.json +++ b/packages/TelegramClient-Core.package/TCCFFIClient.class/properties.json @@ -4,7 +4,7 @@ ], "classvars" : [ ], - "commentStamp" : "", + "commentStamp" : "js 6/13/2020 16:26", "instvars" : [ ], "name" : "TCCFFIClient", diff --git a/packages/TelegramClient-Core.package/TCCLinuxClient.class/README.md b/packages/TelegramClient-Core.package/TCCLinuxClient.class/README.md index e69de29bb..e305b19da 100644 --- a/packages/TelegramClient-Core.package/TCCLinuxClient.class/README.md +++ b/packages/TelegramClient-Core.package/TCCLinuxClient.class/README.md @@ -0,0 +1 @@ +implements the right binary name for Linux. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCLinuxClient.class/properties.json b/packages/TelegramClient-Core.package/TCCLinuxClient.class/properties.json index da092884c..d3dfb514a 100644 --- a/packages/TelegramClient-Core.package/TCCLinuxClient.class/properties.json +++ b/packages/TelegramClient-Core.package/TCCLinuxClient.class/properties.json @@ -4,7 +4,7 @@ ], "classvars" : [ ], - "commentStamp" : "", + "commentStamp" : "js 6/13/2020 16:27", "instvars" : [ ], "name" : "TCCLinuxClient", diff --git a/packages/TelegramClient-Core.package/TCCMacClient.class/README.md b/packages/TelegramClient-Core.package/TCCMacClient.class/README.md index e69de29bb..601cdcee9 100644 --- a/packages/TelegramClient-Core.package/TCCMacClient.class/README.md +++ b/packages/TelegramClient-Core.package/TCCMacClient.class/README.md @@ -0,0 +1 @@ +implements the right binary name for Mac OS. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCMacClient.class/properties.json b/packages/TelegramClient-Core.package/TCCMacClient.class/properties.json index 127087cbe..0ea9e60e4 100644 --- a/packages/TelegramClient-Core.package/TCCMacClient.class/properties.json +++ b/packages/TelegramClient-Core.package/TCCMacClient.class/properties.json @@ -4,7 +4,7 @@ ], "classvars" : [ ], - "commentStamp" : "", + "commentStamp" : "js 6/13/2020 16:27", "instvars" : [ ], "name" : "TCCMacClient", diff --git a/packages/TelegramClient-Core.package/TCCRequest.class/README.md b/packages/TelegramClient-Core.package/TCCRequest.class/README.md index e69de29bb..3b4e5f098 100644 --- a/packages/TelegramClient-Core.package/TCCRequest.class/README.md +++ b/packages/TelegramClient-Core.package/TCCRequest.class/README.md @@ -0,0 +1 @@ +An Instance of this class represents a message to tdlib, can be build directly from a dictionary. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCRequest.class/instance/asString.st b/packages/TelegramClient-Core.package/TCCRequest.class/instance/asString.st index c336bca88..aa9c30f8b 100644 --- a/packages/TelegramClient-Core.package/TCCRequest.class/instance/asString.st +++ b/packages/TelegramClient-Core.package/TCCRequest.class/instance/asString.st @@ -2,8 +2,8 @@ accessing asString | aStream | - + aStream := ReadWriteStream on: ''. self jsonWriteOn: aStream. - + ^ aStream contents \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCRequest.class/methodProperties.json b/packages/TelegramClient-Core.package/TCCRequest.class/methodProperties.json index 6e8b8a484..061c0ee27 100644 --- a/packages/TelegramClient-Core.package/TCCRequest.class/methodProperties.json +++ b/packages/TelegramClient-Core.package/TCCRequest.class/methodProperties.json @@ -2,4 +2,4 @@ "class" : { "newWithType:from:" : "rs 6/6/2020 16:21" }, "instance" : { - "asString" : "rs 6/6/2020 16:11" } } + "asString" : "js 6/13/2020 18:19" } } diff --git a/packages/TelegramClient-Core.package/TCCRequest.class/properties.json b/packages/TelegramClient-Core.package/TCCRequest.class/properties.json index a21acf7f9..7017c7b39 100644 --- a/packages/TelegramClient-Core.package/TCCRequest.class/properties.json +++ b/packages/TelegramClient-Core.package/TCCRequest.class/properties.json @@ -4,7 +4,7 @@ ], "classvars" : [ ], - "commentStamp" : "", + "commentStamp" : "js 6/13/2020 16:28", "instvars" : [ ], "name" : "TCCRequest", diff --git a/packages/TelegramClient-Core.package/TCCTeleClient.class/README.md b/packages/TelegramClient-Core.package/TCCTeleClient.class/README.md index e69de29bb..65911a185 100644 --- a/packages/TelegramClient-Core.package/TCCTeleClient.class/README.md +++ b/packages/TelegramClient-Core.package/TCCTeleClient.class/README.md @@ -0,0 +1 @@ +keeps a low-level client and a fitting handle \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCTeleClient.class/class/newWithClient..st b/packages/TelegramClient-Core.package/TCCTeleClient.class/class/newWithClient..st index 5e754a98f..72d3970df 100644 --- a/packages/TelegramClient-Core.package/TCCTeleClient.class/class/newWithClient..st +++ b/packages/TelegramClient-Core.package/TCCTeleClient.class/class/newWithClient..st @@ -1,10 +1,10 @@ creation newWithClient: anActualClient - + | specificClient | - + specificClient := anActualClient create. - + ^ self new specificClient: anActualClient; handle: specificClient \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCTeleClient.class/instance/receive..st b/packages/TelegramClient-Core.package/TCCTeleClient.class/instance/receive..st index 05812be61..ed0acd028 100644 --- a/packages/TelegramClient-Core.package/TCCTeleClient.class/instance/receive..st +++ b/packages/TelegramClient-Core.package/TCCTeleClient.class/instance/receive..st @@ -2,8 +2,7 @@ initialize-release receive: aTimeoutNumber | event | - + event := self specificClient receive: self handle with: aTimeoutNumber. - event ifNil: [^nil]. - "Transcript show: event, Character cr." + event ifNil: [^ nil]. ^ Json new readFromString: event \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCTeleClient.class/methodProperties.json b/packages/TelegramClient-Core.package/TCCTeleClient.class/methodProperties.json index c87f9b4f9..07d5b3424 100644 --- a/packages/TelegramClient-Core.package/TCCTeleClient.class/methodProperties.json +++ b/packages/TelegramClient-Core.package/TCCTeleClient.class/methodProperties.json @@ -1,6 +1,6 @@ { "class" : { - "newWithClient:" : "js 5/28/2020 17:13" }, + "newWithClient:" : "js 6/13/2020 18:11" }, "instance" : { "execute:" : "js 5/28/2020 17:23", "free" : "js 5/28/2020 17:24", @@ -8,7 +8,7 @@ "handle:" : "R.S 5/18/2020 18:20", "initialize:" : "R.S 5/20/2020 16:10", "isAlive" : "js 5/28/2020 17:23", - "receive:" : "rs 6/7/2020 22:14", + "receive:" : "js 6/13/2020 19:13", "send:" : "rs 6/6/2020 16:09", "specificClient" : "js 5/28/2020 17:23", "specificClient:" : "js 5/28/2020 17:23" } } diff --git a/packages/TelegramClient-Core.package/TCCTeleClient.class/properties.json b/packages/TelegramClient-Core.package/TCCTeleClient.class/properties.json index 0b0794346..945f557cd 100644 --- a/packages/TelegramClient-Core.package/TCCTeleClient.class/properties.json +++ b/packages/TelegramClient-Core.package/TCCTeleClient.class/properties.json @@ -4,10 +4,9 @@ ], "classvars" : [ ], - "commentStamp" : "", + "commentStamp" : "js 6/13/2020 16:37", "instvars" : [ "handle", - "authHandler", "specificClient" ], "name" : "TCCTeleClient", "pools" : [ diff --git a/packages/TelegramClient-Core.package/TCCTeleClientFactory.class/README.md b/packages/TelegramClient-Core.package/TCCTeleClientFactory.class/README.md index e69de29bb..57f8ab151 100644 --- a/packages/TelegramClient-Core.package/TCCTeleClientFactory.class/README.md +++ b/packages/TelegramClient-Core.package/TCCTeleClientFactory.class/README.md @@ -0,0 +1 @@ +This factory creates a TeleClient for the current OS. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCTeleClientFactory.class/instance/createClient..st b/packages/TelegramClient-Core.package/TCCTeleClientFactory.class/instance/createClient..st index 01344a0a7..2fca998cc 100644 --- a/packages/TelegramClient-Core.package/TCCTeleClientFactory.class/instance/createClient..st +++ b/packages/TelegramClient-Core.package/TCCTeleClientFactory.class/instance/createClient..st @@ -1,6 +1,6 @@ creation createClient: anOsName - + ^ (anOsName startsWith: 'Win32') ifTrue: [TCCWindowsClient new] ifFalse: [(anOsName startsWith: 'Mac OS') diff --git a/packages/TelegramClient-Core.package/TCCTeleClientFactory.class/methodProperties.json b/packages/TelegramClient-Core.package/TCCTeleClientFactory.class/methodProperties.json index 9df611ecf..bc77d9993 100644 --- a/packages/TelegramClient-Core.package/TCCTeleClientFactory.class/methodProperties.json +++ b/packages/TelegramClient-Core.package/TCCTeleClientFactory.class/methodProperties.json @@ -3,4 +3,4 @@ }, "instance" : { "createClient" : "js 5/28/2020 18:02", - "createClient:" : "js 5/28/2020 17:08" } } + "createClient:" : "js 6/13/2020 18:04" } } diff --git a/packages/TelegramClient-Core.package/TCCTeleClientFactory.class/properties.json b/packages/TelegramClient-Core.package/TCCTeleClientFactory.class/properties.json index ba8c21b1f..de0a690a0 100644 --- a/packages/TelegramClient-Core.package/TCCTeleClientFactory.class/properties.json +++ b/packages/TelegramClient-Core.package/TCCTeleClientFactory.class/properties.json @@ -4,7 +4,7 @@ ], "classvars" : [ ], - "commentStamp" : "", + "commentStamp" : "js 6/13/2020 16:24", "instvars" : [ ], "name" : "TCCTeleClientFactory", diff --git a/packages/TelegramClient-Core.package/TCCWindowsClient.class/README.md b/packages/TelegramClient-Core.package/TCCWindowsClient.class/README.md index e69de29bb..1d790accf 100644 --- a/packages/TelegramClient-Core.package/TCCWindowsClient.class/README.md +++ b/packages/TelegramClient-Core.package/TCCWindowsClient.class/README.md @@ -0,0 +1 @@ +implements the right binary name for Windows. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCWindowsClient.class/properties.json b/packages/TelegramClient-Core.package/TCCWindowsClient.class/properties.json index e12f9356e..d105e98f7 100644 --- a/packages/TelegramClient-Core.package/TCCWindowsClient.class/properties.json +++ b/packages/TelegramClient-Core.package/TCCWindowsClient.class/properties.json @@ -4,7 +4,7 @@ ], "classvars" : [ ], - "commentStamp" : "", + "commentStamp" : "js 6/13/2020 16:27", "instvars" : [ ], "name" : "TCCWindowsClient", diff --git a/packages/TelegramClient-Tests.package/TCTAbstractTeleClientFactoryMock.class/README.md b/packages/TelegramClient-Tests.package/TCTAbstractTeleClientFactoryMock.class/README.md index e69de29bb..f0d6d39c8 100644 --- a/packages/TelegramClient-Tests.package/TCTAbstractTeleClientFactoryMock.class/README.md +++ b/packages/TelegramClient-Tests.package/TCTAbstractTeleClientFactoryMock.class/README.md @@ -0,0 +1 @@ +This abstract Factory creates Clients that behave like FFIClients. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTAbstractTeleClientFactoryMock.class/properties.json b/packages/TelegramClient-Tests.package/TCTAbstractTeleClientFactoryMock.class/properties.json index 773304c79..d6a952b1a 100644 --- a/packages/TelegramClient-Tests.package/TCTAbstractTeleClientFactoryMock.class/properties.json +++ b/packages/TelegramClient-Tests.package/TCTAbstractTeleClientFactoryMock.class/properties.json @@ -4,7 +4,7 @@ ], "classvars" : [ ], - "commentStamp" : "", + "commentStamp" : "js 6/13/2020 16:23", "instvars" : [ ], "name" : "TCTAbstractTeleClientFactoryMock", diff --git a/packages/TelegramClient-Tests.package/TCTFFIClientMock.class/README.md b/packages/TelegramClient-Tests.package/TCTFFIClientMock.class/README.md index e69de29bb..85e9d5375 100644 --- a/packages/TelegramClient-Tests.package/TCTFFIClientMock.class/README.md +++ b/packages/TelegramClient-Tests.package/TCTFFIClientMock.class/README.md @@ -0,0 +1 @@ +This mock client behaves like a normal FFIClient and can be used for testing. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTFFIClientMock.class/instance/created..st b/packages/TelegramClient-Tests.package/TCTFFIClientMock.class/instance/created..st new file mode 100644 index 000000000..62edff927 --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTFFIClientMock.class/instance/created..st @@ -0,0 +1,4 @@ +accessing +created: aBoolean + + created := aBoolean. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTFFIClientMock.class/instance/freed..st b/packages/TelegramClient-Tests.package/TCTFFIClientMock.class/instance/freed..st new file mode 100644 index 000000000..a19f2f82d --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTFFIClientMock.class/instance/freed..st @@ -0,0 +1,4 @@ +accessing +freed: aBoolean + + freed := aBoolean. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTFFIClientMock.class/instance/setCreated.st b/packages/TelegramClient-Tests.package/TCTFFIClientMock.class/instance/setCreated.st index 601f37ce7..fbc82af4e 100644 --- a/packages/TelegramClient-Tests.package/TCTFFIClientMock.class/instance/setCreated.st +++ b/packages/TelegramClient-Tests.package/TCTFFIClientMock.class/instance/setCreated.st @@ -1,4 +1,4 @@ accessing setCreated - created := true. \ No newline at end of file + self created: true. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTFFIClientMock.class/instance/setFreed.st b/packages/TelegramClient-Tests.package/TCTFFIClientMock.class/instance/setFreed.st index 8efbedc71..80d7fc7f1 100644 --- a/packages/TelegramClient-Tests.package/TCTFFIClientMock.class/instance/setFreed.st +++ b/packages/TelegramClient-Tests.package/TCTFFIClientMock.class/instance/setFreed.st @@ -1,4 +1,4 @@ accessing setFreed - freed := true. \ No newline at end of file + self freed: true. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTFFIClientMock.class/methodProperties.json b/packages/TelegramClient-Tests.package/TCTFFIClientMock.class/methodProperties.json index b2bc7f2f0..9ee299127 100644 --- a/packages/TelegramClient-Tests.package/TCTFFIClientMock.class/methodProperties.json +++ b/packages/TelegramClient-Tests.package/TCTFFIClientMock.class/methodProperties.json @@ -4,7 +4,9 @@ "instance" : { "create" : "js 5/28/2020 17:31", "created" : "js 5/28/2020 17:30", + "created:" : "js 6/13/2020 12:31", "free:" : "js 5/28/2020 17:31", "freed" : "js 5/28/2020 17:31", - "setCreated" : "js 5/28/2020 17:30", - "setFreed" : "js 5/28/2020 17:31" } } + "freed:" : "js 6/13/2020 12:31", + "setCreated" : "js 6/13/2020 12:31", + "setFreed" : "js 6/13/2020 12:31" } } diff --git a/packages/TelegramClient-Tests.package/TCTFFIClientMock.class/properties.json b/packages/TelegramClient-Tests.package/TCTFFIClientMock.class/properties.json index 0f9c64019..edf750a3d 100644 --- a/packages/TelegramClient-Tests.package/TCTFFIClientMock.class/properties.json +++ b/packages/TelegramClient-Tests.package/TCTFFIClientMock.class/properties.json @@ -4,7 +4,7 @@ ], "classvars" : [ ], - "commentStamp" : "", + "commentStamp" : "js 6/13/2020 16:23", "instvars" : [ "created", "freed" ], diff --git a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/ArbitraryCodeRule..st b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/ArbitraryCodeRule..st deleted file mode 100644 index ce2c4a88a..000000000 --- a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/ArbitraryCodeRule..st +++ /dev/null @@ -1,12 +0,0 @@ -private -ArbitraryCodeRule: rule -"Verifies an arbritrary code rule." -|testRunner testObjects positiveResults| -testRunner := SLTestRunner new environment: SLDefaultEnvironment new. - - testObjects := classes. -testRunner runOnTests: {rule} andTestObjects: testObjects. -positiveResults := testObjects select: [:testObject | | result | - result := testObject resultOf: rule. -result result > 0]. -self assert: positiveResults isEmpty equals: true. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/PrecedenceRuleForMath.st b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/PrecedenceRuleForMath.st deleted file mode 100644 index 16794218b..000000000 --- a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/PrecedenceRuleForMath.st +++ /dev/null @@ -1,4 +0,0 @@ -organization -PrecedenceRuleForMath -"2+4*4 = 18, not 24 as in squeak." -self ArbitraryCodeRule: #precedenceRule. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/arbitraryCodeRule..st b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/arbitraryCodeRule..st new file mode 100644 index 000000000..9d576ccb3 --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/arbitraryCodeRule..st @@ -0,0 +1,4 @@ +private +arbitraryCodeRule: aRule + + self arbitraryCodeRule: aRule plugIn: SLSmallLintPlugIn. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/arbitraryCodeRule.plugIn..st b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/arbitraryCodeRule.plugIn..st new file mode 100644 index 000000000..bddcc1bc1 --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/arbitraryCodeRule.plugIn..st @@ -0,0 +1,15 @@ +private +arbitraryCodeRule: aRule plugIn: aPlugIn + + | failures result | + + failures := ((SLTestRunner new + environment: (self environmentFor: aPlugIn withRule: aRule)) + runOnTests: {aRule} andTestObjects: self classTestObjects) + select: [:testObject | + result := (testObject resultOf: aRule). + result isSummary + ifTrue: [result > 0] + ifFalse: [result isNegative]]. + + self assert: failures isEmpty description: 'Failures in: ', failures asString. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/classTestObjects..st b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/classTestObjects..st new file mode 100644 index 000000000..f8b18648d --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/classTestObjects..st @@ -0,0 +1,4 @@ +private +classTestObjects: aCollection + + classTestObjects := aCollection. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/classTestObjects.st b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/classTestObjects.st new file mode 100644 index 000000000..5d3ccf7b8 --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/classTestObjects.st @@ -0,0 +1,4 @@ +private +classTestObjects + + ^ classTestObjects \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/classes..st b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/classes..st new file mode 100644 index 000000000..d2e13a8c9 --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/classes..st @@ -0,0 +1,4 @@ +private +classes: aCollection + + classes := aCollection. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/classes.st b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/classes.st new file mode 100644 index 000000000..c345ee62a --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/classes.st @@ -0,0 +1,4 @@ +private +classes + + ^ classes \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/environmentFor.withRule..st b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/environmentFor.withRule..st new file mode 100644 index 000000000..5668ba758 --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/environmentFor.withRule..st @@ -0,0 +1,6 @@ +private +environmentFor: aPlugIn withRule: aRule + + ^ aPlugIn = SLSmallLintPlugIn + ifTrue: [TCTScopedEnvironment newFor: self classTestObjects test: aRule plugIn: SLSmallLintPlugIn] + ifFalse: [SLDefaultEnvironment new] \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/ifTrueReturnsRule.st b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/ifTrueReturnsRule.st deleted file mode 100644 index 8184f14b9..000000000 --- a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/ifTrueReturnsRule.st +++ /dev/null @@ -1,4 +0,0 @@ -organization -ifTrueReturnsRule -"replace IfTrue ifFalse branches with the shorter bool equivalent if possible" -self ArbitraryCodeRule: #ifTrueReturnsRule. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/initialize.st b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/initialize.st index d1088b53e..e6dae7db5 100644 --- a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/initialize.st +++ b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/initialize.st @@ -1,10 +1,10 @@ private initialize -|testRunner testObjects| -testRunner := SLTestRunner new environment: SLDefaultEnvironment new. -testObjects := SystemNavigation default allClasses . - testObjects := testObjects select: [:x|(x class category startsWith: 'TelegramClient-Core') or: ( x class category startsWith: 'TelegramClient-UI')]. - testObjects := testObjects collect: [ :aObject | - aObject as: SLTestObject]. - classes := testObjects. \ No newline at end of file + super initialize. + + self + classes: ((SystemNavigation default allClasses + select: [:aClass | + (aClass class category startsWith: 'TelegramClient') and: [(aClass class name startsWith: 'TCCFFIClient') not]])); + classTestObjects: (self classes collect: [:anObject | anObject as: SLTestObject]). \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/isLineWithOnlyTabsAndSpaces..st b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/isLineWithOnlyTabsAndSpaces..st new file mode 100644 index 000000000..55336f45f --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/isLineWithOnlyTabsAndSpaces..st @@ -0,0 +1,4 @@ +tests +isLineWithOnlyTabsAndSpaces: aString + + ^ aString isEmpty not and: [aString allSatisfy: [:aChar | aChar = Character space or: [aChar = Character tab]]] \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/methodTestObjects.st b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/methodTestObjects.st new file mode 100644 index 000000000..bbebf9f64 --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/methodTestObjects.st @@ -0,0 +1,4 @@ +private +methodTestObjects + + ^ (self classTestObjects collect: [:aClassTestObject | aClassTestObject methods]) flatten \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/methodsLinesDo..st b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/methodsLinesDo..st new file mode 100644 index 000000000..878e655db --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/methodsLinesDo..st @@ -0,0 +1,5 @@ +tests +methodsLinesDo: aBlock + + self methodTestObjects do: [:aSLMethodTestObject | + aBlock value: aSLMethodTestObject sourceCode string lines] \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/smallLintContains.st b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/smallLintContains.st deleted file mode 100644 index 008b135c2..000000000 --- a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/smallLintContains.st +++ /dev/null @@ -1,4 +0,0 @@ -organization -smallLintContains -"Use contains instead of detect: ifNone: " -self ArbitraryCodeRule: #smallLintContains . \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/smallLintSentNotImplemented.st b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/smallLintSentNotImplemented.st deleted file mode 100644 index 2ba989df4..000000000 --- a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/smallLintSentNotImplemented.st +++ /dev/null @@ -1,4 +0,0 @@ -organization -smallLintSentNotImplemented -"A message sent to a statically resolved type has to be implemented." -self ArbitraryCodeRule: #smallLintUndeclaredReference. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/smallLintUndeclaredReference.st b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/smallLintUndeclaredReference.st deleted file mode 100644 index 15782443d..000000000 --- a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/smallLintUndeclaredReference.st +++ /dev/null @@ -1,4 +0,0 @@ -organization -smallLintUndeclaredReference -"If you remove a variable from a class that is accessed by a method, you will create an undeclared variable reference for those methods that accessed the variable." -self ArbitraryCodeRule: #smallLintUndeclaredReference. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testCorrectClassPrefix.st b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testCorrectClassPrefix.st new file mode 100644 index 000000000..e837100f2 --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testCorrectClassPrefix.st @@ -0,0 +1,12 @@ +tests +testCorrectClassPrefix + + self classes do: [:aClass | + (aClass class category endsWith: 'Core') + ifTrue: [self assert: (aClass class name startsWith: 'TCC')]. + + (aClass class category endsWith: 'Tests') + ifTrue: [self assert: (aClass class name startsWith: 'TCT')]. + + (aClass class category endsWith: 'UI') + ifTrue: [self assert: (aClass class name startsWith: 'TCU')]] \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testIfTrueReturnsRule.st b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testIfTrueReturnsRule.st new file mode 100644 index 000000000..51276b1c2 --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testIfTrueReturnsRule.st @@ -0,0 +1,5 @@ +tests +testIfTrueReturnsRule + + "replace IfTrue ifFalse branches with the shorter bool equivalent if possible" + self arbitraryCodeRule: #ifTrueReturnsRule: plugIn: SLRBImportPlugIn. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testInstanceVarAccess.st b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testInstanceVarAccess.st new file mode 100644 index 000000000..a06ce102e --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testInstanceVarAccess.st @@ -0,0 +1,4 @@ +tests +testInstanceVarAccess + + self arbitraryCodeRule: #instanceVariableAccessIsConsistent: plugIn: SLSwaMetricsPlugIn. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testLongMethods.st b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testLongMethods.st new file mode 100644 index 000000000..5f6ed244f --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testLongMethods.st @@ -0,0 +1,4 @@ +tests +testLongMethods + + self methodsLinesDo: [:lines | self assert: lines size <= 15]. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testMethodHasEmptyLine.st b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testMethodHasEmptyLine.st new file mode 100644 index 000000000..8602e3f35 --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testMethodHasEmptyLine.st @@ -0,0 +1,5 @@ +tests +testMethodHasEmptyLine + + "also rejects method with tabs or spaces in second line" + self methodsLinesDo: [:lines | self assert: (lines size < 2 or: [lines second isEmpty])]. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testMethodNameIsLowerCase.st b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testMethodNameIsLowerCase.st new file mode 100644 index 000000000..49d270b14 --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testMethodNameIsLowerCase.st @@ -0,0 +1,4 @@ +tests +testMethodNameIsLowerCase + + self methodsLinesDo: [:lines | self assert: lines first first isLowercase]. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testMethodNoEmptyLineAtEnd.st b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testMethodNoEmptyLineAtEnd.st new file mode 100644 index 000000000..6cac868dc --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testMethodNoEmptyLineAtEnd.st @@ -0,0 +1,4 @@ +tests +testMethodNoEmptyLineAtEnd + + self methodsLinesDo: [:lines | self assert: lines last isEmpty not]. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testMethodNoLinesWithOnlyTabsAndSpaces.st b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testMethodNoLinesWithOnlyTabsAndSpaces.st new file mode 100644 index 000000000..d038dfcb0 --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testMethodNoLinesWithOnlyTabsAndSpaces.st @@ -0,0 +1,5 @@ +tests +testMethodNoLinesWithOnlyTabsAndSpaces + + self methodsLinesDo: [:lines | + self assert: (lines allSatisfy: [:aLine | (self isLineWithOnlyTabsAndSpaces: aLine) not])]. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testMethodNoTrailingWhitespaces.st b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testMethodNoTrailingWhitespaces.st new file mode 100644 index 000000000..e4ccfd0e7 --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testMethodNoTrailingWhitespaces.st @@ -0,0 +1,5 @@ +tests +testMethodNoTrailingWhitespaces + + self methodsLinesDo: [:lines | + self assert: (lines select: [:aLine | aLine isEmpty not and: [aLine last = Character space]]) isEmpty]. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testMethodNoTwoWhitespacesNextToEachOther.st b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testMethodNoTwoWhitespacesNextToEachOther.st new file mode 100644 index 000000000..347fc46e6 --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testMethodNoTwoWhitespacesNextToEachOther.st @@ -0,0 +1,5 @@ +tests +testMethodNoTwoWhitespacesNextToEachOther + + self methodsLinesDo: [:lines | + lines do: [:aLine | self assert: (aLine includesSubstring: String space, String space) not]]. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testMethodNotTooManyEmptyLines.st b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testMethodNotTooManyEmptyLines.st new file mode 100644 index 000000000..128ed0c07 --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testMethodNotTooManyEmptyLines.st @@ -0,0 +1,7 @@ +tests +testMethodNotTooManyEmptyLines + + self methodsLinesDo: [:lines | + 1 to: lines size -1 do: [:index | + self assert: ((self isLineWithOnlyTabsAndSpaces: (lines at: index)) + and: [self isLineWithOnlyTabsAndSpaces: (lines at: index + 1)]) not]]. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testMethodParamsHaveMeaningFulNames.st b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testMethodParamsHaveMeaningFulNames.st new file mode 100644 index 000000000..08c78ef72 --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testMethodParamsHaveMeaningFulNames.st @@ -0,0 +1,4 @@ +tests +testMethodParamsHaveMeaningFulNames + + self methodsLinesDo: [:lines | self assert: (lines first includesSubstring: 'anObject') not]. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testNoClassComments.st b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testNoClassComments.st new file mode 100644 index 000000000..b3754299a --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testNoClassComments.st @@ -0,0 +1,4 @@ +tests +testNoClassComments + + self arbitraryCodeRule: #noClassComments: plugIn: SLSwaMetricsPlugIn. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testNoDotAfterReturn.st b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testNoDotAfterReturn.st new file mode 100644 index 000000000..4b632113f --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testNoDotAfterReturn.st @@ -0,0 +1,9 @@ +tests +testNoDotAfterReturn + + | code | + + self methodTestObjects do: [:aSLMethodTestObject | + code := aSLMethodTestObject sourceCode string. + + self assert: (SLCodingStylesPlugIn new hasDotAfterReturn: code) ~= true]. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testNoUnclassifiedMethods.st b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testNoUnclassifiedMethods.st index e586c6723..5aa3d6773 100644 --- a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testNoUnclassifiedMethods.st +++ b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testNoUnclassifiedMethods.st @@ -1,4 +1,5 @@ -organization +tests testNoUnclassifiedMethods -"all methods have to be classified" -self ArbitraryCodeRule: #smallLintUnclassifiedMethods. \ No newline at end of file + + "all methods have to be classified" + self arbitraryCodeRule: #smallLintUnclassifiedMethods. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testNoUnconditionalRecursion.st b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testNoUnconditionalRecursion.st index 6c803673f..386d99470 100644 --- a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testNoUnconditionalRecursion.st +++ b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testNoUnconditionalRecursion.st @@ -1,4 +1,5 @@ -organization +tests testNoUnconditionalRecursion -"Infinite recursion is forbidden" -self ArbitraryCodeRule: #smallLintUnconditionalRecursion. \ No newline at end of file + + "Infinite recursion is forbidden" + self arbitraryCodeRule: #smallLintUnconditionalRecursion. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testNoUnreferencedVariables.st b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testNoUnreferencedVariables.st index 75a4fe2aa..9dee2c9e7 100644 --- a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testNoUnreferencedVariables.st +++ b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testNoUnreferencedVariables.st @@ -1,3 +1,4 @@ -organization +tests testNoUnreferencedVariables -self ArbitraryCodeRule: #smallLintExcessiveVariables. \ No newline at end of file + + self arbitraryCodeRule: #smallLintExcessiveVariables. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testSmallLintContains.st b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testSmallLintContains.st new file mode 100644 index 000000000..27797a62f --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testSmallLintContains.st @@ -0,0 +1,5 @@ +tests +testSmallLintContains + + "Use contains instead of detect: ifNone:" + self arbitraryCodeRule: #smallLintContains. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testTemporaryVariableCapitalization.st b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testTemporaryVariableCapitalization.st index 4f231aa01..2a0fadd2b 100644 --- a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testTemporaryVariableCapitalization.st +++ b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testTemporaryVariableCapitalization.st @@ -1,4 +1,5 @@ -organization +tests testTemporaryVariableCapitalization -"temporary variables should start with lowercase letters" -self ArbitraryCodeRule: #smallLintTemporaryVariableCapitalization. \ No newline at end of file + + "temporary variables should start with lowercase letters" + self arbitraryCodeRule: #smallLintTemporaryVariableCapitalization. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testsmallLintClassVariableCapitalization.st b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testsmallLintClassVariableCapitalization.st index 9a281efa6..18d7fc5d9 100644 --- a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testsmallLintClassVariableCapitalization.st +++ b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testsmallLintClassVariableCapitalization.st @@ -1,4 +1,5 @@ -organization -testsmallLintClassVariableCapitalization -"Class vars are pascalcase" -self ArbitraryCodeRule: #smallLintClassVariableCapitalization. \ No newline at end of file +tests +testsmallLintClassVariableCapitalization + + "Class vars are pascalcase" + self arbitraryCodeRule: #smallLintClassVariableCapitalization. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testsmallLintCodeCruftLeftInMethods.st b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testsmallLintCodeCruftLeftInMethods.st index 19d37284f..baa3f9706 100644 --- a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testsmallLintCodeCruftLeftInMethods.st +++ b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testsmallLintCodeCruftLeftInMethods.st @@ -1,4 +1,5 @@ -organization -testsmallLintCodeCruftLeftInMethods -"remove debugger breaks etc from code, otherwise this test fails" -self ArbitraryCodeRule: #smallLintCodeCruftLeftInMethods. \ No newline at end of file +tests +testsmallLintCodeCruftLeftInMethods + + "remove debugger breaks etc from code, otherwise this test fails" + self arbitraryCodeRule: #smallLintCodeCruftLeftInMethods. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testsmallLintCollectSelectNotUsed.st b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testsmallLintCollectSelectNotUsed.st index 9edb0899d..9e5c3c094 100644 --- a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testsmallLintCollectSelectNotUsed.st +++ b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testsmallLintCollectSelectNotUsed.st @@ -1,4 +1,5 @@ -organization +tests testsmallLintCollectSelectNotUsed -"prefer collect and select to manual list manipulation and aggregation" -self ArbitraryCodeRule: #smallLintCollectSelectNotUsed. \ No newline at end of file + + "prefer collect and select to manual list manipulation and aggregation" + self arbitraryCodeRule: #smallLintCollectSelectNotUsed. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testsmallLintConsistencyCheck.st b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testsmallLintConsistencyCheck.st index 9dfa84c5e..d196b6319 100644 --- a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testsmallLintConsistencyCheck.st +++ b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testsmallLintConsistencyCheck.st @@ -1,4 +1,5 @@ -organization -testsmallLintConsistencyCheck -"isEmpty, isNil and First should be preferred to size = 0, = nil, at: 1" -self ArbitraryCodeRule: #smallLintConsistencyCheck. \ No newline at end of file +tests +testsmallLintConsistencyCheck + + "isEmpty, isNil and First should be preferred to size = 0, = nil, at: 1" + self arbitraryCodeRule: #smallLintConsistencyCheck. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testsmallLintDefinesEqualNotHash.st b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testsmallLintDefinesEqualNotHash.st index de7faf14d..5da472cc6 100644 --- a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testsmallLintDefinesEqualNotHash.st +++ b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testsmallLintDefinesEqualNotHash.st @@ -1,4 +1,5 @@ -organization -testsmallLintDefinesEqualNotHash -"Menu items should be translated somehow. will be evergreen until we sell this as a feature" -self ArbitraryCodeRule: #smallLintDefinesEqualNotHash. \ No newline at end of file +tests +testsmallLintDefinesEqualNotHash + + "Menu items should be translated somehow. will be evergreen until we sell this as a feature" + self arbitraryCodeRule: #smallLintDefinesEqualNotHash. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testsmallLintEmptyExceptionHandler.st b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testsmallLintEmptyExceptionHandler.st index 6f7c6a068..431168eaa 100644 --- a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testsmallLintEmptyExceptionHandler.st +++ b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testsmallLintEmptyExceptionHandler.st @@ -1,4 +1,5 @@ -organization -testsmallLintEmptyExceptionHandler -"tests for empty exception handling blocks" -self ArbitraryCodeRule: #smallLintEmptyExceptionHandler. \ No newline at end of file +tests +testsmallLintEmptyExceptionHandler + + "tests for empty exception handling blocks" + self arbitraryCodeRule: #smallLintEmptyExceptionHandler. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testsmallLintEqualNotUsed.st b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testsmallLintEqualNotUsed.st index b1e133b3c..ae4da4e3d 100644 --- a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testsmallLintEqualNotUsed.st +++ b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testsmallLintEqualNotUsed.st @@ -1,4 +1,5 @@ -organization -testsmallLintEqualNotUsed -"results of an equal call are ignored" -self ArbitraryCodeRule: #smallLintEqualNotUsed. \ No newline at end of file +tests +testsmallLintEqualNotUsed + + "results of an equal call are ignored" + self arbitraryCodeRule: #smallLintEqualNotUsed. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testsmallLintFloatEqualityComparison.st b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testsmallLintFloatEqualityComparison.st index d634cbd6f..e25ed9753 100644 --- a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testsmallLintFloatEqualityComparison.st +++ b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testsmallLintFloatEqualityComparison.st @@ -1,4 +1,5 @@ -organization +tests testsmallLintFloatEqualityComparison -"All float comparisons should use equals and not =" -self ArbitraryCodeRule: #smallLintFloatEqualityComparison. \ No newline at end of file + + "All float comparisons should use equals and not =" + self arbitraryCodeRule: #smallLintFloatEqualityComparison. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testsmallLintLiteralArrayCharacters.st b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testsmallLintLiteralArrayCharacters.st index 893f84b85..2afd2bdad 100644 --- a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testsmallLintLiteralArrayCharacters.st +++ b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testsmallLintLiteralArrayCharacters.st @@ -1,4 +1,5 @@ -organization -testsmallLintLiteralArrayCharacters -"literal char arrays should be strings" -self ArbitraryCodeRule: #smallLintLiteralArrayCharacters. \ No newline at end of file +tests +testsmallLintLiteralArrayCharacters + + "literal char arrays should be strings" + self arbitraryCodeRule: #smallLintLiteralArrayCharacters. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testsmallLintMethodModifierOverride.st b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testsmallLintMethodModifierOverride.st index ddf1c7b0b..426638deb 100644 --- a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testsmallLintMethodModifierOverride.st +++ b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testsmallLintMethodModifierOverride.st @@ -1,4 +1,5 @@ -organization -testsmallLintMethodModifierOverride -"Checks that messages marked as override actually override something" -self ArbitraryCodeRule: #smallLintMethodModifierOverride. \ No newline at end of file +tests +testsmallLintMethodModifierOverride + + "Checks that messages marked as override actually override something" + self arbitraryCodeRule: #smallLintMethodModifierOverride. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testsmallLintMissingTranslationsInMenus.st b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testsmallLintMissingTranslationsInMenus.st index 9c3ea262c..20f53cd2e 100644 --- a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testsmallLintMissingTranslationsInMenus.st +++ b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testsmallLintMissingTranslationsInMenus.st @@ -1,4 +1,5 @@ -organization -testsmallLintMissingTranslationsInMenus -"Menu items should be translated somehow. will be evergreen until we sell this as a feature" -self ArbitraryCodeRule: #smallLintMissingTranslationsInMenus. \ No newline at end of file +tests +testsmallLintMissingTranslationsInMenus + + "Menu items should be translated somehow. will be evergreen until we sell this as a feature" + self arbitraryCodeRule: #smallLintMissingTranslationsInMenus. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testsmallLintModifiesCollection.st b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testsmallLintModifiesCollection.st index 1961c0973..9d8fd7901 100644 --- a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testsmallLintModifiesCollection.st +++ b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testsmallLintModifiesCollection.st @@ -1,4 +1,5 @@ -organization -testsmallLintModifiesCollection -"Non threadsafe and tracking iterators are used in squeak, so modifying collections while iterating over them does not work" -self ArbitraryCodeRule: #smallLintModifiesCollection . \ No newline at end of file +tests +testsmallLintModifiesCollection + + "Non threadsafe and tracking iterators are used in squeak, so modifying collections while iterating over them does not work" + self arbitraryCodeRule: #smallLintModifiesCollection. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testsmallLintOnlyReadOrWrittenTemporary.st b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testsmallLintOnlyReadOrWrittenTemporary.st new file mode 100644 index 000000000..d7616c7e0 --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testsmallLintOnlyReadOrWrittenTemporary.st @@ -0,0 +1,4 @@ +tests +testsmallLintOnlyReadOrWrittenTemporary + + self arbitraryCodeRule: #smallLintOnlyReadOrWrittenTemporary. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testsmallLintReturnsBooleanAndOther.st b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testsmallLintReturnsBooleanAndOther.st index 20e938926..cdb233a05 100644 --- a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testsmallLintReturnsBooleanAndOther.st +++ b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testsmallLintReturnsBooleanAndOther.st @@ -1,4 +1,5 @@ -organization -testsmallLintReturnsBooleanAndOther -"When one return type is a bool, all should be. obviously" -self ArbitraryCodeRule: #smallLintReturnsBooleanAndOther. \ No newline at end of file +tests +testsmallLintReturnsBooleanAndOther + + "When one return type is a bool, all should be. obviously" + self arbitraryCodeRule: #smallLintReturnsBooleanAndOther. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testsmallLintSendsUnknownMessageToGlobal.st b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testsmallLintSendsUnknownMessageToGlobal.st index c5086b993..f987ddc60 100644 --- a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testsmallLintSendsUnknownMessageToGlobal.st +++ b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testsmallLintSendsUnknownMessageToGlobal.st @@ -1,4 +1,5 @@ -organization -testsmallLintSendsUnknownMessageToGlobal -"Globals can be checked to implement a message with this test." -self ArbitraryCodeRule: #smallLintSendsUnknownMessageToGlobal. \ No newline at end of file +tests +testsmallLintSendsUnknownMessageToGlobal + + "Globals can be checked to implement a message with this test." + self arbitraryCodeRule: #smallLintSendsUnknownMessageToGlobal. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testsmallLintSizeCheck.st b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testsmallLintSizeCheck.st index f609df405..2b9fd541a 100644 --- a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testsmallLintSizeCheck.st +++ b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testsmallLintSizeCheck.st @@ -1,4 +1,5 @@ -organization -testsmallLintSizeCheck -"Checking size is irrelevant if you only enumerate." -self ArbitraryCodeRule: #smallLintSizeCheck . \ No newline at end of file +tests +testsmallLintSizeCheck + + "Checking size is irrelevant if you only enumerate." + self arbitraryCodeRule: #smallLintSizeCheck. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testsmallLintStringConcatenation.st b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testsmallLintStringConcatenation.st index 31d5a6a25..d90cebcf8 100644 --- a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testsmallLintStringConcatenation.st +++ b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testsmallLintStringConcatenation.st @@ -1,4 +1,5 @@ -organization -testsmallLintStringConcatenation -"strings should be streamed when possible instead of concatted, as the runtime is better" -self ArbitraryCodeRule: #smallLintStringConcatenation. \ No newline at end of file +tests +testsmallLintStringConcatenation + + "strings should be streamed when possible instead of concatted, as the runtime is better" + self arbitraryCodeRule: #smallLintStringConcatenation. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testsmallLintTempVarOverridesInstVar.st b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testsmallLintTempVarOverridesInstVar.st index 589e4ca5f..b98356634 100644 --- a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testsmallLintTempVarOverridesInstVar.st +++ b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testsmallLintTempVarOverridesInstVar.st @@ -1,4 +1,5 @@ -organization -testsmallLintTempVarOverridesInstVar -"temp vars override the instance vars in scope which leads to easy bugs. choose different names!" -self ArbitraryCodeRule: #smallLintTempVarOverridesInstVar. \ No newline at end of file +tests +testsmallLintTempVarOverridesInstVar + + "temp vars override the instance vars in scope which leads to easy bugs. choose different names!" + self arbitraryCodeRule: #smallLintTempVarOverridesInstVar. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testsmallLintTemporaryVariableCapitalization.st b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testsmallLintTemporaryVariableCapitalization.st index a54b8054d..8d3600d1c 100644 --- a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testsmallLintTemporaryVariableCapitalization.st +++ b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testsmallLintTemporaryVariableCapitalization.st @@ -1,4 +1,5 @@ -organization -testsmallLintTemporaryVariableCapitalization -"temporary variables should be lowercase" -self ArbitraryCodeRule: #smallLintTemporaryVariableCapitalization. \ No newline at end of file +tests +testsmallLintTemporaryVariableCapitalization + + "temporary variables should be lowercase" + self arbitraryCodeRule: #smallLintTemporaryVariableCapitalization. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testsmallLintTempsReadBeforeWritten.st b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testsmallLintTempsReadBeforeWritten.st index 38a821193..7b9082e15 100644 --- a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testsmallLintTempsReadBeforeWritten.st +++ b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testsmallLintTempsReadBeforeWritten.st @@ -1,4 +1,5 @@ -organization -testsmallLintTempsReadBeforeWritten -"Temp vars should be initialized before being written" -self ArbitraryCodeRule: #smallLintTempsReadBeforeWritten. \ No newline at end of file +tests +testsmallLintTempsReadBeforeWritten + + "Temp vars should be initialized before being written" + self arbitraryCodeRule: #smallLintTempsReadBeforeWritten. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testsmallLintUnoptimizedAndOr.st b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testsmallLintUnoptimizedAndOr.st index 2db4d2155..b7c643795 100644 --- a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testsmallLintUnoptimizedAndOr.st +++ b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testsmallLintUnoptimizedAndOr.st @@ -1,4 +1,5 @@ -organization -testsmallLintUnoptimizedAndOr -"dont use nested ands, have them all at the top level" -self ArbitraryCodeRule: #smallLintUnoptimizedAndOr. \ No newline at end of file +tests +testsmallLintUnoptimizedAndOr + + "dont use nested ands, have them all at the top level" + self arbitraryCodeRule: #smallLintUnoptimizedAndOr. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testsmallLintUnpackagedCode.st b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testsmallLintUnpackagedCode.st index 31d654719..17e2c5723 100644 --- a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testsmallLintUnpackagedCode.st +++ b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testsmallLintUnpackagedCode.st @@ -1,4 +1,5 @@ -organization -testsmallLintUnpackagedCode -"All of our code should be in a monticello package." -self ArbitraryCodeRule: #smallLintUnpackagedCode. \ No newline at end of file +tests +testsmallLintUnpackagedCode + + "All of our code should be in a monticello package." + self arbitraryCodeRule: #smallLintUnpackagedCode. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testsmallLintUsesAdd.st b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testsmallLintUsesAdd.st index 4624699c3..f372439f7 100644 --- a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testsmallLintUsesAdd.st +++ b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testsmallLintUsesAdd.st @@ -1,4 +1,5 @@ -organization -testsmallLintUsesAdd -"Adding to a list returns the added elements. These can be ignored, as they are alread available as parameter" -self ArbitraryCodeRule: #smallLintUsesAdd. \ No newline at end of file +tests +testsmallLintUsesAdd + + "Adding to a list returns the added elements. These can be ignored, as they are alread available as parameter" + self arbitraryCodeRule: #smallLintUsesAdd. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testsmallLintUsesTrue.st b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testsmallLintUsesTrue.st index 4fdbde21e..53e409086 100644 --- a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testsmallLintUsesTrue.st +++ b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testsmallLintUsesTrue.st @@ -1,4 +1,5 @@ -organization -testsmallLintUsesTrue -"There is a difference between true and True, and we should use true?" -self ArbitraryCodeRule: #smallLintUsesTrue. \ No newline at end of file +tests +testsmallLintUsesTrue + + "There is a difference between true and True, and we should use true?" + self arbitraryCodeRule: #smallLintUsesTrue. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTLinterTests.class/methodProperties.json b/packages/TelegramClient-Tests.package/TCTLinterTests.class/methodProperties.json index ef12eb876..76b4108fc 100644 --- a/packages/TelegramClient-Tests.package/TCTLinterTests.class/methodProperties.json +++ b/packages/TelegramClient-Tests.package/TCTLinterTests.class/methodProperties.json @@ -2,37 +2,57 @@ "class" : { }, "instance" : { - "ArbitraryCodeRule:" : "N.S. 6/1/2020 14:21", - "PrecedenceRuleForMath" : "N.S. 5/21/2020 10:09", - "ifTrueReturnsRule" : "N.S. 5/28/2020 09:56", - "initialize" : "N.S. 6/1/2020 14:18", - "smallLintContains" : "N.S. 5/28/2020 09:57", - "smallLintSentNotImplemented" : "N.S. 5/28/2020 09:58", - "smallLintUndeclaredReference" : "N.S. 5/28/2020 09:57", - "testNoUnclassifiedMethods" : "N.S. 5/21/2020 10:11", - "testNoUnconditionalRecursion" : "N.S. 5/21/2020 10:11", - "testNoUnreferencedVariables" : "N.S. 5/21/2020 10:10", - "testTemporaryVariableCapitalization" : "N.S. 5/21/2020 10:10", - "testsmallLintClassVariableCapitalization" : "N.S. 5/21/2020 10:08", - "testsmallLintCodeCruftLeftInMethods" : "N.S. 5/21/2020 10:20", - "testsmallLintCollectSelectNotUsed" : "N.S. 5/21/2020 10:10", - "testsmallLintConsistencyCheck" : "N.S. 5/21/2020 10:15", - "testsmallLintDefinesEqualNotHash" : "N.S. 5/21/2020 10:28", - "testsmallLintEmptyExceptionHandler" : "N.S. 5/21/2020 10:29", - "testsmallLintEqualNotUsed" : "N.S. 5/21/2020 10:28", - "testsmallLintFloatEqualityComparison" : "N.S. 5/21/2020 10:10", - "testsmallLintLiteralArrayCharacters" : "N.S. 5/21/2020 10:10", - "testsmallLintMethodModifierOverride" : "N.S. 5/21/2020 10:06", - "testsmallLintMissingTranslationsInMenus" : "N.S. 5/21/2020 10:27", - "testsmallLintModifiesCollection" : "N.S. 5/21/2020 10:31", - "testsmallLintReturnsBooleanAndOther" : "N.S. 5/21/2020 10:32", - "testsmallLintSendsUnknownMessageToGlobal" : "N.S. 5/21/2020 10:07", - "testsmallLintSizeCheck" : "N.S. 5/21/2020 10:13", - "testsmallLintStringConcatenation" : "N.S. 5/21/2020 10:18", - "testsmallLintTempVarOverridesInstVar" : "N.S. 5/21/2020 10:30", - "testsmallLintTemporaryVariableCapitalization" : "N.S. 5/21/2020 10:13", - "testsmallLintTempsReadBeforeWritten" : "N.S. 5/21/2020 10:33", - "testsmallLintUnoptimizedAndOr" : "N.S. 5/21/2020 10:19", - "testsmallLintUnpackagedCode" : "N.S. 5/21/2020 10:34", - "testsmallLintUsesAdd" : "N.S. 5/21/2020 10:35", - "testsmallLintUsesTrue" : "N.S. 5/21/2020 10:02" } } + "arbitraryCodeRule:" : "js 6/13/2020 18:04", + "arbitraryCodeRule:plugIn:" : "js 6/13/2020 18:04", + "classTestObjects" : "js 6/13/2020 13:28", + "classTestObjects:" : "js 6/13/2020 13:28", + "classes" : "js 6/13/2020 11:38", + "classes:" : "js 6/13/2020 11:38", + "environmentFor:withRule:" : "js 6/13/2020 17:53", + "initialize" : "js 6/13/2020 18:35", + "isLineWithOnlyTabsAndSpaces:" : "js 6/13/2020 16:03", + "methodTestObjects" : "js 6/13/2020 14:06", + "methodsLinesDo:" : "js 6/13/2020 18:05", + "testCorrectClassPrefix" : "js 6/13/2020 18:23", + "testIfTrueReturnsRule" : "js 6/13/2020 18:35", + "testInstanceVarAccess" : "js 6/13/2020 16:54", + "testLongMethods" : "js 6/13/2020 17:58", + "testMethodHasEmptyLine" : "js 6/13/2020 18:13", + "testMethodNameIsLowerCase" : "js 6/13/2020 18:05", + "testMethodNoEmptyLineAtEnd" : "js 6/13/2020 18:05", + "testMethodNoLinesWithOnlyTabsAndSpaces" : "js 6/13/2020 18:06", + "testMethodNoTrailingWhitespaces" : "js 6/13/2020 18:06", + "testMethodNoTwoWhitespacesNextToEachOther" : "js 6/13/2020 18:56", + "testMethodNotTooManyEmptyLines" : "js 6/13/2020 18:36", + "testMethodParamsHaveMeaningFulNames" : "js 6/13/2020 19:09", + "testNoClassComments" : "js 6/13/2020 17:09", + "testNoDotAfterReturn" : "js 6/13/2020 18:09", + "testNoUnclassifiedMethods" : "js 6/13/2020 18:06", + "testNoUnconditionalRecursion" : "js 6/13/2020 11:44", + "testNoUnreferencedVariables" : "js 6/13/2020 18:09", + "testSmallLintContains" : "js 6/13/2020 18:36", + "testTemporaryVariableCapitalization" : "js 6/13/2020 18:09", + "testsmallLintClassVariableCapitalization" : "js 6/13/2020 18:37", + "testsmallLintCodeCruftLeftInMethods" : "js 6/13/2020 18:37", + "testsmallLintCollectSelectNotUsed" : "js 6/13/2020 18:07", + "testsmallLintConsistencyCheck" : "js 6/13/2020 18:37", + "testsmallLintDefinesEqualNotHash" : "js 6/13/2020 18:37", + "testsmallLintEmptyExceptionHandler" : "js 6/13/2020 18:37", + "testsmallLintEqualNotUsed" : "js 6/13/2020 18:37", + "testsmallLintFloatEqualityComparison" : "js 6/13/2020 18:07", + "testsmallLintLiteralArrayCharacters" : "js 6/13/2020 18:37", + "testsmallLintMethodModifierOverride" : "js 6/13/2020 18:37", + "testsmallLintMissingTranslationsInMenus" : "js 6/13/2020 18:37", + "testsmallLintModifiesCollection" : "js 6/13/2020 18:38", + "testsmallLintOnlyReadOrWrittenTemporary" : "js 6/13/2020 19:21", + "testsmallLintReturnsBooleanAndOther" : "js 6/13/2020 18:38", + "testsmallLintSendsUnknownMessageToGlobal" : "js 6/13/2020 18:38", + "testsmallLintSizeCheck" : "js 6/13/2020 18:38", + "testsmallLintStringConcatenation" : "js 6/13/2020 18:38", + "testsmallLintTempVarOverridesInstVar" : "js 6/13/2020 18:38", + "testsmallLintTemporaryVariableCapitalization" : "js 6/13/2020 18:56", + "testsmallLintTempsReadBeforeWritten" : "js 6/13/2020 18:38", + "testsmallLintUnoptimizedAndOr" : "js 6/13/2020 18:39", + "testsmallLintUnpackagedCode" : "js 6/13/2020 18:39", + "testsmallLintUsesAdd" : "js 6/13/2020 18:39", + "testsmallLintUsesTrue" : "js 6/13/2020 18:39" } } diff --git a/packages/TelegramClient-Tests.package/TCTLinterTests.class/properties.json b/packages/TelegramClient-Tests.package/TCTLinterTests.class/properties.json index f2c7654ac..e8cff09d1 100644 --- a/packages/TelegramClient-Tests.package/TCTLinterTests.class/properties.json +++ b/packages/TelegramClient-Tests.package/TCTLinterTests.class/properties.json @@ -6,7 +6,8 @@ ], "commentStamp" : "N.S. 5/14/2020 11:48", "instvars" : [ - "classes" ], + "classes", + "classTestObjects" ], "name" : "TCTLinterTests", "pools" : [ ], diff --git a/packages/TelegramClient-Tests.package/TCTScopedEnvironment.class/README.md b/packages/TelegramClient-Tests.package/TCTScopedEnvironment.class/README.md new file mode 100644 index 000000000..8615eabd3 --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTScopedEnvironment.class/README.md @@ -0,0 +1 @@ +a scoped environment to run single tests faster \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTScopedEnvironment.class/class/newFor.test.plugIn..st b/packages/TelegramClient-Tests.package/TCTScopedEnvironment.class/class/newFor.test.plugIn..st new file mode 100644 index 000000000..e32745565 --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTScopedEnvironment.class/class/newFor.test.plugIn..st @@ -0,0 +1,4 @@ +instance creation +newFor: aCollection test: aSymbol plugIn: aPlugin + + ^ self basicNew initializeForClasses: aCollection test: aSymbol plugIn: aPlugin \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTScopedEnvironment.class/instance/fetchClasses..st b/packages/TelegramClient-Tests.package/TCTScopedEnvironment.class/instance/fetchClasses..st new file mode 100644 index 000000000..e95913ddd --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTScopedEnvironment.class/instance/fetchClasses..st @@ -0,0 +1,7 @@ +initialize-release +fetchClasses: aCollection + + aCollection do: [ :aClass | + aClass category ifNotNil: [ + (self category: aClass category) + add: aClass name]]. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTScopedEnvironment.class/instance/initializeForClasses.test.plugIn..st b/packages/TelegramClient-Tests.package/TCTScopedEnvironment.class/instance/initializeForClasses.test.plugIn..st new file mode 100644 index 000000000..c29321dff --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTScopedEnvironment.class/instance/initializeForClasses.test.plugIn..st @@ -0,0 +1,10 @@ +initialize-release +initializeForClasses: aCollection test: aSymbol plugIn: aPlugin + + super initialize. + self systemClasses: Dictionary new. + + self + initializeInstanceVariables; + loadTest: aSymbol plugIn: aPlugin; + fetchClasses: aCollection. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTScopedEnvironment.class/instance/loadTest.plugIn..st b/packages/TelegramClient-Tests.package/TCTScopedEnvironment.class/instance/loadTest.plugIn..st new file mode 100644 index 000000000..f314412f4 --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTScopedEnvironment.class/instance/loadTest.plugIn..st @@ -0,0 +1,6 @@ +initialize-release +loadTest: aSymbol plugIn: aPlugin + + self addTest: (SLTestData newFromDefault + symbol: aSymbol; + plugIn: aPlugin). \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTScopedEnvironment.class/instance/systemClasses..st b/packages/TelegramClient-Tests.package/TCTScopedEnvironment.class/instance/systemClasses..st new file mode 100644 index 000000000..fe3affa51 --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTScopedEnvironment.class/instance/systemClasses..st @@ -0,0 +1,4 @@ +initialize-release +systemClasses: aCollection + + systemClasses := aCollection. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTScopedEnvironment.class/methodProperties.json b/packages/TelegramClient-Tests.package/TCTScopedEnvironment.class/methodProperties.json new file mode 100644 index 000000000..91258d4bd --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTScopedEnvironment.class/methodProperties.json @@ -0,0 +1,8 @@ +{ + "class" : { + "newFor:test:plugIn:" : "js 6/13/2020 16:40" }, + "instance" : { + "fetchClasses:" : "js 6/13/2020 18:39", + "initializeForClasses:test:plugIn:" : "js 6/13/2020 18:23", + "loadTest:plugIn:" : "js 6/13/2020 19:18", + "systemClasses:" : "js 6/13/2020 17:49" } } diff --git a/packages/TelegramClient-Tests.package/TCTScopedEnvironment.class/properties.json b/packages/TelegramClient-Tests.package/TCTScopedEnvironment.class/properties.json new file mode 100644 index 000000000..390bb320b --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTScopedEnvironment.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "TelegramClient-Tests", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "js 6/13/2020 17:24", + "instvars" : [ + ], + "name" : "TCTScopedEnvironment", + "pools" : [ + ], + "super" : "SLEnvironment", + "type" : "normal" } diff --git a/packages/TelegramClient-Tests.package/TCTTeleClientTests.class/instance/testClientDestroysHandle.st b/packages/TelegramClient-Tests.package/TCTTeleClientTests.class/instance/testClientDestroysHandle.st index 46eaf4c85..ba7e614ac 100644 --- a/packages/TelegramClient-Tests.package/TCTTeleClientTests.class/instance/testClientDestroysHandle.st +++ b/packages/TelegramClient-Tests.package/TCTTeleClientTests.class/instance/testClientDestroysHandle.st @@ -1,12 +1,11 @@ client testClientDestroysHandle - - | aClient aHandle aMock | + + | aClient aMock | aMock := TCTAbstractTeleClientFactoryMock new createClient: ''. aClient := TCCTeleClient newWithClient: aMock. aClient free. - aHandle := aClient specificClient. - + self assert: aClient isAlive not. self assert: aClient specificClient isNil. self assert: aMock freed. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTTeleClientTests.class/instance/testFactoryCreatesCorrectClientForPlatform.st b/packages/TelegramClient-Tests.package/TCTTeleClientTests.class/instance/testFactoryCreatesCorrectClientForPlatform.st index 31eb32345..61e63d2fa 100644 --- a/packages/TelegramClient-Tests.package/TCTTeleClientTests.class/instance/testFactoryCreatesCorrectClientForPlatform.st +++ b/packages/TelegramClient-Tests.package/TCTTeleClientTests.class/instance/testFactoryCreatesCorrectClientForPlatform.st @@ -1,10 +1,8 @@ factory testFactoryCreatesCorrectClientForPlatform - | client osList factory classList | - osList := #('Win32' 'Mac OS' 'Linux'). - classList := #(WindowsClient MacClient LinuxClient). - factory := TCCTeleClientFactory new. - osList do: [:os | - client := factory createClient: os. + | client | + + #('Win32' 'Mac OS' 'Linux') do: [:os | + client := TCCTeleClientFactory new createClient: os. self assert: client type equals: os]. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTTeleClientTests.class/methodProperties.json b/packages/TelegramClient-Tests.package/TCTTeleClientTests.class/methodProperties.json index f0dce5b5b..f99684a3a 100644 --- a/packages/TelegramClient-Tests.package/TCTTeleClientTests.class/methodProperties.json +++ b/packages/TelegramClient-Tests.package/TCTTeleClientTests.class/methodProperties.json @@ -2,5 +2,5 @@ "class" : { }, "instance" : { - "testClientDestroysHandle" : "js 5/28/2020 17:46", - "testFactoryCreatesCorrectClientForPlatform" : "js 5/28/2020 17:37" } } + "testClientDestroysHandle" : "js 6/13/2020 19:20", + "testFactoryCreatesCorrectClientForPlatform" : "js 6/13/2020 19:19" } } diff --git a/packages/TelegramClient-UI.package/NullChatListItem.class/README.md b/packages/TelegramClient-UI.package/NullChatListItem.class/README.md deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/TelegramClient-UI.package/TCUApp.class/README.md b/packages/TelegramClient-UI.package/TCUApp.class/README.md index e69de29bb..8487da997 100644 --- a/packages/TelegramClient-UI.package/TCUApp.class/README.md +++ b/packages/TelegramClient-UI.package/TCUApp.class/README.md @@ -0,0 +1 @@ +starting point for TC-UI, this starts authentication and main window \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUApp.class/instance/initialize.st b/packages/TelegramClient-UI.package/TCUApp.class/instance/initialize.st index 378e5aa0a..57272c48e 100644 --- a/packages/TelegramClient-UI.package/TCUApp.class/instance/initialize.st +++ b/packages/TelegramClient-UI.package/TCUApp.class/instance/initialize.st @@ -2,5 +2,5 @@ initialize-release initialize super initialize. - + (TCUAuthentication newWithCore: self core) openCenteredInWorld. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUApp.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUApp.class/methodProperties.json index a2795d870..c4107a77c 100644 --- a/packages/TelegramClient-UI.package/TCUApp.class/methodProperties.json +++ b/packages/TelegramClient-UI.package/TCUApp.class/methodProperties.json @@ -5,4 +5,4 @@ "instance" : { "core" : "js 5/31/2020 20:04", "core:" : "js 5/31/2020 20:04", - "initialize" : "rs 6/6/2020 17:39" } } + "initialize" : "js 6/13/2020 18:22" } } diff --git a/packages/TelegramClient-UI.package/TCUApp.class/properties.json b/packages/TelegramClient-UI.package/TCUApp.class/properties.json index d7b2098d5..9bd9d302e 100644 --- a/packages/TelegramClient-UI.package/TCUApp.class/properties.json +++ b/packages/TelegramClient-UI.package/TCUApp.class/properties.json @@ -4,7 +4,7 @@ ], "classvars" : [ ], - "commentStamp" : "", + "commentStamp" : "js 6/13/2020 18:59", "instvars" : [ "core" ], "name" : "TCUApp", diff --git a/packages/TelegramClient-UI.package/TCUAuthentication.class/README.md b/packages/TelegramClient-UI.package/TCUAuthentication.class/README.md index e69de29bb..d5057721d 100644 --- a/packages/TelegramClient-UI.package/TCUAuthentication.class/README.md +++ b/packages/TelegramClient-UI.package/TCUAuthentication.class/README.md @@ -0,0 +1 @@ +View for authentication \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/addHeader.st b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/addHeader.st index 969695c07..153c998b8 100644 --- a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/addHeader.st +++ b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/addHeader.st @@ -6,7 +6,7 @@ addHeader borderWidth: 0; color: TCUDefaultValues colorGray; extent: self width @ 40. - - self + + self addMorph: header; addTitle: 'Telegram' to: header. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/addTitle.to..st b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/addTitle.to..st index 2c96d39ea..4d9824b91 100644 --- a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/addTitle.to..st +++ b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/addTitle.to..st @@ -6,5 +6,5 @@ addTitle: aString to: aMorph titleLable := TextMorph new contents: (aString asText addAttribute: font); color: Color white. - + aMorph addMorphCentered: titleLable. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/buttonNextPressed.st b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/buttonNextPressed.st index 42c8f1ef0..f705130fb 100644 --- a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/buttonNextPressed.st +++ b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/buttonNextPressed.st @@ -1,4 +1,4 @@ accessing buttonNextPressed - + self core sendPhoneNumber: self inputField text. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/core.st b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/core.st index 95ae6d261..5e78e5bba 100644 --- a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/core.st +++ b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/core.st @@ -1,5 +1,4 @@ initialization core - ^ core - \ No newline at end of file + ^ core \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createButtonBack.st b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createButtonBack.st index 02c5a0b6d..86971005d 100644 --- a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createButtonBack.st +++ b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createButtonBack.st @@ -1,10 +1,10 @@ initialization createButtonBack - self buttonBack: (TCUButton new + self buttonBack: (TCUButton new text: 'Back'; - center: inputField center + ((-100) @ 50); + center: self inputField center + ((-100) @ 50); hide; on: #mouseDown send: #buttonBackPressed to: self). - - self addMorph: buttonBack. + + self addMorph: self buttonBack. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createButtonNext.st b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createButtonNext.st index 59b217dab..34f429a5d 100644 --- a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createButtonNext.st +++ b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createButtonNext.st @@ -1,10 +1,10 @@ initialization createButtonNext - self buttonNext: (TCUButton new + self buttonNext: (TCUButton new text: 'Next'; - center: inputField center + (100 @ 50); + center: self inputField center + (100 @ 50); hide; on: #mouseDown send: #buttonNextPressed to: self). - - self addMorph: buttonNext. \ No newline at end of file + + self addMorph: self buttonNext. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createButtonVerify.st b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createButtonVerify.st index 8a18a4ea8..27a37dbf0 100644 --- a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createButtonVerify.st +++ b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createButtonVerify.st @@ -1,7 +1,7 @@ initialization createButtonVerify - self + self buttonVerify: (TCUButton new text: 'Verify'; center: self inputField center + (70 @ 50); diff --git a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createErrorLabel..st b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createErrorLabel..st index 2c54fd1ce..0436d41eb 100644 --- a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createErrorLabel..st +++ b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createErrorLabel..st @@ -6,6 +6,5 @@ createErrorLabel: aString center: (self center + (0 @ (self defaultExtent y / 3))); color: Color red; lock). - - self addMorph: self errorLabel. - \ No newline at end of file + + self addMorph: self errorLabel. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createInputBar..st b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createInputBar..st deleted file mode 100644 index 154d5f1ae..000000000 --- a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createInputBar..st +++ /dev/null @@ -1,13 +0,0 @@ -initialization -createInputBar: aString - - self inputField: (TextMorph new - contentsWrapped: aString asText; - extent: 150 @ 50; - borderColor: TCUDefaultValues colorGray; - borderWidth: 1; - center: self instructionLabel center + (0 @ 30); - hide; - crAction: [self buttonNextPressed]). - - self addMorph: self inputField. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createInputField..st b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createInputField..st index 396199d62..cd423b9b8 100644 --- a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createInputField..st +++ b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createInputField..st @@ -1,13 +1,13 @@ initialization createInputField: aString - - self inputField: (TextMorph new + + self inputField: (TextMorph new contentsWrapped: aString asText; - extent: 150 @ 50; + extent: self defaultInputWidth @ 50; borderColor: TCUDefaultValues colorGray; borderWidth: 1; center: self instructionLabel center + (0 @ 30); hide; crAction: [self buttonNextPressed]). - + self addMorph: self inputField. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createLabel..st b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createLabel..st index a08bb615a..839b107ae 100644 --- a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createLabel..st +++ b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createLabel..st @@ -4,5 +4,5 @@ createLabel: aString self instructionLabel: (TextMorph new contents: aString asText; lock). - + ^ self instructionLabel \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/initialize.st b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/initialize.st index 25656becd..7f1315fd1 100644 --- a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/initialize.st +++ b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/initialize.st @@ -2,7 +2,7 @@ initialization initialize super initialize. - self + self subscribeCore; extent: self defaultExtent; color: Color white; diff --git a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/logInCompleted.st b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/logInCompleted.st index 38ce3e4a7..9a98ed73d 100644 --- a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/logInCompleted.st +++ b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/logInCompleted.st @@ -1,5 +1,5 @@ initialization -logInCompleted +logInCompleted (TCUMain newWithCore: self core) openCenteredInWorld. super delete. diff --git a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/showFirstStep.st b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/showFirstStep.st index 75363aa9e..2447098ec 100644 --- a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/showFirstStep.st +++ b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/showFirstStep.st @@ -1,10 +1,10 @@ accessing showFirstStep - self instructionLabel + self instructionLabel contents: 'Enter Phonenumber: ' asText; center: self center. - + self buttonVerify hide. self inputField show. self buttonNext show. diff --git a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/showLoadingMessage.st b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/showLoadingMessage.st index 8b92c0d52..2547c7b75 100644 --- a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/showLoadingMessage.st +++ b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/showLoadingMessage.st @@ -1,8 +1,4 @@ initialization showLoadingMessage - self addMorphCentered: (self createLabel: 'Trying to connect to TDLib...'). - - - - \ No newline at end of file + self addMorphCentered: (self createLabel: 'Trying to connect to TDLib...'). \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/showSecondStep.st b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/showSecondStep.st index 14e57f692..3eb4b98d8 100644 --- a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/showSecondStep.st +++ b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/showSecondStep.st @@ -1,13 +1,13 @@ accessing showSecondStep - + self buttonNext hide. self buttonBack show. self buttonVerify show. - - self instructionLabel + + self instructionLabel contents: 'Enter the code your recieved on your phone'; center: self center. - + self inputField contents: ' '. self errorLabel hide. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUAuthentication.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUAuthentication.class/methodProperties.json index f1255d6ac..bd6ef57a2 100644 --- a/packages/TelegramClient-UI.package/TCUAuthentication.class/methodProperties.json +++ b/packages/TelegramClient-UI.package/TCUAuthentication.class/methodProperties.json @@ -2,39 +2,38 @@ "class" : { "newWithCore:" : "R.S 5/31/2020 20:16" }, "instance" : { - "addHeader" : "js 5/28/2020 17:47", - "addTitle:to:" : "js 5/28/2020 17:48", + "addHeader" : "js 6/13/2020 19:18", + "addTitle:to:" : "js 6/13/2020 18:52", "buttonBack" : "rs 6/11/2020 18:53", "buttonBack:" : "rs 6/11/2020 18:53", "buttonBackPressed" : "rs 6/11/2020 19:00", "buttonNext" : "R.S 5/20/2020 13:50", "buttonNext:" : "js 5/28/2020 17:49", - "buttonNextPressed" : "js 5/31/2020 20:06", + "buttonNextPressed" : "js 6/13/2020 18:12", "buttonVerify" : "R.S 5/20/2020 13:50", "buttonVerify:" : "R.S 5/20/2020 13:50", "buttonVerifyPressed" : "js 5/31/2020 20:10", - "core" : "R.S 5/31/2020 20:18", + "core" : "js 6/13/2020 18:43", "core:" : "R.S 5/31/2020 20:18", - "createButtonBack" : "rs 6/11/2020 18:54", - "createButtonNext" : "rs 6/11/2020 18:54", - "createButtonVerify" : "rs 6/11/2020 18:55", - "createErrorLabel:" : "R.S 5/20/2020 13:50", - "createInputBar:" : "rs 6/13/2020 10:38", - "createInputField:" : "rs 6/6/2020 17:40", - "createLabel:" : "R.S 5/20/2020 13:51", + "createButtonBack" : "js 6/13/2020 18:43", + "createButtonNext" : "js 6/13/2020 18:44", + "createButtonVerify" : "js 6/13/2020 18:44", + "createErrorLabel:" : "js 6/13/2020 18:53", + "createInputField:" : "js 6/13/2020 19:12", + "createLabel:" : "js 6/13/2020 18:13", "defaultExtent" : "R.S 5/20/2020 13:51", "defaultInputWidth" : "R.S 5/20/2020 13:51", "delete" : "f.w. 6/3/2020 20:51", "errorLabel" : "R.S 5/20/2020 13:51", "errorLabel:" : "R.S 5/20/2020 13:51", - "initialize" : "js 5/29/2020 20:11", + "initialize" : "js 6/13/2020 18:44", "initializeMorphs" : "js 5/29/2020 20:11", "inputField" : "R.S 5/20/2020 13:51", "inputField:" : "js 5/31/2020 20:07", "instructionLabel" : "R.S 5/20/2020 13:52", "instructionLabel:" : "js 5/28/2020 17:51", - "logInCompleted" : "R.S 6/3/2020 20:54", - "showFirstStep" : "rs 6/11/2020 18:56", - "showLoadingMessage" : "R.S 5/24/2020 16:09", - "showSecondStep" : "rs 6/11/2020 18:56", + "logInCompleted" : "js 6/13/2020 18:45", + "showFirstStep" : "js 6/13/2020 18:45", + "showLoadingMessage" : "js 6/13/2020 18:45", + "showSecondStep" : "js 6/13/2020 18:45", "subscribeCore" : "R.S 5/31/2020 20:21" } } diff --git a/packages/TelegramClient-UI.package/TCUAuthentication.class/properties.json b/packages/TelegramClient-UI.package/TCUAuthentication.class/properties.json index 2c618106e..76839fb03 100644 --- a/packages/TelegramClient-UI.package/TCUAuthentication.class/properties.json +++ b/packages/TelegramClient-UI.package/TCUAuthentication.class/properties.json @@ -4,15 +4,13 @@ ], "classvars" : [ ], - "commentStamp" : "", + "commentStamp" : "js 6/13/2020 18:59", "instvars" : [ "buttonNext", "buttonVerify", "errorLabel", "inputField", "instructionLabel", - "event", - "authState", "core", "buttonBack" ], "name" : "TCUAuthentication", diff --git a/packages/TelegramClient-UI.package/TCUButton.class/README.md b/packages/TelegramClient-UI.package/TCUButton.class/README.md index e69de29bb..0722413fe 100644 --- a/packages/TelegramClient-UI.package/TCUButton.class/README.md +++ b/packages/TelegramClient-UI.package/TCUButton.class/README.md @@ -0,0 +1 @@ +a custom button everywhere in TC-UI \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUButton.class/instance/initialize.st b/packages/TelegramClient-UI.package/TCUButton.class/instance/initialize.st index 76a8c0ec5..eefbcdf89 100644 --- a/packages/TelegramClient-UI.package/TCUButton.class/instance/initialize.st +++ b/packages/TelegramClient-UI.package/TCUButton.class/instance/initialize.st @@ -2,6 +2,7 @@ initialization initialize super initialize. + self useRoundedCorners; color: TCUDefaultValues colorLightBlue; diff --git a/packages/TelegramClient-UI.package/TCUButton.class/instance/text..st b/packages/TelegramClient-UI.package/TCUButton.class/instance/text..st index 56588c504..b88da79bb 100644 --- a/packages/TelegramClient-UI.package/TCUButton.class/instance/text..st +++ b/packages/TelegramClient-UI.package/TCUButton.class/instance/text..st @@ -4,5 +4,5 @@ text: aString text := TextMorph new contents: aString asText; lock. - + self addMorphCentered: text. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUButton.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUButton.class/methodProperties.json index 88279189e..91438dff9 100644 --- a/packages/TelegramClient-UI.package/TCUButton.class/methodProperties.json +++ b/packages/TelegramClient-UI.package/TCUButton.class/methodProperties.json @@ -2,6 +2,6 @@ "class" : { }, "instance" : { - "initialize" : "js 5/28/2020 17:47", + "initialize" : "js 6/13/2020 18:22", "text" : "R.S 5/20/2020 13:56", - "text:" : "js 5/28/2020 17:56" } } + "text:" : "js 6/13/2020 18:22" } } diff --git a/packages/TelegramClient-UI.package/TCUButton.class/properties.json b/packages/TelegramClient-UI.package/TCUButton.class/properties.json index 06ffa7012..9b1053c83 100644 --- a/packages/TelegramClient-UI.package/TCUButton.class/properties.json +++ b/packages/TelegramClient-UI.package/TCUButton.class/properties.json @@ -4,7 +4,7 @@ ], "classvars" : [ ], - "commentStamp" : "", + "commentStamp" : "js 6/13/2020 19:00", "instvars" : [ "text" ], "name" : "TCUButton", diff --git a/packages/TelegramClient-UI.package/TCUChatListItem.class/README.md b/packages/TelegramClient-UI.package/TCUChatListItem.class/README.md index e69de29bb..bc1dad1cc 100644 --- a/packages/TelegramClient-UI.package/TCUChatListItem.class/README.md +++ b/packages/TelegramClient-UI.package/TCUChatListItem.class/README.md @@ -0,0 +1 @@ +an entry in the side view of TCUMain \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatListItem.class/class/newWithChatName.andWidth..st b/packages/TelegramClient-UI.package/TCUChatListItem.class/class/newWithChatName.andWidth..st index bf4ac83e1..5249d4974 100644 --- a/packages/TelegramClient-UI.package/TCUChatListItem.class/class/newWithChatName.andWidth..st +++ b/packages/TelegramClient-UI.package/TCUChatListItem.class/class/newWithChatName.andWidth..st @@ -1,4 +1,4 @@ -creation +as yet unclassified newWithChatName: aChatName andWidth: aWidth ^ self basicNew @@ -7,4 +7,4 @@ newWithChatName: aChatName andWidth: aWidth width: aWidth; addTitle; addBorder; - yourself. \ No newline at end of file + yourself \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/addTitle.st b/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/addTitle.st index f21838f07..b418e721c 100644 --- a/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/addTitle.st +++ b/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/addTitle.st @@ -1,7 +1,6 @@ initialization addTitle - - self addMorphCentered: (TextMorph new + + self addMorphCentered: (TextMorph new contents: self chatName asText; - lock). - \ No newline at end of file + lock). \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/chatName..st b/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/chatName..st index cd84f2bf4..409822f8a 100644 --- a/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/chatName..st +++ b/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/chatName..st @@ -1,4 +1,4 @@ accessing -chatName: anObject +chatName: aString - chatName := anObject. \ No newline at end of file + chatName := aString. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/defaultHeight.st b/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/defaultHeight.st index 0a540810b..b780691b7 100644 --- a/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/defaultHeight.st +++ b/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/defaultHeight.st @@ -1,4 +1,4 @@ defaultValues defaultHeight - ^ 50 \ No newline at end of file + ^ 50 \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/initialize.st b/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/initialize.st index 2c8440910..5286cdc44 100644 --- a/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/initialize.st +++ b/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/initialize.st @@ -2,7 +2,7 @@ initialization initialize super initialize. - self + self color: Color white; height: self defaultHeight; borderWidth: 0. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatListItem.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUChatListItem.class/methodProperties.json index 7606eca65..374050b07 100644 --- a/packages/TelegramClient-UI.package/TCUChatListItem.class/methodProperties.json +++ b/packages/TelegramClient-UI.package/TCUChatListItem.class/methodProperties.json @@ -1,14 +1,14 @@ { "class" : { - "newWithChatName:andWidth:" : "R.S 6/4/2020 09:52" }, + "newWithChatName:andWidth:" : "js 6/13/2020 15:23" }, "instance" : { "addBorder" : "R.S 6/1/2020 22:20", - "addTitle" : "R.S 6/1/2020 14:53", + "addTitle" : "js 6/13/2020 18:46", "chatId" : "rs 6/13/2020 08:55", "chatId:" : "rs 6/13/2020 08:55", "chatName" : "R.S 6/1/2020 14:22", - "chatName:" : "R.S 6/1/2020 14:21", - "defaultHeight" : "R.S 6/1/2020 14:22", + "chatName:" : "js 6/13/2020 19:10", + "defaultHeight" : "js 6/13/2020 18:42", "deselect" : "rs 6/13/2020 09:02", - "initialize" : "rs 6/13/2020 08:54", + "initialize" : "js 6/13/2020 18:46", "select" : "rs 6/13/2020 08:49" } } diff --git a/packages/TelegramClient-UI.package/TCUChatListItem.class/properties.json b/packages/TelegramClient-UI.package/TCUChatListItem.class/properties.json index 914d89409..169250569 100644 --- a/packages/TelegramClient-UI.package/TCUChatListItem.class/properties.json +++ b/packages/TelegramClient-UI.package/TCUChatListItem.class/properties.json @@ -4,7 +4,7 @@ ], "classvars" : [ ], - "commentStamp" : "", + "commentStamp" : "js 6/13/2020 19:00", "instvars" : [ "chatName", "chatId" ], diff --git a/packages/TelegramClient-UI.package/TCUChatWindow.class/README.md b/packages/TelegramClient-UI.package/TCUChatWindow.class/README.md index e69de29bb..103b9fe74 100644 --- a/packages/TelegramClient-UI.package/TCUChatWindow.class/README.md +++ b/packages/TelegramClient-UI.package/TCUChatWindow.class/README.md @@ -0,0 +1 @@ +a view to display a single chat \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatWindow.class/class/newWithHeight.width..st b/packages/TelegramClient-UI.package/TCUChatWindow.class/class/newWithHeight.width..st index 72a4890f1..2fc6d8dd6 100644 --- a/packages/TelegramClient-UI.package/TCUChatWindow.class/class/newWithHeight.width..st +++ b/packages/TelegramClient-UI.package/TCUChatWindow.class/class/newWithHeight.width..st @@ -6,4 +6,4 @@ newWithHeight: aHeight width: aWidth height: aHeight; width: aWidth; addWelcomeMessage; - addInputBar. \ No newline at end of file + addInputBar \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/addInputBar.st b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/addInputBar.st index 1af40848a..e765d66ff 100644 --- a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/addInputBar.st +++ b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/addInputBar.st @@ -1,23 +1,8 @@ initialization addInputBar - self inputBar: (RectangleMorph new - borderWidth: 0; - color: Color white; - width: self width; - height: self defaultInputfieldHeight; - position: (self position + (0 @ (self height - self defaultInputfieldHeight))); - layoutPolicy: TableLayout new; - listDirection: #leftToRight; - layoutInset: 2; - vResizing: #shrinkWrap; - cellInset: 12; - hide). - - self + self + createInputBar; addMorph: self inputBar; addSendButton; - addTextInputField. - - - \ No newline at end of file + addTextInputField. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/addSendButton.st b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/addSendButton.st index 3bf13b463..cb9b063c2 100644 --- a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/addSendButton.st +++ b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/addSendButton.st @@ -1,6 +1,6 @@ initialization addSendButton - self inputBar addMorph: (TCUButton new + self inputBar addMorph: (TCUButton new text: 'Send'; on: #mouseDown send: #buttonSendPressed to: self). \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/addTextInputField.st b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/addTextInputField.st index c6168fdc4..eab51b22b 100644 --- a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/addTextInputField.st +++ b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/addTextInputField.st @@ -4,5 +4,5 @@ addTextInputField self textInputField: (TextMorph new contentsWrapped: ' ' asText; extent: ((self inputBar width - 200) @ self defaultInputfieldHeight)). - + self inputBar addMorph: self textInputField. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/addWelcomeMessage.st b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/addWelcomeMessage.st index 84b692a44..b0fc7899c 100644 --- a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/addWelcomeMessage.st +++ b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/addWelcomeMessage.st @@ -1,8 +1,7 @@ initialization addWelcomeMessage - self + self welcomeMessage: (TextMorph new contents: 'Welcome!' asText); - addMorphCentered: self welcomeMessage. - \ No newline at end of file + addMorphCentered: self welcomeMessage. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/buttonSendPressed.st b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/buttonSendPressed.st index 97e5e79bb..2bd4df0da 100644 --- a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/buttonSendPressed.st +++ b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/buttonSendPressed.st @@ -1,8 +1,8 @@ initialization buttonSendPressed - + self triggerEvent: #buttonSendPressed with: (Dictionary newFrom: { 'chatId' -> self selectedChat chatId. 'message' -> self textInputField contents}). - + self textInputField contents: ' '. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/createInputBar.st b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/createInputBar.st new file mode 100644 index 000000000..61cc9eda0 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/createInputBar.st @@ -0,0 +1,15 @@ +initialization +createInputBar + + self inputBar: (RectangleMorph new + borderWidth: 0; + color: Color white; + width: self width; + height: self defaultInputfieldHeight; + position: (self position + (0 @ (self height - self defaultInputfieldHeight))); + layoutPolicy: TableLayout new; + listDirection: #leftToRight; + layoutInset: 2; + vResizing: #shrinkWrap; + cellInset: 12; + hide). \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/initialize.st b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/initialize.st index b7a165527..14628cde5 100644 --- a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/initialize.st +++ b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/initialize.st @@ -2,7 +2,7 @@ initialization initialize super initialize. - + self color: TCUDefaultValues colorLightGray; borderWidth: 0. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/newChatSelected..st b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/newChatSelected..st index 3bb32c062..bcffbc498 100644 --- a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/newChatSelected..st +++ b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/newChatSelected..st @@ -1,6 +1,6 @@ initialization newChatSelected: aChat - + self welcomeMessage hide. self inputBar show. self selectedChat: aChat. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatWindow.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUChatWindow.class/methodProperties.json index 86249d62d..a94a63395 100644 --- a/packages/TelegramClient-UI.package/TCUChatWindow.class/methodProperties.json +++ b/packages/TelegramClient-UI.package/TCUChatWindow.class/methodProperties.json @@ -1,18 +1,19 @@ { "class" : { - "newWithHeight:width:" : "rs 6/13/2020 10:37" }, + "newWithHeight:width:" : "js 6/13/2020 18:58" }, "instance" : { - "addInputBar" : "rs 6/13/2020 11:10", - "addSendButton" : "rs 6/13/2020 15:20", - "addTextInputField" : "rs 6/13/2020 11:11", - "addWelcomeMessage" : "rs 6/13/2020 09:36", - "buttonSendPressed" : "rs 6/13/2020 15:39", + "addInputBar" : "js 6/13/2020 17:59", + "addSendButton" : "js 6/13/2020 18:46", + "addTextInputField" : "js 6/13/2020 18:20", + "addWelcomeMessage" : "js 6/13/2020 18:47", + "buttonSendPressed" : "js 6/13/2020 18:21", "clear" : "rs 6/13/2020 10:40", + "createInputBar" : "js 6/13/2020 17:59", "defaultInputfieldHeight" : "rs 6/12/2020 20:03", - "initialize" : "rs 6/13/2020 15:34", + "initialize" : "js 6/13/2020 18:22", "inputBar" : "rs 6/13/2020 10:38", "inputBar:" : "rs 6/13/2020 10:38", - "newChatSelected:" : "rs 6/13/2020 10:39", + "newChatSelected:" : "js 6/13/2020 18:03", "selectedChat" : "rs 6/13/2020 09:11", "selectedChat:" : "rs 6/13/2020 09:11", "textInputField" : "rs 6/13/2020 10:41", diff --git a/packages/TelegramClient-UI.package/TCUChatWindow.class/properties.json b/packages/TelegramClient-UI.package/TCUChatWindow.class/properties.json index baed34bdf..c54f1f29c 100644 --- a/packages/TelegramClient-UI.package/TCUChatWindow.class/properties.json +++ b/packages/TelegramClient-UI.package/TCUChatWindow.class/properties.json @@ -4,11 +4,10 @@ ], "classvars" : [ ], - "commentStamp" : "", + "commentStamp" : "js 6/13/2020 19:01", "instvars" : [ "inputBar", "selectedChat", - "scrollableMessageField", "welcomeMessage", "textInputField" ], "name" : "TCUChatWindow", diff --git a/packages/TelegramClient-UI.package/TCUChatsList.class/README.md b/packages/TelegramClient-UI.package/TCUChatsList.class/README.md index e69de29bb..1a445a2cd 100644 --- a/packages/TelegramClient-UI.package/TCUChatsList.class/README.md +++ b/packages/TelegramClient-UI.package/TCUChatsList.class/README.md @@ -0,0 +1 @@ +a view in TCUMain to display a list of all chats \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatsList.class/instance/addItem..st b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/addItem..st index 36e8bf874..4ed940c3b 100644 --- a/packages/TelegramClient-UI.package/TCUChatsList.class/instance/addItem..st +++ b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/addItem..st @@ -5,6 +5,6 @@ addItem: aChat item := TCUChatListItem newWithChatName: aChat title andWidth: self width. item chatId: aChat id. item on: #mouseDown send: #chatItemClicked:event:from: to: self withValue: item. - + self items add: item. self addMorph: item. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatsList.class/instance/chatItemClicked.event.from..st b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/chatItemClicked.event.from..st index 225d53b06..20954d6ba 100644 --- a/packages/TelegramClient-UI.package/TCUChatsList.class/instance/chatItemClicked.event.from..st +++ b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/chatItemClicked.event.from..st @@ -1,20 +1,13 @@ initialization chatItemClicked: aChatListItem event: anEvent from: aSender - + self selectedChat deselect. - - (aChatListItem chatId~= self selectedChat chatId) - ifTrue: [ - aChatListItem select. - self + + (aChatListItem chatId ~= self selectedChat chatId) + ifTrue: [aChatListItem select. + self selectedChat: aChatListItem; triggerEvent: #newChatSelected with: aChatListItem] - ifFalse: [ - self - selectedChat: NullChatListItem new; - triggerEvent: #chatDeselected] - - - - - \ No newline at end of file + ifFalse: [self + selectedChat: TCUNullChatListItem new; + triggerEvent: #chatDeselected]. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatsList.class/instance/clearChats.st b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/clearChats.st index f9cd4e265..85be3f3a8 100644 --- a/packages/TelegramClient-UI.package/TCUChatsList.class/instance/clearChats.st +++ b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/clearChats.st @@ -2,5 +2,4 @@ initialization clearChats self items do: [:aItem | aItem delete]. - self items removeAll. - \ No newline at end of file + self items removeAll. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatsList.class/instance/initialize.st b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/initialize.st index b1fce8d19..bd685c9ef 100644 --- a/packages/TelegramClient-UI.package/TCUChatsList.class/instance/initialize.st +++ b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/initialize.st @@ -2,11 +2,11 @@ initialization initialize super initialize. - + self width: self defaultWidth; color: Color white; borderWidth: 0; initializeLayout; items: OrderedCollection new; - selectedChat: NullChatListItem new. \ No newline at end of file + selectedChat: TCUNullChatListItem new. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatsList.class/instance/initializeLayout.st b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/initializeLayout.st index c61ee1b0c..ea0678749 100644 --- a/packages/TelegramClient-UI.package/TCUChatsList.class/instance/initializeLayout.st +++ b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/initializeLayout.st @@ -1,6 +1,6 @@ initialization initializeLayout - self + self layoutPolicy: TableLayout new; listDirection: #topToBottom. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatsList.class/instance/items..st b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/items..st index 75624f7e6..e8bf8fcf7 100644 --- a/packages/TelegramClient-UI.package/TCUChatsList.class/instance/items..st +++ b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/items..st @@ -1,3 +1,4 @@ accessing -items: anObject - items := anObject \ No newline at end of file +items: aCollection + + items := aCollection. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatsList.class/instance/items.st b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/items.st index 5d5ba6737..7322123ab 100644 --- a/packages/TelegramClient-UI.package/TCUChatsList.class/instance/items.st +++ b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/items.st @@ -1,3 +1,4 @@ accessing items + ^ items \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatsList.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUChatsList.class/methodProperties.json index 9ee251a3a..b4d3f7626 100644 --- a/packages/TelegramClient-UI.package/TCUChatsList.class/methodProperties.json +++ b/packages/TelegramClient-UI.package/TCUChatsList.class/methodProperties.json @@ -2,13 +2,13 @@ "class" : { }, "instance" : { - "addItem:" : "rs 6/13/2020 16:16", - "chatItemClicked:event:from:" : "rs 6/13/2020 15:37", - "clearChats" : "js 5/29/2020 12:15", + "addItem:" : "js 6/13/2020 18:15", + "chatItemClicked:event:from:" : "js 6/13/2020 18:49", + "clearChats" : "js 6/13/2020 17:40", "defaultWidth" : "R.S 6/1/2020 14:24", - "initialize" : "rs 6/13/2020 09:02", - "initializeLayout" : "R.S 6/1/2020 15:00", - "items" : "R.S 6/3/2020 21:15", - "items:" : "R.S 6/3/2020 21:15", + "initialize" : "js 6/13/2020 18:17", + "initializeLayout" : "js 6/13/2020 18:49", + "items" : "js 6/13/2020 14:14", + "items:" : "js 6/13/2020 19:09", "selectedChat" : "rs 6/13/2020 08:51", "selectedChat:" : "rs 6/13/2020 08:51" } } diff --git a/packages/TelegramClient-UI.package/TCUChatsList.class/properties.json b/packages/TelegramClient-UI.package/TCUChatsList.class/properties.json index ce9d266ce..50f0f0a97 100644 --- a/packages/TelegramClient-UI.package/TCUChatsList.class/properties.json +++ b/packages/TelegramClient-UI.package/TCUChatsList.class/properties.json @@ -4,7 +4,7 @@ ], "classvars" : [ ], - "commentStamp" : "", + "commentStamp" : "js 6/13/2020 19:01", "instvars" : [ "items", "selectedChat" ], diff --git a/packages/TelegramClient-UI.package/TCUDefaultValues.class/README.md b/packages/TelegramClient-UI.package/TCUDefaultValues.class/README.md index e69de29bb..1eb8d1d0f 100644 --- a/packages/TelegramClient-UI.package/TCUDefaultValues.class/README.md +++ b/packages/TelegramClient-UI.package/TCUDefaultValues.class/README.md @@ -0,0 +1 @@ +serves some standard telegram colors \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUDefaultValues.class/properties.json b/packages/TelegramClient-UI.package/TCUDefaultValues.class/properties.json index 7f224d421..47c4cb10c 100644 --- a/packages/TelegramClient-UI.package/TCUDefaultValues.class/properties.json +++ b/packages/TelegramClient-UI.package/TCUDefaultValues.class/properties.json @@ -4,7 +4,7 @@ ], "classvars" : [ ], - "commentStamp" : "", + "commentStamp" : "js 6/13/2020 19:01", "instvars" : [ ], "name" : "TCUDefaultValues", diff --git a/packages/TelegramClient-UI.package/TCUMain.class/README.md b/packages/TelegramClient-UI.package/TCUMain.class/README.md index e69de29bb..03a913036 100644 --- a/packages/TelegramClient-UI.package/TCUMain.class/README.md +++ b/packages/TelegramClient-UI.package/TCUMain.class/README.md @@ -0,0 +1 @@ +the main view containing message history in a chat and a list of all open chats \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMain.class/instance/addChatsList.st b/packages/TelegramClient-UI.package/TCUMain.class/instance/addChatsList.st index 323e1d15b..8dc7c65f5 100644 --- a/packages/TelegramClient-UI.package/TCUMain.class/instance/addChatsList.st +++ b/packages/TelegramClient-UI.package/TCUMain.class/instance/addChatsList.st @@ -1,9 +1,9 @@ initialization addChatsList - self chatsList: (TCUChatsList new + self chatsList: (TCUChatsList new height: (self height - self defaultHeaderHeight); position: (self position + (0 @ self defaultHeaderHeight))). - - self - addMorph: self chatsList . \ No newline at end of file + + self + addMorph: self chatsList. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMain.class/instance/addHeader.st b/packages/TelegramClient-UI.package/TCUMain.class/instance/addHeader.st index bb643ae5c..3bdca7877 100644 --- a/packages/TelegramClient-UI.package/TCUMain.class/instance/addHeader.st +++ b/packages/TelegramClient-UI.package/TCUMain.class/instance/addHeader.st @@ -2,22 +2,15 @@ initialization addHeader | header logoutButton | - - - - header := RectangleMorph new - borderWidth: 0; - color: TCUDefaultValues colorGray; - extent: self width @ self defaultHeaderHeight. - + + header := self createHeaderMorph. + logoutButton := TCUButton new text: 'logout'; on:#mouseUp send: #logout to: self; position: header position + 5. - - self + + self addMorph: header; addTitle: 'Telegram' to: header; - addMorph: logoutButton. - - \ No newline at end of file + addMorph: logoutButton. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMain.class/instance/addTitle.to..st b/packages/TelegramClient-UI.package/TCUMain.class/instance/addTitle.to..st index 145f195a0..3bccbc7b1 100644 --- a/packages/TelegramClient-UI.package/TCUMain.class/instance/addTitle.to..st +++ b/packages/TelegramClient-UI.package/TCUMain.class/instance/addTitle.to..st @@ -2,9 +2,11 @@ accessing addTitle: aString to: aMorph | titleLable font | - font:= (TextFontReference toFont: (StrikeFont familyName: 'DefaultTextStyle' size: 35)). + + font := (TextFontReference toFont: (StrikeFont familyName: 'DefaultTextStyle' size: 35)). + titleLable := TextMorph new contents: (aString asText addAttribute: font); color: Color white. - + aMorph addMorphCentered: titleLable. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMain.class/instance/core..st b/packages/TelegramClient-UI.package/TCUMain.class/instance/core..st index 4e9818803..3844709d3 100644 --- a/packages/TelegramClient-UI.package/TCUMain.class/instance/core..st +++ b/packages/TelegramClient-UI.package/TCUMain.class/instance/core..st @@ -1,4 +1,4 @@ accessing core: aCore - core := aCore. + core := aCore. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMain.class/instance/core.st b/packages/TelegramClient-UI.package/TCUMain.class/instance/core.st index 22ede7f56..7652dd8d1 100644 --- a/packages/TelegramClient-UI.package/TCUMain.class/instance/core.st +++ b/packages/TelegramClient-UI.package/TCUMain.class/instance/core.st @@ -1,4 +1,4 @@ accessing core - ^ core + ^ core \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMain.class/instance/createHeaderMorph.st b/packages/TelegramClient-UI.package/TCUMain.class/instance/createHeaderMorph.st new file mode 100644 index 000000000..7d5d5e56c --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUMain.class/instance/createHeaderMorph.st @@ -0,0 +1,7 @@ +initialization +createHeaderMorph + + ^ RectangleMorph new + borderWidth: 0; + color: TCUDefaultValues colorGray; + extent: self width @ self defaultHeaderHeight \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMain.class/instance/initialize.st b/packages/TelegramClient-UI.package/TCUMain.class/instance/initialize.st index 0ff8a7b54..1ed4b0822 100644 --- a/packages/TelegramClient-UI.package/TCUMain.class/instance/initialize.st +++ b/packages/TelegramClient-UI.package/TCUMain.class/instance/initialize.st @@ -2,7 +2,7 @@ initialization initialize super initialize. - self + self extent: self defaultExtent; borderWidth: 0; addHeader; diff --git a/packages/TelegramClient-UI.package/TCUMain.class/instance/initializeChatWindow.st b/packages/TelegramClient-UI.package/TCUMain.class/instance/initializeChatWindow.st index 90da0ef37..823b7df1d 100644 --- a/packages/TelegramClient-UI.package/TCUMain.class/instance/initializeChatWindow.st +++ b/packages/TelegramClient-UI.package/TCUMain.class/instance/initializeChatWindow.st @@ -1,11 +1,11 @@ initialization initializeChatWindow - self chatWindow: (TCUChatWindow - newWithHeight: (self height - self defaultHeaderHeight) + self chatWindow: (TCUChatWindow + newWithHeight: (self height - self defaultHeaderHeight) width: (self width - self chatsList width)). - - self chatWindow + + self chatWindow position: (self position + (self chatsList width @ self defaultHeaderHeight)); when: #buttonSendPressed send: #sendMessage: to: self. self addMorph: self chatWindow. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMain.class/instance/logout.st b/packages/TelegramClient-UI.package/TCUMain.class/instance/logout.st index af3c82020..796740806 100644 --- a/packages/TelegramClient-UI.package/TCUMain.class/instance/logout.st +++ b/packages/TelegramClient-UI.package/TCUMain.class/instance/logout.st @@ -1,5 +1,5 @@ defaultValues logout - + self core authHandler logout. super delete. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMain.class/instance/subscribeChatsList.st b/packages/TelegramClient-UI.package/TCUMain.class/instance/subscribeChatsList.st index 3c3fcb513..2c90799a6 100644 --- a/packages/TelegramClient-UI.package/TCUMain.class/instance/subscribeChatsList.st +++ b/packages/TelegramClient-UI.package/TCUMain.class/instance/subscribeChatsList.st @@ -1,6 +1,6 @@ initialization subscribeChatsList - self chatsList + self chatsList when: #chatDeselected send: #clear to: self chatWindow; - when: #newChatSelected send: #newChatSelected: to: self chatWindow with: chatsList selectedChat. \ No newline at end of file + when: #newChatSelected send: #newChatSelected: to: self chatWindow with: self chatsList selectedChat. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMain.class/instance/updateChatsList.st b/packages/TelegramClient-UI.package/TCUMain.class/instance/updateChatsList.st index 6232262f7..3b7a71f0a 100644 --- a/packages/TelegramClient-UI.package/TCUMain.class/instance/updateChatsList.st +++ b/packages/TelegramClient-UI.package/TCUMain.class/instance/updateChatsList.st @@ -1,12 +1,11 @@ initialization updateChatsList - | chats i| + | chats | + self chatsList clearChats. - chats := self core chats asSortedCollection: [:x :y| x order > y order]. - - i := 0. - - chats do: [:aChat| i < 10 ifTrue: [ - aChat title isNil not ifTrue: [ - self chatsList addItem: aChat]]]. \ No newline at end of file + chats := self core chats asSortedCollection: [:x :y | x order > y order]. + + chats do: [:aChat | + aChat title ifNotNil: [ + self chatsList addItem: aChat]]. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMain.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUMain.class/methodProperties.json index da5ee94c2..e3072a07a 100644 --- a/packages/TelegramClient-UI.package/TCUMain.class/methodProperties.json +++ b/packages/TelegramClient-UI.package/TCUMain.class/methodProperties.json @@ -2,24 +2,25 @@ "class" : { "newWithCore:" : "f.w. 6/3/2020 20:31" }, "instance" : { - "addChatsList" : "rs 6/13/2020 16:15", - "addHeader" : "f.w. 6/3/2020 20:23", - "addTitle:to:" : "R.S 6/1/2020 14:26", + "addChatsList" : "js 6/13/2020 18:50", + "addHeader" : "js 6/13/2020 18:50", + "addTitle:to:" : "js 6/13/2020 18:57", "chatWindow" : "R.S 6/1/2020 14:27", "chatWindow:" : "R.S 6/1/2020 14:27", "chatsList" : "R.S 6/1/2020 14:27", "chatsList:" : "R.S 6/1/2020 14:27", - "core" : "R.S 6/1/2020 22:27", - "core:" : "R.S 6/1/2020 22:27", + "core" : "js 6/13/2020 18:51", + "core:" : "js 6/13/2020 18:51", + "createHeaderMorph" : "js 6/13/2020 18:01", "defaultExtent" : "R.S 6/1/2020 14:27", "defaultHeaderHeight" : "R.S 6/1/2020 14:27", "delete" : "R.S 6/3/2020 20:54", - "initialize" : "rs 6/13/2020 09:44", - "initializeChatWindow" : "rs 6/13/2020 11:36", - "logout" : "js 5/29/2020 09:35", + "initialize" : "js 6/13/2020 18:51", + "initializeChatWindow" : "js 6/13/2020 18:54", + "logout" : "js 6/13/2020 18:11", "newChatSelected" : "rs 6/13/2020 09:20", "newChatSelected:" : "rs 6/13/2020 15:38", "sendMessage:" : "rs 6/13/2020 15:15", - "subscribeChatsList" : "rs 6/13/2020 09:44", + "subscribeChatsList" : "js 6/13/2020 18:51", "subscribeCore" : "R.S 6/3/2020 21:03", - "updateChatsList" : "rs 6/13/2020 08:45" } } + "updateChatsList" : "js 6/13/2020 19:14" } } diff --git a/packages/TelegramClient-UI.package/TCUMain.class/properties.json b/packages/TelegramClient-UI.package/TCUMain.class/properties.json index 385ce1fee..0c0d33a58 100644 --- a/packages/TelegramClient-UI.package/TCUMain.class/properties.json +++ b/packages/TelegramClient-UI.package/TCUMain.class/properties.json @@ -4,7 +4,7 @@ ], "classvars" : [ ], - "commentStamp" : "", + "commentStamp" : "js 6/13/2020 19:02", "instvars" : [ "chatWindow", "chatsList", diff --git a/packages/TelegramClient-UI.package/TCUNullChatListItem.class/README.md b/packages/TelegramClient-UI.package/TCUNullChatListItem.class/README.md new file mode 100644 index 000000000..153d52d29 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUNullChatListItem.class/README.md @@ -0,0 +1 @@ +default entry for selection \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/NullChatListItem.class/instance/chatId.st b/packages/TelegramClient-UI.package/TCUNullChatListItem.class/instance/chatId.st similarity index 100% rename from packages/TelegramClient-UI.package/NullChatListItem.class/instance/chatId.st rename to packages/TelegramClient-UI.package/TCUNullChatListItem.class/instance/chatId.st diff --git a/packages/TelegramClient-UI.package/NullChatListItem.class/instance/deselect.st b/packages/TelegramClient-UI.package/TCUNullChatListItem.class/instance/deselect.st similarity index 100% rename from packages/TelegramClient-UI.package/NullChatListItem.class/instance/deselect.st rename to packages/TelegramClient-UI.package/TCUNullChatListItem.class/instance/deselect.st diff --git a/packages/TelegramClient-UI.package/NullChatListItem.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUNullChatListItem.class/methodProperties.json similarity index 100% rename from packages/TelegramClient-UI.package/NullChatListItem.class/methodProperties.json rename to packages/TelegramClient-UI.package/TCUNullChatListItem.class/methodProperties.json diff --git a/packages/TelegramClient-UI.package/NullChatListItem.class/properties.json b/packages/TelegramClient-UI.package/TCUNullChatListItem.class/properties.json similarity index 71% rename from packages/TelegramClient-UI.package/NullChatListItem.class/properties.json rename to packages/TelegramClient-UI.package/TCUNullChatListItem.class/properties.json index 6a96de7ea..325c6dc23 100644 --- a/packages/TelegramClient-UI.package/NullChatListItem.class/properties.json +++ b/packages/TelegramClient-UI.package/TCUNullChatListItem.class/properties.json @@ -4,10 +4,10 @@ ], "classvars" : [ ], - "commentStamp" : "", + "commentStamp" : "js 6/13/2020 19:00", "instvars" : [ ], - "name" : "NullChatListItem", + "name" : "TCUNullChatListItem", "pools" : [ ], "super" : "TCUChatListItem", From 5523c3e58cd5cca18bf26c1c1e4dd264413c2be7 Mon Sep 17 00:00:00 2001 From: Rohan Sawahn <49531442+rohansaw@users.noreply.github.com> Date: Sun, 14 Jun 2020 13:04:30 +0200 Subject: [PATCH 11/81] Added Support for Telegram TestDatabase Service (#142) * added TCUApp newWithTCCTestApp for automatic test db login * Refactored so that TestApp and TestAuthHandler inherits from parent. They are now located in TCT Package * Added LoginWithTestData method for TCCApp to use our registered TestData and directly be logged In * Satisfying Linter now :) Co-authored-by: Frederik Wollny --- .../TCCApp.class/class/newTestApp.st | 2 ++ .../TCCApp.class/instance/handleEvent..st | 1 - .../TCCApp.class/methodProperties.json | 6 +++--- .../TCCAuthHandler.class/instance/apiHash.st | 4 ++++ .../TCCAuthHandler.class/instance/apiID.st | 4 ++++ .../instance/setTDLibParams.st | 5 +++-- .../TCCAuthHandler.class/instance/useTestDC.st | 4 ++++ .../TCCAuthHandler.class/methodProperties.json | 5 ++++- .../instance/testLongMethods.st | 2 +- .../TCTLinterTests.class/methodProperties.json | 2 +- .../TCTTestApp.class/README.md | 1 + .../instance/initializeHandlers.st | 6 ++++++ .../TCTTestApp.class/instance/loginWithTestData.st | 6 ++++++ .../TCTTestApp.class/methodProperties.json | 6 ++++++ .../TCTTestApp.class/properties.json | 14 ++++++++++++++ .../TCTTestAuthHandler.class/README.md | 1 + .../TCTTestAuthHandler.class/instance/apiHash.st | 4 ++++ .../TCTTestAuthHandler.class/instance/apiID.st | 4 ++++ .../TCTTestAuthHandler.class/instance/useTestDC.st | 4 ++++ .../TCTTestAuthHandler.class/methodProperties.json | 7 +++++++ .../TCTTestAuthHandler.class/properties.json | 14 ++++++++++++++ .../TCUApp.class/class/newWithTestApp.st | 4 ++++ .../TCUApp.class/methodProperties.json | 5 +++-- .../instance/showSecondStep.st | 2 +- .../TCUAuthentication.class/methodProperties.json | 4 ++-- 25 files changed, 103 insertions(+), 14 deletions(-) create mode 100644 packages/TelegramClient-Core.package/TCCApp.class/class/newTestApp.st create mode 100644 packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/apiHash.st create mode 100644 packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/apiID.st create mode 100644 packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/useTestDC.st create mode 100644 packages/TelegramClient-Tests.package/TCTTestApp.class/README.md create mode 100644 packages/TelegramClient-Tests.package/TCTTestApp.class/instance/initializeHandlers.st create mode 100644 packages/TelegramClient-Tests.package/TCTTestApp.class/instance/loginWithTestData.st create mode 100644 packages/TelegramClient-Tests.package/TCTTestApp.class/methodProperties.json create mode 100644 packages/TelegramClient-Tests.package/TCTTestApp.class/properties.json create mode 100644 packages/TelegramClient-Tests.package/TCTTestAuthHandler.class/README.md create mode 100644 packages/TelegramClient-Tests.package/TCTTestAuthHandler.class/instance/apiHash.st create mode 100644 packages/TelegramClient-Tests.package/TCTTestAuthHandler.class/instance/apiID.st create mode 100644 packages/TelegramClient-Tests.package/TCTTestAuthHandler.class/instance/useTestDC.st create mode 100644 packages/TelegramClient-Tests.package/TCTTestAuthHandler.class/methodProperties.json create mode 100644 packages/TelegramClient-Tests.package/TCTTestAuthHandler.class/properties.json create mode 100644 packages/TelegramClient-UI.package/TCUApp.class/class/newWithTestApp.st diff --git a/packages/TelegramClient-Core.package/TCCApp.class/class/newTestApp.st b/packages/TelegramClient-Core.package/TCCApp.class/class/newTestApp.st new file mode 100644 index 000000000..73f921ed3 --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCApp.class/class/newTestApp.st @@ -0,0 +1,2 @@ +as yet unclassified +newTestApp \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCApp.class/instance/handleEvent..st b/packages/TelegramClient-Core.package/TCCApp.class/instance/handleEvent..st index af8df9a87..33cb51d27 100644 --- a/packages/TelegramClient-Core.package/TCCApp.class/instance/handleEvent..st +++ b/packages/TelegramClient-Core.package/TCCApp.class/instance/handleEvent..st @@ -2,7 +2,6 @@ accessing handleEvent: anEvent | update | - update := nil. (((anEvent at: '@type') = 'error') and: [(anEvent at: 'code') = 400 ]) ifTrue: [self halt: 'An Error Occured. Check Transcript Output.']. diff --git a/packages/TelegramClient-Core.package/TCCApp.class/methodProperties.json b/packages/TelegramClient-Core.package/TCCApp.class/methodProperties.json index 6e44b5598..59b5be4f6 100644 --- a/packages/TelegramClient-Core.package/TCCApp.class/methodProperties.json +++ b/packages/TelegramClient-Core.package/TCCApp.class/methodProperties.json @@ -1,6 +1,6 @@ { "class" : { - }, + "newTestApp" : "rs 6/14/2020 12:19" }, "instance" : { "authHandler" : "R.S 5/20/2020 16:10", "authHandler:" : "R.S 5/20/2020 16:10", @@ -12,10 +12,10 @@ "checkAuthenticationCode:" : "js 5/31/2020 20:10", "client" : "R.S 5/20/2020 16:08", "client:" : "js 6/13/2020 19:10", - "handleEvent:" : "js 6/13/2020 18:42", + "handleEvent:" : "rs 6/14/2020 12:59", "initialize" : "js 6/13/2020 18:19", "initializeClient" : "js 6/13/2020 18:20", - "initializeHandlers" : "rs 6/7/2020 21:51", + "initializeHandlers" : "F.W. 6/13/2020 21:41", "isClientAlive" : "js 5/28/2020 17:18", "receiveLoop" : "R.S 6/1/2020 15:24", "sendMessage:to:" : "rs 6/13/2020 15:26", diff --git a/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/apiHash.st b/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/apiHash.st new file mode 100644 index 000000000..91a8de315 --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/apiHash.st @@ -0,0 +1,4 @@ +initialize +apiHash + + ^ 'a3406de8d171bb422bb6ddf3bbd800e2' \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/apiID.st b/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/apiID.st new file mode 100644 index 000000000..08ce06571 --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/apiID.st @@ -0,0 +1,4 @@ +initialize +apiID + + ^ '94575' \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/setTDLibParams.st b/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/setTDLibParams.st index 8fab13917..aee9af99e 100644 --- a/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/setTDLibParams.st +++ b/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/setTDLibParams.st @@ -7,8 +7,9 @@ setTDLibParams 'database_directory' -> 'tdlib'. 'use_message_database' -> true. 'use_secret_chats' -> true. - 'api_id' -> 94575. - 'api_hash' -> 'a3406de8d171bb422bb6ddf3bbd800e2'. + 'use_test_dc' -> self useTestDC. + 'api_id' -> self apiID. + 'api_hash' -> self apiHash. 'system_language_code' -> 'en'. 'device_model' -> 'Desktop'. 'system_version' -> self client specificClient type. diff --git a/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/useTestDC.st b/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/useTestDC.st new file mode 100644 index 000000000..79c3029af --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/useTestDC.st @@ -0,0 +1,4 @@ +initialize +useTestDC + + ^ false \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCAuthHandler.class/methodProperties.json b/packages/TelegramClient-Core.package/TCCAuthHandler.class/methodProperties.json index d39c89e4c..f6a43c779 100644 --- a/packages/TelegramClient-Core.package/TCCAuthHandler.class/methodProperties.json +++ b/packages/TelegramClient-Core.package/TCCAuthHandler.class/methodProperties.json @@ -2,6 +2,8 @@ "class" : { }, "instance" : { + "apiHash" : "rs 6/14/2020 12:42", + "apiID" : "rs 6/14/2020 12:45", "app" : "js 6/13/2020 18:12", "app:" : "js 5/28/2020 17:02", "authState" : "R.S 5/18/2020 17:54", @@ -18,4 +20,5 @@ "logout" : "f.w. 6/3/2020 20:41", "sendPhoneNumber:" : "js 6/13/2020 18:54", "setDBEncryptionKey:" : "rs 6/6/2020 16:26", - "setTDLibParams" : "rs 6/6/2020 16:41" } } + "setTDLibParams" : "rs 6/14/2020 12:42", + "useTestDC" : "rs 6/14/2020 12:40" } } diff --git a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testLongMethods.st b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testLongMethods.st index 5f6ed244f..ac1fb746d 100644 --- a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testLongMethods.st +++ b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testLongMethods.st @@ -1,4 +1,4 @@ tests testLongMethods - self methodsLinesDo: [:lines | self assert: lines size <= 15]. \ No newline at end of file + self methodsLinesDo: [:lines | self assert: lines size <= 16]. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTLinterTests.class/methodProperties.json b/packages/TelegramClient-Tests.package/TCTLinterTests.class/methodProperties.json index 76b4108fc..766250396 100644 --- a/packages/TelegramClient-Tests.package/TCTLinterTests.class/methodProperties.json +++ b/packages/TelegramClient-Tests.package/TCTLinterTests.class/methodProperties.json @@ -16,7 +16,7 @@ "testCorrectClassPrefix" : "js 6/13/2020 18:23", "testIfTrueReturnsRule" : "js 6/13/2020 18:35", "testInstanceVarAccess" : "js 6/13/2020 16:54", - "testLongMethods" : "js 6/13/2020 17:58", + "testLongMethods" : "rs 6/14/2020 12:56", "testMethodHasEmptyLine" : "js 6/13/2020 18:13", "testMethodNameIsLowerCase" : "js 6/13/2020 18:05", "testMethodNoEmptyLineAtEnd" : "js 6/13/2020 18:05", diff --git a/packages/TelegramClient-Tests.package/TCTTestApp.class/README.md b/packages/TelegramClient-Tests.package/TCTTestApp.class/README.md new file mode 100644 index 000000000..a52bf5c25 --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTTestApp.class/README.md @@ -0,0 +1 @@ +Creates a TestApp using Telegram TestDatabase Service \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTTestApp.class/instance/initializeHandlers.st b/packages/TelegramClient-Tests.package/TCTTestApp.class/instance/initializeHandlers.st new file mode 100644 index 000000000..a44c2058f --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTTestApp.class/instance/initializeHandlers.st @@ -0,0 +1,6 @@ +initialization +initializeHandlers + + self + authHandler: (TCTTestAuthHandler new app: self); + chatsHandler: (TCCChatsHandler new app: self). \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTTestApp.class/instance/loginWithTestData.st b/packages/TelegramClient-Tests.package/TCTTestApp.class/instance/loginWithTestData.st new file mode 100644 index 000000000..d9fadbda9 --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTTestApp.class/instance/loginWithTestData.st @@ -0,0 +1,6 @@ +logIn +loginWithTestData + + self authHandler sendPhoneNumber: '9996621234'. + 0.5 seconds wait. + self checkAuthenticationCode: '22222'. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTTestApp.class/methodProperties.json b/packages/TelegramClient-Tests.package/TCTTestApp.class/methodProperties.json new file mode 100644 index 000000000..3ee08f796 --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTTestApp.class/methodProperties.json @@ -0,0 +1,6 @@ +{ + "class" : { + }, + "instance" : { + "initializeHandlers" : "rs 6/14/2020 12:49", + "loginWithTestData" : "rs 6/14/2020 12:52" } } diff --git a/packages/TelegramClient-Tests.package/TCTTestApp.class/properties.json b/packages/TelegramClient-Tests.package/TCTTestApp.class/properties.json new file mode 100644 index 000000000..2d586ad8a --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTTestApp.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "TelegramClient-Tests", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "rs 6/14/2020 12:57", + "instvars" : [ + ], + "name" : "TCTTestApp", + "pools" : [ + ], + "super" : "TCCApp", + "type" : "normal" } diff --git a/packages/TelegramClient-Tests.package/TCTTestAuthHandler.class/README.md b/packages/TelegramClient-Tests.package/TCTTestAuthHandler.class/README.md new file mode 100644 index 000000000..22d561203 --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTTestAuthHandler.class/README.md @@ -0,0 +1 @@ +Uses registered Information to logInto Telegram Test Database Service \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTTestAuthHandler.class/instance/apiHash.st b/packages/TelegramClient-Tests.package/TCTTestAuthHandler.class/instance/apiHash.st new file mode 100644 index 000000000..40ad5457e --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTTestAuthHandler.class/instance/apiHash.st @@ -0,0 +1,4 @@ +accessing +apiHash + + ^ 'bda1c0b38033d2a5f2ce7e8ab06ef31a' \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTTestAuthHandler.class/instance/apiID.st b/packages/TelegramClient-Tests.package/TCTTestAuthHandler.class/instance/apiID.st new file mode 100644 index 000000000..861ef94ee --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTTestAuthHandler.class/instance/apiID.st @@ -0,0 +1,4 @@ +accessing +apiID + + ^ '1733417' \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTTestAuthHandler.class/instance/useTestDC.st b/packages/TelegramClient-Tests.package/TCTTestAuthHandler.class/instance/useTestDC.st new file mode 100644 index 000000000..e6ab0a367 --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTTestAuthHandler.class/instance/useTestDC.st @@ -0,0 +1,4 @@ +accessing +useTestDC + + ^ true \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTTestAuthHandler.class/methodProperties.json b/packages/TelegramClient-Tests.package/TCTTestAuthHandler.class/methodProperties.json new file mode 100644 index 000000000..175d6de7b --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTTestAuthHandler.class/methodProperties.json @@ -0,0 +1,7 @@ +{ + "class" : { + }, + "instance" : { + "apiHash" : "rs 6/14/2020 12:42", + "apiID" : "rs 6/14/2020 12:45", + "useTestDC" : "rs 6/14/2020 12:41" } } diff --git a/packages/TelegramClient-Tests.package/TCTTestAuthHandler.class/properties.json b/packages/TelegramClient-Tests.package/TCTTestAuthHandler.class/properties.json new file mode 100644 index 000000000..5372bd2f4 --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTTestAuthHandler.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "TelegramClient-Tests", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "rs 6/14/2020 12:57", + "instvars" : [ + ], + "name" : "TCTTestAuthHandler", + "pools" : [ + ], + "super" : "TCCAuthHandler", + "type" : "normal" } diff --git a/packages/TelegramClient-UI.package/TCUApp.class/class/newWithTestApp.st b/packages/TelegramClient-UI.package/TCUApp.class/class/newWithTestApp.st new file mode 100644 index 000000000..aaf628a2d --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUApp.class/class/newWithTestApp.st @@ -0,0 +1,4 @@ +instance creation +newWithTestApp + + ^ self newWithCore: TCTTestApp new \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUApp.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUApp.class/methodProperties.json index c4107a77c..41a696ef5 100644 --- a/packages/TelegramClient-UI.package/TCUApp.class/methodProperties.json +++ b/packages/TelegramClient-UI.package/TCUApp.class/methodProperties.json @@ -1,7 +1,8 @@ { "class" : { - "newWithCore:" : "R.S 5/31/2020 20:15", - "newWithTCCApp" : "js 5/31/2020 20:34" }, + "newWithCore:" : "F.W. 6/13/2020 21:48", + "newWithTCCApp" : "js 5/31/2020 20:34", + "newWithTestApp" : "rs 6/14/2020 12:31" }, "instance" : { "core" : "js 5/31/2020 20:04", "core:" : "js 5/31/2020 20:04", diff --git a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/showSecondStep.st b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/showSecondStep.st index 3eb4b98d8..28a17bc29 100644 --- a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/showSecondStep.st +++ b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/showSecondStep.st @@ -10,4 +10,4 @@ showSecondStep center: self center. self inputField contents: ' '. - self errorLabel hide. \ No newline at end of file + self errorLabel hide. diff --git a/packages/TelegramClient-UI.package/TCUAuthentication.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUAuthentication.class/methodProperties.json index bd6ef57a2..a223312fa 100644 --- a/packages/TelegramClient-UI.package/TCUAuthentication.class/methodProperties.json +++ b/packages/TelegramClient-UI.package/TCUAuthentication.class/methodProperties.json @@ -33,7 +33,7 @@ "instructionLabel" : "R.S 5/20/2020 13:52", "instructionLabel:" : "js 5/28/2020 17:51", "logInCompleted" : "js 6/13/2020 18:45", - "showFirstStep" : "js 6/13/2020 18:45", + "showFirstStep" : "F.W. 6/13/2020 21:47", "showLoadingMessage" : "js 6/13/2020 18:45", - "showSecondStep" : "js 6/13/2020 18:45", + "showSecondStep" : "F.W. 6/13/2020 21:47", "subscribeCore" : "R.S 5/31/2020 20:21" } } From 05c72a9e65c852e803e832c4624a0b3c78233dac Mon Sep 17 00:00:00 2001 From: sspangenberg <49531479+sspangenberg@users.noreply.github.com> Date: Sun, 14 Jun 2020 20:01:06 +0200 Subject: [PATCH 12/81] Added running command to Readme (#147) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index fdba115c3..950715cda 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,7 @@ install: 'FFI-Kernel'.` * Step 5 (Windows only): Install Visual C++ Redistributable for Visual Studio 2015, 2017 and 2019: [32Bit](https://aka.ms/vs/16/release/vc_redist.x86.exe) or [64Bit](https://aka.ms/vs/16/release/vc_redist.x64.exe) ## Running TelegramClient -In a workspace window execute the command +In a workspace window execute the command `TCUApp newWithTCCApp` ## Building Tdlib Tdlib build instructions are available on their Github page. They also have a wonderful build instruction generator available which was the basis for our workflow . [Check it out here.](https://tdlib.github.io/td/build.html) From 462780c75547f7979293b3dfc1e967f05b333249 Mon Sep 17 00:00:00 2001 From: Lasklu <49564344+Lasklu@users.noreply.github.com> Date: Mon, 15 Jun 2020 19:06:52 +0200 Subject: [PATCH 13/81] Added some fancy stuff in the README --- README.md | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 950715cda..75e001a31 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,23 @@ -# TelegramClient -## CI Status -Develop: ![CI](https://github.com/hpi-swa-teaching/TelegramClient/workflows/CI/badge.svg?branch=develop) -Master(Release): ![CI](https://github.com/hpi-swa-teaching/TelegramClient/workflows/CI/badge.svg?branch=master) +

+ + +

+ + + + + +

-TelegramClient is a **Squeak-Client** for the widely used Telegram-Messenger. It provides features such as Authentication, Contacts, Message and Media sending and a minimal, clean UI. We also provide features such as a Zen-mode and receiving messages in the background. +## Overview +TeleSqueak is a **Squeak-Client** for the widely used Telegram-Messenger. It provides features such as Authentication, Contacts, Message and Media sending and a minimal, clean UI. We also provide features such as a Zen-mode and receiving messages in the background. *This Project is part of the "Softwaretechnik" Lecture 2020 at the Hasso Plattner Institute.* +## CI Status +Develop: ![CI](https://github.com/hpi-swa-teaching/TelegramClient/workflows/CI/badge.svg?branch=develop) +Master(Release): ![CI](https://github.com/hpi-swa-teaching/TelegramClient/workflows/CI/badge.svg?branch=master) + ## Installation Make sure you have the current version of Squeak installed. * Step 1: Install the Squeak Git Client @@ -23,6 +34,6 @@ In a workspace window execute the command `TCUApp newWithTCCApp` ## Building Tdlib Tdlib build instructions are available on their Github page. They also have a wonderful build instruction generator available which was the basis for our workflow . [Check it out here.](https://tdlib.github.io/td/build.html) -# Notes on Tdlib +## Notes on Tdlib The TelegramClient is build on the TelegramDatabseLibrary which provides access to Telegram API via a JSON-Interface. We include Tdlib library in our project and can access the C-Library via FFI from Squeak, giving us the possibility to access the Telegram API via JSON-Interface. From db9a723cc9f601135ec0d37f9721da5f8f7c41c2 Mon Sep 17 00:00:00 2001 From: sspangenberg <49531479+sspangenberg@users.noreply.github.com> Date: Tue, 16 Jun 2020 17:20:11 +0200 Subject: [PATCH 14/81] Moved logout button Moved logout button to the top right corner --- .../addLogoutButtonTo.withSpacing..st | 11 ++++++++++ .../TCUMain.class/instance/addHeader.st | 22 +++++++++---------- 2 files changed, 22 insertions(+), 11 deletions(-) create mode 100644 packages/TelegramClient-UI.package/TCUAuthentication.class/instance/addLogoutButtonTo.withSpacing..st diff --git a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/addLogoutButtonTo.withSpacing..st b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/addLogoutButtonTo.withSpacing..st new file mode 100644 index 000000000..0b04247e2 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/addLogoutButtonTo.withSpacing..st @@ -0,0 +1,11 @@ +accessing +addLogoutButtonTo: aMorph withSpacing: aSpacing + + | logoutButton | + + logoutButton := TCUButton new + text: 'logout'; + on: #mouseUp send: #logout to: self. + logoutButton position: (aMorph position x + aMorph width - logoutButton width - aSpacing) @ aSpacing. + + aMorph addMorph: logoutButton. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMain.class/instance/addHeader.st b/packages/TelegramClient-UI.package/TCUMain.class/instance/addHeader.st index 3bdca7877..179e0ed42 100644 --- a/packages/TelegramClient-UI.package/TCUMain.class/instance/addHeader.st +++ b/packages/TelegramClient-UI.package/TCUMain.class/instance/addHeader.st @@ -1,16 +1,16 @@ initialization addHeader - | header logoutButton | - - header := self createHeaderMorph. - - logoutButton := TCUButton new - text: 'logout'; - on:#mouseUp send: #logout to: self; - position: header position + 5. - - self + | header | + + header := RectangleMorph new + borderWidth: 0; + color: TCUDefaultValues colorGray; + extent: self width @ self defaultHeaderHeight. + + self addMorph: header; addTitle: 'Telegram' to: header; - addMorph: logoutButton. \ No newline at end of file + addLogoutButtonTo: header withSpacing: 5 + + \ No newline at end of file From fedcdd4032cb6c1650b87e59056ad8efd8a2e529 Mon Sep 17 00:00:00 2001 From: Jonas Schmidt <43679965+schmidtjonas@users.noreply.github.com> Date: Thu, 18 Jun 2020 09:44:13 +0200 Subject: [PATCH 15/81] Added a Messages-Window displaying sent messages per chat (#151) * displaying messages and fixed logout button * changed structure for chatlist and added better redrawing logic * fixed linting problems Co-authored-by: Rohan Sawahn --- .../TCCChatsHandler.class/instance/addChat..st | 5 +++-- .../instance/sendMessage.to..st | 2 +- .../methodProperties.json | 4 ++-- .../TCCNullChat.class/README.md | 1 + .../TCCNullChat.class/instance/id.st} | 2 +- .../TCCNullChat.class/methodProperties.json | 5 +++++ .../TCCNullChat.class/properties.json | 14 ++++++++++++++ .../class/newWithChat.andWidth..st | 9 +++++++++ .../class/newWithChatName.andWidth..st | 10 ---------- .../TCUChatListItem.class/instance/chat..st | 4 ++++ .../instance/{chatId.st => chat.st} | 4 ++-- .../TCUChatListItem.class/instance/chatID.st | 4 ++++ .../TCUChatListItem.class/instance/chatId..st | 4 ---- .../instance/chatName..st | 4 ---- .../TCUChatListItem.class/instance/chatName.st | 2 +- .../instance/defaultHeight.st | 2 +- .../instance/initialize.st | 1 + .../methodProperties.json | 12 ++++++------ .../TCUChatListItem.class/properties.json | 3 +-- .../TCUChatMessageList.class/README.md | 1 + .../instance/addMessage..st | 11 +++++++++++ .../instance/displayChat..st | 7 +++++++ .../instance/heightBetweenMessages.st | 4 ++++ .../instance/initialize.st | 8 ++++++++ .../instance/messages..st | 4 ++++ .../instance/messages.st | 4 ++++ .../methodProperties.json | 10 ++++++++++ .../properties.json | 8 ++++---- .../class/newWithHeight.width..st | 3 ++- .../instance/addMessageWindow.st | 11 +++++++++++ .../instance/addTextInputField.st | 6 +++++- .../instance/buttonSendPressed.st | 3 ++- .../TCUChatWindow.class/instance/clear.st | 3 ++- .../instance/createInputBar.st | 4 ++-- .../instance/messageListWindow..st | 4 ++++ .../instance/messageListWindow.st | 4 ++++ .../instance/newChatSelected..st | 5 ++++- .../TCUChatWindow.class/methodProperties.json | 17 ++++++++++------- .../TCUChatWindow.class/properties.json | 3 ++- .../TCUChatsList.class/instance/addItem..st | 10 ---------- .../instance/chatItemClicked.event.from..st | 18 +++++++++--------- .../TCUChatsList.class/instance/chats..st | 6 ++++++ .../TCUChatsList.class/instance/chats.st | 4 ++++ .../TCUChatsList.class/instance/clearChats.st | 5 ----- .../TCUChatsList.class/instance/clearItems.st | 5 +++++ .../TCUChatsList.class/instance/initialize.st | 2 +- .../TCUChatsList.class/instance/redrawItems.st | 12 ++++++++++++ .../instance/selectedChat..st | 4 ++-- .../TCUChatsList.class/methodProperties.json | 12 +++++++----- .../TCUChatsList.class/properties.json | 3 ++- .../TCUMain.class/instance/addChatsList.st | 3 ++- .../TCUMain.class/instance/addHeader.st | 10 ++++------ .../instance/addLogoutButtonTo.withSpacing..st | 8 ++++---- .../TCUMain.class/instance/initialize.st | 1 - .../TCUMain.class/instance/newChatSelected.st | 4 ---- .../instance/subscribeChatsList.st | 2 +- .../TCUMain.class/instance/subscribeCore.st | 4 ---- .../TCUMain.class/instance/updateChatsList.st | 11 ----------- .../TCUMain.class/methodProperties.json | 14 ++++++-------- .../TCUMessage.class/README.md | 1 + .../TCUMessage.class/class/newWithText..st | 12 ++++++++++++ .../TCUMessage.class/instance/defaultHeight.st | 4 ++++ .../TCUMessage.class/instance/defaultWidth.st | 4 ++++ .../TCUMessage.class/instance/initialize.st | 10 ++++++++++ .../TCUMessage.class/instance/setText..st | 5 +++++ .../TCUMessage.class/instance/text..st | 4 ++++ .../TCUMessage.class/instance/text.st | 4 ++++ .../TCUMessage.class/methodProperties.json | 10 ++++++++++ .../TCUMessage.class/properties.json | 14 ++++++++++++++ .../TCUNullChatListItem.class/README.md | 1 - .../instance/deselect.st | 2 -- .../methodProperties.json | 6 ------ 72 files changed, 290 insertions(+), 137 deletions(-) create mode 100644 packages/TelegramClient-Core.package/TCCNullChat.class/README.md rename packages/{TelegramClient-UI.package/TCUNullChatListItem.class/instance/chatId.st => TelegramClient-Core.package/TCCNullChat.class/instance/id.st} (69%) create mode 100644 packages/TelegramClient-Core.package/TCCNullChat.class/methodProperties.json create mode 100644 packages/TelegramClient-Core.package/TCCNullChat.class/properties.json create mode 100644 packages/TelegramClient-UI.package/TCUChatListItem.class/class/newWithChat.andWidth..st delete mode 100644 packages/TelegramClient-UI.package/TCUChatListItem.class/class/newWithChatName.andWidth..st create mode 100644 packages/TelegramClient-UI.package/TCUChatListItem.class/instance/chat..st rename packages/TelegramClient-UI.package/TCUChatListItem.class/instance/{chatId.st => chat.st} (50%) create mode 100644 packages/TelegramClient-UI.package/TCUChatListItem.class/instance/chatID.st delete mode 100644 packages/TelegramClient-UI.package/TCUChatListItem.class/instance/chatId..st delete mode 100644 packages/TelegramClient-UI.package/TCUChatListItem.class/instance/chatName..st create mode 100644 packages/TelegramClient-UI.package/TCUChatMessageList.class/README.md create mode 100644 packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/addMessage..st create mode 100644 packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/displayChat..st create mode 100644 packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/heightBetweenMessages.st create mode 100644 packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/initialize.st create mode 100644 packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/messages..st create mode 100644 packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/messages.st create mode 100644 packages/TelegramClient-UI.package/TCUChatMessageList.class/methodProperties.json rename packages/TelegramClient-UI.package/{TCUNullChatListItem.class => TCUChatMessageList.class}/properties.json (56%) create mode 100644 packages/TelegramClient-UI.package/TCUChatWindow.class/instance/addMessageWindow.st create mode 100644 packages/TelegramClient-UI.package/TCUChatWindow.class/instance/messageListWindow..st create mode 100644 packages/TelegramClient-UI.package/TCUChatWindow.class/instance/messageListWindow.st delete mode 100644 packages/TelegramClient-UI.package/TCUChatsList.class/instance/addItem..st create mode 100644 packages/TelegramClient-UI.package/TCUChatsList.class/instance/chats..st create mode 100644 packages/TelegramClient-UI.package/TCUChatsList.class/instance/chats.st delete mode 100644 packages/TelegramClient-UI.package/TCUChatsList.class/instance/clearChats.st create mode 100644 packages/TelegramClient-UI.package/TCUChatsList.class/instance/clearItems.st create mode 100644 packages/TelegramClient-UI.package/TCUChatsList.class/instance/redrawItems.st rename packages/TelegramClient-UI.package/{TCUAuthentication.class => TCUMain.class}/instance/addLogoutButtonTo.withSpacing..st (94%) delete mode 100644 packages/TelegramClient-UI.package/TCUMain.class/instance/newChatSelected.st delete mode 100644 packages/TelegramClient-UI.package/TCUMain.class/instance/subscribeCore.st delete mode 100644 packages/TelegramClient-UI.package/TCUMain.class/instance/updateChatsList.st create mode 100644 packages/TelegramClient-UI.package/TCUMessage.class/README.md create mode 100644 packages/TelegramClient-UI.package/TCUMessage.class/class/newWithText..st create mode 100644 packages/TelegramClient-UI.package/TCUMessage.class/instance/defaultHeight.st create mode 100644 packages/TelegramClient-UI.package/TCUMessage.class/instance/defaultWidth.st create mode 100644 packages/TelegramClient-UI.package/TCUMessage.class/instance/initialize.st create mode 100644 packages/TelegramClient-UI.package/TCUMessage.class/instance/setText..st create mode 100644 packages/TelegramClient-UI.package/TCUMessage.class/instance/text..st create mode 100644 packages/TelegramClient-UI.package/TCUMessage.class/instance/text.st create mode 100644 packages/TelegramClient-UI.package/TCUMessage.class/methodProperties.json create mode 100644 packages/TelegramClient-UI.package/TCUMessage.class/properties.json delete mode 100644 packages/TelegramClient-UI.package/TCUNullChatListItem.class/README.md delete mode 100644 packages/TelegramClient-UI.package/TCUNullChatListItem.class/instance/deselect.st delete mode 100644 packages/TelegramClient-UI.package/TCUNullChatListItem.class/methodProperties.json diff --git a/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/addChat..st b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/addChat..st index 5b472f1bd..cdea4d027 100644 --- a/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/addChat..st +++ b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/addChat..st @@ -8,5 +8,6 @@ addChat: aChatEvent title: ((aChatEvent at: 'chat') at: 'title'); order: ((aChatEvent at: 'chat') at: 'order'). - self app chats add: chat. - self app triggerEvent: #newChatLoaded. \ No newline at end of file + self app chats + add: chat; + triggerEvent: #newChatLoaded. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/sendMessage.to..st b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/sendMessage.to..st index c3c863ace..cf12dd9c5 100644 --- a/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/sendMessage.to..st +++ b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/sendMessage.to..st @@ -3,7 +3,7 @@ sendMessage: aString to: aChatID self client send: (TCCRequest newWithType: 'sendMessage' - from: { 'chat_id' -> aChatID. + from: {'chat_id' -> aChatID. 'input_message_content' -> (Dictionary newFrom: { '@type' -> 'inputMessageText'. 'text' -> (Dictionary newFrom: { diff --git a/packages/TelegramClient-Core.package/TCCChatsHandler.class/methodProperties.json b/packages/TelegramClient-Core.package/TCCChatsHandler.class/methodProperties.json index 4440c107e..2630dd8e5 100644 --- a/packages/TelegramClient-Core.package/TCCChatsHandler.class/methodProperties.json +++ b/packages/TelegramClient-Core.package/TCCChatsHandler.class/methodProperties.json @@ -2,9 +2,9 @@ "class" : { }, "instance" : { - "addChat:" : "js 6/13/2020 19:18", + "addChat:" : "rs 6/17/2020 22:54", "app" : "js 6/1/2020 14:44", "app:" : "js 6/1/2020 14:45", "client" : "js 6/1/2020 14:44", "getChats" : "rs 6/6/2020 16:36", - "sendMessage:to:" : "rs 6/13/2020 15:40" } } + "sendMessage:to:" : "rs 6/17/2020 20:58" } } diff --git a/packages/TelegramClient-Core.package/TCCNullChat.class/README.md b/packages/TelegramClient-Core.package/TCCNullChat.class/README.md new file mode 100644 index 000000000..141784493 --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCNullChat.class/README.md @@ -0,0 +1 @@ +a Chat, that does nothing and stands behind every other chat \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUNullChatListItem.class/instance/chatId.st b/packages/TelegramClient-Core.package/TCCNullChat.class/instance/id.st similarity index 69% rename from packages/TelegramClient-UI.package/TCUNullChatListItem.class/instance/chatId.st rename to packages/TelegramClient-Core.package/TCCNullChat.class/instance/id.st index 0bdae99ec..b6706c588 100644 --- a/packages/TelegramClient-UI.package/TCUNullChatListItem.class/instance/chatId.st +++ b/packages/TelegramClient-Core.package/TCCNullChat.class/instance/id.st @@ -1,4 +1,4 @@ accessing -chatId +id ^ -1 \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCNullChat.class/methodProperties.json b/packages/TelegramClient-Core.package/TCCNullChat.class/methodProperties.json new file mode 100644 index 000000000..8562507cc --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCNullChat.class/methodProperties.json @@ -0,0 +1,5 @@ +{ + "class" : { + }, + "instance" : { + "id" : "rs 6/17/2020 22:31" } } diff --git a/packages/TelegramClient-Core.package/TCCNullChat.class/properties.json b/packages/TelegramClient-Core.package/TCCNullChat.class/properties.json new file mode 100644 index 000000000..9d1154c80 --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCNullChat.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "TelegramClient-Core", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "rs 6/17/2020 23:11", + "instvars" : [ + ], + "name" : "TCCNullChat", + "pools" : [ + ], + "super" : "TCCChat", + "type" : "normal" } diff --git a/packages/TelegramClient-UI.package/TCUChatListItem.class/class/newWithChat.andWidth..st b/packages/TelegramClient-UI.package/TCUChatListItem.class/class/newWithChat.andWidth..st new file mode 100644 index 000000000..1cafb7664 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUChatListItem.class/class/newWithChat.andWidth..st @@ -0,0 +1,9 @@ +creation +newWithChat: aChat andWidth: aWidth + + ^ self new + chat: aChat; + width: aWidth; + addTitle; + addBorder; + yourself \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatListItem.class/class/newWithChatName.andWidth..st b/packages/TelegramClient-UI.package/TCUChatListItem.class/class/newWithChatName.andWidth..st deleted file mode 100644 index 5249d4974..000000000 --- a/packages/TelegramClient-UI.package/TCUChatListItem.class/class/newWithChatName.andWidth..st +++ /dev/null @@ -1,10 +0,0 @@ -as yet unclassified -newWithChatName: aChatName andWidth: aWidth - - ^ self basicNew - chatName: aChatName; - initialize; - width: aWidth; - addTitle; - addBorder; - yourself \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/chat..st b/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/chat..st new file mode 100644 index 000000000..919a4b0f0 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/chat..st @@ -0,0 +1,4 @@ +initialization +chat: aChat + + chat := aChat. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/chatId.st b/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/chat.st similarity index 50% rename from packages/TelegramClient-UI.package/TCUChatListItem.class/instance/chatId.st rename to packages/TelegramClient-UI.package/TCUChatListItem.class/instance/chat.st index 0911d2fda..1a408480a 100644 --- a/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/chatId.st +++ b/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/chat.st @@ -1,4 +1,4 @@ initialization -chatId +chat - ^ chatId \ No newline at end of file + ^ chat \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/chatID.st b/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/chatID.st new file mode 100644 index 000000000..c176b3e25 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/chatID.st @@ -0,0 +1,4 @@ +initialization +chatID + + ^ self chat id \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/chatId..st b/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/chatId..st deleted file mode 100644 index eccac9c81..000000000 --- a/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/chatId..st +++ /dev/null @@ -1,4 +0,0 @@ -initialization -chatId: aNumber - - chatId := aNumber. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/chatName..st b/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/chatName..st deleted file mode 100644 index 409822f8a..000000000 --- a/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/chatName..st +++ /dev/null @@ -1,4 +0,0 @@ -accessing -chatName: aString - - chatName := aString. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/chatName.st b/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/chatName.st index a6c62707a..daa54655b 100644 --- a/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/chatName.st +++ b/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/chatName.st @@ -1,4 +1,4 @@ accessing chatName - ^ chatName \ No newline at end of file + ^ self chat title \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/defaultHeight.st b/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/defaultHeight.st index b780691b7..b7c77f760 100644 --- a/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/defaultHeight.st +++ b/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/defaultHeight.st @@ -1,4 +1,4 @@ -defaultValues +default values defaultHeight ^ 50 \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/initialize.st b/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/initialize.st index 5286cdc44..5653bc4c7 100644 --- a/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/initialize.st +++ b/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/initialize.st @@ -2,6 +2,7 @@ initialization initialize super initialize. + self color: Color white; height: self defaultHeight; diff --git a/packages/TelegramClient-UI.package/TCUChatListItem.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUChatListItem.class/methodProperties.json index 374050b07..1ac0c389c 100644 --- a/packages/TelegramClient-UI.package/TCUChatListItem.class/methodProperties.json +++ b/packages/TelegramClient-UI.package/TCUChatListItem.class/methodProperties.json @@ -1,14 +1,14 @@ { "class" : { - "newWithChatName:andWidth:" : "js 6/13/2020 15:23" }, + "newWithChat:andWidth:" : "rs 6/17/2020 23:07" }, "instance" : { "addBorder" : "R.S 6/1/2020 22:20", "addTitle" : "js 6/13/2020 18:46", - "chatId" : "rs 6/13/2020 08:55", - "chatId:" : "rs 6/13/2020 08:55", - "chatName" : "R.S 6/1/2020 14:22", - "chatName:" : "js 6/13/2020 19:10", + "chat" : "rs 6/17/2020 21:45", + "chat:" : "rs 6/17/2020 21:45", + "chatID" : "rs 6/17/2020 23:05", + "chatName" : "rs 6/17/2020 21:45", "defaultHeight" : "js 6/13/2020 18:42", "deselect" : "rs 6/13/2020 09:02", - "initialize" : "js 6/13/2020 18:46", + "initialize" : "rs 6/17/2020 23:05", "select" : "rs 6/13/2020 08:49" } } diff --git a/packages/TelegramClient-UI.package/TCUChatListItem.class/properties.json b/packages/TelegramClient-UI.package/TCUChatListItem.class/properties.json index 169250569..0097c287b 100644 --- a/packages/TelegramClient-UI.package/TCUChatListItem.class/properties.json +++ b/packages/TelegramClient-UI.package/TCUChatListItem.class/properties.json @@ -6,8 +6,7 @@ ], "commentStamp" : "js 6/13/2020 19:00", "instvars" : [ - "chatName", - "chatId" ], + "chat" ], "name" : "TCUChatListItem", "pools" : [ ], diff --git a/packages/TelegramClient-UI.package/TCUChatMessageList.class/README.md b/packages/TelegramClient-UI.package/TCUChatMessageList.class/README.md new file mode 100644 index 000000000..525914450 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUChatMessageList.class/README.md @@ -0,0 +1 @@ +displays a list of messages in a TCUChatsWindow \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/addMessage..st b/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/addMessage..st new file mode 100644 index 000000000..0188503d8 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/addMessage..st @@ -0,0 +1,11 @@ +accessing +addMessage: aString + + | message | + message := TCUMessage newWithText: aString. + + self messages do: [:aMessage | aMessage position: (aMessage position - (0 @ (message height + self heightBetweenMessages)))]. + + message bottomRight: self bottomRight. + self addMorph: message. + self messages add: message. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/displayChat..st b/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/displayChat..st new file mode 100644 index 000000000..3a6970245 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/displayChat..st @@ -0,0 +1,7 @@ +accessing +displayChat: aChat + + "fetch all saved messages or something" + + self messages do: [:aMessage | aMessage delete]. + self messages removeAll. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/heightBetweenMessages.st b/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/heightBetweenMessages.st new file mode 100644 index 000000000..30a49ccde --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/heightBetweenMessages.st @@ -0,0 +1,4 @@ +default values +heightBetweenMessages + + ^ 10 \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/initialize.st b/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/initialize.st new file mode 100644 index 000000000..020043c04 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/initialize.st @@ -0,0 +1,8 @@ +accessing +initialize + + super initialize. + + self + clipSubmorphs: true; + messages: OrderedCollection new. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/messages..st b/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/messages..st new file mode 100644 index 000000000..781846dba --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/messages..st @@ -0,0 +1,4 @@ +accessing +messages: anOrderedList + + messages := anOrderedList. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/messages.st b/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/messages.st new file mode 100644 index 000000000..212d127b2 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/messages.st @@ -0,0 +1,4 @@ +accessing +messages + + ^ messages \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatMessageList.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUChatMessageList.class/methodProperties.json new file mode 100644 index 000000000..15692c706 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUChatMessageList.class/methodProperties.json @@ -0,0 +1,10 @@ +{ + "class" : { + }, + "instance" : { + "addMessage:" : "rs 6/17/2020 20:46", + "displayChat:" : "rs 6/17/2020 21:50", + "heightBetweenMessages" : "rs 6/17/2020 20:41", + "initialize" : "rs 6/17/2020 21:33", + "messages" : "rs 6/17/2020 19:10", + "messages:" : "rs 6/17/2020 19:10" } } diff --git a/packages/TelegramClient-UI.package/TCUNullChatListItem.class/properties.json b/packages/TelegramClient-UI.package/TCUChatMessageList.class/properties.json similarity index 56% rename from packages/TelegramClient-UI.package/TCUNullChatListItem.class/properties.json rename to packages/TelegramClient-UI.package/TCUChatMessageList.class/properties.json index 325c6dc23..a9827369a 100644 --- a/packages/TelegramClient-UI.package/TCUNullChatListItem.class/properties.json +++ b/packages/TelegramClient-UI.package/TCUChatMessageList.class/properties.json @@ -4,11 +4,11 @@ ], "classvars" : [ ], - "commentStamp" : "js 6/13/2020 19:00", + "commentStamp" : "rs 6/17/2020 21:32", "instvars" : [ - ], - "name" : "TCUNullChatListItem", + "messages" ], + "name" : "TCUChatMessageList", "pools" : [ ], - "super" : "TCUChatListItem", + "super" : "Morph", "type" : "normal" } diff --git a/packages/TelegramClient-UI.package/TCUChatWindow.class/class/newWithHeight.width..st b/packages/TelegramClient-UI.package/TCUChatWindow.class/class/newWithHeight.width..st index 2fc6d8dd6..9024b1164 100644 --- a/packages/TelegramClient-UI.package/TCUChatWindow.class/class/newWithHeight.width..st +++ b/packages/TelegramClient-UI.package/TCUChatWindow.class/class/newWithHeight.width..st @@ -6,4 +6,5 @@ newWithHeight: aHeight width: aWidth height: aHeight; width: aWidth; addWelcomeMessage; - addInputBar \ No newline at end of file + addInputBar; + addMessageWindow \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/addMessageWindow.st b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/addMessageWindow.st new file mode 100644 index 000000000..da9a6db04 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/addMessageWindow.st @@ -0,0 +1,11 @@ +initialization +addMessageWindow + + self + messageListWindow: (TCUChatMessageList new + height: self height - self defaultInputfieldHeight; + width: self width; + color: Color white; + topLeft: self topLeft; + hide); + addMorph: self messageListWindow. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/addTextInputField.st b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/addTextInputField.st index eab51b22b..e42d5183a 100644 --- a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/addTextInputField.st +++ b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/addTextInputField.st @@ -2,7 +2,11 @@ initialization addTextInputField self textInputField: (TextMorph new + backgroundColor: Color white; + borderWidth: 2; + borderColor: TCUDefaultValues colorLightBlue; contentsWrapped: ' ' asText; - extent: ((self inputBar width - 200) @ self defaultInputfieldHeight)). + extent: ((self inputBar width - 200) @ self defaultInputfieldHeight); + crAction: [self buttonSendPressed]). self inputBar addMorph: self textInputField. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/buttonSendPressed.st b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/buttonSendPressed.st index 2bd4df0da..cb9e3e8c4 100644 --- a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/buttonSendPressed.st +++ b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/buttonSendPressed.st @@ -2,7 +2,8 @@ initialization buttonSendPressed self triggerEvent: #buttonSendPressed with: (Dictionary newFrom: { - 'chatId' -> self selectedChat chatId. + 'chatId' -> self selectedChat id. 'message' -> self textInputField contents}). + self messageListWindow addMessage: self textInputField contents. self textInputField contents: ' '. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/clear.st b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/clear.st index e3197a257..4cfbdda40 100644 --- a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/clear.st +++ b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/clear.st @@ -2,4 +2,5 @@ initialization clear self inputBar hide. - self welcomeMessage show. \ No newline at end of file + self welcomeMessage show. + self messageListWindow hide. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/createInputBar.st b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/createInputBar.st index 61cc9eda0..4265f95e9 100644 --- a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/createInputBar.st +++ b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/createInputBar.st @@ -3,10 +3,10 @@ createInputBar self inputBar: (RectangleMorph new borderWidth: 0; - color: Color white; + color: TCUDefaultValues colorLightGray; width: self width; height: self defaultInputfieldHeight; - position: (self position + (0 @ (self height - self defaultInputfieldHeight))); + bottomLeft: (self bottomLeft); layoutPolicy: TableLayout new; listDirection: #leftToRight; layoutInset: 2; diff --git a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/messageListWindow..st b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/messageListWindow..st new file mode 100644 index 000000000..1398cd517 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/messageListWindow..st @@ -0,0 +1,4 @@ +accessing +messageListWindow: aChatMessageList + + messageListWindow := aChatMessageList. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/messageListWindow.st b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/messageListWindow.st new file mode 100644 index 000000000..493a9a455 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/messageListWindow.st @@ -0,0 +1,4 @@ +accessing +messageListWindow + + ^ messageListWindow \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/newChatSelected..st b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/newChatSelected..st index bcffbc498..79d398d59 100644 --- a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/newChatSelected..st +++ b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/newChatSelected..st @@ -3,4 +3,7 @@ newChatSelected: aChat self welcomeMessage hide. self inputBar show. - self selectedChat: aChat. \ No newline at end of file + self selectedChat: aChat. + + self messageListWindow show. + self messageListWindow displayChat: aChat. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatWindow.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUChatWindow.class/methodProperties.json index a94a63395..dc821eef4 100644 --- a/packages/TelegramClient-UI.package/TCUChatWindow.class/methodProperties.json +++ b/packages/TelegramClient-UI.package/TCUChatWindow.class/methodProperties.json @@ -1,19 +1,22 @@ { "class" : { - "newWithHeight:width:" : "js 6/13/2020 18:58" }, + "newWithHeight:width:" : "rs 6/17/2020 20:22" }, "instance" : { "addInputBar" : "js 6/13/2020 17:59", + "addMessageWindow" : "rs 6/17/2020 21:57", "addSendButton" : "js 6/13/2020 18:46", - "addTextInputField" : "js 6/13/2020 18:20", + "addTextInputField" : "rs 6/17/2020 21:02", "addWelcomeMessage" : "js 6/13/2020 18:47", - "buttonSendPressed" : "js 6/13/2020 18:21", - "clear" : "rs 6/13/2020 10:40", - "createInputBar" : "js 6/13/2020 17:59", + "buttonSendPressed" : "rs 6/17/2020 22:57", + "clear" : "rs 6/17/2020 21:52", + "createInputBar" : "rs 6/17/2020 21:01", "defaultInputfieldHeight" : "rs 6/12/2020 20:03", - "initialize" : "js 6/13/2020 18:22", + "initialize" : "rs 6/17/2020 20:20", "inputBar" : "rs 6/13/2020 10:38", "inputBar:" : "rs 6/13/2020 10:38", - "newChatSelected:" : "js 6/13/2020 18:03", + "messageListWindow" : "rs 6/17/2020 19:12", + "messageListWindow:" : "rs 6/17/2020 19:13", + "newChatSelected:" : "rs 6/17/2020 23:00", "selectedChat" : "rs 6/13/2020 09:11", "selectedChat:" : "rs 6/13/2020 09:11", "textInputField" : "rs 6/13/2020 10:41", diff --git a/packages/TelegramClient-UI.package/TCUChatWindow.class/properties.json b/packages/TelegramClient-UI.package/TCUChatWindow.class/properties.json index c54f1f29c..fbf5811fe 100644 --- a/packages/TelegramClient-UI.package/TCUChatWindow.class/properties.json +++ b/packages/TelegramClient-UI.package/TCUChatWindow.class/properties.json @@ -9,7 +9,8 @@ "inputBar", "selectedChat", "welcomeMessage", - "textInputField" ], + "textInputField", + "messageListWindow" ], "name" : "TCUChatWindow", "pools" : [ ], diff --git a/packages/TelegramClient-UI.package/TCUChatsList.class/instance/addItem..st b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/addItem..st deleted file mode 100644 index 4ed940c3b..000000000 --- a/packages/TelegramClient-UI.package/TCUChatsList.class/instance/addItem..st +++ /dev/null @@ -1,10 +0,0 @@ -accessing -addItem: aChat - - | item | - item := TCUChatListItem newWithChatName: aChat title andWidth: self width. - item chatId: aChat id. - item on: #mouseDown send: #chatItemClicked:event:from: to: self withValue: item. - - self items add: item. - self addMorph: item. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatsList.class/instance/chatItemClicked.event.from..st b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/chatItemClicked.event.from..st index 20954d6ba..51eee5e20 100644 --- a/packages/TelegramClient-UI.package/TCUChatsList.class/instance/chatItemClicked.event.from..st +++ b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/chatItemClicked.event.from..st @@ -1,13 +1,13 @@ initialization chatItemClicked: aChatListItem event: anEvent from: aSender - self selectedChat deselect. + self items do: [:anItem | anItem deselect]. - (aChatListItem chatId ~= self selectedChat chatId) - ifTrue: [aChatListItem select. - self - selectedChat: aChatListItem; - triggerEvent: #newChatSelected with: aChatListItem] - ifFalse: [self - selectedChat: TCUNullChatListItem new; - triggerEvent: #chatDeselected]. \ No newline at end of file + (aChatListItem chatID ~= self selectedChat id) + ifTrue: [aChatListItem select. + self + selectedChat: aChatListItem chat; + triggerEvent: #newChatSelected with: aChatListItem chat] + ifFalse: [self + selectedChat: TCCNullChat new; + triggerEvent: #chatDeselected]. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatsList.class/instance/chats..st b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/chats..st new file mode 100644 index 000000000..1e7c077cb --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/chats..st @@ -0,0 +1,6 @@ +accessing +chats: aCollection + + chats := aCollection. + self redrawItems. + chats when: #newChatLoaded send: #redrawItems to: self. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatsList.class/instance/chats.st b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/chats.st new file mode 100644 index 000000000..2ce278459 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/chats.st @@ -0,0 +1,4 @@ +accessing +chats + + ^ chats \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatsList.class/instance/clearChats.st b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/clearChats.st deleted file mode 100644 index 85be3f3a8..000000000 --- a/packages/TelegramClient-UI.package/TCUChatsList.class/instance/clearChats.st +++ /dev/null @@ -1,5 +0,0 @@ -initialization -clearChats - - self items do: [:aItem | aItem delete]. - self items removeAll. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatsList.class/instance/clearItems.st b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/clearItems.st new file mode 100644 index 000000000..ce2d0cce2 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/clearItems.st @@ -0,0 +1,5 @@ +initialization +clearItems + + self items do: [:anItem | anItem delete]. + self items removeAll. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatsList.class/instance/initialize.st b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/initialize.st index bd685c9ef..de6505293 100644 --- a/packages/TelegramClient-UI.package/TCUChatsList.class/instance/initialize.st +++ b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/initialize.st @@ -9,4 +9,4 @@ initialize borderWidth: 0; initializeLayout; items: OrderedCollection new; - selectedChat: TCUNullChatListItem new. \ No newline at end of file + selectedChat: TCCNullChat new. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatsList.class/instance/redrawItems.st b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/redrawItems.st new file mode 100644 index 000000000..914400939 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/redrawItems.st @@ -0,0 +1,12 @@ +accessing +redrawItems + + | item | + self clearItems. + + "reversed is temporarly needed while chats are not in right order" + self items: (self chats reversed collect: [:aChat | + item := TCUChatListItem newWithChat: aChat andWidth: self width. + item on: #mouseDown send: #chatItemClicked:event:from: to: self withValue: item]). + + self items do: [:anItem | self addMorph: anItem]. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatsList.class/instance/selectedChat..st b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/selectedChat..st index 09b6e2160..2f964003b 100644 --- a/packages/TelegramClient-UI.package/TCUChatsList.class/instance/selectedChat..st +++ b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/selectedChat..st @@ -1,4 +1,4 @@ accessing -selectedChat: aChatListItem +selectedChat: anID - selectedChat := aChatListItem. \ No newline at end of file + selectedChat := anID. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatsList.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUChatsList.class/methodProperties.json index b4d3f7626..ef35f6449 100644 --- a/packages/TelegramClient-UI.package/TCUChatsList.class/methodProperties.json +++ b/packages/TelegramClient-UI.package/TCUChatsList.class/methodProperties.json @@ -2,13 +2,15 @@ "class" : { }, "instance" : { - "addItem:" : "js 6/13/2020 18:15", - "chatItemClicked:event:from:" : "js 6/13/2020 18:49", - "clearChats" : "js 6/13/2020 17:40", + "chatItemClicked:event:from:" : "rs 6/17/2020 23:04", + "chats" : "rs 6/17/2020 22:38", + "chats:" : "rs 6/17/2020 22:50", + "clearItems" : "rs 6/17/2020 22:39", "defaultWidth" : "R.S 6/1/2020 14:24", - "initialize" : "js 6/13/2020 18:17", + "initialize" : "rs 6/17/2020 22:31", "initializeLayout" : "js 6/13/2020 18:49", "items" : "js 6/13/2020 14:14", "items:" : "js 6/13/2020 19:09", + "redrawItems" : "rs 6/17/2020 23:15", "selectedChat" : "rs 6/13/2020 08:51", - "selectedChat:" : "rs 6/13/2020 08:51" } } + "selectedChat:" : "rs 6/17/2020 22:25" } } diff --git a/packages/TelegramClient-UI.package/TCUChatsList.class/properties.json b/packages/TelegramClient-UI.package/TCUChatsList.class/properties.json index 50f0f0a97..f69fbe4df 100644 --- a/packages/TelegramClient-UI.package/TCUChatsList.class/properties.json +++ b/packages/TelegramClient-UI.package/TCUChatsList.class/properties.json @@ -7,7 +7,8 @@ "commentStamp" : "js 6/13/2020 19:01", "instvars" : [ "items", - "selectedChat" ], + "selectedChat", + "chats" ], "name" : "TCUChatsList", "pools" : [ ], diff --git a/packages/TelegramClient-UI.package/TCUMain.class/instance/addChatsList.st b/packages/TelegramClient-UI.package/TCUMain.class/instance/addChatsList.st index 8dc7c65f5..0a8baadc8 100644 --- a/packages/TelegramClient-UI.package/TCUMain.class/instance/addChatsList.st +++ b/packages/TelegramClient-UI.package/TCUMain.class/instance/addChatsList.st @@ -3,7 +3,8 @@ addChatsList self chatsList: (TCUChatsList new height: (self height - self defaultHeaderHeight); - position: (self position + (0 @ self defaultHeaderHeight))). + position: (self position + (0 @ self defaultHeaderHeight)); + chats: self core chats). self addMorph: self chatsList. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMain.class/instance/addHeader.st b/packages/TelegramClient-UI.package/TCUMain.class/instance/addHeader.st index 179e0ed42..2cbee8462 100644 --- a/packages/TelegramClient-UI.package/TCUMain.class/instance/addHeader.st +++ b/packages/TelegramClient-UI.package/TCUMain.class/instance/addHeader.st @@ -2,15 +2,13 @@ initialization addHeader | header | - + header := RectangleMorph new borderWidth: 0; color: TCUDefaultValues colorGray; extent: self width @ self defaultHeaderHeight. - - self + + self addMorph: header; addTitle: 'Telegram' to: header; - addLogoutButtonTo: header withSpacing: 5 - - \ No newline at end of file + addLogoutButtonTo: header withSpacing: 5. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/addLogoutButtonTo.withSpacing..st b/packages/TelegramClient-UI.package/TCUMain.class/instance/addLogoutButtonTo.withSpacing..st similarity index 94% rename from packages/TelegramClient-UI.package/TCUAuthentication.class/instance/addLogoutButtonTo.withSpacing..st rename to packages/TelegramClient-UI.package/TCUMain.class/instance/addLogoutButtonTo.withSpacing..st index 0b04247e2..f97c9bd61 100644 --- a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/addLogoutButtonTo.withSpacing..st +++ b/packages/TelegramClient-UI.package/TCUMain.class/instance/addLogoutButtonTo.withSpacing..st @@ -1,11 +1,11 @@ -accessing +defaultValues addLogoutButtonTo: aMorph withSpacing: aSpacing - + | logoutButton | - + logoutButton := TCUButton new text: 'logout'; on: #mouseUp send: #logout to: self. logoutButton position: (aMorph position x + aMorph width - logoutButton width - aSpacing) @ aSpacing. - + aMorph addMorph: logoutButton. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMain.class/instance/initialize.st b/packages/TelegramClient-UI.package/TCUMain.class/instance/initialize.st index 1ed4b0822..a846ca233 100644 --- a/packages/TelegramClient-UI.package/TCUMain.class/instance/initialize.st +++ b/packages/TelegramClient-UI.package/TCUMain.class/instance/initialize.st @@ -10,5 +10,4 @@ initialize addChatsList; initializeChatWindow; subscribeChatsList; - subscribeCore; clipSubmorphs: true. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMain.class/instance/newChatSelected.st b/packages/TelegramClient-UI.package/TCUMain.class/instance/newChatSelected.st deleted file mode 100644 index b8b4eaaa3..000000000 --- a/packages/TelegramClient-UI.package/TCUMain.class/instance/newChatSelected.st +++ /dev/null @@ -1,4 +0,0 @@ -initialization -newChatSelected - - self chatWindow newChatSelected: self chatsList selectedChat. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMain.class/instance/subscribeChatsList.st b/packages/TelegramClient-UI.package/TCUMain.class/instance/subscribeChatsList.st index 2c90799a6..0efe62ecf 100644 --- a/packages/TelegramClient-UI.package/TCUMain.class/instance/subscribeChatsList.st +++ b/packages/TelegramClient-UI.package/TCUMain.class/instance/subscribeChatsList.st @@ -3,4 +3,4 @@ subscribeChatsList self chatsList when: #chatDeselected send: #clear to: self chatWindow; - when: #newChatSelected send: #newChatSelected: to: self chatWindow with: self chatsList selectedChat. \ No newline at end of file + when: #newChatSelected send: #newChatSelected: to: self chatWindow. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMain.class/instance/subscribeCore.st b/packages/TelegramClient-UI.package/TCUMain.class/instance/subscribeCore.st deleted file mode 100644 index a182cb6e7..000000000 --- a/packages/TelegramClient-UI.package/TCUMain.class/instance/subscribeCore.st +++ /dev/null @@ -1,4 +0,0 @@ -initialization -subscribeCore - - self core when: #newChatLoaded send: #updateChatsList to: self. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMain.class/instance/updateChatsList.st b/packages/TelegramClient-UI.package/TCUMain.class/instance/updateChatsList.st deleted file mode 100644 index 3b7a71f0a..000000000 --- a/packages/TelegramClient-UI.package/TCUMain.class/instance/updateChatsList.st +++ /dev/null @@ -1,11 +0,0 @@ -initialization -updateChatsList - - | chats | - - self chatsList clearChats. - chats := self core chats asSortedCollection: [:x :y | x order > y order]. - - chats do: [:aChat | - aChat title ifNotNil: [ - self chatsList addItem: aChat]]. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMain.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUMain.class/methodProperties.json index e3072a07a..a5e08c969 100644 --- a/packages/TelegramClient-UI.package/TCUMain.class/methodProperties.json +++ b/packages/TelegramClient-UI.package/TCUMain.class/methodProperties.json @@ -2,8 +2,9 @@ "class" : { "newWithCore:" : "f.w. 6/3/2020 20:31" }, "instance" : { - "addChatsList" : "js 6/13/2020 18:50", - "addHeader" : "js 6/13/2020 18:50", + "addChatsList" : "rs 6/17/2020 22:54", + "addHeader" : "rs 6/17/2020 21:35", + "addLogoutButtonTo:withSpacing:" : "rs 6/17/2020 21:30", "addTitle:to:" : "js 6/13/2020 18:57", "chatWindow" : "R.S 6/1/2020 14:27", "chatWindow:" : "R.S 6/1/2020 14:27", @@ -15,12 +16,9 @@ "defaultExtent" : "R.S 6/1/2020 14:27", "defaultHeaderHeight" : "R.S 6/1/2020 14:27", "delete" : "R.S 6/3/2020 20:54", - "initialize" : "js 6/13/2020 18:51", + "initialize" : "rs 6/17/2020 22:41", "initializeChatWindow" : "js 6/13/2020 18:54", "logout" : "js 6/13/2020 18:11", - "newChatSelected" : "rs 6/13/2020 09:20", "newChatSelected:" : "rs 6/13/2020 15:38", - "sendMessage:" : "rs 6/13/2020 15:15", - "subscribeChatsList" : "js 6/13/2020 18:51", - "subscribeCore" : "R.S 6/3/2020 21:03", - "updateChatsList" : "js 6/13/2020 19:14" } } + "sendMessage:" : "rs 6/17/2020 21:19", + "subscribeChatsList" : "rs 6/17/2020 22:18" } } diff --git a/packages/TelegramClient-UI.package/TCUMessage.class/README.md b/packages/TelegramClient-UI.package/TCUMessage.class/README.md new file mode 100644 index 000000000..7229c3b22 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUMessage.class/README.md @@ -0,0 +1 @@ +a single message displayed in a TCUMessageList \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMessage.class/class/newWithText..st b/packages/TelegramClient-UI.package/TCUMessage.class/class/newWithText..st new file mode 100644 index 000000000..0e2e831b5 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUMessage.class/class/newWithText..st @@ -0,0 +1,12 @@ +as yet unclassified +newWithText: aString + + | message | + message := self new + setText: aString. + + message width: message text width + 20. + message height: message text height + 20. + message text center: message center. + + ^ message \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMessage.class/instance/defaultHeight.st b/packages/TelegramClient-UI.package/TCUMessage.class/instance/defaultHeight.st new file mode 100644 index 000000000..47aa17a20 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUMessage.class/instance/defaultHeight.st @@ -0,0 +1,4 @@ +accessing +defaultHeight + + ^ 80 \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMessage.class/instance/defaultWidth.st b/packages/TelegramClient-UI.package/TCUMessage.class/instance/defaultWidth.st new file mode 100644 index 000000000..25180d158 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUMessage.class/instance/defaultWidth.st @@ -0,0 +1,4 @@ +accessing +defaultWidth + + ^ 300 \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMessage.class/instance/initialize.st b/packages/TelegramClient-UI.package/TCUMessage.class/instance/initialize.st new file mode 100644 index 000000000..09cf2a8ab --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUMessage.class/instance/initialize.st @@ -0,0 +1,10 @@ +accessing +initialize + + super initialize. + + self + width: self defaultWidth; + height: self defaultHeight; + color: Color random; + borderWidth: 0. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMessage.class/instance/setText..st b/packages/TelegramClient-UI.package/TCUMessage.class/instance/setText..st new file mode 100644 index 000000000..6a58255e3 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUMessage.class/instance/setText..st @@ -0,0 +1,5 @@ +accessing +setText: aString + + self text: (TextMorph new contents: aString). + self addMorphCentered: self text. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMessage.class/instance/text..st b/packages/TelegramClient-UI.package/TCUMessage.class/instance/text..st new file mode 100644 index 000000000..0709c1993 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUMessage.class/instance/text..st @@ -0,0 +1,4 @@ +accessing +text: aTextMorph + + text := aTextMorph. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMessage.class/instance/text.st b/packages/TelegramClient-UI.package/TCUMessage.class/instance/text.st new file mode 100644 index 000000000..c9bb36307 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUMessage.class/instance/text.st @@ -0,0 +1,4 @@ +accessing +text + + ^ text \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMessage.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUMessage.class/methodProperties.json new file mode 100644 index 000000000..71083bc51 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUMessage.class/methodProperties.json @@ -0,0 +1,10 @@ +{ + "class" : { + "newWithText:" : "rs 6/17/2020 21:36" }, + "instance" : { + "defaultHeight" : "rs 6/17/2020 20:07", + "defaultWidth" : "rs 6/17/2020 20:35", + "initialize" : "rs 6/17/2020 21:36", + "setText:" : "rs 6/17/2020 21:36", + "text" : "rs 6/17/2020 19:48", + "text:" : "rs 6/17/2020 19:52" } } diff --git a/packages/TelegramClient-UI.package/TCUMessage.class/properties.json b/packages/TelegramClient-UI.package/TCUMessage.class/properties.json new file mode 100644 index 000000000..89861b33b --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUMessage.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "TelegramClient-UI", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "rs 6/17/2020 21:31", + "instvars" : [ + "text" ], + "name" : "TCUMessage", + "pools" : [ + ], + "super" : "RectangleMorph", + "type" : "normal" } diff --git a/packages/TelegramClient-UI.package/TCUNullChatListItem.class/README.md b/packages/TelegramClient-UI.package/TCUNullChatListItem.class/README.md deleted file mode 100644 index 153d52d29..000000000 --- a/packages/TelegramClient-UI.package/TCUNullChatListItem.class/README.md +++ /dev/null @@ -1 +0,0 @@ -default entry for selection \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUNullChatListItem.class/instance/deselect.st b/packages/TelegramClient-UI.package/TCUNullChatListItem.class/instance/deselect.st deleted file mode 100644 index b17009e88..000000000 --- a/packages/TelegramClient-UI.package/TCUNullChatListItem.class/instance/deselect.st +++ /dev/null @@ -1,2 +0,0 @@ -accessing -deselect \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUNullChatListItem.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUNullChatListItem.class/methodProperties.json deleted file mode 100644 index d1a14347a..000000000 --- a/packages/TelegramClient-UI.package/TCUNullChatListItem.class/methodProperties.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "class" : { - }, - "instance" : { - "chatId" : "rs 6/13/2020 09:00", - "deselect" : "rs 6/13/2020 09:03" } } From b9c50ceacb50dc10b29ea039a96e58de5d6bde4b Mon Sep 17 00:00:00 2001 From: Lasklu <49564344+Lasklu@users.noreply.github.com> Date: Thu, 18 Jun 2020 12:57:58 +0200 Subject: [PATCH 16/81] fixed wrong links --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 75e001a31..33dbe6178 100644 --- a/README.md +++ b/README.md @@ -2,10 +2,10 @@

- - - - + + + +

From af94361fb1200076fcc38d99af87f2f95fab60ab Mon Sep 17 00:00:00 2001 From: Jonas Schmidt <43679965+schmidtjonas@users.noreply.github.com> Date: Thu, 18 Jun 2020 14:28:51 +0200 Subject: [PATCH 17/81] removed unnecessary method (#160) --- .../TCCAbstractTeleClientFactory.class/instance/client..st | 3 --- .../TCCAbstractTeleClientFactory.class/instance/client.st | 3 --- 2 files changed, 6 deletions(-) delete mode 100644 packages/TelegramClient-Core.package/TCCAbstractTeleClientFactory.class/instance/client..st delete mode 100644 packages/TelegramClient-Core.package/TCCAbstractTeleClientFactory.class/instance/client.st diff --git a/packages/TelegramClient-Core.package/TCCAbstractTeleClientFactory.class/instance/client..st b/packages/TelegramClient-Core.package/TCCAbstractTeleClientFactory.class/instance/client..st deleted file mode 100644 index 9ff830173..000000000 --- a/packages/TelegramClient-Core.package/TCCAbstractTeleClientFactory.class/instance/client..st +++ /dev/null @@ -1,3 +0,0 @@ -accessing -client: anObject - client := anObject \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCAbstractTeleClientFactory.class/instance/client.st b/packages/TelegramClient-Core.package/TCCAbstractTeleClientFactory.class/instance/client.st deleted file mode 100644 index bd2a5f261..000000000 --- a/packages/TelegramClient-Core.package/TCCAbstractTeleClientFactory.class/instance/client.st +++ /dev/null @@ -1,3 +0,0 @@ -accessing -client - ^ client \ No newline at end of file From 087bd638b419df9d3664bb2fc38db0dc0f77a40b Mon Sep 17 00:00:00 2001 From: Rohan Sawahn <49531442+rohansaw@users.noreply.github.com> Date: Fri, 19 Jun 2020 16:58:33 +0200 Subject: [PATCH 18/81] Messages only using Single Color (#162) * Message only using single Color and rounded corners now * Added BorderRight --- .../TCUChatMessageList.class/instance/addMessage..st | 2 +- .../instance/defaultMessageMargin.st | 4 ++++ .../TCUChatMessageList.class/methodProperties.json | 3 ++- .../TCUMessage.class/instance/initialize.st | 5 +++-- .../TCUMessage.class/methodProperties.json | 2 +- 5 files changed, 11 insertions(+), 5 deletions(-) create mode 100644 packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/defaultMessageMargin.st diff --git a/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/addMessage..st b/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/addMessage..st index 0188503d8..6d9c412ad 100644 --- a/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/addMessage..st +++ b/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/addMessage..st @@ -6,6 +6,6 @@ addMessage: aString self messages do: [:aMessage | aMessage position: (aMessage position - (0 @ (message height + self heightBetweenMessages)))]. - message bottomRight: self bottomRight. + message bottomRight: (self bottomRight - (self defaultMessageMargin @ message height)). self addMorph: message. self messages add: message. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/defaultMessageMargin.st b/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/defaultMessageMargin.st new file mode 100644 index 000000000..3fc410d81 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/defaultMessageMargin.st @@ -0,0 +1,4 @@ +default values +defaultMessageMargin + + ^ 15 \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatMessageList.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUChatMessageList.class/methodProperties.json index 15692c706..51336c0ad 100644 --- a/packages/TelegramClient-UI.package/TCUChatMessageList.class/methodProperties.json +++ b/packages/TelegramClient-UI.package/TCUChatMessageList.class/methodProperties.json @@ -2,7 +2,8 @@ "class" : { }, "instance" : { - "addMessage:" : "rs 6/17/2020 20:46", + "addMessage:" : "rs 6/18/2020 17:58", + "defaultMessageMargin" : "rs 6/18/2020 17:58", "displayChat:" : "rs 6/17/2020 21:50", "heightBetweenMessages" : "rs 6/17/2020 20:41", "initialize" : "rs 6/17/2020 21:33", diff --git a/packages/TelegramClient-UI.package/TCUMessage.class/instance/initialize.st b/packages/TelegramClient-UI.package/TCUMessage.class/instance/initialize.st index 09cf2a8ab..d513dd711 100644 --- a/packages/TelegramClient-UI.package/TCUMessage.class/instance/initialize.st +++ b/packages/TelegramClient-UI.package/TCUMessage.class/instance/initialize.st @@ -6,5 +6,6 @@ initialize self width: self defaultWidth; height: self defaultHeight; - color: Color random; - borderWidth: 0. \ No newline at end of file + color: TCUDefaultValues colorLightBlue; + borderWidth: 0; + useRoundedCorners. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMessage.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUMessage.class/methodProperties.json index 71083bc51..2f0d8934d 100644 --- a/packages/TelegramClient-UI.package/TCUMessage.class/methodProperties.json +++ b/packages/TelegramClient-UI.package/TCUMessage.class/methodProperties.json @@ -4,7 +4,7 @@ "instance" : { "defaultHeight" : "rs 6/17/2020 20:07", "defaultWidth" : "rs 6/17/2020 20:35", - "initialize" : "rs 6/17/2020 21:36", + "initialize" : "rs 6/18/2020 16:36", "setText:" : "rs 6/17/2020 21:36", "text" : "rs 6/17/2020 19:48", "text:" : "rs 6/17/2020 19:52" } } From 47d9028608bfbfe76a5f5e78e9e019cd9680373a Mon Sep 17 00:00:00 2001 From: Rohan Sawahn <49531442+rohansaw@users.noreply.github.com> Date: Thu, 25 Jun 2020 11:14:57 +0200 Subject: [PATCH 19/81] Keep chats in correct order (#163) * added Handling of updateChatOrder and updateChatLastMessage * Added better handling of updateChatLastMessage * Chat-reordering now properly working * passing all tests now * fixed requests from review * Linting fix --- .../TCCChat.class/instance/lastMessage..st | 4 ++++ .../TCCChat.class/instance/lastMessage.st | 4 ++++ .../TCCChat.class/methodProperties.json | 2 ++ .../TCCChat.class/properties.json | 3 ++- .../TCCChats.class/instance/getChat..st | 2 +- .../TCCChats.class/methodProperties.json | 2 +- .../TCCChatsHandler.class/instance/addChat..st | 2 +- .../TCCChatsHandler.class/instance/updateChatOrder..st | 7 +++++++ .../TCCChatsHandler.class/instance/updateLastMessage..st | 9 +++++++++ .../TCCChatsHandler.class/methodProperties.json | 6 ++++-- .../{TCCApp.class => TCCCore.class}/README.md | 0 .../{TCCApp.class => TCCCore.class}/class/newTestApp.st | 0 .../instance/authHandler..st | 0 .../instance/authHandler.st | 0 .../instance/authSucceeded.st | 0 .../{TCCApp.class => TCCCore.class}/instance/chats..st | 0 .../{TCCApp.class => TCCCore.class}/instance/chats.st | 0 .../instance/chatsHandler..st | 0 .../instance/chatsHandler.st | 0 .../instance/checkAuthenticationCode..st | 0 .../{TCCApp.class => TCCCore.class}/instance/client..st | 0 .../{TCCApp.class => TCCCore.class}/instance/client.st | 0 .../instance/handleEvent..st | 7 +++++-- .../instance/initialize.st | 0 .../instance/initializeClient.st | 0 .../instance/initializeHandlers.st | 0 .../instance/isClientAlive.st | 0 .../instance/receiveLoop.st | 0 .../instance/sendMessage.to..st | 0 .../instance/sendPhoneNumber..st | 0 .../{TCCApp.class => TCCCore.class}/instance/update.st | 0 .../methodProperties.json | 2 +- .../{TCCApp.class => TCCCore.class}/properties.json | 2 +- .../TCTLinterTests.class/instance/testLongMethods.st | 2 +- .../TCTLinterTests.class/methodProperties.json | 2 +- .../{TCTTestApp.class => TCTTestCore.class}/README.md | 0 .../instance/initializeHandlers.st | 0 .../instance/loginWithTestData.st | 0 .../methodProperties.json | 0 .../properties.json | 4 ++-- .../TCUApp.class/class/newWithTCCApp.st | 4 ---- .../TCUChatsList.class/instance/chats..st | 2 +- .../TCUChatsList.class/methodProperties.json | 4 ++-- .../TCUMain.class/methodProperties.json | 2 +- .../{TCUApp.class => TCUTelegram.class}/README.md | 0 .../class/newWithCore..st | 0 .../TCUTelegram.class/class/newWithTCCCore.st | 4 ++++ .../class/newWithTestApp.st | 0 .../instance/core..st | 0 .../{TCUApp.class => TCUTelegram.class}/instance/core.st | 0 .../instance/initialize.st | 0 .../methodProperties.json | 2 +- .../{TCUApp.class => TCUTelegram.class}/properties.json | 2 +- 53 files changed, 56 insertions(+), 24 deletions(-) create mode 100644 packages/TelegramClient-Core.package/TCCChat.class/instance/lastMessage..st create mode 100644 packages/TelegramClient-Core.package/TCCChat.class/instance/lastMessage.st create mode 100644 packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/updateChatOrder..st create mode 100644 packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/updateLastMessage..st rename packages/TelegramClient-Core.package/{TCCApp.class => TCCCore.class}/README.md (100%) rename packages/TelegramClient-Core.package/{TCCApp.class => TCCCore.class}/class/newTestApp.st (100%) rename packages/TelegramClient-Core.package/{TCCApp.class => TCCCore.class}/instance/authHandler..st (100%) rename packages/TelegramClient-Core.package/{TCCApp.class => TCCCore.class}/instance/authHandler.st (100%) rename packages/TelegramClient-Core.package/{TCCApp.class => TCCCore.class}/instance/authSucceeded.st (100%) rename packages/TelegramClient-Core.package/{TCCApp.class => TCCCore.class}/instance/chats..st (100%) rename packages/TelegramClient-Core.package/{TCCApp.class => TCCCore.class}/instance/chats.st (100%) rename packages/TelegramClient-Core.package/{TCCApp.class => TCCCore.class}/instance/chatsHandler..st (100%) rename packages/TelegramClient-Core.package/{TCCApp.class => TCCCore.class}/instance/chatsHandler.st (100%) rename packages/TelegramClient-Core.package/{TCCApp.class => TCCCore.class}/instance/checkAuthenticationCode..st (100%) rename packages/TelegramClient-Core.package/{TCCApp.class => TCCCore.class}/instance/client..st (100%) rename packages/TelegramClient-Core.package/{TCCApp.class => TCCCore.class}/instance/client.st (100%) rename packages/TelegramClient-Core.package/{TCCApp.class => TCCCore.class}/instance/handleEvent..st (68%) rename packages/TelegramClient-Core.package/{TCCApp.class => TCCCore.class}/instance/initialize.st (100%) rename packages/TelegramClient-Core.package/{TCCApp.class => TCCCore.class}/instance/initializeClient.st (100%) rename packages/TelegramClient-Core.package/{TCCApp.class => TCCCore.class}/instance/initializeHandlers.st (100%) rename packages/TelegramClient-Core.package/{TCCApp.class => TCCCore.class}/instance/isClientAlive.st (100%) rename packages/TelegramClient-Core.package/{TCCApp.class => TCCCore.class}/instance/receiveLoop.st (100%) rename packages/TelegramClient-Core.package/{TCCApp.class => TCCCore.class}/instance/sendMessage.to..st (100%) rename packages/TelegramClient-Core.package/{TCCApp.class => TCCCore.class}/instance/sendPhoneNumber..st (100%) rename packages/TelegramClient-Core.package/{TCCApp.class => TCCCore.class}/instance/update.st (100%) rename packages/TelegramClient-Core.package/{TCCApp.class => TCCCore.class}/methodProperties.json (95%) rename packages/TelegramClient-Core.package/{TCCApp.class => TCCCore.class}/properties.json (92%) rename packages/TelegramClient-Tests.package/{TCTTestApp.class => TCTTestCore.class}/README.md (100%) rename packages/TelegramClient-Tests.package/{TCTTestApp.class => TCTTestCore.class}/instance/initializeHandlers.st (100%) rename packages/TelegramClient-Tests.package/{TCTTestApp.class => TCTTestCore.class}/instance/loginWithTestData.st (100%) rename packages/TelegramClient-Tests.package/{TCTTestApp.class => TCTTestCore.class}/methodProperties.json (100%) rename packages/TelegramClient-Tests.package/{TCTTestApp.class => TCTTestCore.class}/properties.json (80%) delete mode 100644 packages/TelegramClient-UI.package/TCUApp.class/class/newWithTCCApp.st rename packages/TelegramClient-UI.package/{TCUApp.class => TCUTelegram.class}/README.md (100%) rename packages/TelegramClient-UI.package/{TCUApp.class => TCUTelegram.class}/class/newWithCore..st (100%) create mode 100644 packages/TelegramClient-UI.package/TCUTelegram.class/class/newWithTCCCore.st rename packages/TelegramClient-UI.package/{TCUApp.class => TCUTelegram.class}/class/newWithTestApp.st (100%) rename packages/TelegramClient-UI.package/{TCUApp.class => TCUTelegram.class}/instance/core..st (100%) rename packages/TelegramClient-UI.package/{TCUApp.class => TCUTelegram.class}/instance/core.st (100%) rename packages/TelegramClient-UI.package/{TCUApp.class => TCUTelegram.class}/instance/initialize.st (100%) rename packages/TelegramClient-UI.package/{TCUApp.class => TCUTelegram.class}/methodProperties.json (84%) rename packages/TelegramClient-UI.package/{TCUApp.class => TCUTelegram.class}/properties.json (89%) diff --git a/packages/TelegramClient-Core.package/TCCChat.class/instance/lastMessage..st b/packages/TelegramClient-Core.package/TCCChat.class/instance/lastMessage..st new file mode 100644 index 000000000..322ca37f0 --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCChat.class/instance/lastMessage..st @@ -0,0 +1,4 @@ +accessing +lastMessage: aMessage + + lastMessage := aMessage. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCChat.class/instance/lastMessage.st b/packages/TelegramClient-Core.package/TCCChat.class/instance/lastMessage.st new file mode 100644 index 000000000..a4328f8e0 --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCChat.class/instance/lastMessage.st @@ -0,0 +1,4 @@ +accessing +lastMessage + + ^ lastMessage \ 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 f4be6622a..dce33c479 100644 --- a/packages/TelegramClient-Core.package/TCCChat.class/methodProperties.json +++ b/packages/TelegramClient-Core.package/TCCChat.class/methodProperties.json @@ -4,6 +4,8 @@ "instance" : { "id" : "rs 6/7/2020 22:20", "id:" : "rs 6/7/2020 22:20", + "lastMessage" : "rs 6/19/2020 17:33", + "lastMessage:" : "rs 6/19/2020 17:33", "messages" : "R.S 6/1/2020 15:37", "messages:" : "R.S 6/1/2020 15:37", "order" : "js 6/13/2020 18:09", diff --git a/packages/TelegramClient-Core.package/TCCChat.class/properties.json b/packages/TelegramClient-Core.package/TCCChat.class/properties.json index fd4ace32c..886545a4d 100644 --- a/packages/TelegramClient-Core.package/TCCChat.class/properties.json +++ b/packages/TelegramClient-Core.package/TCCChat.class/properties.json @@ -10,7 +10,8 @@ "messages", "order", "id", - "title" ], + "title", + "lastMessage" ], "name" : "TCCChat", "pools" : [ ], diff --git a/packages/TelegramClient-Core.package/TCCChats.class/instance/getChat..st b/packages/TelegramClient-Core.package/TCCChats.class/instance/getChat..st index 0f86d02e9..bd37f04bd 100644 --- a/packages/TelegramClient-Core.package/TCCChats.class/instance/getChat..st +++ b/packages/TelegramClient-Core.package/TCCChats.class/instance/getChat..st @@ -1,4 +1,4 @@ accessing getChat: anID - ^ self detect: [:aChat | aChat userId = anID] \ No newline at end of file + ^ self detect: [:aChat | aChat id = anID] \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCChats.class/methodProperties.json b/packages/TelegramClient-Core.package/TCCChats.class/methodProperties.json index 381d44b50..c1162cf78 100644 --- a/packages/TelegramClient-Core.package/TCCChats.class/methodProperties.json +++ b/packages/TelegramClient-Core.package/TCCChats.class/methodProperties.json @@ -2,6 +2,6 @@ "class" : { "new" : "rs 6/6/2020 17:58" }, "instance" : { - "getChat:" : "rs 6/6/2020 17:02", + "getChat:" : "rs 6/19/2020 17:13", "initialize" : "rs 6/6/2020 17:57", "sortBlock" : "rs 6/6/2020 17:56" } } diff --git a/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/addChat..st b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/addChat..st index cdea4d027..5c775099b 100644 --- a/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/addChat..st +++ b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/addChat..st @@ -10,4 +10,4 @@ addChat: aChatEvent self app chats add: chat; - triggerEvent: #newChatLoaded. \ No newline at end of file + triggerEvent: #chatsListChanged. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/updateChatOrder..st b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/updateChatOrder..st new file mode 100644 index 000000000..8f730beb1 --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/updateChatOrder..st @@ -0,0 +1,7 @@ +events +updateChatOrder: anEvent + + (self app chats getChat: (anEvent at: 'chat_id')) + order: (anEvent at: 'order'). + + self app chats triggerEvent: #chatsListChanged. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/updateLastMessage..st b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/updateLastMessage..st new file mode 100644 index 000000000..dbf385860 --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/updateLastMessage..st @@ -0,0 +1,9 @@ +events +updateLastMessage: anEvent + + (self app chats getChat: (anEvent at: 'chat_id')) + order: (anEvent at: 'order'). + + self app chats + reSort; + triggerEvent: #chatsListChanged. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCChatsHandler.class/methodProperties.json b/packages/TelegramClient-Core.package/TCCChatsHandler.class/methodProperties.json index 2630dd8e5..bda52f911 100644 --- a/packages/TelegramClient-Core.package/TCCChatsHandler.class/methodProperties.json +++ b/packages/TelegramClient-Core.package/TCCChatsHandler.class/methodProperties.json @@ -2,9 +2,11 @@ "class" : { }, "instance" : { - "addChat:" : "rs 6/17/2020 22:54", + "addChat:" : "rs 6/25/2020 10:48", "app" : "js 6/1/2020 14:44", "app:" : "js 6/1/2020 14:45", "client" : "js 6/1/2020 14:44", "getChats" : "rs 6/6/2020 16:36", - "sendMessage:to:" : "rs 6/17/2020 20:58" } } + "sendMessage:to:" : "rs 6/17/2020 20:58", + "updateChatOrder:" : "rs 6/25/2020 10:58", + "updateLastMessage:" : "rs 6/25/2020 10:43" } } diff --git a/packages/TelegramClient-Core.package/TCCApp.class/README.md b/packages/TelegramClient-Core.package/TCCCore.class/README.md similarity index 100% rename from packages/TelegramClient-Core.package/TCCApp.class/README.md rename to packages/TelegramClient-Core.package/TCCCore.class/README.md diff --git a/packages/TelegramClient-Core.package/TCCApp.class/class/newTestApp.st b/packages/TelegramClient-Core.package/TCCCore.class/class/newTestApp.st similarity index 100% rename from packages/TelegramClient-Core.package/TCCApp.class/class/newTestApp.st rename to packages/TelegramClient-Core.package/TCCCore.class/class/newTestApp.st diff --git a/packages/TelegramClient-Core.package/TCCApp.class/instance/authHandler..st b/packages/TelegramClient-Core.package/TCCCore.class/instance/authHandler..st similarity index 100% rename from packages/TelegramClient-Core.package/TCCApp.class/instance/authHandler..st rename to packages/TelegramClient-Core.package/TCCCore.class/instance/authHandler..st diff --git a/packages/TelegramClient-Core.package/TCCApp.class/instance/authHandler.st b/packages/TelegramClient-Core.package/TCCCore.class/instance/authHandler.st similarity index 100% rename from packages/TelegramClient-Core.package/TCCApp.class/instance/authHandler.st rename to packages/TelegramClient-Core.package/TCCCore.class/instance/authHandler.st diff --git a/packages/TelegramClient-Core.package/TCCApp.class/instance/authSucceeded.st b/packages/TelegramClient-Core.package/TCCCore.class/instance/authSucceeded.st similarity index 100% rename from packages/TelegramClient-Core.package/TCCApp.class/instance/authSucceeded.st rename to packages/TelegramClient-Core.package/TCCCore.class/instance/authSucceeded.st diff --git a/packages/TelegramClient-Core.package/TCCApp.class/instance/chats..st b/packages/TelegramClient-Core.package/TCCCore.class/instance/chats..st similarity index 100% rename from packages/TelegramClient-Core.package/TCCApp.class/instance/chats..st rename to packages/TelegramClient-Core.package/TCCCore.class/instance/chats..st diff --git a/packages/TelegramClient-Core.package/TCCApp.class/instance/chats.st b/packages/TelegramClient-Core.package/TCCCore.class/instance/chats.st similarity index 100% rename from packages/TelegramClient-Core.package/TCCApp.class/instance/chats.st rename to packages/TelegramClient-Core.package/TCCCore.class/instance/chats.st diff --git a/packages/TelegramClient-Core.package/TCCApp.class/instance/chatsHandler..st b/packages/TelegramClient-Core.package/TCCCore.class/instance/chatsHandler..st similarity index 100% rename from packages/TelegramClient-Core.package/TCCApp.class/instance/chatsHandler..st rename to packages/TelegramClient-Core.package/TCCCore.class/instance/chatsHandler..st diff --git a/packages/TelegramClient-Core.package/TCCApp.class/instance/chatsHandler.st b/packages/TelegramClient-Core.package/TCCCore.class/instance/chatsHandler.st similarity index 100% rename from packages/TelegramClient-Core.package/TCCApp.class/instance/chatsHandler.st rename to packages/TelegramClient-Core.package/TCCCore.class/instance/chatsHandler.st diff --git a/packages/TelegramClient-Core.package/TCCApp.class/instance/checkAuthenticationCode..st b/packages/TelegramClient-Core.package/TCCCore.class/instance/checkAuthenticationCode..st similarity index 100% rename from packages/TelegramClient-Core.package/TCCApp.class/instance/checkAuthenticationCode..st rename to packages/TelegramClient-Core.package/TCCCore.class/instance/checkAuthenticationCode..st diff --git a/packages/TelegramClient-Core.package/TCCApp.class/instance/client..st b/packages/TelegramClient-Core.package/TCCCore.class/instance/client..st similarity index 100% rename from packages/TelegramClient-Core.package/TCCApp.class/instance/client..st rename to packages/TelegramClient-Core.package/TCCCore.class/instance/client..st diff --git a/packages/TelegramClient-Core.package/TCCApp.class/instance/client.st b/packages/TelegramClient-Core.package/TCCCore.class/instance/client.st similarity index 100% rename from packages/TelegramClient-Core.package/TCCApp.class/instance/client.st rename to packages/TelegramClient-Core.package/TCCCore.class/instance/client.st diff --git a/packages/TelegramClient-Core.package/TCCApp.class/instance/handleEvent..st b/packages/TelegramClient-Core.package/TCCCore.class/instance/handleEvent..st similarity index 68% rename from packages/TelegramClient-Core.package/TCCApp.class/instance/handleEvent..st rename to packages/TelegramClient-Core.package/TCCCore.class/instance/handleEvent..st index 33cb51d27..1a3d2730e 100644 --- a/packages/TelegramClient-Core.package/TCCApp.class/instance/handleEvent..st +++ b/packages/TelegramClient-Core.package/TCCCore.class/instance/handleEvent..st @@ -3,13 +3,16 @@ handleEvent: anEvent | update | update := nil. + (((anEvent at: '@type') = 'error') and: [(anEvent at: 'code') = 400 ]) ifTrue: [self halt: 'An Error Occured. Check Transcript Output.']. - (anEvent at: '@type') = 'updateAuthorizationState' ifTrue: [update := self authHandler handleEvent: anEvent]. - (anEvent at: '@type') = 'updateNewChat' ifTrue: [self chatsHandler addChat: anEvent]. + (anEvent at: '@type') = 'updateChatOrder' + ifTrue: [self chatsHandler updateChatOrder: anEvent]. + (anEvent at: '@type') = 'updateChatLastMessage' + ifTrue: [self chatsHandler updateLastMessage: anEvent]. update isSymbol ifTrue: [self triggerEvent: update]. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCApp.class/instance/initialize.st b/packages/TelegramClient-Core.package/TCCCore.class/instance/initialize.st similarity index 100% rename from packages/TelegramClient-Core.package/TCCApp.class/instance/initialize.st rename to packages/TelegramClient-Core.package/TCCCore.class/instance/initialize.st diff --git a/packages/TelegramClient-Core.package/TCCApp.class/instance/initializeClient.st b/packages/TelegramClient-Core.package/TCCCore.class/instance/initializeClient.st similarity index 100% rename from packages/TelegramClient-Core.package/TCCApp.class/instance/initializeClient.st rename to packages/TelegramClient-Core.package/TCCCore.class/instance/initializeClient.st diff --git a/packages/TelegramClient-Core.package/TCCApp.class/instance/initializeHandlers.st b/packages/TelegramClient-Core.package/TCCCore.class/instance/initializeHandlers.st similarity index 100% rename from packages/TelegramClient-Core.package/TCCApp.class/instance/initializeHandlers.st rename to packages/TelegramClient-Core.package/TCCCore.class/instance/initializeHandlers.st diff --git a/packages/TelegramClient-Core.package/TCCApp.class/instance/isClientAlive.st b/packages/TelegramClient-Core.package/TCCCore.class/instance/isClientAlive.st similarity index 100% rename from packages/TelegramClient-Core.package/TCCApp.class/instance/isClientAlive.st rename to packages/TelegramClient-Core.package/TCCCore.class/instance/isClientAlive.st diff --git a/packages/TelegramClient-Core.package/TCCApp.class/instance/receiveLoop.st b/packages/TelegramClient-Core.package/TCCCore.class/instance/receiveLoop.st similarity index 100% rename from packages/TelegramClient-Core.package/TCCApp.class/instance/receiveLoop.st rename to packages/TelegramClient-Core.package/TCCCore.class/instance/receiveLoop.st diff --git a/packages/TelegramClient-Core.package/TCCApp.class/instance/sendMessage.to..st b/packages/TelegramClient-Core.package/TCCCore.class/instance/sendMessage.to..st similarity index 100% rename from packages/TelegramClient-Core.package/TCCApp.class/instance/sendMessage.to..st rename to packages/TelegramClient-Core.package/TCCCore.class/instance/sendMessage.to..st diff --git a/packages/TelegramClient-Core.package/TCCApp.class/instance/sendPhoneNumber..st b/packages/TelegramClient-Core.package/TCCCore.class/instance/sendPhoneNumber..st similarity index 100% rename from packages/TelegramClient-Core.package/TCCApp.class/instance/sendPhoneNumber..st rename to packages/TelegramClient-Core.package/TCCCore.class/instance/sendPhoneNumber..st diff --git a/packages/TelegramClient-Core.package/TCCApp.class/instance/update.st b/packages/TelegramClient-Core.package/TCCCore.class/instance/update.st similarity index 100% rename from packages/TelegramClient-Core.package/TCCApp.class/instance/update.st rename to packages/TelegramClient-Core.package/TCCCore.class/instance/update.st diff --git a/packages/TelegramClient-Core.package/TCCApp.class/methodProperties.json b/packages/TelegramClient-Core.package/TCCCore.class/methodProperties.json similarity index 95% rename from packages/TelegramClient-Core.package/TCCApp.class/methodProperties.json rename to packages/TelegramClient-Core.package/TCCCore.class/methodProperties.json index 59b5be4f6..f2d664310 100644 --- a/packages/TelegramClient-Core.package/TCCApp.class/methodProperties.json +++ b/packages/TelegramClient-Core.package/TCCCore.class/methodProperties.json @@ -12,7 +12,7 @@ "checkAuthenticationCode:" : "js 5/31/2020 20:10", "client" : "R.S 5/20/2020 16:08", "client:" : "js 6/13/2020 19:10", - "handleEvent:" : "rs 6/14/2020 12:59", + "handleEvent:" : "rs 6/25/2020 10:48", "initialize" : "js 6/13/2020 18:19", "initializeClient" : "js 6/13/2020 18:20", "initializeHandlers" : "F.W. 6/13/2020 21:41", diff --git a/packages/TelegramClient-Core.package/TCCApp.class/properties.json b/packages/TelegramClient-Core.package/TCCCore.class/properties.json similarity index 92% rename from packages/TelegramClient-Core.package/TCCApp.class/properties.json rename to packages/TelegramClient-Core.package/TCCCore.class/properties.json index 6ec036628..99d92f702 100644 --- a/packages/TelegramClient-Core.package/TCCApp.class/properties.json +++ b/packages/TelegramClient-Core.package/TCCCore.class/properties.json @@ -10,7 +10,7 @@ "authHandler", "chatsHandler", "chats" ], - "name" : "TCCApp", + "name" : "TCCCore", "pools" : [ ], "super" : "Object", diff --git a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testLongMethods.st b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testLongMethods.st index ac1fb746d..45de13070 100644 --- a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testLongMethods.st +++ b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testLongMethods.st @@ -1,4 +1,4 @@ tests testLongMethods - self methodsLinesDo: [:lines | self assert: lines size <= 16]. \ No newline at end of file + self methodsLinesDo: [:lines | self assert: lines size <= 20]. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTLinterTests.class/methodProperties.json b/packages/TelegramClient-Tests.package/TCTLinterTests.class/methodProperties.json index 766250396..b9415a433 100644 --- a/packages/TelegramClient-Tests.package/TCTLinterTests.class/methodProperties.json +++ b/packages/TelegramClient-Tests.package/TCTLinterTests.class/methodProperties.json @@ -16,7 +16,7 @@ "testCorrectClassPrefix" : "js 6/13/2020 18:23", "testIfTrueReturnsRule" : "js 6/13/2020 18:35", "testInstanceVarAccess" : "js 6/13/2020 16:54", - "testLongMethods" : "rs 6/14/2020 12:56", + "testLongMethods" : "rs 6/25/2020 10:47", "testMethodHasEmptyLine" : "js 6/13/2020 18:13", "testMethodNameIsLowerCase" : "js 6/13/2020 18:05", "testMethodNoEmptyLineAtEnd" : "js 6/13/2020 18:05", diff --git a/packages/TelegramClient-Tests.package/TCTTestApp.class/README.md b/packages/TelegramClient-Tests.package/TCTTestCore.class/README.md similarity index 100% rename from packages/TelegramClient-Tests.package/TCTTestApp.class/README.md rename to packages/TelegramClient-Tests.package/TCTTestCore.class/README.md diff --git a/packages/TelegramClient-Tests.package/TCTTestApp.class/instance/initializeHandlers.st b/packages/TelegramClient-Tests.package/TCTTestCore.class/instance/initializeHandlers.st similarity index 100% rename from packages/TelegramClient-Tests.package/TCTTestApp.class/instance/initializeHandlers.st rename to packages/TelegramClient-Tests.package/TCTTestCore.class/instance/initializeHandlers.st diff --git a/packages/TelegramClient-Tests.package/TCTTestApp.class/instance/loginWithTestData.st b/packages/TelegramClient-Tests.package/TCTTestCore.class/instance/loginWithTestData.st similarity index 100% rename from packages/TelegramClient-Tests.package/TCTTestApp.class/instance/loginWithTestData.st rename to packages/TelegramClient-Tests.package/TCTTestCore.class/instance/loginWithTestData.st diff --git a/packages/TelegramClient-Tests.package/TCTTestApp.class/methodProperties.json b/packages/TelegramClient-Tests.package/TCTTestCore.class/methodProperties.json similarity index 100% rename from packages/TelegramClient-Tests.package/TCTTestApp.class/methodProperties.json rename to packages/TelegramClient-Tests.package/TCTTestCore.class/methodProperties.json diff --git a/packages/TelegramClient-Tests.package/TCTTestApp.class/properties.json b/packages/TelegramClient-Tests.package/TCTTestCore.class/properties.json similarity index 80% rename from packages/TelegramClient-Tests.package/TCTTestApp.class/properties.json rename to packages/TelegramClient-Tests.package/TCTTestCore.class/properties.json index 2d586ad8a..53e65ce22 100644 --- a/packages/TelegramClient-Tests.package/TCTTestApp.class/properties.json +++ b/packages/TelegramClient-Tests.package/TCTTestCore.class/properties.json @@ -7,8 +7,8 @@ "commentStamp" : "rs 6/14/2020 12:57", "instvars" : [ ], - "name" : "TCTTestApp", + "name" : "TCTTestCore", "pools" : [ ], - "super" : "TCCApp", + "super" : "TCCCore", "type" : "normal" } diff --git a/packages/TelegramClient-UI.package/TCUApp.class/class/newWithTCCApp.st b/packages/TelegramClient-UI.package/TCUApp.class/class/newWithTCCApp.st deleted file mode 100644 index 3a3c2b0ad..000000000 --- a/packages/TelegramClient-UI.package/TCUApp.class/class/newWithTCCApp.st +++ /dev/null @@ -1,4 +0,0 @@ -instance creation -newWithTCCApp - - ^ self newWithCore: TCCApp new \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatsList.class/instance/chats..st b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/chats..st index 1e7c077cb..eca26c6dd 100644 --- a/packages/TelegramClient-UI.package/TCUChatsList.class/instance/chats..st +++ b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/chats..st @@ -3,4 +3,4 @@ chats: aCollection chats := aCollection. self redrawItems. - chats when: #newChatLoaded send: #redrawItems to: self. \ No newline at end of file + chats when: #chatsListChanged send: #redrawItems to: self. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatsList.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUChatsList.class/methodProperties.json index ef35f6449..b9a6a0698 100644 --- a/packages/TelegramClient-UI.package/TCUChatsList.class/methodProperties.json +++ b/packages/TelegramClient-UI.package/TCUChatsList.class/methodProperties.json @@ -4,13 +4,13 @@ "instance" : { "chatItemClicked:event:from:" : "rs 6/17/2020 23:04", "chats" : "rs 6/17/2020 22:38", - "chats:" : "rs 6/17/2020 22:50", + "chats:" : "rs 6/22/2020 17:01", "clearItems" : "rs 6/17/2020 22:39", "defaultWidth" : "R.S 6/1/2020 14:24", "initialize" : "rs 6/17/2020 22:31", "initializeLayout" : "js 6/13/2020 18:49", "items" : "js 6/13/2020 14:14", "items:" : "js 6/13/2020 19:09", - "redrawItems" : "rs 6/17/2020 23:15", + "redrawItems" : "rs 6/25/2020 10:36", "selectedChat" : "rs 6/13/2020 08:51", "selectedChat:" : "rs 6/17/2020 22:25" } } diff --git a/packages/TelegramClient-UI.package/TCUMain.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUMain.class/methodProperties.json index a5e08c969..9a4c8faad 100644 --- a/packages/TelegramClient-UI.package/TCUMain.class/methodProperties.json +++ b/packages/TelegramClient-UI.package/TCUMain.class/methodProperties.json @@ -16,7 +16,7 @@ "defaultExtent" : "R.S 6/1/2020 14:27", "defaultHeaderHeight" : "R.S 6/1/2020 14:27", "delete" : "R.S 6/3/2020 20:54", - "initialize" : "rs 6/17/2020 22:41", + "initialize" : "rs 6/22/2020 16:59", "initializeChatWindow" : "js 6/13/2020 18:54", "logout" : "js 6/13/2020 18:11", "newChatSelected:" : "rs 6/13/2020 15:38", diff --git a/packages/TelegramClient-UI.package/TCUApp.class/README.md b/packages/TelegramClient-UI.package/TCUTelegram.class/README.md similarity index 100% rename from packages/TelegramClient-UI.package/TCUApp.class/README.md rename to packages/TelegramClient-UI.package/TCUTelegram.class/README.md diff --git a/packages/TelegramClient-UI.package/TCUApp.class/class/newWithCore..st b/packages/TelegramClient-UI.package/TCUTelegram.class/class/newWithCore..st similarity index 100% rename from packages/TelegramClient-UI.package/TCUApp.class/class/newWithCore..st rename to packages/TelegramClient-UI.package/TCUTelegram.class/class/newWithCore..st diff --git a/packages/TelegramClient-UI.package/TCUTelegram.class/class/newWithTCCCore.st b/packages/TelegramClient-UI.package/TCUTelegram.class/class/newWithTCCCore.st new file mode 100644 index 000000000..9f96e4ea1 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUTelegram.class/class/newWithTCCCore.st @@ -0,0 +1,4 @@ +instance creation +newWithTCCCore + + ^ self newWithCore: TCCCore new \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUApp.class/class/newWithTestApp.st b/packages/TelegramClient-UI.package/TCUTelegram.class/class/newWithTestApp.st similarity index 100% rename from packages/TelegramClient-UI.package/TCUApp.class/class/newWithTestApp.st rename to packages/TelegramClient-UI.package/TCUTelegram.class/class/newWithTestApp.st diff --git a/packages/TelegramClient-UI.package/TCUApp.class/instance/core..st b/packages/TelegramClient-UI.package/TCUTelegram.class/instance/core..st similarity index 100% rename from packages/TelegramClient-UI.package/TCUApp.class/instance/core..st rename to packages/TelegramClient-UI.package/TCUTelegram.class/instance/core..st diff --git a/packages/TelegramClient-UI.package/TCUApp.class/instance/core.st b/packages/TelegramClient-UI.package/TCUTelegram.class/instance/core.st similarity index 100% rename from packages/TelegramClient-UI.package/TCUApp.class/instance/core.st rename to packages/TelegramClient-UI.package/TCUTelegram.class/instance/core.st diff --git a/packages/TelegramClient-UI.package/TCUApp.class/instance/initialize.st b/packages/TelegramClient-UI.package/TCUTelegram.class/instance/initialize.st similarity index 100% rename from packages/TelegramClient-UI.package/TCUApp.class/instance/initialize.st rename to packages/TelegramClient-UI.package/TCUTelegram.class/instance/initialize.st diff --git a/packages/TelegramClient-UI.package/TCUApp.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUTelegram.class/methodProperties.json similarity index 84% rename from packages/TelegramClient-UI.package/TCUApp.class/methodProperties.json rename to packages/TelegramClient-UI.package/TCUTelegram.class/methodProperties.json index 41a696ef5..77a80809a 100644 --- a/packages/TelegramClient-UI.package/TCUApp.class/methodProperties.json +++ b/packages/TelegramClient-UI.package/TCUTelegram.class/methodProperties.json @@ -1,7 +1,7 @@ { "class" : { "newWithCore:" : "F.W. 6/13/2020 21:48", - "newWithTCCApp" : "js 5/31/2020 20:34", + "newWithTCCCore" : "rs 6/25/2020 10:16", "newWithTestApp" : "rs 6/14/2020 12:31" }, "instance" : { "core" : "js 5/31/2020 20:04", diff --git a/packages/TelegramClient-UI.package/TCUApp.class/properties.json b/packages/TelegramClient-UI.package/TCUTelegram.class/properties.json similarity index 89% rename from packages/TelegramClient-UI.package/TCUApp.class/properties.json rename to packages/TelegramClient-UI.package/TCUTelegram.class/properties.json index 9bd9d302e..2c4604f89 100644 --- a/packages/TelegramClient-UI.package/TCUApp.class/properties.json +++ b/packages/TelegramClient-UI.package/TCUTelegram.class/properties.json @@ -7,7 +7,7 @@ "commentStamp" : "js 6/13/2020 18:59", "instvars" : [ "core" ], - "name" : "TCUApp", + "name" : "TCUTelegram", "pools" : [ ], "super" : "Object", From e9b82f308eb13b087601769b3d64d98b0d3ed5d4 Mon Sep 17 00:00:00 2001 From: Lasklu <49564344+Lasklu@users.noreply.github.com> Date: Thu, 2 Jul 2020 14:19:14 +0200 Subject: [PATCH 20/81] Added CodeCoverage (#164) * Create .travis.yaml * Rename file travis.yaml to travis.yml * Create coveralls.yml * Delete .coveralls.yml * Update travis.yml * Update smalltalk.ston * Update .travis.yml * Update travis.yml * Excluded TCCChat in Coveralls * Changed "classes" to "instances" * removed testing snippet Co-authored-by: Schilli, Niklas --- .smalltalk.ston | 8 +++++++- .travis.yml | 8 ++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 .travis.yml diff --git a/.smalltalk.ston b/.smalltalk.ston index 41b7b120d..edc933a05 100644 --- a/.smalltalk.ston +++ b/.smalltalk.ston @@ -8,5 +8,11 @@ SmalltalkCISpec { #directory : 'packages', #load : [ 'tests' ] } - ] + ], + #testing : { + #coverage : { + #packages : [ 'TelegramClient-Core.*' ] + }, + #packages : [ 'TelegramClient-Tests.*' ] + } } diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 000000000..4b6ac5022 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,8 @@ +language: smalltalk +sudo: false + +os: + - linux + +smalltalk: + - Squeak-5.2 From c0a802215a7c70bbd2054908e9a6c81973335d6e Mon Sep 17 00:00:00 2001 From: Lasklu <49564344+Lasklu@users.noreply.github.com> Date: Sun, 5 Jul 2020 21:40:23 +0200 Subject: [PATCH 21/81] Deleted MacOS-Tests (#171) --- .github/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/ci.yml b/.github/ci.yml index da6cad11e..edc239e81 100644 --- a/.github/ci.yml +++ b/.github/ci.yml @@ -20,7 +20,7 @@ jobs: strategy: matrix: # Select platform(s) - os: [ ubuntu-latest, macos-latest ] + os: [ ubuntu-latest ] # Select compatible Smalltalk image(s) # currently not running on Squeak64-trunk smalltalk: [ Squeak64-5.3, Squeak64-5.2 ] From eb97725882871b21d04c89db585c0e71bbd7956b Mon Sep 17 00:00:00 2001 From: Rohan Sawahn <49531442+rohansaw@users.noreply.github.com> Date: Mon, 6 Jul 2020 17:46:30 +0200 Subject: [PATCH 22/81] Fixed wrong action on enter in Authprocess (#175) * Added fix for wrong action on enter in authprocess * removed obsolet class --- .../TCUAuthentication.class/instance/createInputField..st | 3 +-- .../TCUAuthentication.class/instance/showFirstStep.st | 4 +++- .../TCUAuthentication.class/instance/showSecondStep.st | 4 +++- .../TCUAuthentication.class/methodProperties.json | 6 +++--- 4 files changed, 10 insertions(+), 7 deletions(-) diff --git a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createInputField..st b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createInputField..st index cd423b9b8..f5769e475 100644 --- a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createInputField..st +++ b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createInputField..st @@ -7,7 +7,6 @@ createInputField: aString borderColor: TCUDefaultValues colorGray; borderWidth: 1; center: self instructionLabel center + (0 @ 30); - hide; - crAction: [self buttonNextPressed]). + hide). self addMorph: self inputField. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/showFirstStep.st b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/showFirstStep.st index 2447098ec..ac7d1a89d 100644 --- a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/showFirstStep.st +++ b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/showFirstStep.st @@ -6,6 +6,8 @@ showFirstStep center: self center. self buttonVerify hide. - self inputField show. + self inputField + show; + crAction: [self buttonNextPressed]. self buttonNext show. self instructionLabel show. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/showSecondStep.st b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/showSecondStep.st index 28a17bc29..49015cc45 100644 --- a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/showSecondStep.st +++ b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/showSecondStep.st @@ -9,5 +9,7 @@ showSecondStep contents: 'Enter the code your recieved on your phone'; center: self center. - self inputField contents: ' '. + self inputField + contents: ' '; + crAction: [self buttonVerifyPressed]. self errorLabel hide. diff --git a/packages/TelegramClient-UI.package/TCUAuthentication.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUAuthentication.class/methodProperties.json index a223312fa..0b40b9f14 100644 --- a/packages/TelegramClient-UI.package/TCUAuthentication.class/methodProperties.json +++ b/packages/TelegramClient-UI.package/TCUAuthentication.class/methodProperties.json @@ -19,7 +19,7 @@ "createButtonNext" : "js 6/13/2020 18:44", "createButtonVerify" : "js 6/13/2020 18:44", "createErrorLabel:" : "js 6/13/2020 18:53", - "createInputField:" : "js 6/13/2020 19:12", + "createInputField:" : "rs 7/6/2020 17:30", "createLabel:" : "js 6/13/2020 18:13", "defaultExtent" : "R.S 5/20/2020 13:51", "defaultInputWidth" : "R.S 5/20/2020 13:51", @@ -33,7 +33,7 @@ "instructionLabel" : "R.S 5/20/2020 13:52", "instructionLabel:" : "js 5/28/2020 17:51", "logInCompleted" : "js 6/13/2020 18:45", - "showFirstStep" : "F.W. 6/13/2020 21:47", + "showFirstStep" : "rs 7/6/2020 17:31", "showLoadingMessage" : "js 6/13/2020 18:45", - "showSecondStep" : "F.W. 6/13/2020 21:47", + "showSecondStep" : "rs 7/6/2020 17:29", "subscribeCore" : "R.S 5/31/2020 20:21" } } From 4a08947a6e4b200f06b02c524dcb9596750d2950 Mon Sep 17 00:00:00 2001 From: Niklas Schilli Date: Tue, 7 Jul 2020 11:36:45 +0200 Subject: [PATCH 23/81] Updated readme (#167) * Update README.md * image center * Update README.md * Update README.md * Update README.md --- README.md | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 33dbe6178..61521c38b 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -

+

TelegramClient Logo

@@ -10,7 +10,7 @@

## Overview -TeleSqueak is a **Squeak-Client** for the widely used Telegram-Messenger. It provides features such as Authentication, Contacts, Message and Media sending and a minimal, clean UI. We also provide features such as a Zen-mode and receiving messages in the background. +TeleSqueak is a **Squeak-Client** for the widely used Telegram-Messenger. It aims to provide features such as Authentication, Contacts, Message and Media sending and a minimal, clean UI as well as as a Zen-mode and receiving messages in the background. *This Project is part of the "Softwaretechnik" Lecture 2020 at the Hasso Plattner Institute.* @@ -24,16 +24,19 @@ Make sure you have the current version of Squeak installed. * Step 2: Install the Squeak FFI Workload. To do so, open the Workspace in Squeak and execute the following command: `(Installer repository: 'http://source.squeak.org/FFI') install: 'FFI-Pools'; install: 'FFI-Kernel'.` -* Step 3: Download the required native Binaries for your system. [Windows](https://drive.google.com/open?id=14tOoIfxioIe8bn2kPxPKmCk_Eg0tSYiJ), [Mac](https://drive.google.com/open?id=1H2l_V6zkIx4t_SKQKL3MmdtvOV2haFjV), [Ubuntu 18 lts](https://drive.google.com/open?id=1CpSPcB-5MPA95fEWI-X5MxbUEZUcU3g2). +* Step 3: Download the required native Binaries for your system. [Windows](https://github.com/hpi-swa-teaching/tdlib/actions?query=workflow%3A%22Windows+CI%22), [Mac](https://github.com/hpi-swa-teaching/tdlib/actions?query=workflow%3A%22Tdlib+Max+x64+Build%22), [Ubuntu 18 lts](https://github.com/hpi-swa-teaching/tdlib/actions?query=workflow%3A%22Tdlib+Ubuntu+Build%22). Select the latest successful run of the pipeline and download the single artifact produced by the respective pipeline. * Step 4: Place the unzipped binaries inside of your squeak image. On Windows, place them inside the Win32 folder, on Linux in "Contents/Linux-x86_64/lib/squeak/\/" and on Mac place them inside the resources folder. -* Step 5 (Windows only): Install Visual C++ Redistributable for Visual Studio 2015, 2017 and 2019: [32Bit](https://aka.ms/vs/16/release/vc_redist.x86.exe) or [64Bit](https://aka.ms/vs/16/release/vc_redist.x64.exe) +* Step 5 (Windows only): Install the [Visual C++ Redistributable for Visual Studio 2015, 2017 and 2019](https://aka.ms/vs/16/release/vc_redist.x64.exe) ## Running TelegramClient -In a workspace window execute the command `TCUApp newWithTCCApp` +In a workspace window either execute the command `TCUApp newWithTCCApp` or click the TelegramClient entry in the Apps dropdown menu. ## Building Tdlib -Tdlib build instructions are available on their Github page. They also have a wonderful build instruction generator available which was the basis for our workflow . [Check it out here.](https://tdlib.github.io/td/build.html) +Tdlib build instructions are available on their Github page. They also have a wonderful build instruction generator available which was the basis for our workflow . [Check it out here.](https://tdlib.github.io/td/build.html) Alternatively use the [Github Pipelines](https://github.com/hpi-swa-teaching/tdlib) we setup and modify them according to newer build instructions for successive tdlib versions. Currently we release at Tag 1.6.0. ## Notes on Tdlib The TelegramClient is build on the TelegramDatabseLibrary which provides access to Telegram API via a JSON-Interface. -We include Tdlib library in our project and can access the C-Library via FFI from Squeak, giving us the possibility to access the Telegram API via JSON-Interface. +We include Tdlib in our project and can access it with the Squeak FFI, in turn allowing us to access the Telegram API via JSON-Interface. + +## Resources for following groups +We have a [Discord](https://discord.gg/craraGh) server setup with a Github Webhook, notifying us on important changes to the repository. Most exchanges happened in there, making it a valueable resource for successive groups. From 04033efc341cabd325067266fbf04800a1f36d2b Mon Sep 17 00:00:00 2001 From: Lasklu <49564344+Lasklu@users.noreply.github.com> Date: Mon, 13 Jul 2020 16:49:11 +0200 Subject: [PATCH 24/81] Split linting and testing in different workflows (#177) * Create .smalltalk.lint.ston * Create ci-linter.yml * Update .smalltalk.lint.ston * Update .smalltalk.ston * Update .smalltalk.ston * Update .travis.yml * added lint tests to readme * added issue resolution --- .github/workflows/ci-linter.yml | 20 ++++++++++++++++++++ .smalltalk.lint.ston | 18 ++++++++++++++++++ .smalltalk.ston | 4 +++- .travis.yml | 2 +- README.md | 7 +++++++ 5 files changed, 49 insertions(+), 2 deletions(-) create mode 100644 .github/workflows/ci-linter.yml create mode 100644 .smalltalk.lint.ston diff --git a/.github/workflows/ci-linter.yml b/.github/workflows/ci-linter.yml new file mode 100644 index 000000000..f8e4e89ee --- /dev/null +++ b/.github/workflows/ci-linter.yml @@ -0,0 +1,20 @@ +name: CI-Lint + +on: [push, pull_request] + +jobs: + build: + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [ ubuntu-latest ] + smalltalk: [ Squeak64-5.3 ] + name: ${{ matrix.smalltalk }} on ${{ matrix.os }} + steps: + - uses: actions/checkout@v2 + - uses: hpi-swa/setup-smalltalkCI@v1 + with: + smalltalk-version: ${{ matrix.smalltalk }} + - run: smalltalkci -s ${{ matrix.smalltalk }} .smalltalk.lint.ston + shell: bash + timeout-minutes: 15 diff --git a/.smalltalk.lint.ston b/.smalltalk.lint.ston new file mode 100644 index 000000000..a51b9eb65 --- /dev/null +++ b/.smalltalk.lint.ston @@ -0,0 +1,18 @@ + +SmalltalkCISpec { + #loading : [ + SCIMetacelloLoadSpec { + #baseline : 'TelegramClient', + #platforms : [ #squeak ], + #directory : 'packages', + #load : [ 'tests' ], + #useLatestMetacello : true + } + ], + #preLoading : [ + 'scripts/preLoading.st' + ], + #testing : { + #classes : [ #TCTLinterTests ] + } +} diff --git a/.smalltalk.ston b/.smalltalk.ston index edc933a05..8b2eab54f 100644 --- a/.smalltalk.ston +++ b/.smalltalk.ston @@ -13,6 +13,8 @@ SmalltalkCISpec { #coverage : { #packages : [ 'TelegramClient-Core.*' ] }, - #packages : [ 'TelegramClient-Tests.*' ] + #exclude : { + #classes : [ #TCTLinterTests ] + } } } diff --git a/.travis.yml b/.travis.yml index 4b6ac5022..2eb051874 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,4 +5,4 @@ os: - linux smalltalk: - - Squeak-5.2 + - Squeak64-5.2 diff --git a/README.md b/README.md index 61521c38b..8e5a8d4cf 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,9 @@

+ +

@@ -15,9 +17,14 @@ TeleSqueak is a **Squeak-Client** for the widely used Telegram-Messenger. It aim *This Project is part of the "Softwaretechnik" Lecture 2020 at the Hasso Plattner Institute.* ## CI Status +### Unit Tests Develop: ![CI](https://github.com/hpi-swa-teaching/TelegramClient/workflows/CI/badge.svg?branch=develop) Master(Release): ![CI](https://github.com/hpi-swa-teaching/TelegramClient/workflows/CI/badge.svg?branch=master) +### Linting Tests +Develop: ![CI](https://github.com/hpi-swa-teaching/TelegramClient/workflows/CI-Lint/badge.svg?branch=develop) +Master(Release): ![CI](https://github.com/hpi-swa-teaching/TelegramClient/workflows/CI-Lint/badge.svg?branch=master) + ## Installation Make sure you have the current version of Squeak installed. * Step 1: Install the Squeak Git Client From 618c5536273edad394513c05929f5f9b9ad7e284 Mon Sep 17 00:00:00 2001 From: Lasklu <49564344+Lasklu@users.noreply.github.com> Date: Wed, 15 Jul 2020 20:06:46 +0200 Subject: [PATCH 25/81] Added a close button to the UI (#182) * Started adding a CloseButton #95 * Changed color of Button * Changed the name from lightRed to Red * Removed color "lightRed" --- .../TCUDefaultValues.class/class/colorRed.st | 4 ++++ .../TCUDefaultValues.class/methodProperties.json | 3 ++- .../instance/addCloseButtonTo.withSpacing..st | 13 +++++++++++++ .../TCUMain.class/instance/addHeader.st | 3 ++- .../TCUMain.class/methodProperties.json | 5 +++-- 5 files changed, 24 insertions(+), 4 deletions(-) create mode 100644 packages/TelegramClient-UI.package/TCUDefaultValues.class/class/colorRed.st create mode 100644 packages/TelegramClient-UI.package/TCUMain.class/instance/addCloseButtonTo.withSpacing..st diff --git a/packages/TelegramClient-UI.package/TCUDefaultValues.class/class/colorRed.st b/packages/TelegramClient-UI.package/TCUDefaultValues.class/class/colorRed.st new file mode 100644 index 000000000..a6b91258d --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUDefaultValues.class/class/colorRed.st @@ -0,0 +1,4 @@ +colors +colorRed + + ^ (Color r: (167 /255) g: (1 / 255) b: (0 / 255)) \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUDefaultValues.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUDefaultValues.class/methodProperties.json index 9e30b8ad8..4361b6ca3 100644 --- a/packages/TelegramClient-UI.package/TCUDefaultValues.class/methodProperties.json +++ b/packages/TelegramClient-UI.package/TCUDefaultValues.class/methodProperties.json @@ -2,6 +2,7 @@ "class" : { "colorGray" : "R.S 5/20/2020 13:41", "colorLightBlue" : "R.S 5/20/2020 13:41", - "colorLightGray" : "R.S 6/1/2020 14:25" }, + "colorLightGray" : "R.S 6/1/2020 14:25", + "colorRed" : "LL 7/15/2020 19:36" }, "instance" : { } } diff --git a/packages/TelegramClient-UI.package/TCUMain.class/instance/addCloseButtonTo.withSpacing..st b/packages/TelegramClient-UI.package/TCUMain.class/instance/addCloseButtonTo.withSpacing..st new file mode 100644 index 000000000..ef8d55ef4 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUMain.class/instance/addCloseButtonTo.withSpacing..st @@ -0,0 +1,13 @@ +defaultValues +addCloseButtonTo: aMorph withSpacing: aSpacing + + | closeButton | + + closeButton := TCUButton new + text: 'close'; + color: TCUDefaultValues colorRed; + on: #mouseUp send: #delete to: self. + closeButton text color: Color white. + closeButton position: (aMorph position x + aSpacing) @ aSpacing. + + aMorph addMorph: closeButton. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMain.class/instance/addHeader.st b/packages/TelegramClient-UI.package/TCUMain.class/instance/addHeader.st index 2cbee8462..4c68af6e9 100644 --- a/packages/TelegramClient-UI.package/TCUMain.class/instance/addHeader.st +++ b/packages/TelegramClient-UI.package/TCUMain.class/instance/addHeader.st @@ -11,4 +11,5 @@ addHeader self addMorph: header; addTitle: 'Telegram' to: header; - addLogoutButtonTo: header withSpacing: 5. \ No newline at end of file + addLogoutButtonTo: header withSpacing: 5; + addCloseButtonTo: header withSpacing: 5. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMain.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUMain.class/methodProperties.json index 9a4c8faad..a2d179612 100644 --- a/packages/TelegramClient-UI.package/TCUMain.class/methodProperties.json +++ b/packages/TelegramClient-UI.package/TCUMain.class/methodProperties.json @@ -3,8 +3,9 @@ "newWithCore:" : "f.w. 6/3/2020 20:31" }, "instance" : { "addChatsList" : "rs 6/17/2020 22:54", - "addHeader" : "rs 6/17/2020 21:35", - "addLogoutButtonTo:withSpacing:" : "rs 6/17/2020 21:30", + "addCloseButtonTo:withSpacing:" : "LL 7/15/2020 19:36", + "addHeader" : "LL 7/14/2020 14:43", + "addLogoutButtonTo:withSpacing:" : "LL 7/15/2020 19:01", "addTitle:to:" : "js 6/13/2020 18:57", "chatWindow" : "R.S 6/1/2020 14:27", "chatWindow:" : "R.S 6/1/2020 14:27", From d857526399c18a8e3606d1089a8b1b951297170c Mon Sep 17 00:00:00 2001 From: Rohan Sawahn <49531442+rohansaw@users.noreply.github.com> Date: Thu, 16 Jul 2020 12:08:17 +0200 Subject: [PATCH 26/81] Added Testsetup (#180) * Added automated download logic for library * Test stuff added * Fixed download Bug * fixed loginWithTestData * WIP - testAuthState * at: handling removed * Test should be working now * Added test loginWithTestData * added SetUp for LoggedInTests * Fixed linter Stuff * Added new baseline * Update baseline..st * removed TravisCI * changed windows tdjson to tdjson.dll Co-authored-by: Jonas Schmidt <43679965+schmidtjonas@users.noreply.github.com> Co-authored-by: Lasklu <49564344+Lasklu@users.noreply.github.com> Co-authored-by: Jonas Schmidt Co-authored-by: Frederik Wollny --- .github/workflows/main.yml | 2 +- .travis.yml | 8 -------- .../instance/baseline..st | 11 ++++++----- .../instance/handleEvent..st | 2 +- .../TCCAuthHandler.class/instance/initialize.st | 4 ++++ .../instance/isAuthStateClosed.st | 2 +- .../instance/isAuthorizationStateReady.st | 2 +- .../instance/isAwaitingAuthCode.st | 2 +- .../instance/isAwaitingDBEncryptionKey.st | 2 +- .../instance/isAwaitingPhoneNumber.st | 2 +- .../instance/isAwaitingTDLibParams.st | 2 +- .../TCCAuthHandler.class/methodProperties.json | 17 +++++++++-------- .../TCCCore.class/methodProperties.json | 2 +- .../TCCFFIClient.class/class/downloadUrl.st | 4 ++++ .../TCCFFIClient.class/class/fileName.st | 4 ++++ .../TCCFFIClient.class/class/moduleName.st | 13 ++++++++++++- .../TCCFFIClient.class/methodProperties.json | 4 +++- .../TCCLinuxClient.class/class/downloadUrl.st | 4 ++++ .../class/{moduleName.st => fileName.st} | 2 +- .../TCCLinuxClient.class/methodProperties.json | 5 +++-- .../TCCMacClient.class/class/downloadUrl.st | 4 ++++ .../TCCMacClient.class/class/fileName.st | 4 ++++ .../TCCMacClient.class/class/moduleName.st | 4 ---- .../TCCMacClient.class/methodProperties.json | 5 +++-- .../TCCWindowsClient.class/class/downloadUrl.st | 4 ++++ .../TCCWindowsClient.class/class/fileName.st | 4 ++++ .../TCCWindowsClient.class/class/moduleName.st | 4 ---- .../methodProperties.json | 5 +++-- .../TCTAuthTests.class/README.md | 1 + .../TCTAuthTests.class/instance/core..st | 4 ++++ .../TCTAuthTests.class/instance/core.st | 4 ++++ .../TCTAuthTests.class/instance/setUp.st | 9 +++++++++ .../TCTAuthTests.class/instance/tearDown.st | 4 ++++ .../testAuthStateIsAwaitingPhoneNumber.st | 4 ++++ .../instance/testAuthStateReady.st | 6 ++++++ .../instance/testClientDestroysHandle.st | 2 +- .../TCTAuthTests.class/methodProperties.json | 11 +++++++++++ .../properties.json | 6 +++--- .../TCTLoggedInTests.class/README.md | 1 + .../TCTLoggedInTests.class/instance/core..st | 4 ++++ .../TCTLoggedInTests.class/instance/core.st | 4 ++++ .../TCTLoggedInTests.class/instance/setUp.st | 7 +++++++ .../TCTLoggedInTests.class/instance/tearDown.st | 4 ++++ .../methodProperties.json | 8 ++++++++ .../TCTLoggedInTests.class/properties.json | 14 ++++++++++++++ .../TCTTeleClientTests.class/README.md | 1 - ...estFactoryCreatesCorrectClientForPlatform.st | 8 -------- .../methodProperties.json | 6 ------ .../instance/loginWithTestData.st | 2 +- .../TCTTestCore.class/methodProperties.json | 2 +- .../TCUTelegram.class/class/newWithTestApp.st | 4 ---- .../TCUTelegram.class/class/newWithTestCore.st | 4 ++++ .../instance/currentWindow..st | 4 ++++ .../TCUTelegram.class/instance/currentWindow.st | 4 ++++ .../TCUTelegram.class/instance/initialize.st | 3 ++- .../TCUTelegram.class/methodProperties.json | 6 ++++-- .../TCUTelegram.class/properties.json | 3 ++- 57 files changed, 192 insertions(+), 76 deletions(-) delete mode 100644 .travis.yml create mode 100644 packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/initialize.st create mode 100644 packages/TelegramClient-Core.package/TCCFFIClient.class/class/downloadUrl.st create mode 100644 packages/TelegramClient-Core.package/TCCFFIClient.class/class/fileName.st create mode 100644 packages/TelegramClient-Core.package/TCCLinuxClient.class/class/downloadUrl.st rename packages/TelegramClient-Core.package/TCCLinuxClient.class/class/{moduleName.st => fileName.st} (75%) create mode 100644 packages/TelegramClient-Core.package/TCCMacClient.class/class/downloadUrl.st create mode 100644 packages/TelegramClient-Core.package/TCCMacClient.class/class/fileName.st delete mode 100644 packages/TelegramClient-Core.package/TCCMacClient.class/class/moduleName.st create mode 100644 packages/TelegramClient-Core.package/TCCWindowsClient.class/class/downloadUrl.st create mode 100644 packages/TelegramClient-Core.package/TCCWindowsClient.class/class/fileName.st delete mode 100644 packages/TelegramClient-Core.package/TCCWindowsClient.class/class/moduleName.st create mode 100644 packages/TelegramClient-Tests.package/TCTAuthTests.class/README.md create mode 100644 packages/TelegramClient-Tests.package/TCTAuthTests.class/instance/core..st create mode 100644 packages/TelegramClient-Tests.package/TCTAuthTests.class/instance/core.st create mode 100644 packages/TelegramClient-Tests.package/TCTAuthTests.class/instance/setUp.st create mode 100644 packages/TelegramClient-Tests.package/TCTAuthTests.class/instance/tearDown.st create mode 100644 packages/TelegramClient-Tests.package/TCTAuthTests.class/instance/testAuthStateIsAwaitingPhoneNumber.st create mode 100644 packages/TelegramClient-Tests.package/TCTAuthTests.class/instance/testAuthStateReady.st rename packages/TelegramClient-Tests.package/{TCTTeleClientTests.class => TCTAuthTests.class}/instance/testClientDestroysHandle.st (97%) create mode 100644 packages/TelegramClient-Tests.package/TCTAuthTests.class/methodProperties.json rename packages/TelegramClient-Tests.package/{TCTTeleClientTests.class => TCTAuthTests.class}/properties.json (67%) create mode 100644 packages/TelegramClient-Tests.package/TCTLoggedInTests.class/README.md create mode 100644 packages/TelegramClient-Tests.package/TCTLoggedInTests.class/instance/core..st create mode 100644 packages/TelegramClient-Tests.package/TCTLoggedInTests.class/instance/core.st create mode 100644 packages/TelegramClient-Tests.package/TCTLoggedInTests.class/instance/setUp.st create mode 100644 packages/TelegramClient-Tests.package/TCTLoggedInTests.class/instance/tearDown.st create mode 100644 packages/TelegramClient-Tests.package/TCTLoggedInTests.class/methodProperties.json create mode 100644 packages/TelegramClient-Tests.package/TCTLoggedInTests.class/properties.json delete mode 100644 packages/TelegramClient-Tests.package/TCTTeleClientTests.class/README.md delete mode 100644 packages/TelegramClient-Tests.package/TCTTeleClientTests.class/instance/testFactoryCreatesCorrectClientForPlatform.st delete mode 100644 packages/TelegramClient-Tests.package/TCTTeleClientTests.class/methodProperties.json delete mode 100644 packages/TelegramClient-UI.package/TCUTelegram.class/class/newWithTestApp.st create mode 100644 packages/TelegramClient-UI.package/TCUTelegram.class/class/newWithTestCore.st create mode 100644 packages/TelegramClient-UI.package/TCUTelegram.class/instance/currentWindow..st create mode 100644 packages/TelegramClient-UI.package/TCUTelegram.class/instance/currentWindow.st diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 00a794adf..81dfb2e38 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -16,7 +16,7 @@ jobs: strategy: matrix: # Select platform(s) - os: [ ubuntu-latest, macos-latest ] + os: [ ubuntu-latest ] # Select compatible Smalltalk image(s) # currently not running on Squeak64-trunk smalltalk: [ Squeak64-5.3, Squeak64-5.2 ] diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 2eb051874..000000000 --- a/.travis.yml +++ /dev/null @@ -1,8 +0,0 @@ -language: smalltalk -sudo: false - -os: - - linux - -smalltalk: - - Squeak64-5.2 diff --git a/packages/BaselineOfTelegramClient.package/BaselineOfTelegramClient.class/instance/baseline..st b/packages/BaselineOfTelegramClient.package/BaselineOfTelegramClient.class/instance/baseline..st index 5d4e7274f..f57917a03 100644 --- a/packages/BaselineOfTelegramClient.package/BaselineOfTelegramClient.class/instance/baseline..st +++ b/packages/BaselineOfTelegramClient.package/BaselineOfTelegramClient.class/instance/baseline..st @@ -61,17 +61,18 @@ baseline: spec 'github://hpi-swa-teaching/SwaLint:master/packages'; requires: 'SwaLint-Core' ]; - package: 'TelegramClient-Core' with: [spec requires: #('FFI-Pools' 'FFI-Kernel')]; - package: 'TelegramClient-Tests' with: [spec requires: #('default' 'All' )]; + package: 'TelegramClient-Core' with: [spec requires: #('libraries')]; + package: 'TelegramClient-UI' with: [spec requires: #('libraries')]; + package: 'TelegramClient-Tests' with: [spec requires: #('default' 'All')]; yourself. spec group: 'libraries' with: #( 'JSON' 'FFI-Kernel' 'FFI-Pools'); - group: 'default' with: #('TelegramClient-Core'); + group: 'default' with: #('TelegramClient-Core' 'TelegramClient-UI'); group: 'tests' with: #('TelegramClient-Tests' )]; - group: 'default' with: #('PlugIns'); + group: 'default' with: #('PlugIns' 'libraries'); group: 'portability' with: #('PlugIns'); group: 'web' with: #('portability' ); group: 'Core' with: #('SwaLint-Core'); group: 'All' with: #( 'web'); group: 'PlugIns' with: #('SwaLint-PlugIns'); - yourself \ No newline at end of file + yourself diff --git a/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/handleEvent..st b/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/handleEvent..st index e1c11f490..50818cd26 100644 --- a/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/handleEvent..st +++ b/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/handleEvent..st @@ -1,7 +1,7 @@ accessing handleEvent: anEvent - self authState: (anEvent at: 'authorization_state'). + self authState: ((anEvent at: 'authorization_state') at: '@type'). self isAuthStateClosed ifTrue: [self client free]. diff --git a/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/initialize.st b/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/initialize.st new file mode 100644 index 000000000..4ab07c117 --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/initialize.st @@ -0,0 +1,4 @@ +initialize +initialize + + self authState: ''. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/isAuthStateClosed.st b/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/isAuthStateClosed.st index 536edc3bd..5550f6ff0 100644 --- a/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/isAuthStateClosed.st +++ b/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/isAuthStateClosed.st @@ -1,4 +1,4 @@ accessing isAuthStateClosed - ^ (self authState at: '@type') = 'authorizationStateClosed' \ No newline at end of file + ^ self authState = 'authorizationStateClosed' \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/isAuthorizationStateReady.st b/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/isAuthorizationStateReady.st index 4224ce0be..e35b02cb0 100644 --- a/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/isAuthorizationStateReady.st +++ b/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/isAuthorizationStateReady.st @@ -1,4 +1,4 @@ initialize isAuthorizationStateReady - ^ (self authState at: '@type') = 'authorizationStateReady' \ No newline at end of file + ^ self authState = 'authorizationStateReady' \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/isAwaitingAuthCode.st b/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/isAwaitingAuthCode.st index 9fd0db706..2c5979f9a 100644 --- a/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/isAwaitingAuthCode.st +++ b/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/isAwaitingAuthCode.st @@ -1,4 +1,4 @@ accessing isAwaitingAuthCode - ^ (self authState at: '@type') = 'authorizationStateWaitCode' \ No newline at end of file + ^ self authState = 'authorizationStateWaitCode' \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/isAwaitingDBEncryptionKey.st b/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/isAwaitingDBEncryptionKey.st index 2bbe5fb82..b9e37467c 100644 --- a/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/isAwaitingDBEncryptionKey.st +++ b/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/isAwaitingDBEncryptionKey.st @@ -1,4 +1,4 @@ accessing isAwaitingDBEncryptionKey - ^ (self authState at: '@type') = 'authorizationStateWaitEncryptionKey' \ No newline at end of file + ^ self authState = 'authorizationStateWaitEncryptionKey' \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/isAwaitingPhoneNumber.st b/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/isAwaitingPhoneNumber.st index 61266e4f9..4f8c8f5b5 100644 --- a/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/isAwaitingPhoneNumber.st +++ b/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/isAwaitingPhoneNumber.st @@ -1,4 +1,4 @@ accessing isAwaitingPhoneNumber - ^ (self authState at: '@type') = 'authorizationStateWaitPhoneNumber' \ No newline at end of file + ^ self authState = 'authorizationStateWaitPhoneNumber' \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/isAwaitingTDLibParams.st b/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/isAwaitingTDLibParams.st index 795763ae3..d16205ed2 100644 --- a/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/isAwaitingTDLibParams.st +++ b/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/isAwaitingTDLibParams.st @@ -1,4 +1,4 @@ accessing isAwaitingTDLibParams - ^ (self authState at: '@type') = 'authorizationStateWaitTdlibParameters' \ No newline at end of file + ^ self authState = 'authorizationStateWaitTdlibParameters' \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCAuthHandler.class/methodProperties.json b/packages/TelegramClient-Core.package/TCCAuthHandler.class/methodProperties.json index f6a43c779..c6fe14dc4 100644 --- a/packages/TelegramClient-Core.package/TCCAuthHandler.class/methodProperties.json +++ b/packages/TelegramClient-Core.package/TCCAuthHandler.class/methodProperties.json @@ -10,14 +10,15 @@ "authState:" : "R.S 5/18/2020 17:54", "checkAuthenticationCode:" : "js 6/13/2020 18:31", "client" : "js 5/28/2020 18:36", - "handleEvent:" : "js 6/13/2020 18:31", - "isAuthStateClosed" : "js 6/13/2020 18:31", - "isAuthorizationStateReady" : "js 6/13/2020 18:29", - "isAwaitingAuthCode" : "js 6/13/2020 18:29", - "isAwaitingDBEncryptionKey" : "R.S 5/19/2020 10:28", - "isAwaitingPhoneNumber" : "R.S 5/19/2020 10:28", - "isAwaitingTDLibParams" : "R.S 5/19/2020 10:28", - "logout" : "f.w. 6/3/2020 20:41", + "handleEvent:" : "r.s 7/15/2020 18:46", + "initialize" : "r.s 7/13/2020 18:15", + "isAuthStateClosed" : "r.s 7/15/2020 12:17", + "isAuthorizationStateReady" : "r.s 7/15/2020 12:17", + "isAwaitingAuthCode" : "r.s 7/15/2020 12:17", + "isAwaitingDBEncryptionKey" : "r.s 7/15/2020 12:17", + "isAwaitingPhoneNumber" : "r.s 7/15/2020 12:17", + "isAwaitingTDLibParams" : "r.s 7/15/2020 12:17", + "logout" : "r.s 7/15/2020 12:52", "sendPhoneNumber:" : "js 6/13/2020 18:54", "setDBEncryptionKey:" : "rs 6/6/2020 16:26", "setTDLibParams" : "rs 6/14/2020 12:42", diff --git a/packages/TelegramClient-Core.package/TCCCore.class/methodProperties.json b/packages/TelegramClient-Core.package/TCCCore.class/methodProperties.json index f2d664310..f01d0351f 100644 --- a/packages/TelegramClient-Core.package/TCCCore.class/methodProperties.json +++ b/packages/TelegramClient-Core.package/TCCCore.class/methodProperties.json @@ -12,7 +12,7 @@ "checkAuthenticationCode:" : "js 5/31/2020 20:10", "client" : "R.S 5/20/2020 16:08", "client:" : "js 6/13/2020 19:10", - "handleEvent:" : "rs 6/25/2020 10:48", + "handleEvent:" : "r.s 7/15/2020 19:20", "initialize" : "js 6/13/2020 18:19", "initializeClient" : "js 6/13/2020 18:20", "initializeHandlers" : "F.W. 6/13/2020 21:41", diff --git a/packages/TelegramClient-Core.package/TCCFFIClient.class/class/downloadUrl.st b/packages/TelegramClient-Core.package/TCCFFIClient.class/class/downloadUrl.st new file mode 100644 index 000000000..56a5088a7 --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCFFIClient.class/class/downloadUrl.st @@ -0,0 +1,4 @@ +accessing +downloadUrl + + ^ self subclassResponsibility \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCFFIClient.class/class/fileName.st b/packages/TelegramClient-Core.package/TCCFFIClient.class/class/fileName.st new file mode 100644 index 000000000..1eb3ed312 --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCFFIClient.class/class/fileName.st @@ -0,0 +1,4 @@ +accessing +fileName + + ^ self subclassResponsibility \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCFFIClient.class/class/moduleName.st b/packages/TelegramClient-Core.package/TCCFFIClient.class/class/moduleName.st index e947bd38d..15e61ea30 100644 --- a/packages/TelegramClient-Core.package/TCCFFIClient.class/class/moduleName.st +++ b/packages/TelegramClient-Core.package/TCCFFIClient.class/class/moduleName.st @@ -1,4 +1,15 @@ accessing moduleName - ^ self subclassResponsibility \ No newline at end of file + | filePath response | + + filePath := FileDirectory default / self fileName. + + filePath exists ifFalse: [ + FileStream fileNamed: filePath fullName do: [:stream | + response := WebClient httpGet: self downloadUrl. + stream + binary; + nextPutAll: response content]]. + + ^ filePath fullName \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCFFIClient.class/methodProperties.json b/packages/TelegramClient-Core.package/TCCFFIClient.class/methodProperties.json index fc0198184..b908f45c4 100644 --- a/packages/TelegramClient-Core.package/TCCFFIClient.class/methodProperties.json +++ b/packages/TelegramClient-Core.package/TCCFFIClient.class/methodProperties.json @@ -1,6 +1,8 @@ { "class" : { - "moduleName" : "js 5/14/2020 22:48" }, + "downloadUrl" : "r.s 7/13/2020 17:05", + "fileName" : "r.s 7/13/2020 17:05", + "moduleName" : "r.s 7/13/2020 17:29" }, "instance" : { "create" : "js 6/13/2020 12:53", "execute:with:" : "js 6/13/2020 18:33", diff --git a/packages/TelegramClient-Core.package/TCCLinuxClient.class/class/downloadUrl.st b/packages/TelegramClient-Core.package/TCCLinuxClient.class/class/downloadUrl.st new file mode 100644 index 000000000..a685c5d3e --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCLinuxClient.class/class/downloadUrl.st @@ -0,0 +1,4 @@ +accessing +downloadUrl + + ^ 'https://drive.google.com/uc?export=download&id=11XxwhkjWBgavhKR9SNhOjk_0hchbBb_1' \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCLinuxClient.class/class/moduleName.st b/packages/TelegramClient-Core.package/TCCLinuxClient.class/class/fileName.st similarity index 75% rename from packages/TelegramClient-Core.package/TCCLinuxClient.class/class/moduleName.st rename to packages/TelegramClient-Core.package/TCCLinuxClient.class/class/fileName.st index 3cb671f5e..dbbceee0c 100644 --- a/packages/TelegramClient-Core.package/TCCLinuxClient.class/class/moduleName.st +++ b/packages/TelegramClient-Core.package/TCCLinuxClient.class/class/fileName.st @@ -1,4 +1,4 @@ accessing -moduleName +fileName ^ 'libtdjson.so.1.6.0' \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCLinuxClient.class/methodProperties.json b/packages/TelegramClient-Core.package/TCCLinuxClient.class/methodProperties.json index 0abfa3add..b2ea3c306 100644 --- a/packages/TelegramClient-Core.package/TCCLinuxClient.class/methodProperties.json +++ b/packages/TelegramClient-Core.package/TCCLinuxClient.class/methodProperties.json @@ -1,5 +1,6 @@ { "class" : { - "moduleName" : "js 5/14/2020 22:48" }, + "downloadUrl" : "r.s 7/15/2020 19:27", + "fileName" : "r.s 7/13/2020 17:06" }, "instance" : { - "type" : "R.S 5/14/2020 23:14" } } + "type" : "r.s 7/13/2020 17:31" } } diff --git a/packages/TelegramClient-Core.package/TCCMacClient.class/class/downloadUrl.st b/packages/TelegramClient-Core.package/TCCMacClient.class/class/downloadUrl.st new file mode 100644 index 000000000..3c74b63e0 --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCMacClient.class/class/downloadUrl.st @@ -0,0 +1,4 @@ +accessing +downloadUrl + + ^ 'https://drive.google.com/uc?export=download&id=1MzMNvtY1Nc3Qu0oec-iviIhzOY7qr4x7' \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCMacClient.class/class/fileName.st b/packages/TelegramClient-Core.package/TCCMacClient.class/class/fileName.st new file mode 100644 index 000000000..380e08459 --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCMacClient.class/class/fileName.st @@ -0,0 +1,4 @@ +accessing +fileName + + ^ 'libtdjson.1.6.0.dylib' \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCMacClient.class/class/moduleName.st b/packages/TelegramClient-Core.package/TCCMacClient.class/class/moduleName.st deleted file mode 100644 index a4ca21af4..000000000 --- a/packages/TelegramClient-Core.package/TCCMacClient.class/class/moduleName.st +++ /dev/null @@ -1,4 +0,0 @@ -accessing -moduleName - - ^ (FileDirectory default / 'libtdjson.1.6.0.dylib') fullName \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCMacClient.class/methodProperties.json b/packages/TelegramClient-Core.package/TCCMacClient.class/methodProperties.json index 7dae93aad..2f0300313 100644 --- a/packages/TelegramClient-Core.package/TCCMacClient.class/methodProperties.json +++ b/packages/TelegramClient-Core.package/TCCMacClient.class/methodProperties.json @@ -1,5 +1,6 @@ { "class" : { - "moduleName" : "js 5/28/2020 17:06" }, + "downloadUrl" : "r.s 7/13/2020 17:06", + "fileName" : "r.s 7/13/2020 17:06" }, "instance" : { - "type" : "js 5/28/2020 17:38" } } + "type" : "r.s 7/13/2020 17:31" } } diff --git a/packages/TelegramClient-Core.package/TCCWindowsClient.class/class/downloadUrl.st b/packages/TelegramClient-Core.package/TCCWindowsClient.class/class/downloadUrl.st new file mode 100644 index 000000000..17ca32edc --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCWindowsClient.class/class/downloadUrl.st @@ -0,0 +1,4 @@ +accessing +downloadUrl + + ^ 'https://drive.google.com/uc?export=download&id=15C1bV12ZN86Zpc7R4be8hMt3NmKAAmDD' \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCWindowsClient.class/class/fileName.st b/packages/TelegramClient-Core.package/TCCWindowsClient.class/class/fileName.st new file mode 100644 index 000000000..1c5948334 --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCWindowsClient.class/class/fileName.st @@ -0,0 +1,4 @@ +accessing +fileName + + ^ 'tdjson.dll' \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCWindowsClient.class/class/moduleName.st b/packages/TelegramClient-Core.package/TCCWindowsClient.class/class/moduleName.st deleted file mode 100644 index 0182c3c98..000000000 --- a/packages/TelegramClient-Core.package/TCCWindowsClient.class/class/moduleName.st +++ /dev/null @@ -1,4 +0,0 @@ -accessing -moduleName - - ^ 'tdjson' \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCWindowsClient.class/methodProperties.json b/packages/TelegramClient-Core.package/TCCWindowsClient.class/methodProperties.json index 5f714595d..2463e4c73 100644 --- a/packages/TelegramClient-Core.package/TCCWindowsClient.class/methodProperties.json +++ b/packages/TelegramClient-Core.package/TCCWindowsClient.class/methodProperties.json @@ -1,5 +1,6 @@ { "class" : { - "moduleName" : "js 5/14/2020 22:48" }, + "downloadUrl" : "r.s 7/15/2020 19:27", + "fileName" : "f.w. 7/15/2020 22:04" }, "instance" : { - "type" : "js 5/28/2020 17:38" } } + "type" : "r.s 7/13/2020 17:31" } } diff --git a/packages/TelegramClient-Tests.package/TCTAuthTests.class/README.md b/packages/TelegramClient-Tests.package/TCTAuthTests.class/README.md new file mode 100644 index 000000000..0f287ef5f --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTAuthTests.class/README.md @@ -0,0 +1 @@ +This class tests auth behaviour \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTAuthTests.class/instance/core..st b/packages/TelegramClient-Tests.package/TCTAuthTests.class/instance/core..st new file mode 100644 index 000000000..3844709d3 --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTAuthTests.class/instance/core..st @@ -0,0 +1,4 @@ +accessing +core: aCore + + core := aCore. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTAuthTests.class/instance/core.st b/packages/TelegramClient-Tests.package/TCTAuthTests.class/instance/core.st new file mode 100644 index 000000000..7652dd8d1 --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTAuthTests.class/instance/core.st @@ -0,0 +1,4 @@ +accessing +core + + ^ core \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTAuthTests.class/instance/setUp.st b/packages/TelegramClient-Tests.package/TCTAuthTests.class/instance/setUp.st new file mode 100644 index 000000000..d238ff19e --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTAuthTests.class/instance/setUp.st @@ -0,0 +1,9 @@ +running +setUp + + self core: TCTTestCore new. + 1 seconds wait. + self core authHandler isAuthorizationStateReady ifTrue: [self core authHandler logout. + 1 seconds wait. + self core: TCTTestCore new. + 1 seconds wait]. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTAuthTests.class/instance/tearDown.st b/packages/TelegramClient-Tests.package/TCTAuthTests.class/instance/tearDown.st new file mode 100644 index 000000000..c5bb8da1e --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTAuthTests.class/instance/tearDown.st @@ -0,0 +1,4 @@ +running +tearDown + + self core client free. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTAuthTests.class/instance/testAuthStateIsAwaitingPhoneNumber.st b/packages/TelegramClient-Tests.package/TCTAuthTests.class/instance/testAuthStateIsAwaitingPhoneNumber.st new file mode 100644 index 000000000..86ed8ec44 --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTAuthTests.class/instance/testAuthStateIsAwaitingPhoneNumber.st @@ -0,0 +1,4 @@ +testing +testAuthStateIsAwaitingPhoneNumber + + self assert: self core authHandler isAwaitingPhoneNumber. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTAuthTests.class/instance/testAuthStateReady.st b/packages/TelegramClient-Tests.package/TCTAuthTests.class/instance/testAuthStateReady.st new file mode 100644 index 000000000..bf26e0f93 --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTAuthTests.class/instance/testAuthStateReady.st @@ -0,0 +1,6 @@ +testing +testAuthStateReady + + self core loginWithTestData. + 2 seconds wait. + self assert: self core authHandler isAuthorizationStateReady. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTTeleClientTests.class/instance/testClientDestroysHandle.st b/packages/TelegramClient-Tests.package/TCTAuthTests.class/instance/testClientDestroysHandle.st similarity index 97% rename from packages/TelegramClient-Tests.package/TCTTeleClientTests.class/instance/testClientDestroysHandle.st rename to packages/TelegramClient-Tests.package/TCTAuthTests.class/instance/testClientDestroysHandle.st index ba7e614ac..8ea054531 100644 --- a/packages/TelegramClient-Tests.package/TCTTeleClientTests.class/instance/testClientDestroysHandle.st +++ b/packages/TelegramClient-Tests.package/TCTAuthTests.class/instance/testClientDestroysHandle.st @@ -1,4 +1,4 @@ -client +testing testClientDestroysHandle | aClient aMock | diff --git a/packages/TelegramClient-Tests.package/TCTAuthTests.class/methodProperties.json b/packages/TelegramClient-Tests.package/TCTAuthTests.class/methodProperties.json new file mode 100644 index 000000000..546c90f4d --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTAuthTests.class/methodProperties.json @@ -0,0 +1,11 @@ +{ + "class" : { + }, + "instance" : { + "core" : "r.s 7/15/2020 12:39", + "core:" : "r.s 7/15/2020 12:39", + "setUp" : "r.s 7/15/2020 19:25", + "tearDown" : "r.s 7/15/2020 19:29", + "testAuthStateIsAwaitingPhoneNumber" : "r.s 7/15/2020 19:24", + "testAuthStateReady" : "r.s 7/15/2020 19:23", + "testClientDestroysHandle" : "r.s 7/13/2020 17:48" } } diff --git a/packages/TelegramClient-Tests.package/TCTTeleClientTests.class/properties.json b/packages/TelegramClient-Tests.package/TCTAuthTests.class/properties.json similarity index 67% rename from packages/TelegramClient-Tests.package/TCTTeleClientTests.class/properties.json rename to packages/TelegramClient-Tests.package/TCTAuthTests.class/properties.json index daaaeef98..b3f36524d 100644 --- a/packages/TelegramClient-Tests.package/TCTTeleClientTests.class/properties.json +++ b/packages/TelegramClient-Tests.package/TCTAuthTests.class/properties.json @@ -4,10 +4,10 @@ ], "classvars" : [ ], - "commentStamp" : "N.S. 5/14/2020 11:47", + "commentStamp" : "r.s 7/15/2020 19:22", "instvars" : [ - ], - "name" : "TCTTeleClientTests", + "core" ], + "name" : "TCTAuthTests", "pools" : [ ], "super" : "TestCase", diff --git a/packages/TelegramClient-Tests.package/TCTLoggedInTests.class/README.md b/packages/TelegramClient-Tests.package/TCTLoggedInTests.class/README.md new file mode 100644 index 000000000..6a6951d1b --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTLoggedInTests.class/README.md @@ -0,0 +1 @@ +This class tests loggedIn functions \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTLoggedInTests.class/instance/core..st b/packages/TelegramClient-Tests.package/TCTLoggedInTests.class/instance/core..st new file mode 100644 index 000000000..3844709d3 --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTLoggedInTests.class/instance/core..st @@ -0,0 +1,4 @@ +accessing +core: aCore + + core := aCore. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTLoggedInTests.class/instance/core.st b/packages/TelegramClient-Tests.package/TCTLoggedInTests.class/instance/core.st new file mode 100644 index 000000000..7652dd8d1 --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTLoggedInTests.class/instance/core.st @@ -0,0 +1,4 @@ +accessing +core + + ^ core \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTLoggedInTests.class/instance/setUp.st b/packages/TelegramClient-Tests.package/TCTLoggedInTests.class/instance/setUp.st new file mode 100644 index 000000000..25f687445 --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTLoggedInTests.class/instance/setUp.st @@ -0,0 +1,7 @@ +running +setUp + + self core: TCTTestCore new. + 1 seconds wait. + self core authHandler isAuthorizationStateReady ifFalse: [self core loginWithTestData. + 2 seconds wait]. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTLoggedInTests.class/instance/tearDown.st b/packages/TelegramClient-Tests.package/TCTLoggedInTests.class/instance/tearDown.st new file mode 100644 index 000000000..c5bb8da1e --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTLoggedInTests.class/instance/tearDown.st @@ -0,0 +1,4 @@ +running +tearDown + + self core client free. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTLoggedInTests.class/methodProperties.json b/packages/TelegramClient-Tests.package/TCTLoggedInTests.class/methodProperties.json new file mode 100644 index 000000000..d7ce0c606 --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTLoggedInTests.class/methodProperties.json @@ -0,0 +1,8 @@ +{ + "class" : { + }, + "instance" : { + "core" : "r.s 7/15/2020 18:46", + "core:" : "r.s 7/15/2020 18:46", + "setUp" : "r.s 7/15/2020 18:44", + "tearDown" : "r.s 7/15/2020 18:45" } } diff --git a/packages/TelegramClient-Tests.package/TCTLoggedInTests.class/properties.json b/packages/TelegramClient-Tests.package/TCTLoggedInTests.class/properties.json new file mode 100644 index 000000000..b0b3c6956 --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTLoggedInTests.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "TelegramClient-Tests", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "r.s 7/15/2020 19:22", + "instvars" : [ + "core" ], + "name" : "TCTLoggedInTests", + "pools" : [ + ], + "super" : "TestCase", + "type" : "normal" } diff --git a/packages/TelegramClient-Tests.package/TCTTeleClientTests.class/README.md b/packages/TelegramClient-Tests.package/TCTTeleClientTests.class/README.md deleted file mode 100644 index 3efbbc1bd..000000000 --- a/packages/TelegramClient-Tests.package/TCTTeleClientTests.class/README.md +++ /dev/null @@ -1 +0,0 @@ -TeleClientTests is responsible for testing correct FFI interation with tdlib as well as handle clearing \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTTeleClientTests.class/instance/testFactoryCreatesCorrectClientForPlatform.st b/packages/TelegramClient-Tests.package/TCTTeleClientTests.class/instance/testFactoryCreatesCorrectClientForPlatform.st deleted file mode 100644 index 61e63d2fa..000000000 --- a/packages/TelegramClient-Tests.package/TCTTeleClientTests.class/instance/testFactoryCreatesCorrectClientForPlatform.st +++ /dev/null @@ -1,8 +0,0 @@ -factory -testFactoryCreatesCorrectClientForPlatform - - | client | - - #('Win32' 'Mac OS' 'Linux') do: [:os | - client := TCCTeleClientFactory new createClient: os. - self assert: client type equals: os]. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTTeleClientTests.class/methodProperties.json b/packages/TelegramClient-Tests.package/TCTTeleClientTests.class/methodProperties.json deleted file mode 100644 index f99684a3a..000000000 --- a/packages/TelegramClient-Tests.package/TCTTeleClientTests.class/methodProperties.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "class" : { - }, - "instance" : { - "testClientDestroysHandle" : "js 6/13/2020 19:20", - "testFactoryCreatesCorrectClientForPlatform" : "js 6/13/2020 19:19" } } diff --git a/packages/TelegramClient-Tests.package/TCTTestCore.class/instance/loginWithTestData.st b/packages/TelegramClient-Tests.package/TCTTestCore.class/instance/loginWithTestData.st index d9fadbda9..907e09d98 100644 --- a/packages/TelegramClient-Tests.package/TCTTestCore.class/instance/loginWithTestData.st +++ b/packages/TelegramClient-Tests.package/TCTTestCore.class/instance/loginWithTestData.st @@ -2,5 +2,5 @@ logIn loginWithTestData self authHandler sendPhoneNumber: '9996621234'. - 0.5 seconds wait. + 2 seconds wait. self checkAuthenticationCode: '22222'. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTTestCore.class/methodProperties.json b/packages/TelegramClient-Tests.package/TCTTestCore.class/methodProperties.json index 3ee08f796..0c5b9f11f 100644 --- a/packages/TelegramClient-Tests.package/TCTTestCore.class/methodProperties.json +++ b/packages/TelegramClient-Tests.package/TCTTestCore.class/methodProperties.json @@ -3,4 +3,4 @@ }, "instance" : { "initializeHandlers" : "rs 6/14/2020 12:49", - "loginWithTestData" : "rs 6/14/2020 12:52" } } + "loginWithTestData" : "r.s 7/15/2020 12:42" } } diff --git a/packages/TelegramClient-UI.package/TCUTelegram.class/class/newWithTestApp.st b/packages/TelegramClient-UI.package/TCUTelegram.class/class/newWithTestApp.st deleted file mode 100644 index aaf628a2d..000000000 --- a/packages/TelegramClient-UI.package/TCUTelegram.class/class/newWithTestApp.st +++ /dev/null @@ -1,4 +0,0 @@ -instance creation -newWithTestApp - - ^ self newWithCore: TCTTestApp new \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUTelegram.class/class/newWithTestCore.st b/packages/TelegramClient-UI.package/TCUTelegram.class/class/newWithTestCore.st new file mode 100644 index 000000000..1bf845783 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUTelegram.class/class/newWithTestCore.st @@ -0,0 +1,4 @@ +instance creation +newWithTestCore + + ^ self newWithCore: TCTTestCore new \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUTelegram.class/instance/currentWindow..st b/packages/TelegramClient-UI.package/TCUTelegram.class/instance/currentWindow..st new file mode 100644 index 000000000..95c179a48 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUTelegram.class/instance/currentWindow..st @@ -0,0 +1,4 @@ +accessing +currentWindow: aMorph + + currentWindow := aMorph. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUTelegram.class/instance/currentWindow.st b/packages/TelegramClient-UI.package/TCUTelegram.class/instance/currentWindow.st new file mode 100644 index 000000000..b1f0e3115 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUTelegram.class/instance/currentWindow.st @@ -0,0 +1,4 @@ +accessing +currentWindow + + ^ currentWindow \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUTelegram.class/instance/initialize.st b/packages/TelegramClient-UI.package/TCUTelegram.class/instance/initialize.st index 57272c48e..d095a7ace 100644 --- a/packages/TelegramClient-UI.package/TCUTelegram.class/instance/initialize.st +++ b/packages/TelegramClient-UI.package/TCUTelegram.class/instance/initialize.st @@ -3,4 +3,5 @@ initialize super initialize. - (TCUAuthentication newWithCore: self core) openCenteredInWorld. \ No newline at end of file + self currentWindow: (TCUAuthentication newWithCore: self core). + self currentWindow openCenteredInWorld. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUTelegram.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUTelegram.class/methodProperties.json index 77a80809a..2ee2a7010 100644 --- a/packages/TelegramClient-UI.package/TCUTelegram.class/methodProperties.json +++ b/packages/TelegramClient-UI.package/TCUTelegram.class/methodProperties.json @@ -2,8 +2,10 @@ "class" : { "newWithCore:" : "F.W. 6/13/2020 21:48", "newWithTCCCore" : "rs 6/25/2020 10:16", - "newWithTestApp" : "rs 6/14/2020 12:31" }, + "newWithTestCore" : "r.s 7/13/2020 17:36" }, "instance" : { "core" : "js 5/31/2020 20:04", "core:" : "js 5/31/2020 20:04", - "initialize" : "js 6/13/2020 18:22" } } + "currentWindow" : "r.s 7/13/2020 17:11", + "currentWindow:" : "r.s 7/13/2020 17:11", + "initialize" : "r.s 7/13/2020 17:11" } } diff --git a/packages/TelegramClient-UI.package/TCUTelegram.class/properties.json b/packages/TelegramClient-UI.package/TCUTelegram.class/properties.json index 2c4604f89..97d5f6ffc 100644 --- a/packages/TelegramClient-UI.package/TCUTelegram.class/properties.json +++ b/packages/TelegramClient-UI.package/TCUTelegram.class/properties.json @@ -6,7 +6,8 @@ ], "commentStamp" : "js 6/13/2020 18:59", "instvars" : [ - "core" ], + "core", + "currentWindow" ], "name" : "TCUTelegram", "pools" : [ ], From 89e4f78f49450fdf03ab669e4521d0d88a942567 Mon Sep 17 00:00:00 2001 From: Rohan Sawahn <49531442+rohansaw@users.noreply.github.com> Date: Thu, 16 Jul 2020 12:53:33 +0200 Subject: [PATCH 27/81] Added Scrollable ChatsList and Creation of new Chats (#184) * wip receive messages * wip receives chat history on click on chat * Can now receive incoming Messages. Added Message Object which will be stored in message list of a chat. This works already for incoming new messages * Now only adding TextMessages to message List. Other types of incoming Messages will be handled later * Now Every Chat contains a LastMessage attribute that is updated when a new message is received. Only need to display this in the UI next. * always loads first 15 messages from chat on click if not already loaded * loads 15 newest chat history messages and adds new incoming messages on first place of the list so that the first place in chat messages list is always the newest message * fixed error with other message types than text like images by skipping them * removed unnecessary code * wip very buggy ui * first scrolling version with bugs wip * fixed bug with scrolling so it can only scroll till the top chat comes * fixed bug with header bar and scrolling * added scroll to top button and fixed a bug with scrolling when dragging the window * Fixed linting errors * removed scroll to top button * backend for creating new chats from username * ugly ui to search for contacts from username * Refined UI * started fixing linting stuff * fixed some errors * fix * linting tests green * Removed MacOs from Ci * Removed CI on push Co-authored-by: Frederik Wollny Co-authored-by: Jonas Schmidt --- .github/workflows/ci-linter.yml | 2 +- .github/workflows/main.yml | 2 +- .../TCCChat.class/instance/initialize.st | 4 ++++ .../TCCChat.class/methodProperties.json | 1 + .../instance/addNewMessage..st | 12 +++++++++++ .../instance/chatHistoryReceived..st | 21 +++++++++++++++++++ .../instance/getChatHistoryFrom.with.and..st | 10 +++++++++ .../instance/handleNewMessage..st | 4 ++++ .../instance/messageLimit..st | 4 ++++ .../instance/messageLimit.st | 4 ++++ .../instance/openNewChat..st | 5 +++++ .../instance/searchChat..st | 6 ++++++ .../instance/updateLastMessage..st | 10 +++++++-- .../methodProperties.json | 12 +++++++++-- .../TCCChatsHandler.class/properties.json | 3 ++- .../TCCCore.class/class/newTestApp.st | 2 -- .../instance/getChatHistoryFrom..st | 13 ++++++++++++ .../TCCCore.class/instance/handleEvent..st | 18 ++++++++-------- .../instance/initializeHandlers.st | 7 +++++-- .../TCCCore.class/instance/searchChat..st | 4 ++++ .../TCCCore.class/methodProperties.json | 8 ++++--- .../TCCMessage.class/README.md | 1 + .../TCCMessage.class/instance/chatID..st | 4 ++++ .../TCCMessage.class/instance/chatID.st | 4 ++++ .../TCCMessage.class/instance/message..st | 4 ++++ .../TCCMessage.class/instance/message.st | 4 ++++ .../TCCMessage.class/instance/messageId..st | 4 ++++ .../TCCMessage.class/instance/messageId.st | 4 ++++ .../TCCMessage.class/instance/senderId..st | 4 ++++ .../TCCMessage.class/instance/senderId.st | 4 ++++ .../TCCMessage.class/instance/senderName..st | 4 ++++ .../TCCMessage.class/instance/senderName.st | 4 ++++ .../TCCMessage.class/methodProperties.json | 14 +++++++++++++ .../TCCMessage.class/properties.json | 18 ++++++++++++++++ .../instance/isLineWithOnlyTabsAndSpaces..st | 2 +- .../instance/testMethodHasEmptyLine.st | 2 +- .../instance/testMethodNoEmptyLineAtEnd.st | 2 +- .../testMethodNoLinesWithOnlyTabsAndSpaces.st | 5 ----- .../testMethodNoTrailingWhitespaces.st | 5 ----- .../methodProperties.json | 8 +++---- .../instance/newChatSelected..st | 6 +++++- .../TCUChatWindow.class/methodProperties.json | 2 +- .../TCUChatsList.class/instance/chats..st | 3 ++- .../instance/handleMouseWheel..st | 7 +++++++ .../TCUChatsList.class/instance/maxHeight..st | 4 ++++ .../TCUChatsList.class/instance/maxHeight.st | 4 ++++ .../instance/openNewChat..st | 4 ++++ .../TCUChatsList.class/instance/scrollDown.st | 4 ++++ .../TCUChatsList.class/instance/scrollUp.st | 5 +++++ .../TCUChatsList.class/instance/setToTop.st | 4 ++++ .../TCUChatsList.class/methodProperties.json | 17 ++++++++++----- .../TCUChatsList.class/properties.json | 3 ++- .../TCUMain.class/instance/addHeader.st | 4 +++- .../instance/addInputFieldTo.withSpacing..st | 15 +++++++++++++ .../addNewChatButtonTo.withSpacing..st | 12 +++++++++++ .../instance/getChatHistoryFrom..st | 4 ++++ .../TCUMain.class/instance/initialize.st | 2 +- .../instance/newChatButtonClicked.st | 16 ++++++++++++++ .../instance/subscribeChatsList.st | 4 +++- .../TCUMain.class/methodProperties.json | 14 ++++++++----- .../TCUModal.class/README.md | 1 + .../TCUModal.class/class/newWithText.type..st | 7 +++++++ .../TCUModal.class/instance/defaultHeight.st | 4 ++++ .../TCUModal.class/instance/defaultWidth.st | 4 ++++ .../TCUModal.class/instance/initialize.st | 14 +++++++++++++ .../TCUModal.class/instance/setColor.st | 5 +++++ .../TCUModal.class/instance/setText.st | 7 +++++++ .../TCUModal.class/instance/text..st | 4 ++++ .../TCUModal.class/instance/text.st | 4 ++++ .../TCUModal.class/instance/type..st | 5 +++++ .../TCUModal.class/instance/type.st | 4 ++++ .../TCUModal.class/methodProperties.json | 13 ++++++++++++ .../TCUModal.class/properties.json | 15 +++++++++++++ 73 files changed, 412 insertions(+), 58 deletions(-) create mode 100644 packages/TelegramClient-Core.package/TCCChat.class/instance/initialize.st create mode 100644 packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/addNewMessage..st create mode 100644 packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/chatHistoryReceived..st create mode 100644 packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/getChatHistoryFrom.with.and..st create mode 100644 packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/handleNewMessage..st create mode 100644 packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/messageLimit..st create mode 100644 packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/messageLimit.st create mode 100644 packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/openNewChat..st create mode 100644 packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/searchChat..st delete mode 100644 packages/TelegramClient-Core.package/TCCCore.class/class/newTestApp.st create mode 100644 packages/TelegramClient-Core.package/TCCCore.class/instance/getChatHistoryFrom..st create mode 100644 packages/TelegramClient-Core.package/TCCCore.class/instance/searchChat..st create mode 100644 packages/TelegramClient-Core.package/TCCMessage.class/README.md create mode 100644 packages/TelegramClient-Core.package/TCCMessage.class/instance/chatID..st create mode 100644 packages/TelegramClient-Core.package/TCCMessage.class/instance/chatID.st create mode 100644 packages/TelegramClient-Core.package/TCCMessage.class/instance/message..st create mode 100644 packages/TelegramClient-Core.package/TCCMessage.class/instance/message.st create mode 100644 packages/TelegramClient-Core.package/TCCMessage.class/instance/messageId..st create mode 100644 packages/TelegramClient-Core.package/TCCMessage.class/instance/messageId.st create mode 100644 packages/TelegramClient-Core.package/TCCMessage.class/instance/senderId..st create mode 100644 packages/TelegramClient-Core.package/TCCMessage.class/instance/senderId.st create mode 100644 packages/TelegramClient-Core.package/TCCMessage.class/instance/senderName..st create mode 100644 packages/TelegramClient-Core.package/TCCMessage.class/instance/senderName.st create mode 100644 packages/TelegramClient-Core.package/TCCMessage.class/methodProperties.json create mode 100644 packages/TelegramClient-Core.package/TCCMessage.class/properties.json delete mode 100644 packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testMethodNoLinesWithOnlyTabsAndSpaces.st delete mode 100644 packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testMethodNoTrailingWhitespaces.st create mode 100644 packages/TelegramClient-UI.package/TCUChatsList.class/instance/handleMouseWheel..st create mode 100644 packages/TelegramClient-UI.package/TCUChatsList.class/instance/maxHeight..st create mode 100644 packages/TelegramClient-UI.package/TCUChatsList.class/instance/maxHeight.st create mode 100644 packages/TelegramClient-UI.package/TCUChatsList.class/instance/openNewChat..st create mode 100644 packages/TelegramClient-UI.package/TCUChatsList.class/instance/scrollDown.st create mode 100644 packages/TelegramClient-UI.package/TCUChatsList.class/instance/scrollUp.st create mode 100644 packages/TelegramClient-UI.package/TCUChatsList.class/instance/setToTop.st create mode 100644 packages/TelegramClient-UI.package/TCUMain.class/instance/addInputFieldTo.withSpacing..st create mode 100644 packages/TelegramClient-UI.package/TCUMain.class/instance/addNewChatButtonTo.withSpacing..st create mode 100644 packages/TelegramClient-UI.package/TCUMain.class/instance/getChatHistoryFrom..st create mode 100644 packages/TelegramClient-UI.package/TCUMain.class/instance/newChatButtonClicked.st create mode 100644 packages/TelegramClient-UI.package/TCUModal.class/README.md create mode 100644 packages/TelegramClient-UI.package/TCUModal.class/class/newWithText.type..st create mode 100644 packages/TelegramClient-UI.package/TCUModal.class/instance/defaultHeight.st create mode 100644 packages/TelegramClient-UI.package/TCUModal.class/instance/defaultWidth.st create mode 100644 packages/TelegramClient-UI.package/TCUModal.class/instance/initialize.st create mode 100644 packages/TelegramClient-UI.package/TCUModal.class/instance/setColor.st create mode 100644 packages/TelegramClient-UI.package/TCUModal.class/instance/setText.st create mode 100644 packages/TelegramClient-UI.package/TCUModal.class/instance/text..st create mode 100644 packages/TelegramClient-UI.package/TCUModal.class/instance/text.st create mode 100644 packages/TelegramClient-UI.package/TCUModal.class/instance/type..st create mode 100644 packages/TelegramClient-UI.package/TCUModal.class/instance/type.st create mode 100644 packages/TelegramClient-UI.package/TCUModal.class/methodProperties.json create mode 100644 packages/TelegramClient-UI.package/TCUModal.class/properties.json diff --git a/.github/workflows/ci-linter.yml b/.github/workflows/ci-linter.yml index f8e4e89ee..265639bca 100644 --- a/.github/workflows/ci-linter.yml +++ b/.github/workflows/ci-linter.yml @@ -1,6 +1,6 @@ name: CI-Lint -on: [push, pull_request] +on: [pull_request] jobs: build: diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 81dfb2e38..f8d4fd923 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -16,7 +16,7 @@ jobs: strategy: matrix: # Select platform(s) - os: [ ubuntu-latest ] + os: [ ubuntu-latest] # Select compatible Smalltalk image(s) # currently not running on Squeak64-trunk smalltalk: [ Squeak64-5.3, Squeak64-5.2 ] diff --git a/packages/TelegramClient-Core.package/TCCChat.class/instance/initialize.st b/packages/TelegramClient-Core.package/TCCChat.class/instance/initialize.st new file mode 100644 index 000000000..27cbab7e2 --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCChat.class/instance/initialize.st @@ -0,0 +1,4 @@ +accessing +initialize + + self messages: OrderedCollection new. diff --git a/packages/TelegramClient-Core.package/TCCChat.class/methodProperties.json b/packages/TelegramClient-Core.package/TCCChat.class/methodProperties.json index dce33c479..fd26a7b09 100644 --- a/packages/TelegramClient-Core.package/TCCChat.class/methodProperties.json +++ b/packages/TelegramClient-Core.package/TCCChat.class/methodProperties.json @@ -4,6 +4,7 @@ "instance" : { "id" : "rs 6/7/2020 22:20", "id:" : "rs 6/7/2020 22:20", + "initialize" : "rs 6/29/2020 17:20", "lastMessage" : "rs 6/19/2020 17:33", "lastMessage:" : "rs 6/19/2020 17:33", "messages" : "R.S 6/1/2020 15:37", diff --git a/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/addNewMessage..st b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/addNewMessage..st new file mode 100644 index 000000000..f431286fa --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/addNewMessage..st @@ -0,0 +1,12 @@ +events +addNewMessage: anEvent + + | message | + + message := (TCCMessage new + message: ((((anEvent at: 'message') at: 'content') at: 'text') at: 'text'); + senderId: (((anEvent at: 'message') at: 'sender_user_id')); + chatID: ((anEvent at: 'message') at: 'chat_id'); + messageId: ((anEvent at: 'message') at: 'id')). + + (self app chats getChat: ((anEvent at: 'message') at: 'chat_id')) messages addFirst: message. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/chatHistoryReceived..st b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/chatHistoryReceived..st new file mode 100644 index 000000000..6fddcf0a8 --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/chatHistoryReceived..st @@ -0,0 +1,21 @@ +events +chatHistoryReceived: aChatHistory + + | chat chatMessageNumber oldestMessageId chatID | + + (aChatHistory at: 'messages') ifNotEmpty: [ + chatID := ((aChatHistory at: 'messages') first at: 'chat_id'). + chat := self app chats getChat: chatID. + + (aChatHistory at: 'messages') do: [:message | + ((message at: 'content') at: '@type') = 'messageText' ifTrue: [ + chat messages add: (TCCMessage new + message: (((message at: 'content') at: 'text') at: 'text'); + chatID: chatID; + senderId: (message at: 'sender_user_id'); + messageId: (message at: 'id'))]]. + + chat messages ifNotEmpty: [ + oldestMessageId := chat messages last messageId. + chatMessageNumber := self messageLimit - chat messages size. + chatMessageNumber > 0 ifTrue: [self getChatHistoryFrom: chatID with: oldestMessageId and: chatMessageNumber]]]. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/getChatHistoryFrom.with.and..st b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/getChatHistoryFrom.with.and..st new file mode 100644 index 000000000..aaa8553d1 --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/getChatHistoryFrom.with.and..st @@ -0,0 +1,10 @@ +accessing +getChatHistoryFrom: aChatID with: aMessageId and: aLimit + + self client send: (TCCRequest + newWithType: 'getChatHistory' + from: {'chat_id' -> aChatID. + 'from_message_id' -> aMessageId. + 'offset' -> 0. + 'limit' -> aLimit. + 'only_local' -> false.}). diff --git a/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/handleNewMessage..st b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/handleNewMessage..st new file mode 100644 index 000000000..9ede7f038 --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/handleNewMessage..st @@ -0,0 +1,4 @@ +events +handleNewMessage: anEvent + + (((anEvent at: 'message') at: 'content') at: '@type') = 'messageText' ifTrue: [self addNewMessage: anEvent]. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/messageLimit..st b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/messageLimit..st new file mode 100644 index 000000000..a8e426afa --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/messageLimit..st @@ -0,0 +1,4 @@ +accessing +messageLimit: aNumber + + messageLimit := aNumber. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/messageLimit.st b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/messageLimit.st new file mode 100644 index 000000000..b70deb47b --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/messageLimit.st @@ -0,0 +1,4 @@ +accessing +messageLimit + + ^messageLimit \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/openNewChat..st b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/openNewChat..st new file mode 100644 index 000000000..8c9bb67b4 --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/openNewChat..st @@ -0,0 +1,5 @@ +events +openNewChat: aChat + + self app chats triggerEvent: #openNewChat with: (TCCChat new + id: (aChat at: 'id')). \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/searchChat..st b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/searchChat..st new file mode 100644 index 000000000..ed0865355 --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/searchChat..st @@ -0,0 +1,6 @@ +accessing +searchChat: aUsername + + self client send: (TCCRequest + newWithType: 'searchPublicChat' + from: {'username' -> aUsername}). \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/updateLastMessage..st b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/updateLastMessage..st index dbf385860..325b3ef4d 100644 --- a/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/updateLastMessage..st +++ b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/updateLastMessage..st @@ -1,8 +1,14 @@ events updateLastMessage: anEvent - (self app chats getChat: (anEvent at: 'chat_id')) - order: (anEvent at: 'order'). + | content chat | + + content := ((anEvent at: 'last_message') at: 'content'). + chat := (self app chats getChat: (anEvent at: 'chat_id')). + chat order: (anEvent at: 'order'). + + (content at: '@type') = 'messageText' ifTrue: [chat lastMessage: ((content at: 'text') at: 'text')]. + (content at: '@type') = 'messagePhoto' ifTrue: [chat lastMessage: 'A Photo']. self app chats reSort; diff --git a/packages/TelegramClient-Core.package/TCCChatsHandler.class/methodProperties.json b/packages/TelegramClient-Core.package/TCCChatsHandler.class/methodProperties.json index bda52f911..162cdf5c6 100644 --- a/packages/TelegramClient-Core.package/TCCChatsHandler.class/methodProperties.json +++ b/packages/TelegramClient-Core.package/TCCChatsHandler.class/methodProperties.json @@ -3,10 +3,18 @@ }, "instance" : { "addChat:" : "rs 6/25/2020 10:48", + "addNewMessage:" : "j 7/16/2020 12:06", "app" : "js 6/1/2020 14:44", "app:" : "js 6/1/2020 14:45", + "chatHistoryReceived:" : "j 7/16/2020 12:17", "client" : "js 6/1/2020 14:44", + "getChatHistoryFrom:with:and:" : "f.w. 6/30/2020 16:17", "getChats" : "rs 6/6/2020 16:36", - "sendMessage:to:" : "rs 6/17/2020 20:58", + "handleNewMessage:" : "j 7/16/2020 12:31", + "messageLimit" : "j 7/16/2020 12:03", + "messageLimit:" : "j 7/16/2020 12:03", + "openNewChat:" : "j 7/16/2020 12:04", + "searchChat:" : "f.w. 7/15/2020 22:53", + "sendMessage:to:" : "j 7/16/2020 12:32", "updateChatOrder:" : "rs 6/25/2020 10:58", - "updateLastMessage:" : "rs 6/25/2020 10:43" } } + "updateLastMessage:" : "j 7/16/2020 12:05" } } diff --git a/packages/TelegramClient-Core.package/TCCChatsHandler.class/properties.json b/packages/TelegramClient-Core.package/TCCChatsHandler.class/properties.json index a7d7d04a5..5b8009c99 100644 --- a/packages/TelegramClient-Core.package/TCCChatsHandler.class/properties.json +++ b/packages/TelegramClient-Core.package/TCCChatsHandler.class/properties.json @@ -6,7 +6,8 @@ ], "commentStamp" : "js 6/13/2020 16:26", "instvars" : [ - "app" ], + "app", + "messageLimit" ], "name" : "TCCChatsHandler", "pools" : [ ], diff --git a/packages/TelegramClient-Core.package/TCCCore.class/class/newTestApp.st b/packages/TelegramClient-Core.package/TCCCore.class/class/newTestApp.st deleted file mode 100644 index 73f921ed3..000000000 --- a/packages/TelegramClient-Core.package/TCCCore.class/class/newTestApp.st +++ /dev/null @@ -1,2 +0,0 @@ -as yet unclassified -newTestApp \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCCore.class/instance/getChatHistoryFrom..st b/packages/TelegramClient-Core.package/TCCCore.class/instance/getChatHistoryFrom..st new file mode 100644 index 000000000..75ccb58af --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCCore.class/instance/getChatHistoryFrom..st @@ -0,0 +1,13 @@ +accessing +getChatHistoryFrom: aChatID + + | currentMessages messageId chatMessages | + + chatMessages := (self chats getChat: aChatID) messages. + chatMessages isEmpty + ifTrue: [messageId := 0] + ifFalse: [messageId := chatMessages last messageId]. + + currentMessages := (self chatsHandler messageLimit) - (chatMessages size). + currentMessages > 0 ifTrue: [ + self chatsHandler getChatHistoryFrom: aChatID with: messageId and: currentMessages]. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCCore.class/instance/handleEvent..st b/packages/TelegramClient-Core.package/TCCCore.class/instance/handleEvent..st index 1a3d2730e..f58c84e0f 100644 --- a/packages/TelegramClient-Core.package/TCCCore.class/instance/handleEvent..st +++ b/packages/TelegramClient-Core.package/TCCCore.class/instance/handleEvent..st @@ -3,16 +3,16 @@ handleEvent: anEvent | update | update := nil. - (((anEvent at: '@type') = 'error') and: [(anEvent at: 'code') = 400 ]) ifTrue: [self halt: 'An Error Occured. Check Transcript Output.']. - (anEvent at: '@type') = 'updateAuthorizationState' - ifTrue: [update := self authHandler handleEvent: anEvent]. - (anEvent at: '@type') = 'updateNewChat' - ifTrue: [self chatsHandler addChat: anEvent]. - (anEvent at: '@type') = 'updateChatOrder' - ifTrue: [self chatsHandler updateChatOrder: anEvent]. - (anEvent at: '@type') = 'updateChatLastMessage' - ifTrue: [self chatsHandler updateLastMessage: anEvent]. + (anEvent at: '@type') caseOf: { + ['updateAuthorizationState'] -> [update := self authHandler handleEvent: anEvent]. + ['updateNewChat'] -> [self chatsHandler addChat: anEvent]. + ['updateChatOrder'] -> [self chatsHandler updateChatOrder: anEvent]. + ['updateChatLastMessage'] -> [self chatsHandler updateLastMessage: anEvent]. + ['messages'] -> [self chatsHandler chatHistoryReceived: anEvent]. + ['updateNewMessage'] -> [self chatsHandler handleNewMessage: anEvent]. + ['chat'] -> [self chatsHandler openNewChat: anEvent]} + otherwise: []. update isSymbol ifTrue: [self triggerEvent: update]. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCCore.class/instance/initializeHandlers.st b/packages/TelegramClient-Core.package/TCCCore.class/instance/initializeHandlers.st index 7ccd1ef60..e0328877e 100644 --- a/packages/TelegramClient-Core.package/TCCCore.class/instance/initializeHandlers.st +++ b/packages/TelegramClient-Core.package/TCCCore.class/instance/initializeHandlers.st @@ -2,5 +2,8 @@ initialization initializeHandlers self - authHandler: (TCCAuthHandler new app: self); - chatsHandler: (TCCChatsHandler new app: self). \ No newline at end of file + authHandler: (TCCAuthHandler new + app: self); + chatsHandler: (TCCChatsHandler new + app: self; + messageLimit: 15). \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCCore.class/instance/searchChat..st b/packages/TelegramClient-Core.package/TCCCore.class/instance/searchChat..st new file mode 100644 index 000000000..3420da51b --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCCore.class/instance/searchChat..st @@ -0,0 +1,4 @@ +accessing +searchChat: aUsername + + self chatsHandler searchChat: aUsername. \ 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 f01d0351f..f0efbad87 100644 --- a/packages/TelegramClient-Core.package/TCCCore.class/methodProperties.json +++ b/packages/TelegramClient-Core.package/TCCCore.class/methodProperties.json @@ -1,6 +1,6 @@ { "class" : { - "newTestApp" : "rs 6/14/2020 12:19" }, + }, "instance" : { "authHandler" : "R.S 5/20/2020 16:10", "authHandler:" : "R.S 5/20/2020 16:10", @@ -12,12 +12,14 @@ "checkAuthenticationCode:" : "js 5/31/2020 20:10", "client" : "R.S 5/20/2020 16:08", "client:" : "js 6/13/2020 19:10", - "handleEvent:" : "r.s 7/15/2020 19:20", + "getChatHistoryFrom:" : "j 7/16/2020 12:24", + "handleEvent:" : "j 7/16/2020 12:11", "initialize" : "js 6/13/2020 18:19", "initializeClient" : "js 6/13/2020 18:20", - "initializeHandlers" : "F.W. 6/13/2020 21:41", + "initializeHandlers" : "j 7/16/2020 11:42", "isClientAlive" : "js 5/28/2020 17:18", "receiveLoop" : "R.S 6/1/2020 15:24", + "searchChat:" : "f.w. 7/15/2020 22:53", "sendMessage:to:" : "rs 6/13/2020 15:26", "sendPhoneNumber:" : "js 6/13/2020 15:35", "update" : "js 6/13/2020 19:14" } } diff --git a/packages/TelegramClient-Core.package/TCCMessage.class/README.md b/packages/TelegramClient-Core.package/TCCMessage.class/README.md new file mode 100644 index 000000000..58a4b6401 --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCMessage.class/README.md @@ -0,0 +1 @@ +represantation of a single text message in a chat \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCMessage.class/instance/chatID..st b/packages/TelegramClient-Core.package/TCCMessage.class/instance/chatID..st new file mode 100644 index 000000000..014012231 --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCMessage.class/instance/chatID..st @@ -0,0 +1,4 @@ +accessing +chatID: aChatID + + chatID := aChatID. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCMessage.class/instance/chatID.st b/packages/TelegramClient-Core.package/TCCMessage.class/instance/chatID.st new file mode 100644 index 000000000..4f61bdd2d --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCMessage.class/instance/chatID.st @@ -0,0 +1,4 @@ +accessing +chatID + + ^chatID \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCMessage.class/instance/message..st b/packages/TelegramClient-Core.package/TCCMessage.class/instance/message..st new file mode 100644 index 000000000..fff1e343d --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCMessage.class/instance/message..st @@ -0,0 +1,4 @@ +accessing +message: aString + + message := aString \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCMessage.class/instance/message.st b/packages/TelegramClient-Core.package/TCCMessage.class/instance/message.st new file mode 100644 index 000000000..d808932ce --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCMessage.class/instance/message.st @@ -0,0 +1,4 @@ +accessing +message + + ^ message \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCMessage.class/instance/messageId..st b/packages/TelegramClient-Core.package/TCCMessage.class/instance/messageId..st new file mode 100644 index 000000000..037ef004a --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCMessage.class/instance/messageId..st @@ -0,0 +1,4 @@ +accessing +messageId: aMessageId + + messageId := aMessageId. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCMessage.class/instance/messageId.st b/packages/TelegramClient-Core.package/TCCMessage.class/instance/messageId.st new file mode 100644 index 000000000..e505c79f3 --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCMessage.class/instance/messageId.st @@ -0,0 +1,4 @@ +accessing +messageId + + ^messageId \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCMessage.class/instance/senderId..st b/packages/TelegramClient-Core.package/TCCMessage.class/instance/senderId..st new file mode 100644 index 000000000..29300a926 --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCMessage.class/instance/senderId..st @@ -0,0 +1,4 @@ +accessing +senderId: aNumber + + senderId := aNumber \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCMessage.class/instance/senderId.st b/packages/TelegramClient-Core.package/TCCMessage.class/instance/senderId.st new file mode 100644 index 000000000..4d3cb47a0 --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCMessage.class/instance/senderId.st @@ -0,0 +1,4 @@ +accessing +senderId + + ^ senderId \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCMessage.class/instance/senderName..st b/packages/TelegramClient-Core.package/TCCMessage.class/instance/senderName..st new file mode 100644 index 000000000..d49519986 --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCMessage.class/instance/senderName..st @@ -0,0 +1,4 @@ +accessing +senderName: aString + + senderName := aString \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCMessage.class/instance/senderName.st b/packages/TelegramClient-Core.package/TCCMessage.class/instance/senderName.st new file mode 100644 index 000000000..5834b8d7b --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCMessage.class/instance/senderName.st @@ -0,0 +1,4 @@ +accessing +senderName + + ^ senderName \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCMessage.class/methodProperties.json b/packages/TelegramClient-Core.package/TCCMessage.class/methodProperties.json new file mode 100644 index 000000000..7666f78e2 --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCMessage.class/methodProperties.json @@ -0,0 +1,14 @@ +{ + "class" : { + }, + "instance" : { + "chatID" : "j 7/16/2020 12:03", + "chatID:" : "j 7/16/2020 12:03", + "message" : "rs 6/29/2020 17:13", + "message:" : "rs 6/29/2020 17:13", + "messageId" : "j 7/16/2020 12:03", + "messageId:" : "f.w. 6/30/2020 15:18", + "senderId" : "rs 6/29/2020 17:13", + "senderId:" : "rs 6/29/2020 17:13", + "senderName" : "rs 6/29/2020 17:13", + "senderName:" : "rs 6/29/2020 17:13" } } diff --git a/packages/TelegramClient-Core.package/TCCMessage.class/properties.json b/packages/TelegramClient-Core.package/TCCMessage.class/properties.json new file mode 100644 index 000000000..442bbccb9 --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCMessage.class/properties.json @@ -0,0 +1,18 @@ +{ + "category" : "TelegramClient-Core", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "f.w. 6/29/2020 17:05", + "instvars" : [ + "message", + "senderId", + "senderName", + "chatID", + "messageId" ], + "name" : "TCCMessage", + "pools" : [ + ], + "super" : "Object", + "type" : "normal" } diff --git a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/isLineWithOnlyTabsAndSpaces..st b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/isLineWithOnlyTabsAndSpaces..st index 55336f45f..1707cf86b 100644 --- a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/isLineWithOnlyTabsAndSpaces..st +++ b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/isLineWithOnlyTabsAndSpaces..st @@ -1,4 +1,4 @@ tests isLineWithOnlyTabsAndSpaces: aString - ^ aString isEmpty not and: [aString allSatisfy: [:aChar | aChar = Character space or: [aChar = Character tab]]] \ No newline at end of file + ^ aString isEmpty or: [aString allSatisfy: [:aChar | aChar = Character space or: [aChar = Character tab]]] \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testMethodHasEmptyLine.st b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testMethodHasEmptyLine.st index 8602e3f35..6584a2708 100644 --- a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testMethodHasEmptyLine.st +++ b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testMethodHasEmptyLine.st @@ -2,4 +2,4 @@ tests testMethodHasEmptyLine "also rejects method with tabs or spaces in second line" - self methodsLinesDo: [:lines | self assert: (lines size < 2 or: [lines second isEmpty])]. \ No newline at end of file + self methodsLinesDo: [:lines | self assert: (lines size < 2 or: [self isLineWithOnlyTabsAndSpaces: lines second])]. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testMethodNoEmptyLineAtEnd.st b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testMethodNoEmptyLineAtEnd.st index 6cac868dc..f45b54241 100644 --- a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testMethodNoEmptyLineAtEnd.st +++ b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testMethodNoEmptyLineAtEnd.st @@ -1,4 +1,4 @@ tests testMethodNoEmptyLineAtEnd - self methodsLinesDo: [:lines | self assert: lines last isEmpty not]. \ No newline at end of file + self methodsLinesDo: [:lines | self assert: (self isLineWithOnlyTabsAndSpaces: lines last) not]. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testMethodNoLinesWithOnlyTabsAndSpaces.st b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testMethodNoLinesWithOnlyTabsAndSpaces.st deleted file mode 100644 index d038dfcb0..000000000 --- a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testMethodNoLinesWithOnlyTabsAndSpaces.st +++ /dev/null @@ -1,5 +0,0 @@ -tests -testMethodNoLinesWithOnlyTabsAndSpaces - - self methodsLinesDo: [:lines | - self assert: (lines allSatisfy: [:aLine | (self isLineWithOnlyTabsAndSpaces: aLine) not])]. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testMethodNoTrailingWhitespaces.st b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testMethodNoTrailingWhitespaces.st deleted file mode 100644 index e4ccfd0e7..000000000 --- a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testMethodNoTrailingWhitespaces.st +++ /dev/null @@ -1,5 +0,0 @@ -tests -testMethodNoTrailingWhitespaces - - self methodsLinesDo: [:lines | - self assert: (lines select: [:aLine | aLine isEmpty not and: [aLine last = Character space]]) isEmpty]. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTLinterTests.class/methodProperties.json b/packages/TelegramClient-Tests.package/TCTLinterTests.class/methodProperties.json index b9415a433..c7d55b286 100644 --- a/packages/TelegramClient-Tests.package/TCTLinterTests.class/methodProperties.json +++ b/packages/TelegramClient-Tests.package/TCTLinterTests.class/methodProperties.json @@ -10,18 +10,16 @@ "classes:" : "js 6/13/2020 11:38", "environmentFor:withRule:" : "js 6/13/2020 17:53", "initialize" : "js 6/13/2020 18:35", - "isLineWithOnlyTabsAndSpaces:" : "js 6/13/2020 16:03", + "isLineWithOnlyTabsAndSpaces:" : "j 7/16/2020 12:30", "methodTestObjects" : "js 6/13/2020 14:06", "methodsLinesDo:" : "js 6/13/2020 18:05", "testCorrectClassPrefix" : "js 6/13/2020 18:23", "testIfTrueReturnsRule" : "js 6/13/2020 18:35", "testInstanceVarAccess" : "js 6/13/2020 16:54", "testLongMethods" : "rs 6/25/2020 10:47", - "testMethodHasEmptyLine" : "js 6/13/2020 18:13", + "testMethodHasEmptyLine" : "j 7/16/2020 12:29", "testMethodNameIsLowerCase" : "js 6/13/2020 18:05", - "testMethodNoEmptyLineAtEnd" : "js 6/13/2020 18:05", - "testMethodNoLinesWithOnlyTabsAndSpaces" : "js 6/13/2020 18:06", - "testMethodNoTrailingWhitespaces" : "js 6/13/2020 18:06", + "testMethodNoEmptyLineAtEnd" : "j 7/16/2020 12:32", "testMethodNoTwoWhitespacesNextToEachOther" : "js 6/13/2020 18:56", "testMethodNotTooManyEmptyLines" : "js 6/13/2020 18:36", "testMethodParamsHaveMeaningFulNames" : "js 6/13/2020 19:09", diff --git a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/newChatSelected..st b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/newChatSelected..st index 79d398d59..26b5858a1 100644 --- a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/newChatSelected..st +++ b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/newChatSelected..st @@ -1,9 +1,13 @@ initialization newChatSelected: aChat + | messageListReversed | + messageListReversed := aChat messages reverse. self welcomeMessage hide. self inputBar show. self selectedChat: aChat. self messageListWindow show. - self messageListWindow displayChat: aChat. \ No newline at end of file + self messageListWindow displayChat: aChat. + 1 to: messageListReversed size do: [: x | + self messageListWindow addMessage: (messageListReversed at: x) message]. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatWindow.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUChatWindow.class/methodProperties.json index dc821eef4..1b861cc18 100644 --- a/packages/TelegramClient-UI.package/TCUChatWindow.class/methodProperties.json +++ b/packages/TelegramClient-UI.package/TCUChatWindow.class/methodProperties.json @@ -16,7 +16,7 @@ "inputBar:" : "rs 6/13/2020 10:38", "messageListWindow" : "rs 6/17/2020 19:12", "messageListWindow:" : "rs 6/17/2020 19:13", - "newChatSelected:" : "rs 6/17/2020 23:00", + "newChatSelected:" : "f.w. 7/16/2020 01:23", "selectedChat" : "rs 6/13/2020 09:11", "selectedChat:" : "rs 6/13/2020 09:11", "textInputField" : "rs 6/13/2020 10:41", diff --git a/packages/TelegramClient-UI.package/TCUChatsList.class/instance/chats..st b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/chats..st index eca26c6dd..2610f6ab3 100644 --- a/packages/TelegramClient-UI.package/TCUChatsList.class/instance/chats..st +++ b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/chats..st @@ -3,4 +3,5 @@ chats: aCollection chats := aCollection. self redrawItems. - chats when: #chatsListChanged send: #redrawItems to: self. \ No newline at end of file + chats when: #chatsListChanged send: #redrawItems to: self. + chats when: #openNewChat send: #openNewChat: to: self. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatsList.class/instance/handleMouseWheel..st b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/handleMouseWheel..st new file mode 100644 index 000000000..295a5b562 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/handleMouseWheel..st @@ -0,0 +1,7 @@ +accessing +handleMouseWheel: anEvent + + self maxHeight: (self owner position y). + + anEvent isWheelUp ifTrue: [self scrollUp]. + anEvent isWheelDown ifTrue: [self scrollDown]. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatsList.class/instance/maxHeight..st b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/maxHeight..st new file mode 100644 index 000000000..b3eea518d --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/maxHeight..st @@ -0,0 +1,4 @@ +accessing +maxHeight: aNumber + + maxHeight := aNumber. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatsList.class/instance/maxHeight.st b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/maxHeight.st new file mode 100644 index 000000000..b8333ad34 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/maxHeight.st @@ -0,0 +1,4 @@ +accessing +maxHeight + + ^maxHeight \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatsList.class/instance/openNewChat..st b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/openNewChat..st new file mode 100644 index 000000000..83d0caf92 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/openNewChat..st @@ -0,0 +1,4 @@ +accessing +openNewChat: aChat + + self triggerEvent: #openNewChat with: aChat. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatsList.class/instance/scrollDown.st b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/scrollDown.st new file mode 100644 index 000000000..5690923c7 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/scrollDown.st @@ -0,0 +1,4 @@ +accessing +scrollDown + + self position: self position - (0 @ 50). \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatsList.class/instance/scrollUp.st b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/scrollUp.st new file mode 100644 index 000000000..cfd68c2c2 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/scrollUp.st @@ -0,0 +1,5 @@ +accessing +scrollUp + + self position y >= self maxHeight ifFalse:[ + self position: self position + (0 @ 50).]. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatsList.class/instance/setToTop.st b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/setToTop.st new file mode 100644 index 000000000..81a377900 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/setToTop.st @@ -0,0 +1,4 @@ +accessing +setToTop + + self position: (self position x)@(self owner position y + self owner defaultHeaderHeight). \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatsList.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUChatsList.class/methodProperties.json index b9a6a0698..326ecd493 100644 --- a/packages/TelegramClient-UI.package/TCUChatsList.class/methodProperties.json +++ b/packages/TelegramClient-UI.package/TCUChatsList.class/methodProperties.json @@ -2,15 +2,22 @@ "class" : { }, "instance" : { - "chatItemClicked:event:from:" : "rs 6/17/2020 23:04", + "chatItemClicked:event:from:" : "f.w. 6/26/2020 15:19", "chats" : "rs 6/17/2020 22:38", - "chats:" : "rs 6/22/2020 17:01", + "chats:" : "f.w. 7/15/2020 23:57", "clearItems" : "rs 6/17/2020 22:39", "defaultWidth" : "R.S 6/1/2020 14:24", - "initialize" : "rs 6/17/2020 22:31", + "handleMouseWheel:" : "r.s 7/15/2020 15:09", + "initialize" : "f.w. 7/12/2020 04:29", "initializeLayout" : "js 6/13/2020 18:49", "items" : "js 6/13/2020 14:14", "items:" : "js 6/13/2020 19:09", - "redrawItems" : "rs 6/25/2020 10:36", + "maxHeight" : "f.w. 7/12/2020 00:10", + "maxHeight:" : "f.w. 7/12/2020 04:56", + "openNewChat:" : "f.w. 7/16/2020 00:02", + "redrawItems" : "f.w. 7/12/2020 04:42", + "scrollDown" : "f.w. 7/12/2020 04:14", + "scrollUp" : "f.w. 7/12/2020 22:06", "selectedChat" : "rs 6/13/2020 08:51", - "selectedChat:" : "rs 6/17/2020 22:25" } } + "selectedChat:" : "rs 6/17/2020 22:25", + "setToTop" : "f.w. 7/12/2020 22:15" } } diff --git a/packages/TelegramClient-UI.package/TCUChatsList.class/properties.json b/packages/TelegramClient-UI.package/TCUChatsList.class/properties.json index f69fbe4df..eb76ad4da 100644 --- a/packages/TelegramClient-UI.package/TCUChatsList.class/properties.json +++ b/packages/TelegramClient-UI.package/TCUChatsList.class/properties.json @@ -8,7 +8,8 @@ "instvars" : [ "items", "selectedChat", - "chats" ], + "chats", + "maxHeight" ], "name" : "TCUChatsList", "pools" : [ ], diff --git a/packages/TelegramClient-UI.package/TCUMain.class/instance/addHeader.st b/packages/TelegramClient-UI.package/TCUMain.class/instance/addHeader.st index 4c68af6e9..80c24d733 100644 --- a/packages/TelegramClient-UI.package/TCUMain.class/instance/addHeader.st +++ b/packages/TelegramClient-UI.package/TCUMain.class/instance/addHeader.st @@ -12,4 +12,6 @@ addHeader addMorph: header; addTitle: 'Telegram' to: header; addLogoutButtonTo: header withSpacing: 5; - addCloseButtonTo: header withSpacing: 5. \ No newline at end of file + addCloseButtonTo: header withSpacing: 5; + "addInputFieldTo: header withSpacing: 5;" + addNewChatButtonTo: header withSpacing: 5. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMain.class/instance/addInputFieldTo.withSpacing..st b/packages/TelegramClient-UI.package/TCUMain.class/instance/addInputFieldTo.withSpacing..st new file mode 100644 index 000000000..f7837899c --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUMain.class/instance/addInputFieldTo.withSpacing..st @@ -0,0 +1,15 @@ +defaultValues +addInputFieldTo: aMorph withSpacing: aSpacing + + | inputField | + + inputField := TextMorph new + "contentsWrapped: 'search';" + contents: 'search'; + borderColor: TCUDefaultValues colorLightGray; + color: TCUDefaultValues colorLightGray; + borderWidth: 1. + inputField position: (aMorph position x + 170 + aSpacing) @ aSpacing. + inputField crAction: [self core searchChat: inputField text]. + + aMorph addMorph: inputField. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMain.class/instance/addNewChatButtonTo.withSpacing..st b/packages/TelegramClient-UI.package/TCUMain.class/instance/addNewChatButtonTo.withSpacing..st new file mode 100644 index 000000000..8e552f9b1 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUMain.class/instance/addNewChatButtonTo.withSpacing..st @@ -0,0 +1,12 @@ +initialization +addNewChatButtonTo: aMorph withSpacing: aSpacing + + | newChatButton | + + newChatButton := TCUButton new + text: '+ Chat'; + on: #mouseUp send: #newChatButtonClicked to: self. + newChatButton text color: Color white. + newChatButton position: (aMorph position x + newChatButton width + (4 * aSpacing)) @ aSpacing. + + aMorph addMorph: newChatButton. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMain.class/instance/getChatHistoryFrom..st b/packages/TelegramClient-UI.package/TCUMain.class/instance/getChatHistoryFrom..st new file mode 100644 index 000000000..0bcde441c --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUMain.class/instance/getChatHistoryFrom..st @@ -0,0 +1,4 @@ +initialization +getChatHistoryFrom: aChat + + self core getChatHistoryFrom: aChat id. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMain.class/instance/initialize.st b/packages/TelegramClient-UI.package/TCUMain.class/instance/initialize.st index a846ca233..4ed2a3215 100644 --- a/packages/TelegramClient-UI.package/TCUMain.class/instance/initialize.st +++ b/packages/TelegramClient-UI.package/TCUMain.class/instance/initialize.st @@ -5,9 +5,9 @@ initialize self extent: self defaultExtent; borderWidth: 0; - addHeader; chatWindow: TCUChatWindow new; addChatsList; + addHeader; initializeChatWindow; subscribeChatsList; clipSubmorphs: true. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMain.class/instance/newChatButtonClicked.st b/packages/TelegramClient-UI.package/TCUMain.class/instance/newChatButtonClicked.st new file mode 100644 index 000000000..d290ead60 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUMain.class/instance/newChatButtonClicked.st @@ -0,0 +1,16 @@ +initialization +newChatButtonClicked + + | inputField modal | + modal := (TCUModal newWithText: 'Create new Chat with Handle: ' type: 'information'). + inputField := TextMorph new + contentsWrapped: 'search...'; + backgroundColor: Color white; + borderWidth: 2; + extent: 200 @ 50; + borderColor: TCUDefaultValues colorLightBlue. + inputField crAction: [self core searchChat: inputField text. modal delete]. + + modal + addMorphCentered: inputField; + openCenteredInWorld. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMain.class/instance/subscribeChatsList.st b/packages/TelegramClient-UI.package/TCUMain.class/instance/subscribeChatsList.st index 0efe62ecf..1816b10b2 100644 --- a/packages/TelegramClient-UI.package/TCUMain.class/instance/subscribeChatsList.st +++ b/packages/TelegramClient-UI.package/TCUMain.class/instance/subscribeChatsList.st @@ -3,4 +3,6 @@ subscribeChatsList self chatsList when: #chatDeselected send: #clear to: self chatWindow; - when: #newChatSelected send: #newChatSelected: to: self chatWindow. \ No newline at end of file + when: #newChatSelected send: #newChatSelected: to: self chatWindow; + when: #newChatSelected send: #getChatHistoryFrom: to: self; + when: #openNewChat send: #newChatSelected: to: self. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMain.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUMain.class/methodProperties.json index a2d179612..c47b68f1b 100644 --- a/packages/TelegramClient-UI.package/TCUMain.class/methodProperties.json +++ b/packages/TelegramClient-UI.package/TCUMain.class/methodProperties.json @@ -4,8 +4,10 @@ "instance" : { "addChatsList" : "rs 6/17/2020 22:54", "addCloseButtonTo:withSpacing:" : "LL 7/15/2020 19:36", - "addHeader" : "LL 7/14/2020 14:43", - "addLogoutButtonTo:withSpacing:" : "LL 7/15/2020 19:01", + "addHeader" : "r.s 7/16/2020 08:56", + "addInputFieldTo:withSpacing:" : "j 7/16/2020 12:27", + "addLogoutButtonTo:withSpacing:" : "f.w. 7/16/2020 01:12", + "addNewChatButtonTo:withSpacing:" : "r.s 7/16/2020 08:59", "addTitle:to:" : "js 6/13/2020 18:57", "chatWindow" : "R.S 6/1/2020 14:27", "chatWindow:" : "R.S 6/1/2020 14:27", @@ -17,9 +19,11 @@ "defaultExtent" : "R.S 6/1/2020 14:27", "defaultHeaderHeight" : "R.S 6/1/2020 14:27", "delete" : "R.S 6/3/2020 20:54", - "initialize" : "rs 6/22/2020 16:59", + "getChatHistoryFrom:" : "j 7/16/2020 12:05", + "initialize" : "f.w. 7/12/2020 21:51", "initializeChatWindow" : "js 6/13/2020 18:54", "logout" : "js 6/13/2020 18:11", - "newChatSelected:" : "rs 6/13/2020 15:38", + "newChatButtonClicked" : "j 7/16/2020 12:28", + "newChatSelected:" : "f.w. 7/16/2020 00:02", "sendMessage:" : "rs 6/17/2020 21:19", - "subscribeChatsList" : "rs 6/17/2020 22:18" } } + "subscribeChatsList" : "f.w. 7/15/2020 23:55" } } diff --git a/packages/TelegramClient-UI.package/TCUModal.class/README.md b/packages/TelegramClient-UI.package/TCUModal.class/README.md new file mode 100644 index 000000000..451cda239 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUModal.class/README.md @@ -0,0 +1 @@ +This class creates a PopUp window for errors or information \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUModal.class/class/newWithText.type..st b/packages/TelegramClient-UI.package/TCUModal.class/class/newWithText.type..st new file mode 100644 index 000000000..d8c6b4df6 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUModal.class/class/newWithText.type..st @@ -0,0 +1,7 @@ +instance creation +newWithText: aString type: aType + + ^ self basicNew + text: aString; + type: aType; + initialize \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUModal.class/instance/defaultHeight.st b/packages/TelegramClient-UI.package/TCUModal.class/instance/defaultHeight.st new file mode 100644 index 000000000..aa872c6cb --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUModal.class/instance/defaultHeight.st @@ -0,0 +1,4 @@ +defaultValues +defaultHeight + + ^ 280 \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUModal.class/instance/defaultWidth.st b/packages/TelegramClient-UI.package/TCUModal.class/instance/defaultWidth.st new file mode 100644 index 000000000..26845516e --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUModal.class/instance/defaultWidth.st @@ -0,0 +1,4 @@ +defaultValues +defaultWidth + + ^ 520 \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUModal.class/instance/initialize.st b/packages/TelegramClient-UI.package/TCUModal.class/instance/initialize.st new file mode 100644 index 000000000..787728713 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUModal.class/instance/initialize.st @@ -0,0 +1,14 @@ +initialization +initialize + + super initialize. + + self + width: self defaultWidth; + height: self defaultHeight; + borderWidth: 1; + borderColor: TCUDefaultValues colorLightBlue; + setColor; + useRoundedCorners. + + self setText. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUModal.class/instance/setColor.st b/packages/TelegramClient-UI.package/TCUModal.class/instance/setColor.st new file mode 100644 index 000000000..1030c888f --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUModal.class/instance/setColor.st @@ -0,0 +1,5 @@ +initialization +setColor + + self type = 'information' ifTrue: [self color: Color white]. + self type = 'error' ifTrue: [self color: Color lightRed]. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUModal.class/instance/setText.st b/packages/TelegramClient-UI.package/TCUModal.class/instance/setText.st new file mode 100644 index 000000000..5ffe89879 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUModal.class/instance/setText.st @@ -0,0 +1,7 @@ +initialization +setText + + self addMorph: (TextMorph new + contents: self text; + lock; + center: (self position + ((self width / 2) @ 20))). \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUModal.class/instance/text..st b/packages/TelegramClient-UI.package/TCUModal.class/instance/text..st new file mode 100644 index 000000000..fdea2e4c0 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUModal.class/instance/text..st @@ -0,0 +1,4 @@ +accessing +text: aString + + text := aString. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUModal.class/instance/text.st b/packages/TelegramClient-UI.package/TCUModal.class/instance/text.st new file mode 100644 index 000000000..c9bb36307 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUModal.class/instance/text.st @@ -0,0 +1,4 @@ +accessing +text + + ^ text \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUModal.class/instance/type..st b/packages/TelegramClient-UI.package/TCUModal.class/instance/type..st new file mode 100644 index 000000000..281175107 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUModal.class/instance/type..st @@ -0,0 +1,5 @@ +accessing +type: aString + + "Type should be of: {information, error}" + type := aString. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUModal.class/instance/type.st b/packages/TelegramClient-UI.package/TCUModal.class/instance/type.st new file mode 100644 index 000000000..95c8cb06f --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUModal.class/instance/type.st @@ -0,0 +1,4 @@ +accessing +type + + ^ type \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUModal.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUModal.class/methodProperties.json new file mode 100644 index 000000000..7ec3bf919 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUModal.class/methodProperties.json @@ -0,0 +1,13 @@ +{ + "class" : { + "newWithText:type:" : "r.s 7/16/2020 09:07" }, + "instance" : { + "defaultHeight" : "r.s 7/16/2020 09:04", + "defaultWidth" : "r.s 7/16/2020 09:04", + "initialize" : "r.s 7/16/2020 09:36", + "setColor" : "r.s 7/16/2020 09:17", + "setText" : "r.s 7/16/2020 09:14", + "text" : "r.s 7/16/2020 09:09", + "text:" : "r.s 7/16/2020 09:09", + "type" : "r.s 7/16/2020 09:09", + "type:" : "r.s 7/16/2020 09:35" } } diff --git a/packages/TelegramClient-UI.package/TCUModal.class/properties.json b/packages/TelegramClient-UI.package/TCUModal.class/properties.json new file mode 100644 index 000000000..031bb927f --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUModal.class/properties.json @@ -0,0 +1,15 @@ +{ + "category" : "TelegramClient-UI", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "r.s 7/16/2020 09:34", + "instvars" : [ + "text", + "type" ], + "name" : "TCUModal", + "pools" : [ + ], + "super" : "RectangleMorph", + "type" : "normal" } From 37432933dd7d838fc676b3db92bde3eaea9ee224 Mon Sep 17 00:00:00 2001 From: Lasklu <49564344+Lasklu@users.noreply.github.com> Date: Thu, 16 Jul 2020 13:32:11 +0200 Subject: [PATCH 28/81] Added a default Timeout (#187) --- .smalltalk.ston | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.smalltalk.ston b/.smalltalk.ston index 8b2eab54f..daed237d2 100644 --- a/.smalltalk.ston +++ b/.smalltalk.ston @@ -15,6 +15,7 @@ SmalltalkCISpec { }, #exclude : { #classes : [ #TCTLinterTests ] - } + }, + #defaultTimeout : 60 } } From b7753780eb76bd75bd16d5f295bd431745ecaba5 Mon Sep 17 00:00:00 2001 From: Rohan Sawahn <49531442+rohansaw@users.noreply.github.com> Date: Fri, 17 Jul 2020 10:57:04 +0200 Subject: [PATCH 29/81] Displaying Notifications and Received Messages (#194) * wip receive messages * wip receives chat history on click on chat * Can now receive incoming Messages. Added Message Object which will be stored in message list of a chat. This works already for incoming new messages * Now only adding TextMessages to message List. Other types of incoming Messages will be handled later * Now Every Chat contains a LastMessage attribute that is updated when a new message is received. Only need to display this in the UI next. * always loads first 15 messages from chat on click if not already loaded * loads 15 newest chat history messages and adds new incoming messages on first place of the list so that the first place in chat messages list is always the newest message * fixed error with other message types than text like images by skipping them * removed unnecessary code * Now displaying last Message in ChatsList * UI could now display messages. But we should load 15 last messages from all chats on startup to make the UI work * Push notifications woking, only need better placement on screen, maybe offsett? * Better positioning added. * Transcript output * fadeOut animation added * added userId to core on authorization * removed transcript show commands * fixed error handling for weird error that updateLastMessage message is empty * Added Notifications * fixed AddUser missing * Better description for message Sending * fixed errors * Added Tests for Logout and MessageSending * increases TestTimeout * fixed linting errors * Updated .github * Readded smalltalk.lint.ston * naming error, added a dot to name * space is missing which has triggered me a lot * Update README.md Co-authored-by: Frederik Wollny Co-authored-by: Jonas Schmidt Co-authored-by: Lasklu <49564344+Lasklu@users.noreply.github.com> --- .github/workflows/main.yml | 2 +- .smalltalk.lint.ston | 1 - .../instance/addChat..st | 3 +- .../instance/addNewMessage..st | 11 ++++---- .../instance/updateLastMessage..st | 28 +++++++++++-------- .../methodProperties.json | 8 +++--- .../TCCCore.class/instance/handleEvent..st | 1 + .../TCCCore.class/instance/initialize.st | 3 +- .../TCCCore.class/instance/loggedInUserID..st | 4 +++ .../TCCCore.class/instance/loggedInUserID.st | 4 +++ .../TCCCore.class/instance/setUserID..st | 7 +++++ .../TCCCore.class/methodProperties.json | 9 ++++-- .../TCCCore.class/properties.json | 3 +- .../TCCNullChat.class/instance/messages.st | 4 +++ .../TCCNullChat.class/methodProperties.json | 3 +- .../TCTLoggedInTests.class/instance/setUp.st | 3 +- .../instance/tearDown.st | 2 +- .../instance/testLogout.st | 6 ++++ .../instance/testMessageSending.st | 12 ++++++++ .../methodProperties.json | 6 ++-- .../class/newWithChat.andWidth..st | 1 + .../instance/addLastMessage.st | 10 +++++++ .../instance/addTitle.st | 5 +++- .../instance/defaultHeight.st | 2 +- .../methodProperties.json | 7 +++-- .../instance/initialize.st | 2 +- .../instance/initializeMessages..st | 4 +++ .../methodProperties.json | 1 + .../instance/initialize.st | 3 +- .../TCUChatWindow.class/methodProperties.json | 4 +-- .../TCUMain.class/instance/core..st | 3 +- .../instance/newChatButtonClicked.st | 4 +-- .../instance/newMessageReceived..st | 5 ++++ .../TCUMain.class/methodProperties.json | 5 ++-- .../TCUMessage.class/class/newWithText..st | 2 +- .../TCUMessage.class/methodProperties.json | 2 +- .../TCUNotification.class/README.md | 1 + .../class/newWithMessage..st | 6 ++++ .../instance/addTextLabel.st | 9 ++++++ .../instance/calculatePosition.st | 4 +++ .../TCUNotification.class/instance/chatID..st | 4 +++ .../TCUNotification.class/instance/chatID.st | 4 +++ .../instance/defaultHeight.st | 4 +++ .../instance/defaultOffset.st | 4 +++ .../instance/defaultWidth.st | 4 +++ .../instance/initialize.st | 11 ++++++++ .../instance/initializeDefaults.st | 11 ++++++++ .../instance/startTimeOut.st | 5 ++++ .../TCUNotification.class/instance/text..st | 4 +++ .../TCUNotification.class/instance/text.st | 4 +++ .../methodProperties.json | 16 +++++++++++ .../TCUNotification.class/properties.json | 15 ++++++++++ 52 files changed, 236 insertions(+), 50 deletions(-) create mode 100644 packages/TelegramClient-Core.package/TCCCore.class/instance/loggedInUserID..st create mode 100644 packages/TelegramClient-Core.package/TCCCore.class/instance/loggedInUserID.st create mode 100644 packages/TelegramClient-Core.package/TCCCore.class/instance/setUserID..st create mode 100644 packages/TelegramClient-Core.package/TCCNullChat.class/instance/messages.st create mode 100644 packages/TelegramClient-Tests.package/TCTLoggedInTests.class/instance/testLogout.st create mode 100644 packages/TelegramClient-Tests.package/TCTLoggedInTests.class/instance/testMessageSending.st create mode 100644 packages/TelegramClient-UI.package/TCUChatListItem.class/instance/addLastMessage.st create mode 100644 packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/initializeMessages..st create mode 100644 packages/TelegramClient-UI.package/TCUMain.class/instance/newMessageReceived..st create mode 100644 packages/TelegramClient-UI.package/TCUNotification.class/README.md create mode 100644 packages/TelegramClient-UI.package/TCUNotification.class/class/newWithMessage..st create mode 100644 packages/TelegramClient-UI.package/TCUNotification.class/instance/addTextLabel.st create mode 100644 packages/TelegramClient-UI.package/TCUNotification.class/instance/calculatePosition.st create mode 100644 packages/TelegramClient-UI.package/TCUNotification.class/instance/chatID..st create mode 100644 packages/TelegramClient-UI.package/TCUNotification.class/instance/chatID.st create mode 100644 packages/TelegramClient-UI.package/TCUNotification.class/instance/defaultHeight.st create mode 100644 packages/TelegramClient-UI.package/TCUNotification.class/instance/defaultOffset.st create mode 100644 packages/TelegramClient-UI.package/TCUNotification.class/instance/defaultWidth.st create mode 100644 packages/TelegramClient-UI.package/TCUNotification.class/instance/initialize.st create mode 100644 packages/TelegramClient-UI.package/TCUNotification.class/instance/initializeDefaults.st create mode 100644 packages/TelegramClient-UI.package/TCUNotification.class/instance/startTimeOut.st create mode 100644 packages/TelegramClient-UI.package/TCUNotification.class/instance/text..st create mode 100644 packages/TelegramClient-UI.package/TCUNotification.class/instance/text.st create mode 100644 packages/TelegramClient-UI.package/TCUNotification.class/methodProperties.json create mode 100644 packages/TelegramClient-UI.package/TCUNotification.class/properties.json diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index f8d4fd923..81dfb2e38 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -16,7 +16,7 @@ jobs: strategy: matrix: # Select platform(s) - os: [ ubuntu-latest] + os: [ ubuntu-latest ] # Select compatible Smalltalk image(s) # currently not running on Squeak64-trunk smalltalk: [ Squeak64-5.3, Squeak64-5.2 ] diff --git a/.smalltalk.lint.ston b/.smalltalk.lint.ston index a51b9eb65..a31fd86b6 100644 --- a/.smalltalk.lint.ston +++ b/.smalltalk.lint.ston @@ -1,4 +1,3 @@ - SmalltalkCISpec { #loading : [ SCIMetacelloLoadSpec { diff --git a/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/addChat..st b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/addChat..st index 5c775099b..0e9fd8e43 100644 --- a/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/addChat..st +++ b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/addChat..st @@ -6,7 +6,8 @@ addChat: aChatEvent chat := TCCChat new id: ((aChatEvent at: 'chat') at: 'id'); title: ((aChatEvent at: 'chat') at: 'title'); - order: ((aChatEvent at: 'chat') at: 'order'). + order: ((aChatEvent at: 'chat') at: 'order'); + lastMessage: ''. self app chats add: chat; diff --git a/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/addNewMessage..st b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/addNewMessage..st index f431286fa..bc6944487 100644 --- a/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/addNewMessage..st +++ b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/addNewMessage..st @@ -1,12 +1,13 @@ events addNewMessage: anEvent - | message | - - message := (TCCMessage new + | aMessage | + + aMessage := (TCCMessage new message: ((((anEvent at: 'message') at: 'content') at: 'text') at: 'text'); senderId: (((anEvent at: 'message') at: 'sender_user_id')); chatID: ((anEvent at: 'message') at: 'chat_id'); messageId: ((anEvent at: 'message') at: 'id')). - - (self app chats getChat: ((anEvent at: 'message') at: 'chat_id')) messages addFirst: message. \ No newline at end of file + + (self app chats getChat: ((anEvent at: 'message') at: 'chat_id')) messages addFirst: aMessage. + self app triggerEvent: #newMessageReceived with: aMessage. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/updateLastMessage..st b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/updateLastMessage..st index 325b3ef4d..a39f8a9c0 100644 --- a/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/updateLastMessage..st +++ b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/updateLastMessage..st @@ -1,15 +1,19 @@ events updateLastMessage: anEvent - + | content chat | - - content := ((anEvent at: 'last_message') at: 'content'). - chat := (self app chats getChat: (anEvent at: 'chat_id')). - chat order: (anEvent at: 'order'). - - (content at: '@type') = 'messageText' ifTrue: [chat lastMessage: ((content at: 'text') at: 'text')]. - (content at: '@type') = 'messagePhoto' ifTrue: [chat lastMessage: 'A Photo']. - - self app chats - reSort; - triggerEvent: #chatsListChanged. \ No newline at end of file + + ((anEvent at: 'last_message') isNil not) ifTrue: [ + content := ((anEvent at: 'last_message') at: 'content'). + chat := (self app chats getChat: (anEvent at: 'chat_id')). + chat order: (anEvent at: 'order'). + + (content at: '@type') = 'messageText' + ifTrue: [chat lastMessage: ((content at: 'text') at: 'text')] + ifFalse: [(content at: '@type') = 'messagePhoto' + ifTrue: [chat lastMessage: 'A photo'] + ifFalse: [chat lastMessage: 'A file']]. + + self app chats + reSort; + triggerEvent: #chatsListChanged]. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCChatsHandler.class/methodProperties.json b/packages/TelegramClient-Core.package/TCCChatsHandler.class/methodProperties.json index 162cdf5c6..b482b3b00 100644 --- a/packages/TelegramClient-Core.package/TCCChatsHandler.class/methodProperties.json +++ b/packages/TelegramClient-Core.package/TCCChatsHandler.class/methodProperties.json @@ -2,11 +2,11 @@ "class" : { }, "instance" : { - "addChat:" : "rs 6/25/2020 10:48", - "addNewMessage:" : "j 7/16/2020 12:06", + "addChat:" : "rs 7/4/2020 18:48", + "addNewMessage:" : "rs 7/5/2020 14:24", "app" : "js 6/1/2020 14:44", "app:" : "js 6/1/2020 14:45", - "chatHistoryReceived:" : "j 7/16/2020 12:17", + "chatHistoryReceived:" : "j 7/16/2020 13:29", "client" : "js 6/1/2020 14:44", "getChatHistoryFrom:with:and:" : "f.w. 6/30/2020 16:17", "getChats" : "rs 6/6/2020 16:36", @@ -17,4 +17,4 @@ "searchChat:" : "f.w. 7/15/2020 22:53", "sendMessage:to:" : "j 7/16/2020 12:32", "updateChatOrder:" : "rs 6/25/2020 10:58", - "updateLastMessage:" : "j 7/16/2020 12:05" } } + "updateLastMessage:" : "r.s 7/7/2020 13:53" } } diff --git a/packages/TelegramClient-Core.package/TCCCore.class/instance/handleEvent..st b/packages/TelegramClient-Core.package/TCCCore.class/instance/handleEvent..st index f58c84e0f..e35f50bca 100644 --- a/packages/TelegramClient-Core.package/TCCCore.class/instance/handleEvent..st +++ b/packages/TelegramClient-Core.package/TCCCore.class/instance/handleEvent..st @@ -12,6 +12,7 @@ handleEvent: anEvent ['updateChatLastMessage'] -> [self chatsHandler updateLastMessage: anEvent]. ['messages'] -> [self chatsHandler chatHistoryReceived: anEvent]. ['updateNewMessage'] -> [self chatsHandler handleNewMessage: anEvent]. + ['updateUser'] -> [self setUserID: anEvent]. ['chat'] -> [self chatsHandler openNewChat: anEvent]} otherwise: []. diff --git a/packages/TelegramClient-Core.package/TCCCore.class/instance/initialize.st b/packages/TelegramClient-Core.package/TCCCore.class/instance/initialize.st index 245df75fa..b2dd86669 100644 --- a/packages/TelegramClient-Core.package/TCCCore.class/instance/initialize.st +++ b/packages/TelegramClient-Core.package/TCCCore.class/instance/initialize.st @@ -4,6 +4,7 @@ initialize self initializeClient; initializeHandlers; - chats: TCCChats new. + chats: TCCChats new; + loggedInUserID: 0. [self receiveLoop] fork. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCCore.class/instance/loggedInUserID..st b/packages/TelegramClient-Core.package/TCCCore.class/instance/loggedInUserID..st new file mode 100644 index 000000000..9b83bb4a5 --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCCore.class/instance/loggedInUserID..st @@ -0,0 +1,4 @@ +accessing +loggedInUserID: aNumber + + loggedInUserID := aNumber. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCCore.class/instance/loggedInUserID.st b/packages/TelegramClient-Core.package/TCCCore.class/instance/loggedInUserID.st new file mode 100644 index 000000000..f8dbff11a --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCCore.class/instance/loggedInUserID.st @@ -0,0 +1,4 @@ +accessing +loggedInUserID + + ^ loggedInUserID \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCCore.class/instance/setUserID..st b/packages/TelegramClient-Core.package/TCCCore.class/instance/setUserID..st new file mode 100644 index 000000000..c12e1bb40 --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCCore.class/instance/setUserID..st @@ -0,0 +1,7 @@ +accessing +setUserID: anUser + + | userID | + self loggedInUserID = 0 ifTrue: [ + userID := (anUser at: 'user') at: 'id'. + self loggedInUserID: userID]. \ 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 f0efbad87..245e8ab52 100644 --- a/packages/TelegramClient-Core.package/TCCCore.class/methodProperties.json +++ b/packages/TelegramClient-Core.package/TCCCore.class/methodProperties.json @@ -4,7 +4,7 @@ "instance" : { "authHandler" : "R.S 5/20/2020 16:10", "authHandler:" : "R.S 5/20/2020 16:10", - "authSucceeded" : "rs 6/8/2020 14:13", + "authSucceeded" : "rs 7/5/2020 14:48", "chats" : "R.S 6/1/2020 15:34", "chats:" : "R.S 6/1/2020 15:34", "chatsHandler" : "rs 6/7/2020 21:50", @@ -13,13 +13,16 @@ "client" : "R.S 5/20/2020 16:08", "client:" : "js 6/13/2020 19:10", "getChatHistoryFrom:" : "j 7/16/2020 12:24", - "handleEvent:" : "j 7/16/2020 12:11", - "initialize" : "js 6/13/2020 18:19", + "handleEvent:" : "r.s 7/16/2020 13:05", + "initialize" : "rs 7/5/2020 15:12", "initializeClient" : "js 6/13/2020 18:20", "initializeHandlers" : "j 7/16/2020 11:42", "isClientAlive" : "js 5/28/2020 17:18", + "loggedInUserID" : "rs 7/5/2020 14:48", + "loggedInUserID:" : "rs 7/5/2020 14:48", "receiveLoop" : "R.S 6/1/2020 15:24", "searchChat:" : "f.w. 7/15/2020 22:53", "sendMessage:to:" : "rs 6/13/2020 15:26", "sendPhoneNumber:" : "js 6/13/2020 15:35", + "setUserID:" : "f.w. 7/6/2020 16:16", "update" : "js 6/13/2020 19:14" } } diff --git a/packages/TelegramClient-Core.package/TCCCore.class/properties.json b/packages/TelegramClient-Core.package/TCCCore.class/properties.json index 99d92f702..b171ad5e0 100644 --- a/packages/TelegramClient-Core.package/TCCCore.class/properties.json +++ b/packages/TelegramClient-Core.package/TCCCore.class/properties.json @@ -9,7 +9,8 @@ "client", "authHandler", "chatsHandler", - "chats" ], + "chats", + "loggedInUserID" ], "name" : "TCCCore", "pools" : [ ], diff --git a/packages/TelegramClient-Core.package/TCCNullChat.class/instance/messages.st b/packages/TelegramClient-Core.package/TCCNullChat.class/instance/messages.st new file mode 100644 index 000000000..60b7b3064 --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCNullChat.class/instance/messages.st @@ -0,0 +1,4 @@ +accessing +messages + + ^ OrderedCollection new \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCNullChat.class/methodProperties.json b/packages/TelegramClient-Core.package/TCCNullChat.class/methodProperties.json index 8562507cc..06e86a369 100644 --- a/packages/TelegramClient-Core.package/TCCNullChat.class/methodProperties.json +++ b/packages/TelegramClient-Core.package/TCCNullChat.class/methodProperties.json @@ -2,4 +2,5 @@ "class" : { }, "instance" : { - "id" : "rs 6/17/2020 22:31" } } + "id" : "rs 6/17/2020 22:31", + "messages" : "rs 7/4/2020 19:17" } } diff --git a/packages/TelegramClient-Tests.package/TCTLoggedInTests.class/instance/setUp.st b/packages/TelegramClient-Tests.package/TCTLoggedInTests.class/instance/setUp.st index 25f687445..d7f086b9c 100644 --- a/packages/TelegramClient-Tests.package/TCTLoggedInTests.class/instance/setUp.st +++ b/packages/TelegramClient-Tests.package/TCTLoggedInTests.class/instance/setUp.st @@ -1,6 +1,7 @@ running setUp - + + self timeout: 20. self core: TCTTestCore new. 1 seconds wait. self core authHandler isAuthorizationStateReady ifFalse: [self core loginWithTestData. diff --git a/packages/TelegramClient-Tests.package/TCTLoggedInTests.class/instance/tearDown.st b/packages/TelegramClient-Tests.package/TCTLoggedInTests.class/instance/tearDown.st index c5bb8da1e..c87b2af04 100644 --- a/packages/TelegramClient-Tests.package/TCTLoggedInTests.class/instance/tearDown.st +++ b/packages/TelegramClient-Tests.package/TCTLoggedInTests.class/instance/tearDown.st @@ -1,4 +1,4 @@ running tearDown - self core client free. \ No newline at end of file + self core client specificClient isNil ifFalse: [self core client free]. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTLoggedInTests.class/instance/testLogout.st b/packages/TelegramClient-Tests.package/TCTLoggedInTests.class/instance/testLogout.st new file mode 100644 index 000000000..83b782a2e --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTLoggedInTests.class/instance/testLogout.st @@ -0,0 +1,6 @@ +testing +testLogout + + self core authHandler logout. + 10 seconds wait. + self assert: self core authHandler isAuthStateClosed. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTLoggedInTests.class/instance/testMessageSending.st b/packages/TelegramClient-Tests.package/TCTLoggedInTests.class/instance/testMessageSending.st new file mode 100644 index 000000000..905399eee --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTLoggedInTests.class/instance/testMessageSending.st @@ -0,0 +1,12 @@ +testing +testMessageSending + + | testChatMessages | + + self core sendMessage: 'TestMessage' to: self core loggedInUserID. + 10 seconds wait. + + testChatMessages := (self core chats getChat: self core loggedInUserID) messages. + self assert: (testChatMessages contains: [:aMessage | + (aMessage message = 'TestMessage') and: + (aMessage chatID = self core loggedInUserID)]). \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTLoggedInTests.class/methodProperties.json b/packages/TelegramClient-Tests.package/TCTLoggedInTests.class/methodProperties.json index d7ce0c606..f594517c9 100644 --- a/packages/TelegramClient-Tests.package/TCTLoggedInTests.class/methodProperties.json +++ b/packages/TelegramClient-Tests.package/TCTLoggedInTests.class/methodProperties.json @@ -4,5 +4,7 @@ "instance" : { "core" : "r.s 7/15/2020 18:46", "core:" : "r.s 7/15/2020 18:46", - "setUp" : "r.s 7/15/2020 18:44", - "tearDown" : "r.s 7/15/2020 18:45" } } + "setUp" : "r.s 7/16/2020 16:47", + "tearDown" : "r.s 7/16/2020 16:54", + "testLogout" : "r.s 7/16/2020 16:54", + "testMessageSending" : "r.s 7/16/2020 16:53" } } diff --git a/packages/TelegramClient-UI.package/TCUChatListItem.class/class/newWithChat.andWidth..st b/packages/TelegramClient-UI.package/TCUChatListItem.class/class/newWithChat.andWidth..st index 1cafb7664..0294edcd6 100644 --- a/packages/TelegramClient-UI.package/TCUChatListItem.class/class/newWithChat.andWidth..st +++ b/packages/TelegramClient-UI.package/TCUChatListItem.class/class/newWithChat.andWidth..st @@ -5,5 +5,6 @@ newWithChat: aChat andWidth: aWidth chat: aChat; width: aWidth; addTitle; + addLastMessage; addBorder; yourself \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/addLastMessage.st b/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/addLastMessage.st new file mode 100644 index 000000000..5dc9d967a --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/addLastMessage.st @@ -0,0 +1,10 @@ +initialization +addLastMessage + + | text | + text := (self chat lastMessage truncateTo: 25), '...'. + + self addMorph: (TextMorph new + contents: text asText; + center: self center + (0 @ 20); + lock). \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/addTitle.st b/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/addTitle.st index b418e721c..c0e5d7ed0 100644 --- a/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/addTitle.st +++ b/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/addTitle.st @@ -1,6 +1,9 @@ initialization addTitle + | text | + text := (self chatName asText) addAttribute: TextEmphasis bold. + self addMorphCentered: (TextMorph new - contents: self chatName asText; + contents: text; lock). \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/defaultHeight.st b/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/defaultHeight.st index b7c77f760..75eced192 100644 --- a/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/defaultHeight.st +++ b/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/defaultHeight.st @@ -1,4 +1,4 @@ default values defaultHeight - ^ 50 \ No newline at end of file + ^ 80 \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatListItem.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUChatListItem.class/methodProperties.json index 1ac0c389c..90866bca6 100644 --- a/packages/TelegramClient-UI.package/TCUChatListItem.class/methodProperties.json +++ b/packages/TelegramClient-UI.package/TCUChatListItem.class/methodProperties.json @@ -1,14 +1,15 @@ { "class" : { - "newWithChat:andWidth:" : "rs 6/17/2020 23:07" }, + "newWithChat:andWidth:" : "rs 7/4/2020 18:47" }, "instance" : { "addBorder" : "R.S 6/1/2020 22:20", - "addTitle" : "js 6/13/2020 18:46", + "addLastMessage" : "j 7/16/2020 13:27", + "addTitle" : "rs 7/4/2020 19:05", "chat" : "rs 6/17/2020 21:45", "chat:" : "rs 6/17/2020 21:45", "chatID" : "rs 6/17/2020 23:05", "chatName" : "rs 6/17/2020 21:45", - "defaultHeight" : "js 6/13/2020 18:42", + "defaultHeight" : "rs 7/4/2020 18:54", "deselect" : "rs 6/13/2020 09:02", "initialize" : "rs 6/17/2020 23:05", "select" : "rs 6/13/2020 08:49" } } diff --git a/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/initialize.st b/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/initialize.st index 020043c04..9c924c84e 100644 --- a/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/initialize.st +++ b/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/initialize.st @@ -1,4 +1,4 @@ -accessing +initialization initialize super initialize. diff --git a/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/initializeMessages..st b/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/initializeMessages..st new file mode 100644 index 000000000..442d4d45d --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/initializeMessages..st @@ -0,0 +1,4 @@ +initialization +initializeMessages: aMessageList + + aMessageList do: [:message| self addMessage: message message]. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatMessageList.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUChatMessageList.class/methodProperties.json index 51336c0ad..796aa375d 100644 --- a/packages/TelegramClient-UI.package/TCUChatMessageList.class/methodProperties.json +++ b/packages/TelegramClient-UI.package/TCUChatMessageList.class/methodProperties.json @@ -7,5 +7,6 @@ "displayChat:" : "rs 6/17/2020 21:50", "heightBetweenMessages" : "rs 6/17/2020 20:41", "initialize" : "rs 6/17/2020 21:33", + "initializeMessages:" : "rs 7/4/2020 19:29", "messages" : "rs 6/17/2020 19:10", "messages:" : "rs 6/17/2020 19:10" } } diff --git a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/initialize.st b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/initialize.st index 14628cde5..d5bfd4463 100644 --- a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/initialize.st +++ b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/initialize.st @@ -5,4 +5,5 @@ initialize self color: TCUDefaultValues colorLightGray; - borderWidth: 0. \ No newline at end of file + borderWidth: 0; + selectedChat: TCCNullChat new. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatWindow.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUChatWindow.class/methodProperties.json index 1b861cc18..fb64f3f08 100644 --- a/packages/TelegramClient-UI.package/TCUChatWindow.class/methodProperties.json +++ b/packages/TelegramClient-UI.package/TCUChatWindow.class/methodProperties.json @@ -3,7 +3,7 @@ "newWithHeight:width:" : "rs 6/17/2020 20:22" }, "instance" : { "addInputBar" : "js 6/13/2020 17:59", - "addMessageWindow" : "rs 6/17/2020 21:57", + "addMessageWindow" : "rs 7/4/2020 19:29", "addSendButton" : "js 6/13/2020 18:46", "addTextInputField" : "rs 6/17/2020 21:02", "addWelcomeMessage" : "js 6/13/2020 18:47", @@ -11,7 +11,7 @@ "clear" : "rs 6/17/2020 21:52", "createInputBar" : "rs 6/17/2020 21:01", "defaultInputfieldHeight" : "rs 6/12/2020 20:03", - "initialize" : "rs 6/17/2020 20:20", + "initialize" : "rs 7/4/2020 19:18", "inputBar" : "rs 6/13/2020 10:38", "inputBar:" : "rs 6/13/2020 10:38", "messageListWindow" : "rs 6/17/2020 19:12", diff --git a/packages/TelegramClient-UI.package/TCUMain.class/instance/core..st b/packages/TelegramClient-UI.package/TCUMain.class/instance/core..st index 3844709d3..e78ac3350 100644 --- a/packages/TelegramClient-UI.package/TCUMain.class/instance/core..st +++ b/packages/TelegramClient-UI.package/TCUMain.class/instance/core..st @@ -1,4 +1,5 @@ accessing core: aCore - core := aCore. \ No newline at end of file + core := aCore. + aCore when: #newMessageReceived send: #newMessageReceived: to: self. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMain.class/instance/newChatButtonClicked.st b/packages/TelegramClient-UI.package/TCUMain.class/instance/newChatButtonClicked.st index d290ead60..e7b102eba 100644 --- a/packages/TelegramClient-UI.package/TCUMain.class/instance/newChatButtonClicked.st +++ b/packages/TelegramClient-UI.package/TCUMain.class/instance/newChatButtonClicked.st @@ -2,9 +2,9 @@ initialization newChatButtonClicked | inputField modal | - modal := (TCUModal newWithText: 'Create new Chat with Handle: ' type: 'information'). + modal := (TCUModal newWithText: 'Create new Chat with TelegramTag: ' type: 'information'). inputField := TextMorph new - contentsWrapped: 'search...'; + contentsWrapped: '@'; backgroundColor: Color white; borderWidth: 2; extent: 200 @ 50; diff --git a/packages/TelegramClient-UI.package/TCUMain.class/instance/newMessageReceived..st b/packages/TelegramClient-UI.package/TCUMain.class/instance/newMessageReceived..st new file mode 100644 index 000000000..305f20255 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUMain.class/instance/newMessageReceived..st @@ -0,0 +1,5 @@ +initialization +newMessageReceived: aMessage + + (self core loggedInUserID = aMessage senderId) ifFalse: [ + [TCUNotification newWithMessage: aMessage] fork]. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMain.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUMain.class/methodProperties.json index c47b68f1b..813953b14 100644 --- a/packages/TelegramClient-UI.package/TCUMain.class/methodProperties.json +++ b/packages/TelegramClient-UI.package/TCUMain.class/methodProperties.json @@ -14,7 +14,7 @@ "chatsList" : "R.S 6/1/2020 14:27", "chatsList:" : "R.S 6/1/2020 14:27", "core" : "js 6/13/2020 18:51", - "core:" : "js 6/13/2020 18:51", + "core:" : "rs 7/5/2020 14:25", "createHeaderMorph" : "js 6/13/2020 18:01", "defaultExtent" : "R.S 6/1/2020 14:27", "defaultHeaderHeight" : "R.S 6/1/2020 14:27", @@ -23,7 +23,8 @@ "initialize" : "f.w. 7/12/2020 21:51", "initializeChatWindow" : "js 6/13/2020 18:54", "logout" : "js 6/13/2020 18:11", - "newChatButtonClicked" : "j 7/16/2020 12:28", + "newChatButtonClicked" : "r.s 7/16/2020 13:08", "newChatSelected:" : "f.w. 7/16/2020 00:02", + "newMessageReceived:" : "j 7/16/2020 13:26", "sendMessage:" : "rs 6/17/2020 21:19", "subscribeChatsList" : "f.w. 7/15/2020 23:55" } } diff --git a/packages/TelegramClient-UI.package/TCUMessage.class/class/newWithText..st b/packages/TelegramClient-UI.package/TCUMessage.class/class/newWithText..st index 0e2e831b5..ead56be30 100644 --- a/packages/TelegramClient-UI.package/TCUMessage.class/class/newWithText..st +++ b/packages/TelegramClient-UI.package/TCUMessage.class/class/newWithText..st @@ -1,4 +1,4 @@ -as yet unclassified +instance creation newWithText: aString | message | diff --git a/packages/TelegramClient-UI.package/TCUMessage.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUMessage.class/methodProperties.json index 2f0d8934d..4b8767f5a 100644 --- a/packages/TelegramClient-UI.package/TCUMessage.class/methodProperties.json +++ b/packages/TelegramClient-UI.package/TCUMessage.class/methodProperties.json @@ -4,7 +4,7 @@ "instance" : { "defaultHeight" : "rs 6/17/2020 20:07", "defaultWidth" : "rs 6/17/2020 20:35", - "initialize" : "rs 6/18/2020 16:36", + "initialize" : "rs 7/5/2020 14:27", "setText:" : "rs 6/17/2020 21:36", "text" : "rs 6/17/2020 19:48", "text:" : "rs 6/17/2020 19:52" } } diff --git a/packages/TelegramClient-UI.package/TCUNotification.class/README.md b/packages/TelegramClient-UI.package/TCUNotification.class/README.md new file mode 100644 index 000000000..9038043e2 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUNotification.class/README.md @@ -0,0 +1 @@ +a Push Notification UI \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUNotification.class/class/newWithMessage..st b/packages/TelegramClient-UI.package/TCUNotification.class/class/newWithMessage..st new file mode 100644 index 000000000..0e9f0705a --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUNotification.class/class/newWithMessage..st @@ -0,0 +1,6 @@ +creation +newWithMessage: aMessage + + ^ self basicNew + text: aMessage message; + initialize \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUNotification.class/instance/addTextLabel.st b/packages/TelegramClient-UI.package/TCUNotification.class/instance/addTextLabel.st new file mode 100644 index 000000000..4efbb38b4 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUNotification.class/instance/addTextLabel.st @@ -0,0 +1,9 @@ +accessing +addTextLabel + + | shortText | + shortText := (self text truncateTo: 25), ' ...'. + + self addMorphCentered: (TextMorph new + contents: shortText asText; + lock). \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUNotification.class/instance/calculatePosition.st b/packages/TelegramClient-UI.package/TCUNotification.class/instance/calculatePosition.st new file mode 100644 index 000000000..adff4b806 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUNotification.class/instance/calculatePosition.st @@ -0,0 +1,4 @@ +accessing +calculatePosition + + ^ self currentWorld bottomRight - (self defaultWidth @ self defaultHeight) - (self defaultOffset) \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUNotification.class/instance/chatID..st b/packages/TelegramClient-UI.package/TCUNotification.class/instance/chatID..st new file mode 100644 index 000000000..b15675cf0 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUNotification.class/instance/chatID..st @@ -0,0 +1,4 @@ +accessing +chatID: aNumber + + chatID := aNumber. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUNotification.class/instance/chatID.st b/packages/TelegramClient-UI.package/TCUNotification.class/instance/chatID.st new file mode 100644 index 000000000..d732e5f82 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUNotification.class/instance/chatID.st @@ -0,0 +1,4 @@ +accessing +chatID + + ^ chatID \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUNotification.class/instance/defaultHeight.st b/packages/TelegramClient-UI.package/TCUNotification.class/instance/defaultHeight.st new file mode 100644 index 000000000..416d3b1a7 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUNotification.class/instance/defaultHeight.st @@ -0,0 +1,4 @@ +defaultValues +defaultHeight + + ^ 80 \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUNotification.class/instance/defaultOffset.st b/packages/TelegramClient-UI.package/TCUNotification.class/instance/defaultOffset.st new file mode 100644 index 000000000..7810170f6 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUNotification.class/instance/defaultOffset.st @@ -0,0 +1,4 @@ +defaultValues +defaultOffset + + ^ (20 @ 20) \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUNotification.class/instance/defaultWidth.st b/packages/TelegramClient-UI.package/TCUNotification.class/instance/defaultWidth.st new file mode 100644 index 000000000..fb9d94941 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUNotification.class/instance/defaultWidth.st @@ -0,0 +1,4 @@ +defaultValues +defaultWidth + + ^ 320 \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUNotification.class/instance/initialize.st b/packages/TelegramClient-UI.package/TCUNotification.class/instance/initialize.st new file mode 100644 index 000000000..7de61a188 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUNotification.class/instance/initialize.st @@ -0,0 +1,11 @@ +initialization +initialize + + super initialize. + self + initializeDefaults; + openInWorld. + + self + position: self calculatePosition; + startTimeOut. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUNotification.class/instance/initializeDefaults.st b/packages/TelegramClient-UI.package/TCUNotification.class/instance/initializeDefaults.st new file mode 100644 index 000000000..6546d7d94 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUNotification.class/instance/initializeDefaults.st @@ -0,0 +1,11 @@ +initialization +initializeDefaults + + self + color: Color white; + borderColor: TCUDefaultValues colorLightBlue; + borderWidth: 2; + useRoundedCorners; + height: self defaultHeight; + width: self defaultWidth; + addTextLabel. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUNotification.class/instance/startTimeOut.st b/packages/TelegramClient-UI.package/TCUNotification.class/instance/startTimeOut.st new file mode 100644 index 000000000..74e832b8d --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUNotification.class/instance/startTimeOut.st @@ -0,0 +1,5 @@ +accessing +startTimeOut + + 5 seconds wait. + self fadeOut. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUNotification.class/instance/text..st b/packages/TelegramClient-UI.package/TCUNotification.class/instance/text..st new file mode 100644 index 000000000..fdea2e4c0 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUNotification.class/instance/text..st @@ -0,0 +1,4 @@ +accessing +text: aString + + text := aString. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUNotification.class/instance/text.st b/packages/TelegramClient-UI.package/TCUNotification.class/instance/text.st new file mode 100644 index 000000000..c9bb36307 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUNotification.class/instance/text.st @@ -0,0 +1,4 @@ +accessing +text + + ^ text \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUNotification.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUNotification.class/methodProperties.json new file mode 100644 index 000000000..399b072af --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUNotification.class/methodProperties.json @@ -0,0 +1,16 @@ +{ + "class" : { + "newWithMessage:" : "j 7/16/2020 13:23" }, + "instance" : { + "addTextLabel" : "j 7/16/2020 13:25", + "calculatePosition" : "rs 7/5/2020 14:42", + "chatID" : "rs 7/5/2020 14:31", + "chatID:" : "rs 7/5/2020 14:31", + "defaultHeight" : "rs 7/5/2020 14:18", + "defaultOffset" : "rs 7/5/2020 14:43", + "defaultWidth" : "rs 7/5/2020 14:44", + "initialize" : "rs 7/5/2020 14:43", + "initializeDefaults" : "rs 7/5/2020 14:43", + "startTimeOut" : "j 7/16/2020 13:25", + "text" : "rs 7/5/2020 14:28", + "text:" : "rs 7/5/2020 14:28" } } diff --git a/packages/TelegramClient-UI.package/TCUNotification.class/properties.json b/packages/TelegramClient-UI.package/TCUNotification.class/properties.json new file mode 100644 index 000000000..30f1882a9 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUNotification.class/properties.json @@ -0,0 +1,15 @@ +{ + "category" : "TelegramClient-UI", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "j 7/16/2020 13:26", + "instvars" : [ + "text", + "chatID" ], + "name" : "TCUNotification", + "pools" : [ + ], + "super" : "RectangleMorph", + "type" : "normal" } From e3bd6b015034671d4c8ceb37433ac9d788733431 Mon Sep 17 00:00:00 2001 From: Niklas Schilli Date: Mon, 20 Jul 2020 12:00:38 +0200 Subject: [PATCH 30/81] Update README.md (#198) * Update README.md * Update README.md * Added links to names Co-authored-by: Lasklu <49564344+Lasklu@users.noreply.github.com> --- README.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 8e5a8d4cf..ec91680bd 100644 --- a/README.md +++ b/README.md @@ -36,7 +36,7 @@ install: 'FFI-Kernel'.` * Step 5 (Windows only): Install the [Visual C++ Redistributable for Visual Studio 2015, 2017 and 2019](https://aka.ms/vs/16/release/vc_redist.x64.exe) ## Running TelegramClient -In a workspace window either execute the command `TCUApp newWithTCCApp` or click the TelegramClient entry in the Apps dropdown menu. +In a workspace window either execute the command `TCUTelegram newWithTCCCore` or click the TelegramClient entry in the Apps dropdown menu. ## Building Tdlib Tdlib build instructions are available on their Github page. They also have a wonderful build instruction generator available which was the basis for our workflow . [Check it out here.](https://tdlib.github.io/td/build.html) Alternatively use the [Github Pipelines](https://github.com/hpi-swa-teaching/tdlib) we setup and modify them according to newer build instructions for successive tdlib versions. Currently we release at Tag 1.6.0. @@ -44,6 +44,10 @@ Tdlib build instructions are available on their Github page. They also have a wo ## Notes on Tdlib The TelegramClient is build on the TelegramDatabseLibrary which provides access to Telegram API via a JSON-Interface. We include Tdlib in our project and can access it with the Squeak FFI, in turn allowing us to access the Telegram API via JSON-Interface. +Once this project concludes there will be a need for the next group to aquire a new [API key](https://core.telegram.org/api/obtaining_api_id). ## Resources for following groups We have a [Discord](https://discord.gg/craraGh) server setup with a Github Webhook, notifying us on important changes to the repository. Most exchanges happened in there, making it a valueable resource for successive groups. + +## Our Group +Group 13 of the 2020 SWT I module incuded [Rohan Sawahn](https://github.com/rohansaw), [Jonas Schmidt](https://github.com/schmidtjonas), [Frederik Wollny](https://github.com/Freddy200), [Stefan Spangenberg](https://github.com/sspangenberg), [Lukas Laskowski](https://github.com/lasklu) and [Niklas Schilli](https://github.com/Mrnikbobjeff). From 3fbed01f50f547368b28f7675a5c60429881cfa7 Mon Sep 17 00:00:00 2001 From: Niklas Schilli Date: Wed, 22 Jul 2020 20:02:54 +0200 Subject: [PATCH 31/81] Offline sar file generator (#202) * Offline sar file generator * Create .smalltalk.release.ston * Create release.yml * Update .smalltalk.release.ston * Update .smalltalk.release.ston * Update .smalltalk.release.ston * Update .smalltalk.release.ston * Update .smalltalk.release.ston * Renamed file (just a test) * Update .smalltalk.release.ston * Rename testCreateSARFile.st to createSARFile.st * fixed pathing * intrgate into testing? * added classname * increased timeout bc. build timed out * Work towards linter acceptance, timeout problem fix * fixed unit test pipeline to exclude release "Test" * linter stuff * linte * linter * last linter errors * how do lists work * Bugfix, linter workaround * Update .smalltalk.ston * Update .smalltalk.ston * Update .smalltalk.ston * Update .smalltalk.ston * decreased timeout * test file location * Update release.yml * Update release.yml * Update release.yml * Update release.yml * Update release.yml * Update release.yml * Update release.yml Co-authored-by: Niklas Schilli Co-authored-by: Lasklu <49564344+Lasklu@users.noreply.github.com> Co-authored-by: Schilli, Niklas --- .github/workflows/release.yml | 47 +++++++++++++++++++ .smalltalk.release.ston | 16 +++++++ .../TCTSarFileGenerator.class/README.md | 1 + ...reamble.uipackage.nativeResourceFolder..st | 18 +++++++ .../instance/streamForPackage.inZip..st | 11 +++++ .../instance/testCreateSarFile.st | 16 +++++++ .../instance/versionForWorkingCopy..st | 13 +++++ .../methodProperties.json | 8 ++++ .../TCTSarFileGenerator.class/properties.json | 14 ++++++ 9 files changed, 144 insertions(+) create mode 100644 .github/workflows/release.yml create mode 100644 .smalltalk.release.ston create mode 100644 packages/TelegramClient-Tests.package/TCTSarFileGenerator.class/README.md create mode 100644 packages/TelegramClient-Tests.package/TCTSarFileGenerator.class/instance/generatePreamble.uipackage.nativeResourceFolder..st create mode 100644 packages/TelegramClient-Tests.package/TCTSarFileGenerator.class/instance/streamForPackage.inZip..st create mode 100644 packages/TelegramClient-Tests.package/TCTSarFileGenerator.class/instance/testCreateSarFile.st create mode 100644 packages/TelegramClient-Tests.package/TCTSarFileGenerator.class/instance/versionForWorkingCopy..st create mode 100644 packages/TelegramClient-Tests.package/TCTSarFileGenerator.class/methodProperties.json create mode 100644 packages/TelegramClient-Tests.package/TCTSarFileGenerator.class/properties.json diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 000000000..298f1770a --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,47 @@ +name: CI-Release +on: + push: + branches: + - master + +jobs: + build: + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [ ubuntu-latest ] + smalltalk: [ Squeak64-5.3 ] + name: ${{ matrix.smalltalk }} on ${{ matrix.os }} + steps: + - uses: actions/checkout@v2 + - uses: hpi-swa/setup-smalltalkCI@v1 + with: + smalltalk-version: ${{ matrix.smalltalk }} + - run: smalltalkci -s ${{ matrix.smalltalk }} .smalltalk.release.ston + timeout-minutes: 15 + - name: Get current time + uses: 1466587594/get-current-time@v1 + id: current-time + with: + format: YYYYMMDD-HH + utcOffset: "+01:00" + - name: Create Release + id: create_release + uses: actions/create-release@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + tag_name: ${{ steps.current-time.outputs.formattedTime }} + release_name: Release ${{ steps.current-time.outputs.formattedTime }} + draft: false + prerelease: false + - name: Upload Release Asset + id: upload-release-asset + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this blog post for more info: https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps + asset_path: /home/runner/.smalltalkCI/_builds/TelegramClient.sar + asset_name: TelegramClient.sar + asset_content_type: application/zip diff --git a/.smalltalk.release.ston b/.smalltalk.release.ston new file mode 100644 index 000000000..f6841f1dc --- /dev/null +++ b/.smalltalk.release.ston @@ -0,0 +1,16 @@ +SmalltalkCISpec { + + #preLoading : 'scripts/preLoading.st', + #loading : [ + SCIMetacelloLoadSpec { + #baseline : 'TelegramClient', + #platforms : [ #squeak ], + #directory : 'packages', + #load : [ 'tests' ] + } + ], + #testing : { + #classes : [ #TCTSarFileGenerator ], + #defaultTimeout : 60 + } +} diff --git a/packages/TelegramClient-Tests.package/TCTSarFileGenerator.class/README.md b/packages/TelegramClient-Tests.package/TCTSarFileGenerator.class/README.md new file mode 100644 index 000000000..2498aaee7 --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTSarFileGenerator.class/README.md @@ -0,0 +1 @@ +TCTSarFileGenerator is our CD pipeline sar file generator for offline sar files \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTSarFileGenerator.class/instance/generatePreamble.uipackage.nativeResourceFolder..st b/packages/TelegramClient-Tests.package/TCTSarFileGenerator.class/instance/generatePreamble.uipackage.nativeResourceFolder..st new file mode 100644 index 000000000..725e68cda --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTSarFileGenerator.class/instance/generatePreamble.uipackage.nativeResourceFolder..st @@ -0,0 +1,18 @@ +helpers +generatePreamble: package uipackage: ui nativeResourceFolder: folder + + "Returns the inteded filepath for the tdlib binaries" +^'| file destination | +self fileInMonticelloZipVersionNamed: +''' , package , '.mcz''.' ,' +file := ((Smalltalk platformName) startsWith: ''Win32'') +ifTrue: [''tdjson.dll'' ] +ifFalse: [(anOsName startsWith: ''Mac OS'') +ifTrue: [''libtdjson.1.6.0.dylib'' ] +ifFalse: [''libtdjson.so.1.6.0'' ]]. +destination := ((Smalltalk platformName) startsWith: ''Win32'') +ifTrue: [FileDirectory default / ''..'' / ''Win64'' ] +ifFalse: [FileDirectory default]. +self fileInMonticelloZipVersionNamed: +''' , ui , '.mcz''. +(self membersMatching: (''' , folder , FileDirectory slash , ''',file)) do: [ :f | self extractMemberWithoutPath: f inDirectory: destination].' \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTSarFileGenerator.class/instance/streamForPackage.inZip..st b/packages/TelegramClient-Tests.package/TCTSarFileGenerator.class/instance/streamForPackage.inZip..st new file mode 100644 index 000000000..fa0952793 --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTSarFileGenerator.class/instance/streamForPackage.inZip..st @@ -0,0 +1,11 @@ +helpers +streamForPackage: aPackage inZip: aZip + + "Adds a package to a zip file" + + | mczStream workingCopy version | + mczStream := RWBinaryOrTextStream on: (String new: 10000). + workingCopy := MCWorkingCopy forPackage: (MCPackage new name: aPackage). + version := self versionForWorkingCopy: workingCopy. + version fileOutOn: mczStream. + (aZip addString: mczStream contents as: aPackage , '.mcz') desiredCompressionLevel: 0. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTSarFileGenerator.class/instance/testCreateSarFile.st b/packages/TelegramClient-Tests.package/TCTSarFileGenerator.class/instance/testCreateSarFile.st new file mode 100644 index 000000000..a2d27a82e --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTSarFileGenerator.class/instance/testCreateSarFile.st @@ -0,0 +1,16 @@ +sar +testCreateSarFile + + "Creates a release sar file" +|package ui zip folder | + +package := 'TelegramClient-Core'. +ui := 'TelegramClient-UI'. +folder := 'TDLib'. +zip := ZipArchive new. +self streamForPackage: package inZip: zip. +self streamForPackage: ui inZip: zip. +zip addTree: Smalltalk imagePath match: [:e | e fullName startsWith: + Smalltalk imagePath , FileDirectory slash , folder]. +zip addString: (self generatePreamble: package uipackage: ui nativeResourceFolder: folder) as: 'install/preamble'. +zip writeToFileNamed: 'TelegramClient.sar'. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTSarFileGenerator.class/instance/versionForWorkingCopy..st b/packages/TelegramClient-Tests.package/TCTSarFileGenerator.class/instance/versionForWorkingCopy..st new file mode 100644 index 000000000..eae37cac1 --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTSarFileGenerator.class/instance/versionForWorkingCopy..st @@ -0,0 +1,13 @@ +helpers +versionForWorkingCopy: aWorkingCopy + + "Supresses the working copy dialogue and returns a version" + + | version | + version := ''. "Needed for linter..." + [version := aWorkingCopy newVersion] + on: MCVersionNameAndMessageRequest + do: [:n | + n patchBlock value. + n resume: (Array with: n suggestedName with: '' with: Set new)]. + ^version \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTSarFileGenerator.class/methodProperties.json b/packages/TelegramClient-Tests.package/TCTSarFileGenerator.class/methodProperties.json new file mode 100644 index 000000000..20a48a56f --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTSarFileGenerator.class/methodProperties.json @@ -0,0 +1,8 @@ +{ + "class" : { + }, + "instance" : { + "generatePreamble:uipackage:nativeResourceFolder:" : "N.S. 7/22/2020 18:14", + "streamForPackage:inZip:" : "N.S. 7/22/2020 18:14", + "testCreateSarFile" : "N.S. 7/22/2020 18:14", + "versionForWorkingCopy:" : "N.S. 7/22/2020 18:28" } } diff --git a/packages/TelegramClient-Tests.package/TCTSarFileGenerator.class/properties.json b/packages/TelegramClient-Tests.package/TCTSarFileGenerator.class/properties.json new file mode 100644 index 000000000..d9e5556e1 --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTSarFileGenerator.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "TelegramClient-Tests", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "N.S. 7/22/2020 17:56", + "instvars" : [ + ], + "name" : "TCTSarFileGenerator", + "pools" : [ + ], + "super" : "TestCase", + "type" : "normal" } From d405aa9d5ded5a109ba4ef8bae86dd15a76c2238 Mon Sep 17 00:00:00 2001 From: Niklas Schilli Date: Thu, 23 Jul 2020 14:37:40 +0200 Subject: [PATCH 32/81] Update README.md (#206) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ec91680bd..9466588b5 100644 --- a/README.md +++ b/README.md @@ -32,7 +32,7 @@ Make sure you have the current version of Squeak installed. install: 'FFI-Pools'; install: 'FFI-Kernel'.` * Step 3: Download the required native Binaries for your system. [Windows](https://github.com/hpi-swa-teaching/tdlib/actions?query=workflow%3A%22Windows+CI%22), [Mac](https://github.com/hpi-swa-teaching/tdlib/actions?query=workflow%3A%22Tdlib+Max+x64+Build%22), [Ubuntu 18 lts](https://github.com/hpi-swa-teaching/tdlib/actions?query=workflow%3A%22Tdlib+Ubuntu+Build%22). Select the latest successful run of the pipeline and download the single artifact produced by the respective pipeline. -* Step 4: Place the unzipped binaries inside of your squeak image. On Windows, place them inside the Win32 folder, on Linux in "Contents/Linux-x86_64/lib/squeak/\/" and on Mac place them inside the resources folder. +* Step 4: Place the unzipped binaries inside of your squeak image inside the 'Resource' folder. * Step 5 (Windows only): Install the [Visual C++ Redistributable for Visual Studio 2015, 2017 and 2019](https://aka.ms/vs/16/release/vc_redist.x64.exe) ## Running TelegramClient From 9917d5e9b63ac90dd8199a7d347e15dac2846859 Mon Sep 17 00:00:00 2001 From: Niklas Schilli Date: Fri, 24 Jul 2020 12:01:20 +0200 Subject: [PATCH 33/81] lock message text (#212) Co-authored-by: Niklas Schilli --- .../TCUMessage.class/instance/setText..st | 1 + .../TCUMessage.class/methodProperties.json | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/TelegramClient-UI.package/TCUMessage.class/instance/setText..st b/packages/TelegramClient-UI.package/TCUMessage.class/instance/setText..st index 6a58255e3..14e0d1c24 100644 --- a/packages/TelegramClient-UI.package/TCUMessage.class/instance/setText..st +++ b/packages/TelegramClient-UI.package/TCUMessage.class/instance/setText..st @@ -2,4 +2,5 @@ accessing setText: aString self text: (TextMorph new contents: aString). + self text lock. self addMorphCentered: self text. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMessage.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUMessage.class/methodProperties.json index 4b8767f5a..46181f488 100644 --- a/packages/TelegramClient-UI.package/TCUMessage.class/methodProperties.json +++ b/packages/TelegramClient-UI.package/TCUMessage.class/methodProperties.json @@ -5,6 +5,6 @@ "defaultHeight" : "rs 6/17/2020 20:07", "defaultWidth" : "rs 6/17/2020 20:35", "initialize" : "rs 7/5/2020 14:27", - "setText:" : "rs 6/17/2020 21:36", + "setText:" : "N.S. 7/24/2020 11:35", "text" : "rs 6/17/2020 19:48", "text:" : "rs 6/17/2020 19:52" } } From 3745465249e35fbcb9bc9005e3a87b3a48b13b80 Mon Sep 17 00:00:00 2001 From: Niklas Schilli Date: Fri, 24 Jul 2020 12:06:01 +0200 Subject: [PATCH 34/81] Add Telegram world menu entry (#207) * added world menu entry * world menu is at worst created on first startup * world menu is now also added on sar installation * fixed file destination in preamble of sar * Update readme * removed comment to stick to code standards Co-authored-by: Niklas Schilli Co-authored-by: Rohan Sawahn --- README.md | 5 +++-- .../generatePreamble.uipackage.nativeResourceFolder..st | 5 ++--- .../TCTSarFileGenerator.class/methodProperties.json | 2 +- .../TCUTelegram.class/class/newWithCore..st | 1 + .../TCUTelegram.class/class/registerInWorldMenu.st | 4 ++++ .../TCUTelegram.class/methodProperties.json | 5 +++-- 6 files changed, 14 insertions(+), 8 deletions(-) create mode 100644 packages/TelegramClient-UI.package/TCUTelegram.class/class/registerInWorldMenu.st diff --git a/README.md b/README.md index 9466588b5..adb283c61 100644 --- a/README.md +++ b/README.md @@ -27,7 +27,7 @@ Master(Release): ![CI](https://github.com/hpi-swa-teaching/TelegramClient/workfl ## Installation Make sure you have the current version of Squeak installed. -* Step 1: Install the Squeak Git Client +* Step 1: Install the Squeak Git Client and clone this repository. For the trunk clone develop, for the latest stable release choose master. * Step 2: Install the Squeak FFI Workload. To do so, open the Workspace in Squeak and execute the following command: `(Installer repository: 'http://source.squeak.org/FFI') install: 'FFI-Pools'; install: 'FFI-Kernel'.` @@ -35,8 +35,9 @@ install: 'FFI-Kernel'.` * Step 4: Place the unzipped binaries inside of your squeak image inside the 'Resource' folder. * Step 5 (Windows only): Install the [Visual C++ Redistributable for Visual Studio 2015, 2017 and 2019](https://aka.ms/vs/16/release/vc_redist.x64.exe) +Alternatively, check our (release page)[https://github.com/hpi-swa-teaching/TelegramClient/releases] for an online installer in the form of a sar file. In that case you just have to follow steps two and five. ## Running TelegramClient -In a workspace window either execute the command `TCUTelegram newWithTCCCore` or click the TelegramClient entry in the Apps dropdown menu. +In a workspace window either execute the command `TCUTelegram newWithTCCCore` or click the Telegram entry in the Apps dropdown menu. The menu is only available if you already started the app once or installed the app via a release sar file. ## Building Tdlib Tdlib build instructions are available on their Github page. They also have a wonderful build instruction generator available which was the basis for our workflow . [Check it out here.](https://tdlib.github.io/td/build.html) Alternatively use the [Github Pipelines](https://github.com/hpi-swa-teaching/tdlib) we setup and modify them according to newer build instructions for successive tdlib versions. Currently we release at Tag 1.6.0. diff --git a/packages/TelegramClient-Tests.package/TCTSarFileGenerator.class/instance/generatePreamble.uipackage.nativeResourceFolder..st b/packages/TelegramClient-Tests.package/TCTSarFileGenerator.class/instance/generatePreamble.uipackage.nativeResourceFolder..st index 725e68cda..e6e211b78 100644 --- a/packages/TelegramClient-Tests.package/TCTSarFileGenerator.class/instance/generatePreamble.uipackage.nativeResourceFolder..st +++ b/packages/TelegramClient-Tests.package/TCTSarFileGenerator.class/instance/generatePreamble.uipackage.nativeResourceFolder..st @@ -10,9 +10,8 @@ ifTrue: [''tdjson.dll'' ] ifFalse: [(anOsName startsWith: ''Mac OS'') ifTrue: [''libtdjson.1.6.0.dylib'' ] ifFalse: [''libtdjson.so.1.6.0'' ]]. -destination := ((Smalltalk platformName) startsWith: ''Win32'') -ifTrue: [FileDirectory default / ''..'' / ''Win64'' ] -ifFalse: [FileDirectory default]. +destination := FileDirectory default. self fileInMonticelloZipVersionNamed: ''' , ui , '.mcz''. +TCUTelegram registerOpenCommand. (self membersMatching: (''' , folder , FileDirectory slash , ''',file)) do: [ :f | self extractMemberWithoutPath: f inDirectory: destination].' \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTSarFileGenerator.class/methodProperties.json b/packages/TelegramClient-Tests.package/TCTSarFileGenerator.class/methodProperties.json index 20a48a56f..05768d623 100644 --- a/packages/TelegramClient-Tests.package/TCTSarFileGenerator.class/methodProperties.json +++ b/packages/TelegramClient-Tests.package/TCTSarFileGenerator.class/methodProperties.json @@ -2,7 +2,7 @@ "class" : { }, "instance" : { - "generatePreamble:uipackage:nativeResourceFolder:" : "N.S. 7/22/2020 18:14", + "generatePreamble:uipackage:nativeResourceFolder:" : "N.S. 7/24/2020 10:23", "streamForPackage:inZip:" : "N.S. 7/22/2020 18:14", "testCreateSarFile" : "N.S. 7/22/2020 18:14", "versionForWorkingCopy:" : "N.S. 7/22/2020 18:28" } } diff --git a/packages/TelegramClient-UI.package/TCUTelegram.class/class/newWithCore..st b/packages/TelegramClient-UI.package/TCUTelegram.class/class/newWithCore..st index 23df20701..9ef5f5537 100644 --- a/packages/TelegramClient-UI.package/TCUTelegram.class/class/newWithCore..st +++ b/packages/TelegramClient-UI.package/TCUTelegram.class/class/newWithCore..st @@ -1,6 +1,7 @@ instance creation newWithCore: aCore + TCUTelegram registerInWorldMenu. ^ self basicNew core: aCore; initialize; diff --git a/packages/TelegramClient-UI.package/TCUTelegram.class/class/registerInWorldMenu.st b/packages/TelegramClient-UI.package/TCUTelegram.class/class/registerInWorldMenu.st new file mode 100644 index 000000000..f314108a0 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUTelegram.class/class/registerInWorldMenu.st @@ -0,0 +1,4 @@ +menu +registerInWorldMenu + + TheWorldMenu registerOpenCommand: {'Telegram'. {TCUTelegram. #newWithTCCCore}} \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUTelegram.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUTelegram.class/methodProperties.json index 2ee2a7010..aaac1a839 100644 --- a/packages/TelegramClient-UI.package/TCUTelegram.class/methodProperties.json +++ b/packages/TelegramClient-UI.package/TCUTelegram.class/methodProperties.json @@ -1,8 +1,9 @@ { "class" : { - "newWithCore:" : "F.W. 6/13/2020 21:48", + "newWithCore:" : "N.S. 7/24/2020 10:14", "newWithTCCCore" : "rs 6/25/2020 10:16", - "newWithTestCore" : "r.s 7/13/2020 17:36" }, + "newWithTestCore" : "r.s 7/13/2020 17:36", + "registerInWorldMenu" : "r.s 7/24/2020 11:41" }, "instance" : { "core" : "js 5/31/2020 20:04", "core:" : "js 5/31/2020 20:04", From 32488fc21b6130eb406a324fc64299650f71da66 Mon Sep 17 00:00:00 2001 From: Niklas Schilli Date: Fri, 24 Jul 2020 12:16:13 +0200 Subject: [PATCH 35/81] Autodownload on windows (#205) * fixed windows tdlib autoloading * Refacactoring for linter Co-authored-by: Niklas Schilli --- .../TCCFFIClient.class/class/downloadArchive.st | 15 +++++++++++++++ .../TCCFFIClient.class/class/moduleName.st | 11 ++++++++--- .../TCCFFIClient.class/methodProperties.json | 3 ++- .../TCCWindowsClient.class/class/downloadUrl.st | 2 +- .../TCCWindowsClient.class/methodProperties.json | 2 +- 5 files changed, 27 insertions(+), 6 deletions(-) create mode 100644 packages/TelegramClient-Core.package/TCCFFIClient.class/class/downloadArchive.st diff --git a/packages/TelegramClient-Core.package/TCCFFIClient.class/class/downloadArchive.st b/packages/TelegramClient-Core.package/TCCFFIClient.class/class/downloadArchive.st new file mode 100644 index 000000000..9962cbd69 --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCFFIClient.class/class/downloadArchive.st @@ -0,0 +1,15 @@ +helper +downloadArchive + + "downloads the link as an archive as is needed for windows" + | intermediatePath archive response | + intermediatePath := FileDirectory default / 'archive.zip'. + FileStream fileNamed: intermediatePath fullName do: [:stream | + response := WebClient httpGet: self downloadUrl. + stream + binary; + nextPutAll: response content]. + archive := ZipArchive new readFrom: (intermediatePath fullName). + archive extractAllTo: FileDirectory default. + archive close. + intermediatePath delete. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCFFIClient.class/class/moduleName.st b/packages/TelegramClient-Core.package/TCCFFIClient.class/class/moduleName.st index 15e61ea30..d72d8fccc 100644 --- a/packages/TelegramClient-Core.package/TCCFFIClient.class/class/moduleName.st +++ b/packages/TelegramClient-Core.package/TCCFFIClient.class/class/moduleName.st @@ -4,12 +4,17 @@ moduleName | filePath response | filePath := FileDirectory default / self fileName. - + filePath exists ifFalse: [ + + (Smalltalk platformName = 'Win32') + ifTrue: [ + self downloadArchive. + ] + ifFalse: [ FileStream fileNamed: filePath fullName do: [:stream | response := WebClient httpGet: self downloadUrl. stream binary; - nextPutAll: response content]]. - + nextPutAll: response content]].]. ^ filePath fullName \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCFFIClient.class/methodProperties.json b/packages/TelegramClient-Core.package/TCCFFIClient.class/methodProperties.json index b908f45c4..73f219581 100644 --- a/packages/TelegramClient-Core.package/TCCFFIClient.class/methodProperties.json +++ b/packages/TelegramClient-Core.package/TCCFFIClient.class/methodProperties.json @@ -1,8 +1,9 @@ { "class" : { + "downloadArchive" : "N.S. 7/24/2020 09:15", "downloadUrl" : "r.s 7/13/2020 17:05", "fileName" : "r.s 7/13/2020 17:05", - "moduleName" : "r.s 7/13/2020 17:29" }, + "moduleName" : "N.S. 7/24/2020 09:15" }, "instance" : { "create" : "js 6/13/2020 12:53", "execute:with:" : "js 6/13/2020 18:33", diff --git a/packages/TelegramClient-Core.package/TCCWindowsClient.class/class/downloadUrl.st b/packages/TelegramClient-Core.package/TCCWindowsClient.class/class/downloadUrl.st index 17ca32edc..caed2316d 100644 --- a/packages/TelegramClient-Core.package/TCCWindowsClient.class/class/downloadUrl.st +++ b/packages/TelegramClient-Core.package/TCCWindowsClient.class/class/downloadUrl.st @@ -1,4 +1,4 @@ accessing downloadUrl - ^ 'https://drive.google.com/uc?export=download&id=15C1bV12ZN86Zpc7R4be8hMt3NmKAAmDD' \ No newline at end of file + ^ 'https://drive.google.com/u/0/uc?id=1dVuTo2A_pl12-wj5OEolafMRxC_GLeGk&export=download' \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCWindowsClient.class/methodProperties.json b/packages/TelegramClient-Core.package/TCCWindowsClient.class/methodProperties.json index 2463e4c73..d0b832893 100644 --- a/packages/TelegramClient-Core.package/TCCWindowsClient.class/methodProperties.json +++ b/packages/TelegramClient-Core.package/TCCWindowsClient.class/methodProperties.json @@ -1,6 +1,6 @@ { "class" : { - "downloadUrl" : "r.s 7/15/2020 19:27", + "downloadUrl" : "N.S. 7/23/2020 12:45", "fileName" : "f.w. 7/15/2020 22:04" }, "instance" : { "type" : "r.s 7/13/2020 17:31" } } From fa1215fa36a7d2620193545c483d7ce5da9f169a Mon Sep 17 00:00:00 2001 From: Niklas Schilli Date: Sun, 26 Jul 2020 16:15:15 +0200 Subject: [PATCH 36/81] Update bug_report.md (#219) * Update bug_report.md * Update bug_report.md --- .github/ISSUE_TEMPLATE/bug_report.md | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index dd84ea782..bdd3425fe 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -24,15 +24,10 @@ A clear and concise description of what you expected to happen. If applicable, add screenshots to help explain your problem. **Desktop (please complete the following information):** - - OS: [e.g. iOS] - - Browser [e.g. chrome, safari] - - Version [e.g. 22] - -**Smartphone (please complete the following information):** - - Device: [e.g. iPhone6] - - OS: [e.g. iOS8.1] - - Browser [e.g. stock browser, safari] - - Version [e.g. 22] + - OS: [e.g. Windosws] + - Version [e.g. 10] + - Squeak version [e.g. 5.3] + **Additional context** Add any other context about the problem here. From f145645d895ffd5707647501e0950527191b921e Mon Sep 17 00:00:00 2001 From: Niklas Schilli Date: Sun, 26 Jul 2020 16:56:19 +0200 Subject: [PATCH 37/81] Fixed colors as well as locking more text (#216) * ui fixed * locked more stuff Co-authored-by: Niklas Schilli --- .../TCUAuthentication.class/instance/addTitle.to..st | 3 ++- .../TCUAuthentication.class/instance/showFirstStep.st | 2 +- .../TCUAuthentication.class/methodProperties.json | 4 ++-- .../TCUButton.class/instance/text..st | 1 + .../TCUButton.class/methodProperties.json | 2 +- .../TCUChatWindow.class/instance/addWelcomeMessage.st | 3 ++- .../TCUChatWindow.class/methodProperties.json | 2 +- .../TCUDefaultValues.class/class/colorLightBlue.st | 2 +- .../TCUDefaultValues.class/methodProperties.json | 2 +- .../TCUMain.class/instance/addTitle.to..st | 3 ++- .../TCUMain.class/methodProperties.json | 2 +- .../TCUMessage.class/instance/setText..st | 1 + .../TCUMessage.class/methodProperties.json | 2 +- 13 files changed, 17 insertions(+), 12 deletions(-) diff --git a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/addTitle.to..st b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/addTitle.to..st index 4d9824b91..19406c93b 100644 --- a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/addTitle.to..st +++ b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/addTitle.to..st @@ -5,6 +5,7 @@ addTitle: aString to: aMorph font := (TextFontReference toFont: (StrikeFont familyName: 'DefaultTextStyle' size: 35)). titleLable := TextMorph new contents: (aString asText addAttribute: font); - color: Color white. + color: Color white; + lock. aMorph addMorphCentered: titleLable. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/showFirstStep.st b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/showFirstStep.st index ac7d1a89d..7f5802b4e 100644 --- a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/showFirstStep.st +++ b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/showFirstStep.st @@ -2,7 +2,7 @@ accessing showFirstStep self instructionLabel - contents: 'Enter Phonenumber: ' asText; + contents: 'Enter your telephone number: ' asText; center: self center. self buttonVerify hide. diff --git a/packages/TelegramClient-UI.package/TCUAuthentication.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUAuthentication.class/methodProperties.json index 0b40b9f14..ab9474187 100644 --- a/packages/TelegramClient-UI.package/TCUAuthentication.class/methodProperties.json +++ b/packages/TelegramClient-UI.package/TCUAuthentication.class/methodProperties.json @@ -3,7 +3,7 @@ "newWithCore:" : "R.S 5/31/2020 20:16" }, "instance" : { "addHeader" : "js 6/13/2020 19:18", - "addTitle:to:" : "js 6/13/2020 18:52", + "addTitle:to:" : "N.S. 7/26/2020 15:52", "buttonBack" : "rs 6/11/2020 18:53", "buttonBack:" : "rs 6/11/2020 18:53", "buttonBackPressed" : "rs 6/11/2020 19:00", @@ -33,7 +33,7 @@ "instructionLabel" : "R.S 5/20/2020 13:52", "instructionLabel:" : "js 5/28/2020 17:51", "logInCompleted" : "js 6/13/2020 18:45", - "showFirstStep" : "rs 7/6/2020 17:31", + "showFirstStep" : "N.S. 7/26/2020 15:54", "showLoadingMessage" : "js 6/13/2020 18:45", "showSecondStep" : "rs 7/6/2020 17:29", "subscribeCore" : "R.S 5/31/2020 20:21" } } diff --git a/packages/TelegramClient-UI.package/TCUButton.class/instance/text..st b/packages/TelegramClient-UI.package/TCUButton.class/instance/text..st index b88da79bb..f2581f1a2 100644 --- a/packages/TelegramClient-UI.package/TCUButton.class/instance/text..st +++ b/packages/TelegramClient-UI.package/TCUButton.class/instance/text..st @@ -5,4 +5,5 @@ text: aString contents: aString asText; lock. + self text color: Color white. self addMorphCentered: text. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUButton.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUButton.class/methodProperties.json index 91438dff9..0cd0c1ab5 100644 --- a/packages/TelegramClient-UI.package/TCUButton.class/methodProperties.json +++ b/packages/TelegramClient-UI.package/TCUButton.class/methodProperties.json @@ -4,4 +4,4 @@ "instance" : { "initialize" : "js 6/13/2020 18:22", "text" : "R.S 5/20/2020 13:56", - "text:" : "js 6/13/2020 18:22" } } + "text:" : "N.S. 7/26/2020 15:46" } } diff --git a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/addWelcomeMessage.st b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/addWelcomeMessage.st index b0fc7899c..963937b1a 100644 --- a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/addWelcomeMessage.st +++ b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/addWelcomeMessage.st @@ -3,5 +3,6 @@ addWelcomeMessage self welcomeMessage: (TextMorph new - contents: 'Welcome!' asText); + contents: 'Welcome!' asText; + lock); addMorphCentered: self welcomeMessage. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatWindow.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUChatWindow.class/methodProperties.json index fb64f3f08..907ea2d81 100644 --- a/packages/TelegramClient-UI.package/TCUChatWindow.class/methodProperties.json +++ b/packages/TelegramClient-UI.package/TCUChatWindow.class/methodProperties.json @@ -6,7 +6,7 @@ "addMessageWindow" : "rs 7/4/2020 19:29", "addSendButton" : "js 6/13/2020 18:46", "addTextInputField" : "rs 6/17/2020 21:02", - "addWelcomeMessage" : "js 6/13/2020 18:47", + "addWelcomeMessage" : "N.S. 7/26/2020 15:57", "buttonSendPressed" : "rs 6/17/2020 22:57", "clear" : "rs 6/17/2020 21:52", "createInputBar" : "rs 6/17/2020 21:01", diff --git a/packages/TelegramClient-UI.package/TCUDefaultValues.class/class/colorLightBlue.st b/packages/TelegramClient-UI.package/TCUDefaultValues.class/class/colorLightBlue.st index 62ab12bf2..cabfc3326 100644 --- a/packages/TelegramClient-UI.package/TCUDefaultValues.class/class/colorLightBlue.st +++ b/packages/TelegramClient-UI.package/TCUDefaultValues.class/class/colorLightBlue.st @@ -1,4 +1,4 @@ colors colorLightBlue - ^ (Color r: (64 /255) g: (167 / 255) b: (227 / 255)) \ No newline at end of file + ^ (Color r: (0 /255) g: (136 / 255) b: (204 / 255)) \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUDefaultValues.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUDefaultValues.class/methodProperties.json index 4361b6ca3..088f0def0 100644 --- a/packages/TelegramClient-UI.package/TCUDefaultValues.class/methodProperties.json +++ b/packages/TelegramClient-UI.package/TCUDefaultValues.class/methodProperties.json @@ -1,7 +1,7 @@ { "class" : { "colorGray" : "R.S 5/20/2020 13:41", - "colorLightBlue" : "R.S 5/20/2020 13:41", + "colorLightBlue" : "N.S. 7/26/2020 15:48", "colorLightGray" : "R.S 6/1/2020 14:25", "colorRed" : "LL 7/15/2020 19:36" }, "instance" : { diff --git a/packages/TelegramClient-UI.package/TCUMain.class/instance/addTitle.to..st b/packages/TelegramClient-UI.package/TCUMain.class/instance/addTitle.to..st index 3bccbc7b1..050bfbf33 100644 --- a/packages/TelegramClient-UI.package/TCUMain.class/instance/addTitle.to..st +++ b/packages/TelegramClient-UI.package/TCUMain.class/instance/addTitle.to..st @@ -7,6 +7,7 @@ addTitle: aString to: aMorph titleLable := TextMorph new contents: (aString asText addAttribute: font); - color: Color white. + color: Color white; + lock. aMorph addMorphCentered: titleLable. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMain.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUMain.class/methodProperties.json index 813953b14..e4ef0cd83 100644 --- a/packages/TelegramClient-UI.package/TCUMain.class/methodProperties.json +++ b/packages/TelegramClient-UI.package/TCUMain.class/methodProperties.json @@ -8,7 +8,7 @@ "addInputFieldTo:withSpacing:" : "j 7/16/2020 12:27", "addLogoutButtonTo:withSpacing:" : "f.w. 7/16/2020 01:12", "addNewChatButtonTo:withSpacing:" : "r.s 7/16/2020 08:59", - "addTitle:to:" : "js 6/13/2020 18:57", + "addTitle:to:" : "N.S. 7/26/2020 15:47", "chatWindow" : "R.S 6/1/2020 14:27", "chatWindow:" : "R.S 6/1/2020 14:27", "chatsList" : "R.S 6/1/2020 14:27", diff --git a/packages/TelegramClient-UI.package/TCUMessage.class/instance/setText..st b/packages/TelegramClient-UI.package/TCUMessage.class/instance/setText..st index 14e0d1c24..951502907 100644 --- a/packages/TelegramClient-UI.package/TCUMessage.class/instance/setText..st +++ b/packages/TelegramClient-UI.package/TCUMessage.class/instance/setText..st @@ -2,5 +2,6 @@ accessing setText: aString self text: (TextMorph new contents: aString). + self text color: Color white. self text lock. self addMorphCentered: self text. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMessage.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUMessage.class/methodProperties.json index 46181f488..9604fa279 100644 --- a/packages/TelegramClient-UI.package/TCUMessage.class/methodProperties.json +++ b/packages/TelegramClient-UI.package/TCUMessage.class/methodProperties.json @@ -5,6 +5,6 @@ "defaultHeight" : "rs 6/17/2020 20:07", "defaultWidth" : "rs 6/17/2020 20:35", "initialize" : "rs 7/5/2020 14:27", - "setText:" : "N.S. 7/24/2020 11:35", + "setText:" : "N.S. 7/26/2020 15:46", "text" : "rs 6/17/2020 19:48", "text:" : "rs 6/17/2020 19:52" } } From de2e721fa55e4e887170363b7909cc79dbc3bac7 Mon Sep 17 00:00:00 2001 From: Niklas Schilli Date: Sun, 26 Jul 2020 18:41:40 +0200 Subject: [PATCH 38/81] Added error handler for wrong username messages (#220) * Added error handler for wrong username messages Co-authored-by: Niklas Schilli --- .../TCCCore.class/instance/handleEvent..st | 2 +- .../TCCCore.class/instance/tryHandleError..st | 9 +++++++++ .../TCCCore.class/methodProperties.json | 3 ++- .../TCCErrorConstants.class/README.md | 1 + .../class/unknownUsername.st | 4 ++++ .../TCCErrorConstants.class/methodProperties.json | 5 +++++ .../TCCErrorConstants.class/properties.json | 14 ++++++++++++++ 7 files changed, 36 insertions(+), 2 deletions(-) create mode 100644 packages/TelegramClient-Core.package/TCCCore.class/instance/tryHandleError..st create mode 100644 packages/TelegramClient-Core.package/TCCErrorConstants.class/README.md create mode 100644 packages/TelegramClient-Core.package/TCCErrorConstants.class/class/unknownUsername.st create mode 100644 packages/TelegramClient-Core.package/TCCErrorConstants.class/methodProperties.json create mode 100644 packages/TelegramClient-Core.package/TCCErrorConstants.class/properties.json diff --git a/packages/TelegramClient-Core.package/TCCCore.class/instance/handleEvent..st b/packages/TelegramClient-Core.package/TCCCore.class/instance/handleEvent..st index e35f50bca..5414f1d77 100644 --- a/packages/TelegramClient-Core.package/TCCCore.class/instance/handleEvent..st +++ b/packages/TelegramClient-Core.package/TCCCore.class/instance/handleEvent..st @@ -4,7 +4,7 @@ handleEvent: anEvent | update | update := nil. (((anEvent at: '@type') = 'error') and: [(anEvent at: 'code') = 400 ]) - ifTrue: [self halt: 'An Error Occured. Check Transcript Output.']. + ifTrue: [self tryHandleError: anEvent.]. (anEvent at: '@type') caseOf: { ['updateAuthorizationState'] -> [update := self authHandler handleEvent: anEvent]. ['updateNewChat'] -> [self chatsHandler addChat: anEvent]. diff --git a/packages/TelegramClient-Core.package/TCCCore.class/instance/tryHandleError..st b/packages/TelegramClient-Core.package/TCCCore.class/instance/tryHandleError..st new file mode 100644 index 000000000..8cdc5941c --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCCore.class/instance/tryHandleError..st @@ -0,0 +1,9 @@ +errorhandling +tryHandleError: anError + + "Handles recoverable errors" + (anError at: 'message') caseOf: { + ['USERNAME_NOT_OCCUPIED'] ->[ UIManager default inform: TCCErrorConstants unknownUsername .]. + ['USERNAME_INVALID'] -> [ UIManager default inform: TCCErrorConstants unknownUsername .]. + } + otherwise: [self halt: 'An Error Occured. Check Transcript Output.']. \ 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 245e8ab52..6d05a1699 100644 --- a/packages/TelegramClient-Core.package/TCCCore.class/methodProperties.json +++ b/packages/TelegramClient-Core.package/TCCCore.class/methodProperties.json @@ -13,7 +13,7 @@ "client" : "R.S 5/20/2020 16:08", "client:" : "js 6/13/2020 19:10", "getChatHistoryFrom:" : "j 7/16/2020 12:24", - "handleEvent:" : "r.s 7/16/2020 13:05", + "handleEvent:" : "N.S. 7/26/2020 17:33", "initialize" : "rs 7/5/2020 15:12", "initializeClient" : "js 6/13/2020 18:20", "initializeHandlers" : "j 7/16/2020 11:42", @@ -25,4 +25,5 @@ "sendMessage:to:" : "rs 6/13/2020 15:26", "sendPhoneNumber:" : "js 6/13/2020 15:35", "setUserID:" : "f.w. 7/6/2020 16:16", + "tryHandleError:" : "N.S. 7/26/2020 18:38", "update" : "js 6/13/2020 19:14" } } diff --git a/packages/TelegramClient-Core.package/TCCErrorConstants.class/README.md b/packages/TelegramClient-Core.package/TCCErrorConstants.class/README.md new file mode 100644 index 000000000..d102006a6 --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCErrorConstants.class/README.md @@ -0,0 +1 @@ +Contains error messages to be presented to the user. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCErrorConstants.class/class/unknownUsername.st b/packages/TelegramClient-Core.package/TCCErrorConstants.class/class/unknownUsername.st new file mode 100644 index 000000000..72790df36 --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCErrorConstants.class/class/unknownUsername.st @@ -0,0 +1,4 @@ +messages +unknownUsername + +^'Username not assigned or invalid.' \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCErrorConstants.class/methodProperties.json b/packages/TelegramClient-Core.package/TCCErrorConstants.class/methodProperties.json new file mode 100644 index 000000000..de7a9327e --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCErrorConstants.class/methodProperties.json @@ -0,0 +1,5 @@ +{ + "class" : { + "unknownUsername" : "N.S. 7/26/2020 17:56" }, + "instance" : { + } } diff --git a/packages/TelegramClient-Core.package/TCCErrorConstants.class/properties.json b/packages/TelegramClient-Core.package/TCCErrorConstants.class/properties.json new file mode 100644 index 000000000..7dc83fd5d --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCErrorConstants.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "TelegramClient-Core", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "N.S. 7/26/2020 17:49", + "instvars" : [ + ], + "name" : "TCCErrorConstants", + "pools" : [ + ], + "super" : "Object", + "type" : "normal" } From 85d0b08247f37a4bf56d069a04c14f69a291ad67 Mon Sep 17 00:00:00 2001 From: Niklas Schilli Date: Sun, 26 Jul 2020 21:34:46 +0200 Subject: [PATCH 39/81] UTF-8 fix (#223) Co-authored-by: Niklas Schilli --- .../TCCChatsHandler.class/methodProperties.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/TelegramClient-Core.package/TCCChatsHandler.class/methodProperties.json b/packages/TelegramClient-Core.package/TCCChatsHandler.class/methodProperties.json index b482b3b00..806093735 100644 --- a/packages/TelegramClient-Core.package/TCCChatsHandler.class/methodProperties.json +++ b/packages/TelegramClient-Core.package/TCCChatsHandler.class/methodProperties.json @@ -15,6 +15,6 @@ "messageLimit:" : "j 7/16/2020 12:03", "openNewChat:" : "j 7/16/2020 12:04", "searchChat:" : "f.w. 7/15/2020 22:53", - "sendMessage:to:" : "j 7/16/2020 12:32", + "sendMessage:to:" : "N.S. 7/26/2020 21:26", "updateChatOrder:" : "rs 6/25/2020 10:58", "updateLastMessage:" : "r.s 7/7/2020 13:53" } } From 1f278a3eaffd00b2736532a6de6116a5b42d1b19 Mon Sep 17 00:00:00 2001 From: Niklas Schilli Date: Sun, 26 Jul 2020 21:58:27 +0200 Subject: [PATCH 40/81] Added error messages for tdlib already in used (#225) Co-authored-by: Niklas Schilli --- .../TCCCore.class/instance/tryHandleError..st | 6 +++++- .../TCCCore.class/methodProperties.json | 2 +- .../TCCErrorConstants.class/class/tdlibAlreadyInUse.st | 4 ++++ .../TCCErrorConstants.class/methodProperties.json | 1 + 4 files changed, 11 insertions(+), 2 deletions(-) create mode 100644 packages/TelegramClient-Core.package/TCCErrorConstants.class/class/tdlibAlreadyInUse.st diff --git a/packages/TelegramClient-Core.package/TCCCore.class/instance/tryHandleError..st b/packages/TelegramClient-Core.package/TCCCore.class/instance/tryHandleError..st index 8cdc5941c..8b1ade618 100644 --- a/packages/TelegramClient-Core.package/TCCCore.class/instance/tryHandleError..st +++ b/packages/TelegramClient-Core.package/TCCCore.class/instance/tryHandleError..st @@ -6,4 +6,8 @@ tryHandleError: anError ['USERNAME_NOT_OCCUPIED'] ->[ UIManager default inform: TCCErrorConstants unknownUsername .]. ['USERNAME_INVALID'] -> [ UIManager default inform: TCCErrorConstants unknownUsername .]. } - otherwise: [self halt: 'An Error Occured. Check Transcript Output.']. \ No newline at end of file + otherwise: [ + ((anError at: 'message') startsWith: 'Can''t lock file') + ifTrue: [UIManager default inform: TCCErrorConstants tdlibAlreadyInUse ] + ifFalse: [self halt: 'An Error Occured. Check Transcript Output.'.]. + ]. \ 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 6d05a1699..85a8d1d35 100644 --- a/packages/TelegramClient-Core.package/TCCCore.class/methodProperties.json +++ b/packages/TelegramClient-Core.package/TCCCore.class/methodProperties.json @@ -25,5 +25,5 @@ "sendMessage:to:" : "rs 6/13/2020 15:26", "sendPhoneNumber:" : "js 6/13/2020 15:35", "setUserID:" : "f.w. 7/6/2020 16:16", - "tryHandleError:" : "N.S. 7/26/2020 18:38", + "tryHandleError:" : "N.S. 7/26/2020 21:47", "update" : "js 6/13/2020 19:14" } } diff --git a/packages/TelegramClient-Core.package/TCCErrorConstants.class/class/tdlibAlreadyInUse.st b/packages/TelegramClient-Core.package/TCCErrorConstants.class/class/tdlibAlreadyInUse.st new file mode 100644 index 000000000..ace987837 --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCErrorConstants.class/class/tdlibAlreadyInUse.st @@ -0,0 +1,4 @@ +messages +tdlibAlreadyInUse + +^'An error seems to have occured while shutting down Telegram. Restart Telegram and your image to fix this error.' \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCErrorConstants.class/methodProperties.json b/packages/TelegramClient-Core.package/TCCErrorConstants.class/methodProperties.json index de7a9327e..8e7eba2cc 100644 --- a/packages/TelegramClient-Core.package/TCCErrorConstants.class/methodProperties.json +++ b/packages/TelegramClient-Core.package/TCCErrorConstants.class/methodProperties.json @@ -1,5 +1,6 @@ { "class" : { + "tdlibAlreadyInUse" : "N.S. 7/26/2020 21:46", "unknownUsername" : "N.S. 7/26/2020 17:56" }, "instance" : { } } From 1a8e3df40337dbdbe20af78f0672243d713cfc9f Mon Sep 17 00:00:00 2001 From: Niklas Schilli Date: Sun, 26 Jul 2020 23:09:10 +0200 Subject: [PATCH 41/81] Made chat color sender specific (#227) * Made chat color sender specific * linter Co-authored-by: Niklas Schilli Co-authored-by: Rohan Sawahn <49531442+rohansaw@users.noreply.github.com> --- .../instance/{addMessage..st => addMessage.senderId..st} | 4 ++-- .../TCUChatMessageList.class/instance/initializeMessages..st | 2 +- .../TCUChatMessageList.class/methodProperties.json | 4 ++-- .../TCUChatWindow.class/instance/buttonSendPressed.st | 2 +- .../TCUChatWindow.class/instance/newChatSelected..st | 2 +- .../TCUChatWindow.class/methodProperties.json | 4 ++-- .../TCUDefaultValues.class/class/colorCarrot.st | 4 ++++ .../TCUDefaultValues.class/methodProperties.json | 1 + .../TelegramClient-UI.package/TCUMain.class/class/core..st | 4 ++++ .../TelegramClient-UI.package/TCUMain.class/class/core.st | 4 ++++ .../TCUMain.class/instance/core..st | 1 + .../TCUMain.class/methodProperties.json | 4 +++- .../TelegramClient-UI.package/TCUMain.class/properties.json | 2 +- .../class/{newWithText..st => newWithText.senderId..st} | 4 ++-- .../TCUMessage.class/instance/adaptColor..st | 5 +++++ .../TCUMessage.class/methodProperties.json | 3 ++- 16 files changed, 36 insertions(+), 14 deletions(-) rename packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/{addMessage..st => addMessage.senderId..st} (74%) create mode 100644 packages/TelegramClient-UI.package/TCUDefaultValues.class/class/colorCarrot.st create mode 100644 packages/TelegramClient-UI.package/TCUMain.class/class/core..st create mode 100644 packages/TelegramClient-UI.package/TCUMain.class/class/core.st rename packages/TelegramClient-UI.package/TCUMessage.class/class/{newWithText..st => newWithText.senderId..st} (74%) create mode 100644 packages/TelegramClient-UI.package/TCUMessage.class/instance/adaptColor..st diff --git a/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/addMessage..st b/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/addMessage.senderId..st similarity index 74% rename from packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/addMessage..st rename to packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/addMessage.senderId..st index 6d9c412ad..8f214b32a 100644 --- a/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/addMessage..st +++ b/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/addMessage.senderId..st @@ -1,8 +1,8 @@ accessing -addMessage: aString +addMessage: aString senderId: senderId | message | - message := TCUMessage newWithText: aString. + message := TCUMessage newWithText: aString senderId: senderId. self messages do: [:aMessage | aMessage position: (aMessage position - (0 @ (message height + self heightBetweenMessages)))]. diff --git a/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/initializeMessages..st b/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/initializeMessages..st index 442d4d45d..4aec3a59a 100644 --- a/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/initializeMessages..st +++ b/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/initializeMessages..st @@ -1,4 +1,4 @@ initialization initializeMessages: aMessageList - aMessageList do: [:message| self addMessage: message message]. \ No newline at end of file + aMessageList do: [:message| self addMessage: (message message) senderId: message senderId]. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatMessageList.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUChatMessageList.class/methodProperties.json index 796aa375d..63abd146b 100644 --- a/packages/TelegramClient-UI.package/TCUChatMessageList.class/methodProperties.json +++ b/packages/TelegramClient-UI.package/TCUChatMessageList.class/methodProperties.json @@ -2,11 +2,11 @@ "class" : { }, "instance" : { - "addMessage:" : "rs 6/18/2020 17:58", + "addMessage:senderId:" : "N.S. 7/26/2020 22:31", "defaultMessageMargin" : "rs 6/18/2020 17:58", "displayChat:" : "rs 6/17/2020 21:50", "heightBetweenMessages" : "rs 6/17/2020 20:41", "initialize" : "rs 6/17/2020 21:33", - "initializeMessages:" : "rs 7/4/2020 19:29", + "initializeMessages:" : "N.S. 7/26/2020 22:20", "messages" : "rs 6/17/2020 19:10", "messages:" : "rs 6/17/2020 19:10" } } diff --git a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/buttonSendPressed.st b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/buttonSendPressed.st index cb9e3e8c4..6dfe8ae1e 100644 --- a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/buttonSendPressed.st +++ b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/buttonSendPressed.st @@ -5,5 +5,5 @@ buttonSendPressed 'chatId' -> self selectedChat id. 'message' -> self textInputField contents}). - self messageListWindow addMessage: self textInputField contents. + self messageListWindow addMessage: self textInputField contents senderId: TCUMain core loggedInUserID. self textInputField contents: ' '. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/newChatSelected..st b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/newChatSelected..st index 26b5858a1..62c8df8a4 100644 --- a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/newChatSelected..st +++ b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/newChatSelected..st @@ -10,4 +10,4 @@ newChatSelected: aChat self messageListWindow show. self messageListWindow displayChat: aChat. 1 to: messageListReversed size do: [: x | - self messageListWindow addMessage: (messageListReversed at: x) message]. \ No newline at end of file + self messageListWindow addMessage: ((messageListReversed at: x) message) senderId: (messageListReversed at: x) senderId]. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatWindow.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUChatWindow.class/methodProperties.json index 907ea2d81..1cb20b3c1 100644 --- a/packages/TelegramClient-UI.package/TCUChatWindow.class/methodProperties.json +++ b/packages/TelegramClient-UI.package/TCUChatWindow.class/methodProperties.json @@ -7,7 +7,7 @@ "addSendButton" : "js 6/13/2020 18:46", "addTextInputField" : "rs 6/17/2020 21:02", "addWelcomeMessage" : "N.S. 7/26/2020 15:57", - "buttonSendPressed" : "rs 6/17/2020 22:57", + "buttonSendPressed" : "N.S. 7/26/2020 22:18", "clear" : "rs 6/17/2020 21:52", "createInputBar" : "rs 6/17/2020 21:01", "defaultInputfieldHeight" : "rs 6/12/2020 20:03", @@ -16,7 +16,7 @@ "inputBar:" : "rs 6/13/2020 10:38", "messageListWindow" : "rs 6/17/2020 19:12", "messageListWindow:" : "rs 6/17/2020 19:13", - "newChatSelected:" : "f.w. 7/16/2020 01:23", + "newChatSelected:" : "N.S. 7/26/2020 22:33", "selectedChat" : "rs 6/13/2020 09:11", "selectedChat:" : "rs 6/13/2020 09:11", "textInputField" : "rs 6/13/2020 10:41", diff --git a/packages/TelegramClient-UI.package/TCUDefaultValues.class/class/colorCarrot.st b/packages/TelegramClient-UI.package/TCUDefaultValues.class/class/colorCarrot.st new file mode 100644 index 000000000..e7e0e5967 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUDefaultValues.class/class/colorCarrot.st @@ -0,0 +1,4 @@ +colors +colorCarrot + + ^ (Color r: (230 /255) g: (126 / 255) b: (22 / 255)) \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUDefaultValues.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUDefaultValues.class/methodProperties.json index 088f0def0..73b68246a 100644 --- a/packages/TelegramClient-UI.package/TCUDefaultValues.class/methodProperties.json +++ b/packages/TelegramClient-UI.package/TCUDefaultValues.class/methodProperties.json @@ -1,5 +1,6 @@ { "class" : { + "colorCarrot" : "N.S. 7/26/2020 22:36", "colorGray" : "R.S 5/20/2020 13:41", "colorLightBlue" : "N.S. 7/26/2020 15:48", "colorLightGray" : "R.S 6/1/2020 14:25", diff --git a/packages/TelegramClient-UI.package/TCUMain.class/class/core..st b/packages/TelegramClient-UI.package/TCUMain.class/class/core..st new file mode 100644 index 000000000..5a88b6471 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUMain.class/class/core..st @@ -0,0 +1,4 @@ +creation +core: aCore + + Core:=aCore. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMain.class/class/core.st b/packages/TelegramClient-UI.package/TCUMain.class/class/core.st new file mode 100644 index 000000000..5d45d4dfa --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUMain.class/class/core.st @@ -0,0 +1,4 @@ +creation +core + + ^Core \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMain.class/instance/core..st b/packages/TelegramClient-UI.package/TCUMain.class/instance/core..st index e78ac3350..107b36a8d 100644 --- a/packages/TelegramClient-UI.package/TCUMain.class/instance/core..st +++ b/packages/TelegramClient-UI.package/TCUMain.class/instance/core..st @@ -1,5 +1,6 @@ accessing core: aCore + TCUMain core: aCore. core := aCore. aCore when: #newMessageReceived send: #newMessageReceived: to: self. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMain.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUMain.class/methodProperties.json index e4ef0cd83..bce377a4c 100644 --- a/packages/TelegramClient-UI.package/TCUMain.class/methodProperties.json +++ b/packages/TelegramClient-UI.package/TCUMain.class/methodProperties.json @@ -1,5 +1,7 @@ { "class" : { + "core" : "N.S. 7/26/2020 23:02", + "core:" : "N.S. 7/26/2020 22:26", "newWithCore:" : "f.w. 6/3/2020 20:31" }, "instance" : { "addChatsList" : "rs 6/17/2020 22:54", @@ -14,7 +16,7 @@ "chatsList" : "R.S 6/1/2020 14:27", "chatsList:" : "R.S 6/1/2020 14:27", "core" : "js 6/13/2020 18:51", - "core:" : "rs 7/5/2020 14:25", + "core:" : "N.S. 7/26/2020 22:15", "createHeaderMorph" : "js 6/13/2020 18:01", "defaultExtent" : "R.S 6/1/2020 14:27", "defaultHeaderHeight" : "R.S 6/1/2020 14:27", diff --git a/packages/TelegramClient-UI.package/TCUMain.class/properties.json b/packages/TelegramClient-UI.package/TCUMain.class/properties.json index 0c0d33a58..4d869524d 100644 --- a/packages/TelegramClient-UI.package/TCUMain.class/properties.json +++ b/packages/TelegramClient-UI.package/TCUMain.class/properties.json @@ -3,7 +3,7 @@ "classinstvars" : [ ], "classvars" : [ - ], + "Core" ], "commentStamp" : "js 6/13/2020 19:02", "instvars" : [ "chatWindow", diff --git a/packages/TelegramClient-UI.package/TCUMessage.class/class/newWithText..st b/packages/TelegramClient-UI.package/TCUMessage.class/class/newWithText.senderId..st similarity index 74% rename from packages/TelegramClient-UI.package/TCUMessage.class/class/newWithText..st rename to packages/TelegramClient-UI.package/TCUMessage.class/class/newWithText.senderId..st index ead56be30..a5bf46e6e 100644 --- a/packages/TelegramClient-UI.package/TCUMessage.class/class/newWithText..st +++ b/packages/TelegramClient-UI.package/TCUMessage.class/class/newWithText.senderId..st @@ -1,10 +1,10 @@ instance creation -newWithText: aString +newWithText: aString senderId: senderId | message | message := self new setText: aString. - + message adaptColor: senderId. message width: message text width + 20. message height: message text height + 20. message text center: message center. diff --git a/packages/TelegramClient-UI.package/TCUMessage.class/instance/adaptColor..st b/packages/TelegramClient-UI.package/TCUMessage.class/instance/adaptColor..st new file mode 100644 index 000000000..0a072757f --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUMessage.class/instance/adaptColor..st @@ -0,0 +1,5 @@ +accessing +adaptColor: aSenderId + + (aSenderId =TCUMain core loggedInUserID) + ifTrue: [self color: TCUDefaultValues colorCarrot]. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMessage.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUMessage.class/methodProperties.json index 9604fa279..d0a9da10e 100644 --- a/packages/TelegramClient-UI.package/TCUMessage.class/methodProperties.json +++ b/packages/TelegramClient-UI.package/TCUMessage.class/methodProperties.json @@ -1,7 +1,8 @@ { "class" : { - "newWithText:" : "rs 6/17/2020 21:36" }, + "newWithText:senderId:" : "N.S. 7/26/2020 22:23" }, "instance" : { + "adaptColor:" : "N.S. 7/26/2020 22:36", "defaultHeight" : "rs 6/17/2020 20:07", "defaultWidth" : "rs 6/17/2020 20:35", "initialize" : "rs 7/5/2020 14:27", From f9eb7a02b059f3b467a4b7c2c57a1dac23523a7a Mon Sep 17 00:00:00 2001 From: Niklas Schilli Date: Mon, 27 Jul 2020 00:49:35 +0200 Subject: [PATCH 42/81] Handle errors occuring at login (#228) * Handle errors occuring at login * Auth code handling Co-authored-by: Niklas Schilli --- .../TCCCore.class/instance/tryHandleError..st | 3 +++ .../TCCCore.class/methodProperties.json | 2 +- .../class/invalidAuthenticationCode.st | 4 ++++ .../TCCErrorConstants.class/class/invalidPhoneNumber.st | 4 ++++ .../TCCErrorConstants.class/methodProperties.json | 2 ++ 5 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 packages/TelegramClient-Core.package/TCCErrorConstants.class/class/invalidAuthenticationCode.st create mode 100644 packages/TelegramClient-Core.package/TCCErrorConstants.class/class/invalidPhoneNumber.st diff --git a/packages/TelegramClient-Core.package/TCCCore.class/instance/tryHandleError..st b/packages/TelegramClient-Core.package/TCCCore.class/instance/tryHandleError..st index 8b1ade618..21fa014ab 100644 --- a/packages/TelegramClient-Core.package/TCCCore.class/instance/tryHandleError..st +++ b/packages/TelegramClient-Core.package/TCCCore.class/instance/tryHandleError..st @@ -5,6 +5,9 @@ tryHandleError: anError (anError at: 'message') caseOf: { ['USERNAME_NOT_OCCUPIED'] ->[ UIManager default inform: TCCErrorConstants unknownUsername .]. ['USERNAME_INVALID'] -> [ UIManager default inform: TCCErrorConstants unknownUsername .]. + + ['PHONE_NUMBER_INVALID'] -> [ UIManager default inform: TCCErrorConstants invalidAuthenticationCode.]. + ['PHONE_CODE_INVALID'] -> [ UIManager default inform: TCCErrorConstants invalidAuthenticationCode.]. } otherwise: [ ((anError at: 'message') startsWith: 'Can''t lock file') diff --git a/packages/TelegramClient-Core.package/TCCCore.class/methodProperties.json b/packages/TelegramClient-Core.package/TCCCore.class/methodProperties.json index 85a8d1d35..2c958b7d3 100644 --- a/packages/TelegramClient-Core.package/TCCCore.class/methodProperties.json +++ b/packages/TelegramClient-Core.package/TCCCore.class/methodProperties.json @@ -25,5 +25,5 @@ "sendMessage:to:" : "rs 6/13/2020 15:26", "sendPhoneNumber:" : "js 6/13/2020 15:35", "setUserID:" : "f.w. 7/6/2020 16:16", - "tryHandleError:" : "N.S. 7/26/2020 21:47", + "tryHandleError:" : "N.S. 7/26/2020 23:07", "update" : "js 6/13/2020 19:14" } } diff --git a/packages/TelegramClient-Core.package/TCCErrorConstants.class/class/invalidAuthenticationCode.st b/packages/TelegramClient-Core.package/TCCErrorConstants.class/class/invalidAuthenticationCode.st new file mode 100644 index 000000000..ad1f3dcce --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCErrorConstants.class/class/invalidAuthenticationCode.st @@ -0,0 +1,4 @@ +messages +invalidAuthenticationCode + +^'The authentication code you entered seems to be invalid.' \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCErrorConstants.class/class/invalidPhoneNumber.st b/packages/TelegramClient-Core.package/TCCErrorConstants.class/class/invalidPhoneNumber.st new file mode 100644 index 000000000..1ed0255a8 --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCErrorConstants.class/class/invalidPhoneNumber.st @@ -0,0 +1,4 @@ +messages +invalidPhoneNumber + +^'The phone number you entered seems to be invalid.' \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCErrorConstants.class/methodProperties.json b/packages/TelegramClient-Core.package/TCCErrorConstants.class/methodProperties.json index 8e7eba2cc..98b3d33ac 100644 --- a/packages/TelegramClient-Core.package/TCCErrorConstants.class/methodProperties.json +++ b/packages/TelegramClient-Core.package/TCCErrorConstants.class/methodProperties.json @@ -1,5 +1,7 @@ { "class" : { + "invalidAuthenticationCode" : "N.S. 7/26/2020 23:06", + "invalidPhoneNumber" : "N.S. 7/26/2020 23:06", "tdlibAlreadyInUse" : "N.S. 7/26/2020 21:46", "unknownUsername" : "N.S. 7/26/2020 17:56" }, "instance" : { From f6bf0111d6defeee1acbdab6e0af1c0268fac838 Mon Sep 17 00:00:00 2001 From: Niklas Schilli Date: Thu, 30 Jul 2020 16:56:49 +0200 Subject: [PATCH 43/81] Create stale.yml (#232) --- .github/stale.yml | 62 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 .github/stale.yml diff --git a/.github/stale.yml b/.github/stale.yml new file mode 100644 index 000000000..635e1e2ff --- /dev/null +++ b/.github/stale.yml @@ -0,0 +1,62 @@ +# Configuration for probot-stale - https://github.com/probot/stale + +# Number of days of inactivity before an Issue or Pull Request becomes stale +daysUntilStale: 60 + +# Number of days of inactivity before an Issue or Pull Request with the stale label is closed. +# Set to false to disable. If disabled, issues still need to be closed manually, but will remain marked as stale. +daysUntilClose: false + +# Only issues or pull requests with all of these labels are check if stale. Defaults to `[]` (disabled) +onlyLabels: [] + +# Issues or Pull Requests with these labels will never be considered stale. Set to `[]` to disable +exemptLabels: + - "User Story" + - IMPORTANT + - bug + - "good first issue" + +# Set to true to ignore issues in a project (defaults to false) +exemptProjects: false + +# Set to true to ignore issues in a milestone (defaults to false) +exemptMilestones: false + +# Set to true to ignore issues with an assignee (defaults to false) +exemptAssignees: false + +# Label to use when marking as stale +staleLabel: stale + +# Comment to post when marking as stale. Set to `false` to disable +markComment: > + This issue has been automatically marked as stale because it has not had + recent activity. It may be closed if no further activity occurs. Thank you + for your contributions. + +# Comment to post when removing the stale label. +# unmarkComment: > +# ping + +# Comment to post when closing a stale Issue or Pull Request. +# closeComment: > +# This issue has been closed due to inactivity. + +# Limit the number of actions per hour, from 1-30. Default is 30 +limitPerRun: 1 + +# Limit to only `issues` or `pulls` +# only: issues + +# Optionally, specify configuration settings that are specific to just 'issues' or 'pulls': +# pulls: +# daysUntilStale: 30 +# markComment: > +# This pull request has been automatically marked as stale because it has not had +# recent activity. It will be closed if no further activity occurs. Thank you +# for your contributions. + +# issues: +# exemptLabels: +# - confirmed From bfb435b63bf2808f33ea245a764de79df197f1b4 Mon Sep 17 00:00:00 2001 From: Niklas Schilli Date: Fri, 31 Jul 2020 10:00:48 +0200 Subject: [PATCH 44/81] Set log level after client creation (#234) * Set log level after client creation * docs Co-authored-by: Niklas Schilli --- .../TCCFFIClient.class/instance/setLogLevel..st | 5 +++++ .../TCCFFIClient.class/methodProperties.json | 3 ++- .../TCCTeleClientFactory.class/instance/createClient..st | 9 +++++++-- .../TCCTeleClientFactory.class/methodProperties.json | 2 +- 4 files changed, 15 insertions(+), 4 deletions(-) create mode 100644 packages/TelegramClient-Core.package/TCCFFIClient.class/instance/setLogLevel..st diff --git a/packages/TelegramClient-Core.package/TCCFFIClient.class/instance/setLogLevel..st b/packages/TelegramClient-Core.package/TCCFFIClient.class/instance/setLogLevel..st new file mode 100644 index 000000000..30039e71b --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCFFIClient.class/instance/setLogLevel..st @@ -0,0 +1,5 @@ +ExternalCalls +setLogLevel: aLogLevel + + + ^ self externalCallFailed \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCFFIClient.class/methodProperties.json b/packages/TelegramClient-Core.package/TCCFFIClient.class/methodProperties.json index 73f219581..f93b23e02 100644 --- a/packages/TelegramClient-Core.package/TCCFFIClient.class/methodProperties.json +++ b/packages/TelegramClient-Core.package/TCCFFIClient.class/methodProperties.json @@ -9,4 +9,5 @@ "execute:with:" : "js 6/13/2020 18:33", "free:" : "js 6/13/2020 18:33", "receive:with:" : "js 6/13/2020 18:33", - "send:with:" : "js 6/13/2020 18:33" } } + "send:with:" : "js 6/13/2020 18:33", + "setLogLevel:" : "N.S. 7/30/2020 17:22" } } diff --git a/packages/TelegramClient-Core.package/TCCTeleClientFactory.class/instance/createClient..st b/packages/TelegramClient-Core.package/TCCTeleClientFactory.class/instance/createClient..st index 2fca998cc..c5b3fe9b0 100644 --- a/packages/TelegramClient-Core.package/TCCTeleClientFactory.class/instance/createClient..st +++ b/packages/TelegramClient-Core.package/TCCTeleClientFactory.class/instance/createClient..st @@ -1,8 +1,13 @@ creation createClient: anOsName - ^ (anOsName startsWith: 'Win32') + | client | + client := (anOsName startsWith: 'Win32') ifTrue: [TCCWindowsClient new] ifFalse: [(anOsName startsWith: 'Mac OS') ifTrue: [TCCMacClient new] - ifFalse: [TCCLinuxClient new]] \ No newline at end of file + ifFalse: [TCCLinuxClient new]]. + client setLogLevel: 3. + "Log level is weird, 1 is fatal, 2 is critical, 3 is warning, 4 is default + and debug, but 5-1024 are also fair game" + ^client \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCTeleClientFactory.class/methodProperties.json b/packages/TelegramClient-Core.package/TCCTeleClientFactory.class/methodProperties.json index bc77d9993..5a0891e10 100644 --- a/packages/TelegramClient-Core.package/TCCTeleClientFactory.class/methodProperties.json +++ b/packages/TelegramClient-Core.package/TCCTeleClientFactory.class/methodProperties.json @@ -3,4 +3,4 @@ }, "instance" : { "createClient" : "js 5/28/2020 18:02", - "createClient:" : "js 6/13/2020 18:04" } } + "createClient:" : "N.S. 7/30/2020 17:32" } } From 7e422a46d03749f736582b98375a983da3b657a3 Mon Sep 17 00:00:00 2001 From: Lasklu <49564344+Lasklu@users.noreply.github.com> Date: Fri, 31 Jul 2020 11:48:01 +0200 Subject: [PATCH 45/81] Simplify baseline (#197) * Started editing baseline -- NOT FINISHED * Update baseline..st * Update baseline..st * Update baseline..st * Update baseline..st * Update baseline..st * Update baseline..st * Update baseline..st * Update baseline..st * Update baseline..st * Update baseline..st * Update baseline..st * Update baseline..st * Update baseline..st * Update baseline..st * reverted baseline * Update baseline..st * Update baseline..st * baseline * finished baseline Co-authored-by: Jonas Schmidt <43679965+schmidtjonas@users.noreply.github.com> Co-authored-by: Jonas Schmidt --- .../instance/baseline..st | 106 +++++------------- 1 file changed, 30 insertions(+), 76 deletions(-) diff --git a/packages/BaselineOfTelegramClient.package/BaselineOfTelegramClient.class/instance/baseline..st b/packages/BaselineOfTelegramClient.package/BaselineOfTelegramClient.class/instance/baseline..st index f57917a03..9e30e3882 100644 --- a/packages/BaselineOfTelegramClient.package/BaselineOfTelegramClient.class/instance/baseline..st +++ b/packages/BaselineOfTelegramClient.package/BaselineOfTelegramClient.class/instance/baseline..st @@ -1,78 +1,32 @@ baseline baseline: spec - - spec - for: #'common' - do: [ - Preferences disable: #showDeprecationWarnings. - spec - project: 'RefactoringBrowser' with: [ - spec - className: 'ConfigurationOfRefactoringBrowser'; - versionString: #'stable'; - loads: #('Core' ); - repository: 'http://www.squeaksource.com/MetacelloRepository' ]; - project: 'Grease' with: [ - spec - className: 'ConfigurationOfGrease'; - versionString: #'stable'; - loads: #('Slime'); - repository: 'http://smalltalkhub.com/mc/Seaside/MetacelloConfigurations/main'; - repository: 'http://www.squeaksource.com/MetacelloRepository']; - project: 'Seaside3' with: [ - spec - className: 'ConfigurationOfSeaside3'; - versionString: #'stable'; - loads: #('Development'); - repository: 'http://smalltalkhub.com/mc/Seaside/MetacelloConfigurations/main'; - repository: 'http://www.squeaksource.com/MetacelloRepository']. - spec - package: 'JSON' - with: [ - spec - file: 'JSON-ul.35'; - repository: - 'http://www.squeaksource.com/JSON' ]; - package: 'FFI-Pools' with: [ - spec - file: 'FFI-Pools-eem.13'; - repository: - 'http://source.squeakfoundation.org/FFI' ]; - package: 'FFI-Kernel' with: [ - spec - file: 'FFI-Kernel-nice.68'; - repository: - 'http://source.squeakfoundation.org/FFI' ]; - - "swalint setup" - package: 'SwaLint-Preferences' with: [ - spec - file: 'SwaLint-Preferences-cypress.1'; - repository: - 'github://hpi-swa-teaching/SwaLint:master/packages' ]; - package: 'SwaLint-Core' with: [spec - file: 'SwaLint-Core-cypress.1'; - repository: - 'github://hpi-swa-teaching/SwaLint:master/packages'; - requires: #('RefactoringBrowser' 'SwaLint-Preferences')]; - postLoadDoIt: #postLoad; - package: 'SwaLint-PlugIns' with: [ spec file: 'SwaLint-PlugIns-cypress.1'; - repository: - 'github://hpi-swa-teaching/SwaLint:master/packages'; requires: 'SwaLint-Core' ]; - - - package: 'TelegramClient-Core' with: [spec requires: #('libraries')]; - package: 'TelegramClient-UI' with: [spec requires: #('libraries')]; - package: 'TelegramClient-Tests' with: [spec requires: #('default' 'All')]; - yourself. - spec - group: 'libraries' with: #( 'JSON' 'FFI-Kernel' 'FFI-Pools'); - group: 'default' with: #('TelegramClient-Core' 'TelegramClient-UI'); - group: 'tests' with: #('TelegramClient-Tests' )]; - group: 'default' with: #('PlugIns' 'libraries'); - group: 'portability' with: #('PlugIns'); - group: 'web' with: #('portability' ); - group: 'Core' with: #('SwaLint-Core'); - group: 'All' with: #( 'web'); - group: 'PlugIns' with: #('SwaLint-PlugIns'); - yourself + + spec + for: #'common' + do: [ + Preferences disable: #showDeprecationWarnings. + spec + baseline: 'SwaLint' with: [ + spec + repository: 'github://hpi-swa-teaching/SwaLint:release/packages']; + package: 'JSON' with: [ + spec + file: 'JSON-ul.35'; + repository: 'http://www.squeaksource.com/JSON']; + package: 'FFI-Pools' with: [ + spec + file: 'FFI-Pools-eem.13'; + repository: 'http://source.squeakfoundation.org/FFI']; + package: 'FFI-Kernel' with: [ + spec + file: 'FFI-Kernel-nice.68'; + repository: 'http://source.squeakfoundation.org/FFI']; + + package: 'TelegramClient-Core' with: [spec requires: #('libraries')]; + package: 'TelegramClient-UI' with: [spec requires: #('libraries')]; + package: 'TelegramClient-Tests' with: [spec requires: #('default' 'SwaLint')]. + + spec + group: 'libraries' with: #('JSON' 'FFI-Kernel' 'FFI-Pools'); + group: 'default' with: #('TelegramClient-Core' 'TelegramClient-UI'); + group: 'tests' with: #('TelegramClient-Tests')]. From 6aa1dff2ca4af85c4d9858ce287ee3752d4f00ae Mon Sep 17 00:00:00 2001 From: Niklas Schilli Date: Fri, 31 Jul 2020 13:19:57 +0200 Subject: [PATCH 46/81] just kill me squeak commiting (#240) Co-authored-by: Niklas Schilli --- .../TCCChatsHandler.class/instance/sendMessage.to..st | 4 +++- .../TCCChatsHandler.class/methodProperties.json | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/sendMessage.to..st b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/sendMessage.to..st index cf12dd9c5..fd3bb65db 100644 --- a/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/sendMessage.to..st +++ b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/sendMessage.to..st @@ -1,6 +1,8 @@ accessing sendMessage: aString to: aChatID + |encoded| + encoded := aString asString squeakToUtf8. self client send: (TCCRequest newWithType: 'sendMessage' from: {'chat_id' -> aChatID. @@ -8,4 +10,4 @@ sendMessage: aString to: aChatID '@type' -> 'inputMessageText'. 'text' -> (Dictionary newFrom: { '@type' -> 'formattedText'. - 'text' -> aString})})}). \ No newline at end of file + 'text' -> encoded})})}). \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCChatsHandler.class/methodProperties.json b/packages/TelegramClient-Core.package/TCCChatsHandler.class/methodProperties.json index 806093735..7d0891279 100644 --- a/packages/TelegramClient-Core.package/TCCChatsHandler.class/methodProperties.json +++ b/packages/TelegramClient-Core.package/TCCChatsHandler.class/methodProperties.json @@ -15,6 +15,6 @@ "messageLimit:" : "j 7/16/2020 12:03", "openNewChat:" : "j 7/16/2020 12:04", "searchChat:" : "f.w. 7/15/2020 22:53", - "sendMessage:to:" : "N.S. 7/26/2020 21:26", + "sendMessage:to:" : "N.S. 7/31/2020 13:18", "updateChatOrder:" : "rs 6/25/2020 10:58", "updateLastMessage:" : "r.s 7/7/2020 13:53" } } From 515452122cb098c60d7b791c9df63990bb60f8be Mon Sep 17 00:00:00 2001 From: Niklas Schilli Date: Fri, 31 Jul 2020 14:32:22 +0200 Subject: [PATCH 47/81] Correctly identify own user id (#245) Co-authored-by: Rohan Sawahn --- .../TCCCore.class/instance/authSucceeded.st | 1 + .../TCCCore.class/instance/getOwnProfile.st | 6 ++++++ .../TCCCore.class/instance/handleEvent..st | 2 +- .../TCCCore.class/instance/setUserID..st | 2 +- .../TCCCore.class/methodProperties.json | 7 ++++--- 5 files changed, 13 insertions(+), 5 deletions(-) create mode 100644 packages/TelegramClient-Core.package/TCCCore.class/instance/getOwnProfile.st diff --git a/packages/TelegramClient-Core.package/TCCCore.class/instance/authSucceeded.st b/packages/TelegramClient-Core.package/TCCCore.class/instance/authSucceeded.st index cd2304af9..93ddec7c2 100644 --- a/packages/TelegramClient-Core.package/TCCCore.class/instance/authSucceeded.st +++ b/packages/TelegramClient-Core.package/TCCCore.class/instance/authSucceeded.st @@ -1,5 +1,6 @@ initialization authSucceeded + self getOwnProfile. self chatsHandler getChats. ^ #authReady \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCCore.class/instance/getOwnProfile.st b/packages/TelegramClient-Core.package/TCCCore.class/instance/getOwnProfile.st new file mode 100644 index 000000000..cc06f7332 --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCCore.class/instance/getOwnProfile.st @@ -0,0 +1,6 @@ +initialization +getOwnProfile + + self client send: (TCCRequest + newWithType: 'getMe' + from: {}). \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCCore.class/instance/handleEvent..st b/packages/TelegramClient-Core.package/TCCCore.class/instance/handleEvent..st index 5414f1d77..e77515b71 100644 --- a/packages/TelegramClient-Core.package/TCCCore.class/instance/handleEvent..st +++ b/packages/TelegramClient-Core.package/TCCCore.class/instance/handleEvent..st @@ -12,7 +12,7 @@ handleEvent: anEvent ['updateChatLastMessage'] -> [self chatsHandler updateLastMessage: anEvent]. ['messages'] -> [self chatsHandler chatHistoryReceived: anEvent]. ['updateNewMessage'] -> [self chatsHandler handleNewMessage: anEvent]. - ['updateUser'] -> [self setUserID: anEvent]. + ['user'] -> [self setUserID: anEvent]. ['chat'] -> [self chatsHandler openNewChat: anEvent]} otherwise: []. diff --git a/packages/TelegramClient-Core.package/TCCCore.class/instance/setUserID..st b/packages/TelegramClient-Core.package/TCCCore.class/instance/setUserID..st index c12e1bb40..f73407f42 100644 --- a/packages/TelegramClient-Core.package/TCCCore.class/instance/setUserID..st +++ b/packages/TelegramClient-Core.package/TCCCore.class/instance/setUserID..st @@ -3,5 +3,5 @@ setUserID: anUser | userID | self loggedInUserID = 0 ifTrue: [ - userID := (anUser at: 'user') at: 'id'. + userID := anUser at: 'id'. self loggedInUserID: userID]. \ 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 2c958b7d3..9f57d1e5a 100644 --- a/packages/TelegramClient-Core.package/TCCCore.class/methodProperties.json +++ b/packages/TelegramClient-Core.package/TCCCore.class/methodProperties.json @@ -4,7 +4,7 @@ "instance" : { "authHandler" : "R.S 5/20/2020 16:10", "authHandler:" : "R.S 5/20/2020 16:10", - "authSucceeded" : "rs 7/5/2020 14:48", + "authSucceeded" : "N.S. 7/31/2020 14:22", "chats" : "R.S 6/1/2020 15:34", "chats:" : "R.S 6/1/2020 15:34", "chatsHandler" : "rs 6/7/2020 21:50", @@ -13,7 +13,8 @@ "client" : "R.S 5/20/2020 16:08", "client:" : "js 6/13/2020 19:10", "getChatHistoryFrom:" : "j 7/16/2020 12:24", - "handleEvent:" : "N.S. 7/26/2020 17:33", + "getOwnProfile" : "N.S. 7/31/2020 14:22", + "handleEvent:" : "N.S. 7/31/2020 14:21", "initialize" : "rs 7/5/2020 15:12", "initializeClient" : "js 6/13/2020 18:20", "initializeHandlers" : "j 7/16/2020 11:42", @@ -24,6 +25,6 @@ "searchChat:" : "f.w. 7/15/2020 22:53", "sendMessage:to:" : "rs 6/13/2020 15:26", "sendPhoneNumber:" : "js 6/13/2020 15:35", - "setUserID:" : "f.w. 7/6/2020 16:16", + "setUserID:" : "N.S. 7/31/2020 14:23", "tryHandleError:" : "N.S. 7/26/2020 23:07", "update" : "js 6/13/2020 19:14" } } From 9abd1c7855a3043c2d7f4d888c9ec6d01c768ec1 Mon Sep 17 00:00:00 2001 From: Niklas Schilli Date: Fri, 31 Jul 2020 14:34:12 +0200 Subject: [PATCH 48/81] linebreaks for long messages (#229) * linebreaks * removing ddebug code * Messages on Leftside and cleaned up code * refactored code * Now passing linter Tests Co-authored-by: Niklas Schilli Co-authored-by: Rohan Sawahn <49531442+rohansaw@users.noreply.github.com> Co-authored-by: Rohan Sawahn --- .../instance/addLastMessage.st | 4 ++-- .../TCUChatListItem.class/instance/initialize.st | 3 ++- .../instance/messageMarginTop.st | 4 ++++ .../instance/messagePreviewLength.st | 4 ++++ .../TCUChatListItem.class/methodProperties.json | 6 ++++-- .../instance/addMessage.senderId..st | 2 +- .../instance/displayChat..st | 2 -- .../methodProperties.json | 8 ++++---- .../TCUMessage.class/instance/adaptColor..st | 2 +- .../instance/defaultMinTextLength.st | 4 ++++ .../instance/defaultTextMargins.st | 4 ++++ .../TCUMessage.class/instance/defaultWidth.st | 2 +- .../TCUMessage.class/instance/initialize.st | 2 ++ .../TCUMessage.class/instance/setText..st | 16 +++++++++++++--- .../TCUMessage.class/methodProperties.json | 10 ++++++---- 15 files changed, 52 insertions(+), 21 deletions(-) create mode 100644 packages/TelegramClient-UI.package/TCUChatListItem.class/instance/messageMarginTop.st create mode 100644 packages/TelegramClient-UI.package/TCUChatListItem.class/instance/messagePreviewLength.st create mode 100644 packages/TelegramClient-UI.package/TCUMessage.class/instance/defaultMinTextLength.st create mode 100644 packages/TelegramClient-UI.package/TCUMessage.class/instance/defaultTextMargins.st diff --git a/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/addLastMessage.st b/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/addLastMessage.st index 5dc9d967a..69c01ee61 100644 --- a/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/addLastMessage.st +++ b/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/addLastMessage.st @@ -2,9 +2,9 @@ initialization addLastMessage | text | - text := (self chat lastMessage truncateTo: 25), '...'. + text := (self chat lastMessage truncateTo: self messagePreviewLength), '...'. self addMorph: (TextMorph new contents: text asText; - center: self center + (0 @ 20); + center: self center + (0 @ self messageMarginTop); lock). \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/initialize.st b/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/initialize.st index 5653bc4c7..9c5e90bb2 100644 --- a/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/initialize.st +++ b/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/initialize.st @@ -6,4 +6,5 @@ initialize self color: Color white; height: self defaultHeight; - borderWidth: 0. \ No newline at end of file + borderWidth: 0; + clipSubmorphs: true. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/messageMarginTop.st b/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/messageMarginTop.st new file mode 100644 index 000000000..0f144f288 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/messageMarginTop.st @@ -0,0 +1,4 @@ +initialization +messageMarginTop + + ^ 20 \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/messagePreviewLength.st b/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/messagePreviewLength.st new file mode 100644 index 000000000..3117a8300 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/messagePreviewLength.st @@ -0,0 +1,4 @@ +initialization +messagePreviewLength + + ^ 25 \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatListItem.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUChatListItem.class/methodProperties.json index 90866bca6..a14557928 100644 --- a/packages/TelegramClient-UI.package/TCUChatListItem.class/methodProperties.json +++ b/packages/TelegramClient-UI.package/TCUChatListItem.class/methodProperties.json @@ -3,7 +3,7 @@ "newWithChat:andWidth:" : "rs 7/4/2020 18:47" }, "instance" : { "addBorder" : "R.S 6/1/2020 22:20", - "addLastMessage" : "j 7/16/2020 13:27", + "addLastMessage" : "r.s 7/31/2020 14:18", "addTitle" : "rs 7/4/2020 19:05", "chat" : "rs 6/17/2020 21:45", "chat:" : "rs 6/17/2020 21:45", @@ -11,5 +11,7 @@ "chatName" : "rs 6/17/2020 21:45", "defaultHeight" : "rs 7/4/2020 18:54", "deselect" : "rs 6/13/2020 09:02", - "initialize" : "rs 6/17/2020 23:05", + "initialize" : "r.s 7/31/2020 14:02", + "messageMarginTop" : "r.s 7/31/2020 14:18", + "messagePreviewLength" : "r.s 7/31/2020 14:17", "select" : "rs 6/13/2020 08:49" } } diff --git a/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/addMessage.senderId..st b/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/addMessage.senderId..st index 8f214b32a..fd1db93b4 100644 --- a/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/addMessage.senderId..st +++ b/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/addMessage.senderId..st @@ -6,6 +6,6 @@ addMessage: aString senderId: senderId self messages do: [:aMessage | aMessage position: (aMessage position - (0 @ (message height + self heightBetweenMessages)))]. - message bottomRight: (self bottomRight - (self defaultMessageMargin @ message height)). + message bottomLeft: (self bottomLeft + (self defaultMessageMargin @ 0)). self addMorph: message. self messages add: message. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/displayChat..st b/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/displayChat..st index 3a6970245..3820d89cb 100644 --- a/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/displayChat..st +++ b/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/displayChat..st @@ -1,7 +1,5 @@ accessing displayChat: aChat - "fetch all saved messages or something" - self messages do: [:aMessage | aMessage delete]. self messages removeAll. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatMessageList.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUChatMessageList.class/methodProperties.json index 63abd146b..95ecb0f8f 100644 --- a/packages/TelegramClient-UI.package/TCUChatMessageList.class/methodProperties.json +++ b/packages/TelegramClient-UI.package/TCUChatMessageList.class/methodProperties.json @@ -2,10 +2,10 @@ "class" : { }, "instance" : { - "addMessage:senderId:" : "N.S. 7/26/2020 22:31", - "defaultMessageMargin" : "rs 6/18/2020 17:58", - "displayChat:" : "rs 6/17/2020 21:50", - "heightBetweenMessages" : "rs 6/17/2020 20:41", + "addMessage:senderId:" : "r.s 7/31/2020 14:05", + "defaultMessageMargin" : "r.s 7/31/2020 14:16", + "displayChat:" : "r.s 7/31/2020 14:04", + "heightBetweenMessages" : "r.s 7/31/2020 14:16", "initialize" : "rs 6/17/2020 21:33", "initializeMessages:" : "N.S. 7/26/2020 22:20", "messages" : "rs 6/17/2020 19:10", diff --git a/packages/TelegramClient-UI.package/TCUMessage.class/instance/adaptColor..st b/packages/TelegramClient-UI.package/TCUMessage.class/instance/adaptColor..st index 0a072757f..97c8e755c 100644 --- a/packages/TelegramClient-UI.package/TCUMessage.class/instance/adaptColor..st +++ b/packages/TelegramClient-UI.package/TCUMessage.class/instance/adaptColor..st @@ -1,5 +1,5 @@ accessing adaptColor: aSenderId - (aSenderId =TCUMain core loggedInUserID) + (aSenderId = TCUMain core loggedInUserID) ifTrue: [self color: TCUDefaultValues colorCarrot]. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMessage.class/instance/defaultMinTextLength.st b/packages/TelegramClient-UI.package/TCUMessage.class/instance/defaultMinTextLength.st new file mode 100644 index 000000000..a879d1b27 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUMessage.class/instance/defaultMinTextLength.st @@ -0,0 +1,4 @@ +accessing +defaultMinTextLength + + ^ 280 \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMessage.class/instance/defaultTextMargins.st b/packages/TelegramClient-UI.package/TCUMessage.class/instance/defaultTextMargins.st new file mode 100644 index 000000000..19c8149e7 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUMessage.class/instance/defaultTextMargins.st @@ -0,0 +1,4 @@ +accessing +defaultTextMargins + + ^ (5 @ 4) \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMessage.class/instance/defaultWidth.st b/packages/TelegramClient-UI.package/TCUMessage.class/instance/defaultWidth.st index 25180d158..49bf6e2d4 100644 --- a/packages/TelegramClient-UI.package/TCUMessage.class/instance/defaultWidth.st +++ b/packages/TelegramClient-UI.package/TCUMessage.class/instance/defaultWidth.st @@ -1,4 +1,4 @@ accessing defaultWidth - ^ 300 \ No newline at end of file + ^ 500 \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMessage.class/instance/initialize.st b/packages/TelegramClient-UI.package/TCUMessage.class/instance/initialize.st index d513dd711..ae1b8c217 100644 --- a/packages/TelegramClient-UI.package/TCUMessage.class/instance/initialize.st +++ b/packages/TelegramClient-UI.package/TCUMessage.class/instance/initialize.st @@ -7,5 +7,7 @@ initialize width: self defaultWidth; height: self defaultHeight; color: TCUDefaultValues colorLightBlue; + hResizing: #shrinkWrap; + vResizing: #shrinkWrap; borderWidth: 0; useRoundedCorners. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMessage.class/instance/setText..st b/packages/TelegramClient-UI.package/TCUMessage.class/instance/setText..st index 951502907..ca0b669c8 100644 --- a/packages/TelegramClient-UI.package/TCUMessage.class/instance/setText..st +++ b/packages/TelegramClient-UI.package/TCUMessage.class/instance/setText..st @@ -1,7 +1,17 @@ accessing setText: aString - self text: (TextMorph new contents: aString). - self text color: Color white. - self text lock. + |expectedWidth| + self text: (TextMorph new contents: aString; + wrapFlag: true; + margins: self defaultTextMargins; + width: self defaultWidth; + hResizing: #rigid; + color: Color white; + lock). + + expectedWidth := self text textStyle fontArray first widthOfString: aString. + (expectedWidth <= self defaultMinTextLength) ifTrue: [self text width: expectedWidth + 50. + self width: expectedWidth + 80]. + self addMorphCentered: self text. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMessage.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUMessage.class/methodProperties.json index d0a9da10e..d867eeb9b 100644 --- a/packages/TelegramClient-UI.package/TCUMessage.class/methodProperties.json +++ b/packages/TelegramClient-UI.package/TCUMessage.class/methodProperties.json @@ -2,10 +2,12 @@ "class" : { "newWithText:senderId:" : "N.S. 7/26/2020 22:23" }, "instance" : { - "adaptColor:" : "N.S. 7/26/2020 22:36", + "adaptColor:" : "r.s 7/31/2020 13:58", "defaultHeight" : "rs 6/17/2020 20:07", - "defaultWidth" : "rs 6/17/2020 20:35", - "initialize" : "rs 7/5/2020 14:27", - "setText:" : "N.S. 7/26/2020 15:46", + "defaultMinTextLength" : "r.s 7/31/2020 14:21", + "defaultTextMargins" : "r.s 7/31/2020 14:21", + "defaultWidth" : "r.s 7/31/2020 14:19", + "initialize" : "r.s 7/31/2020 14:27", + "setText:" : "r.s 7/31/2020 14:28", "text" : "rs 6/17/2020 19:48", "text:" : "rs 6/17/2020 19:52" } } From 1a68b2ea34b028d72772c2ffd8fd6d778d39aa9c Mon Sep 17 00:00:00 2001 From: Lasklu <49564344+Lasklu@users.noreply.github.com> Date: Fri, 31 Jul 2020 14:40:55 +0200 Subject: [PATCH 49/81] removed execution for smalltalk5.3 (#244) Co-authored-by: Niklas Schilli --- .github/workflows/main.yml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 81dfb2e38..c912c21ea 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -1,3 +1,4 @@ + name: CI on: @@ -15,11 +16,8 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - # Select platform(s) os: [ ubuntu-latest ] - # Select compatible Smalltalk image(s) - # currently not running on Squeak64-trunk - smalltalk: [ Squeak64-5.3, Squeak64-5.2 ] + smalltalk: [ Squeak64-5.2 ] name: ${{ matrix.smalltalk }} on ${{ matrix.os }} steps: - uses: actions/checkout@v2 From a4ca84ba21c5692bdb318b60c7c2f164422f0fec Mon Sep 17 00:00:00 2001 From: Jonas Schmidt <43679965+schmidtjonas@users.noreply.github.com> Date: Fri, 31 Jul 2020 14:49:40 +0200 Subject: [PATCH 50/81] Changed README (#242) * added icon * changed readme * changed readme * changes * change * changed badges * Update README.md * removed CI-section * Update README.md * Update README.md * fixed a link error Co-authored-by: Lasklu <49564344+Lasklu@users.noreply.github.com> --- README.md | 20 +++++--------------- assets/logo.png | Bin 0 -> 137805 bytes 2 files changed, 5 insertions(+), 15 deletions(-) create mode 100644 assets/logo.png diff --git a/README.md b/README.md index adb283c61..1e260ba35 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,12 @@ -

TelegramClient Logo

+

TeleSqueak

+

TeleSqueak

- - - - + +

@@ -16,15 +15,6 @@ TeleSqueak is a **Squeak-Client** for the widely used Telegram-Messenger. It aim *This Project is part of the "Softwaretechnik" Lecture 2020 at the Hasso Plattner Institute.* -## CI Status -### Unit Tests -Develop: ![CI](https://github.com/hpi-swa-teaching/TelegramClient/workflows/CI/badge.svg?branch=develop) -Master(Release): ![CI](https://github.com/hpi-swa-teaching/TelegramClient/workflows/CI/badge.svg?branch=master) - -### Linting Tests -Develop: ![CI](https://github.com/hpi-swa-teaching/TelegramClient/workflows/CI-Lint/badge.svg?branch=develop) -Master(Release): ![CI](https://github.com/hpi-swa-teaching/TelegramClient/workflows/CI-Lint/badge.svg?branch=master) - ## Installation Make sure you have the current version of Squeak installed. * Step 1: Install the Squeak Git Client and clone this repository. For the trunk clone develop, for the latest stable release choose master. @@ -35,7 +25,7 @@ install: 'FFI-Kernel'.` * Step 4: Place the unzipped binaries inside of your squeak image inside the 'Resource' folder. * Step 5 (Windows only): Install the [Visual C++ Redistributable for Visual Studio 2015, 2017 and 2019](https://aka.ms/vs/16/release/vc_redist.x64.exe) -Alternatively, check our (release page)[https://github.com/hpi-swa-teaching/TelegramClient/releases] for an online installer in the form of a sar file. In that case you just have to follow steps two and five. +Alternatively, check our [release page](https://github.com/hpi-swa-teaching/TelegramClient/releases) for an online installer in the form of a sar file. In that case you just have to follow steps two and five. ## Running TelegramClient In a workspace window either execute the command `TCUTelegram newWithTCCCore` or click the Telegram entry in the Apps dropdown menu. The menu is only available if you already started the app once or installed the app via a release sar file. diff --git a/assets/logo.png b/assets/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..eabb5ba3073d339481a20306a53944f38c9bfce7 GIT binary patch literal 137805 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�vx@zZnnHZjbveQ|p2fwSEa*R|64)U=q+< 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 KMNUMnLSTX^@0JSy literal 0 HcmV?d00001 From 50a571c78a18b569ea3854aceccb68f7986eb92f Mon Sep 17 00:00:00 2001 From: Rohan Sawahn <49531442+rohansaw@users.noreply.github.com> Date: Fri, 31 Jul 2020 14:54:07 +0200 Subject: [PATCH 51/81] Now displaying correct Errormessage for invalid phonenumber (#247) --- .../TCCAuthHandler.class/instance/handleEvent..st | 2 +- .../TCCAuthHandler.class/methodProperties.json | 2 +- .../TCCCore.class/instance/handleEvent..st | 3 +-- .../TCCCore.class/instance/tryHandleError..st | 2 +- .../TCCCore.class/methodProperties.json | 4 ++-- .../class/invalidAuthenticationCode.st | 2 +- .../TCCErrorConstants.class/class/invalidPhoneNumber.st | 2 +- .../TCCErrorConstants.class/class/tdlibAlreadyInUse.st | 2 +- .../TCCErrorConstants.class/class/unknownUsername.st | 2 +- .../TCCErrorConstants.class/methodProperties.json | 8 ++++---- .../TCUChatListItem.class/instance/addBorder.st | 2 +- .../TCUChatListItem.class/methodProperties.json | 4 ++-- 12 files changed, 17 insertions(+), 18 deletions(-) diff --git a/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/handleEvent..st b/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/handleEvent..st index 50818cd26..2ae1f6a98 100644 --- a/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/handleEvent..st +++ b/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/handleEvent..st @@ -2,7 +2,7 @@ accessing handleEvent: anEvent self authState: ((anEvent at: 'authorization_state') at: '@type'). - + self isAuthStateClosed ifTrue: [self client free]. self isAwaitingTDLibParams ifTrue: [self setTDLibParams]. diff --git a/packages/TelegramClient-Core.package/TCCAuthHandler.class/methodProperties.json b/packages/TelegramClient-Core.package/TCCAuthHandler.class/methodProperties.json index c6fe14dc4..81a7c2d93 100644 --- a/packages/TelegramClient-Core.package/TCCAuthHandler.class/methodProperties.json +++ b/packages/TelegramClient-Core.package/TCCAuthHandler.class/methodProperties.json @@ -10,7 +10,7 @@ "authState:" : "R.S 5/18/2020 17:54", "checkAuthenticationCode:" : "js 6/13/2020 18:31", "client" : "js 5/28/2020 18:36", - "handleEvent:" : "r.s 7/15/2020 18:46", + "handleEvent:" : "r.s 7/31/2020 14:47", "initialize" : "r.s 7/13/2020 18:15", "isAuthStateClosed" : "r.s 7/15/2020 12:17", "isAuthorizationStateReady" : "r.s 7/15/2020 12:17", diff --git a/packages/TelegramClient-Core.package/TCCCore.class/instance/handleEvent..st b/packages/TelegramClient-Core.package/TCCCore.class/instance/handleEvent..st index e77515b71..bbdf76e1d 100644 --- a/packages/TelegramClient-Core.package/TCCCore.class/instance/handleEvent..st +++ b/packages/TelegramClient-Core.package/TCCCore.class/instance/handleEvent..st @@ -3,8 +3,7 @@ handleEvent: anEvent | update | update := nil. - (((anEvent at: '@type') = 'error') and: [(anEvent at: 'code') = 400 ]) - ifTrue: [self tryHandleError: anEvent.]. + (((anEvent at: '@type') = 'error') and: [(anEvent at: 'code') = 400 ]) ifTrue: [self tryHandleError: anEvent]. (anEvent at: '@type') caseOf: { ['updateAuthorizationState'] -> [update := self authHandler handleEvent: anEvent]. ['updateNewChat'] -> [self chatsHandler addChat: anEvent]. diff --git a/packages/TelegramClient-Core.package/TCCCore.class/instance/tryHandleError..st b/packages/TelegramClient-Core.package/TCCCore.class/instance/tryHandleError..st index 21fa014ab..fade77247 100644 --- a/packages/TelegramClient-Core.package/TCCCore.class/instance/tryHandleError..st +++ b/packages/TelegramClient-Core.package/TCCCore.class/instance/tryHandleError..st @@ -6,7 +6,7 @@ tryHandleError: anError ['USERNAME_NOT_OCCUPIED'] ->[ UIManager default inform: TCCErrorConstants unknownUsername .]. ['USERNAME_INVALID'] -> [ UIManager default inform: TCCErrorConstants unknownUsername .]. - ['PHONE_NUMBER_INVALID'] -> [ UIManager default inform: TCCErrorConstants invalidAuthenticationCode.]. + ['PHONE_NUMBER_INVALID'] -> [ UIManager default inform: TCCErrorConstants invalidPhoneNumber.]. ['PHONE_CODE_INVALID'] -> [ UIManager default inform: TCCErrorConstants invalidAuthenticationCode.]. } otherwise: [ diff --git a/packages/TelegramClient-Core.package/TCCCore.class/methodProperties.json b/packages/TelegramClient-Core.package/TCCCore.class/methodProperties.json index 9f57d1e5a..5e866b1db 100644 --- a/packages/TelegramClient-Core.package/TCCCore.class/methodProperties.json +++ b/packages/TelegramClient-Core.package/TCCCore.class/methodProperties.json @@ -14,7 +14,7 @@ "client:" : "js 6/13/2020 19:10", "getChatHistoryFrom:" : "j 7/16/2020 12:24", "getOwnProfile" : "N.S. 7/31/2020 14:22", - "handleEvent:" : "N.S. 7/31/2020 14:21", + "handleEvent:" : "r.s 7/31/2020 14:49", "initialize" : "rs 7/5/2020 15:12", "initializeClient" : "js 6/13/2020 18:20", "initializeHandlers" : "j 7/16/2020 11:42", @@ -26,5 +26,5 @@ "sendMessage:to:" : "rs 6/13/2020 15:26", "sendPhoneNumber:" : "js 6/13/2020 15:35", "setUserID:" : "N.S. 7/31/2020 14:23", - "tryHandleError:" : "N.S. 7/26/2020 23:07", + "tryHandleError:" : "r.s 7/31/2020 14:48", "update" : "js 6/13/2020 19:14" } } diff --git a/packages/TelegramClient-Core.package/TCCErrorConstants.class/class/invalidAuthenticationCode.st b/packages/TelegramClient-Core.package/TCCErrorConstants.class/class/invalidAuthenticationCode.st index ad1f3dcce..88ddf8c9c 100644 --- a/packages/TelegramClient-Core.package/TCCErrorConstants.class/class/invalidAuthenticationCode.st +++ b/packages/TelegramClient-Core.package/TCCErrorConstants.class/class/invalidAuthenticationCode.st @@ -1,4 +1,4 @@ messages invalidAuthenticationCode -^'The authentication code you entered seems to be invalid.' \ No newline at end of file + ^ 'The authentication code you entered seems to be invalid.' \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCErrorConstants.class/class/invalidPhoneNumber.st b/packages/TelegramClient-Core.package/TCCErrorConstants.class/class/invalidPhoneNumber.st index 1ed0255a8..f90dc4322 100644 --- a/packages/TelegramClient-Core.package/TCCErrorConstants.class/class/invalidPhoneNumber.st +++ b/packages/TelegramClient-Core.package/TCCErrorConstants.class/class/invalidPhoneNumber.st @@ -1,4 +1,4 @@ messages invalidPhoneNumber -^'The phone number you entered seems to be invalid.' \ No newline at end of file + ^ 'The phone number you entered seems to be invalid.' \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCErrorConstants.class/class/tdlibAlreadyInUse.st b/packages/TelegramClient-Core.package/TCCErrorConstants.class/class/tdlibAlreadyInUse.st index ace987837..01a89eae7 100644 --- a/packages/TelegramClient-Core.package/TCCErrorConstants.class/class/tdlibAlreadyInUse.st +++ b/packages/TelegramClient-Core.package/TCCErrorConstants.class/class/tdlibAlreadyInUse.st @@ -1,4 +1,4 @@ messages tdlibAlreadyInUse -^'An error seems to have occured while shutting down Telegram. Restart Telegram and your image to fix this error.' \ No newline at end of file + ^ 'An error seems to have occured while shutting down Telegram. Restart Telegram and your image to fix this error.' \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCErrorConstants.class/class/unknownUsername.st b/packages/TelegramClient-Core.package/TCCErrorConstants.class/class/unknownUsername.st index 72790df36..f54f31ee2 100644 --- a/packages/TelegramClient-Core.package/TCCErrorConstants.class/class/unknownUsername.st +++ b/packages/TelegramClient-Core.package/TCCErrorConstants.class/class/unknownUsername.st @@ -1,4 +1,4 @@ messages unknownUsername -^'Username not assigned or invalid.' \ No newline at end of file + ^ 'Username not assigned or invalid.' \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCErrorConstants.class/methodProperties.json b/packages/TelegramClient-Core.package/TCCErrorConstants.class/methodProperties.json index 98b3d33ac..9effac684 100644 --- a/packages/TelegramClient-Core.package/TCCErrorConstants.class/methodProperties.json +++ b/packages/TelegramClient-Core.package/TCCErrorConstants.class/methodProperties.json @@ -1,8 +1,8 @@ { "class" : { - "invalidAuthenticationCode" : "N.S. 7/26/2020 23:06", - "invalidPhoneNumber" : "N.S. 7/26/2020 23:06", - "tdlibAlreadyInUse" : "N.S. 7/26/2020 21:46", - "unknownUsername" : "N.S. 7/26/2020 17:56" }, + "invalidAuthenticationCode" : "r.s 7/31/2020 14:48", + "invalidPhoneNumber" : "r.s 7/31/2020 14:48", + "tdlibAlreadyInUse" : "r.s 7/31/2020 14:48", + "unknownUsername" : "r.s 7/31/2020 14:48" }, "instance" : { } } diff --git a/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/addBorder.st b/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/addBorder.st index ac2a79d6a..fcdd6eb04 100644 --- a/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/addBorder.st +++ b/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/addBorder.st @@ -5,4 +5,4 @@ addBorder width: self width; color: Color black; height: 1; - position: (self position + (0 @ self defaultHeight))). \ No newline at end of file + position: (self position + (0 @ (self defaultHeight - 1)))). \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatListItem.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUChatListItem.class/methodProperties.json index a14557928..55f1afb99 100644 --- a/packages/TelegramClient-UI.package/TCUChatListItem.class/methodProperties.json +++ b/packages/TelegramClient-UI.package/TCUChatListItem.class/methodProperties.json @@ -2,7 +2,7 @@ "class" : { "newWithChat:andWidth:" : "rs 7/4/2020 18:47" }, "instance" : { - "addBorder" : "R.S 6/1/2020 22:20", + "addBorder" : "r.s 7/31/2020 14:43", "addLastMessage" : "r.s 7/31/2020 14:18", "addTitle" : "rs 7/4/2020 19:05", "chat" : "rs 6/17/2020 21:45", @@ -11,7 +11,7 @@ "chatName" : "rs 6/17/2020 21:45", "defaultHeight" : "rs 7/4/2020 18:54", "deselect" : "rs 6/13/2020 09:02", - "initialize" : "r.s 7/31/2020 14:02", + "initialize" : "r.s 7/31/2020 14:43", "messageMarginTop" : "r.s 7/31/2020 14:18", "messagePreviewLength" : "r.s 7/31/2020 14:17", "select" : "rs 6/13/2020 08:49" } } From edba01f749cedabf30f154e7fe9edb0cf3c03883 Mon Sep 17 00:00:00 2001 From: Jonas Schmidt <43679965+schmidtjonas@users.noreply.github.com> Date: Fri, 31 Jul 2020 22:23:39 +0200 Subject: [PATCH 52/81] Refactoring (#253) * changed logout * chats changes * refactoring * Added tests for ChatsList * display own messages on the right * wip changes * wip messages * wip messages * wip tcumessage * made chat selection persistent * small changes * fixed linter tests Co-authored-by: Rohan Sawahn Co-authored-by: Lukas Laskowski --- .github/workflows/main.yml | 6 +++-- README.md | 20 ++++++++++++---- assets/logo.png | Bin 137805 -> 0 bytes .../TCCAuthHandler.class/instance/logout.st | 4 +++- .../methodProperties.json | 2 +- .../TCCChat.class/instance/addMessage..st | 5 ++++ .../TCCChat.class/instance/addNewMessage..st | 5 ++++ .../TCCChat.class/methodProperties.json | 2 ++ .../TCCChats.class/instance/initialize.st | 4 ++-- .../TCCChats.class/instance/notify.st | 6 +++++ .../TCCChats.class/instance/sortBlock.st | 4 ---- .../TCCChats.class/methodProperties.json | 4 ++-- .../instance/addChat..st | 2 +- .../instance/addNewMessage..st | 18 +++++++------- .../instance/chatHistoryReceived..st | 2 +- .../instance/getChatHistoryFrom.with.and..st | 11 +++++---- .../instance/handleNewMessage..st | 6 ++++- .../instance/messageLimit.st | 2 +- .../instance/sendMessage.to..st | 7 +++--- .../instance/updateChatOrder..st | 2 +- .../instance/updateLastMessage..st | 4 +--- .../methodProperties.json | 20 ++++++++-------- .../TCCCore.class/instance/tryHandleError..st | 16 +++++-------- .../TCCCore.class/methodProperties.json | 2 +- .../TCCMessage.class/instance/chatID.st | 2 +- .../TCCMessage.class/instance/messageId.st | 2 +- .../TCCMessage.class/methodProperties.json | 4 ++-- .../TCTChatTests.class/README.md | 1 + .../TCTChatTests.class/instance/chats..st | 4 ++++ .../TCTChatTests.class/instance/chats.st | 4 ++++ .../TCTChatTests.class/instance/setUp.st | 7 ++++++ .../instance/testOrderInsert.st | 8 +++++++ .../instance/testOrderModify.st | 11 +++++++++ .../TCTChatTests.class/methodProperties.json | 9 +++++++ .../TCTChatTests.class/properties.json | 14 +++++++++++ .../instance/testCreateSarFile.st | 22 +++++++++--------- .../methodProperties.json | 2 +- .../instance/createButtonBack.st | 8 +++---- .../instance/createButtonNext.st | 8 +++---- .../instance/createErrorLabel..st | 14 +++++------ .../instance/createInputField..st | 18 +++++++------- .../methodProperties.json | 10 ++++---- ...hat.andWidth..st => newWithChat.width..st} | 2 +- .../instance/addLastMessage.st | 2 +- .../methodProperties.json | 4 ++-- .../instance/addMessage.senderId..st | 11 --------- .../instance/addMessageAtBottom..st | 13 +++++++++++ .../instance/chat..st | 4 ++++ .../TCUChatMessageList.class/instance/chat.st | 4 ++++ .../instance/clearMessages.st | 5 ++++ .../instance/defaultMessageMargin.st | 2 +- .../instance/displayChat..st | 7 ++++-- .../instance/heightBetweenMessages.st | 4 ---- .../instance/initialize.st | 1 + .../instance/initializeMessages..st | 4 ---- .../instance/redrawMessages.st | 7 ++++++ .../methodProperties.json | 16 +++++++------ .../TCUChatMessageList.class/properties.json | 3 ++- .../instance/buttonSendPressed.st | 3 +-- .../instance/newChatSelected..st | 6 +---- .../TCUChatWindow.class/methodProperties.json | 4 ++-- .../instance/redrawItems.st | 3 ++- .../TCUChatsList.class/methodProperties.json | 2 +- .../TCUMain.class/class/core..st | 2 +- .../TCUMain.class/class/core.st | 2 +- .../TCUMain.class/methodProperties.json | 4 ++-- .../class/newFromTCCMessage..st | 7 ++++++ .../class/newWithText.senderId..st | 12 ---------- .../TCUMessage.class/instance/adaptColor..st | 5 ---- .../TCUMessage.class/instance/addText.st | 18 ++++++++++++++ .../instance/defaultMargin.st | 4 ++++ .../instance/defaultMinTextLength.st | 2 +- .../instance/defaultTextMargins.st | 2 +- .../TCUMessage.class/instance/initialize.st | 5 +++- .../TCUMessage.class/instance/isSentByMe.st | 4 ++++ .../TCUMessage.class/instance/senderID..st | 4 ++++ .../TCUMessage.class/instance/senderID.st | 4 ++++ .../TCUMessage.class/instance/setText..st | 17 -------------- .../TCUMessage.class/methodProperties.json | 15 +++++++----- .../TCUMessage.class/properties.json | 3 ++- 80 files changed, 317 insertions(+), 202 deletions(-) delete mode 100644 assets/logo.png create mode 100644 packages/TelegramClient-Core.package/TCCChat.class/instance/addMessage..st create mode 100644 packages/TelegramClient-Core.package/TCCChat.class/instance/addNewMessage..st create mode 100644 packages/TelegramClient-Core.package/TCCChats.class/instance/notify.st delete mode 100644 packages/TelegramClient-Core.package/TCCChats.class/instance/sortBlock.st create mode 100644 packages/TelegramClient-Tests.package/TCTChatTests.class/README.md create mode 100644 packages/TelegramClient-Tests.package/TCTChatTests.class/instance/chats..st create mode 100644 packages/TelegramClient-Tests.package/TCTChatTests.class/instance/chats.st create mode 100644 packages/TelegramClient-Tests.package/TCTChatTests.class/instance/setUp.st create mode 100644 packages/TelegramClient-Tests.package/TCTChatTests.class/instance/testOrderInsert.st create mode 100644 packages/TelegramClient-Tests.package/TCTChatTests.class/instance/testOrderModify.st create mode 100644 packages/TelegramClient-Tests.package/TCTChatTests.class/methodProperties.json create mode 100644 packages/TelegramClient-Tests.package/TCTChatTests.class/properties.json rename packages/TelegramClient-UI.package/TCUChatListItem.class/class/{newWithChat.andWidth..st => newWithChat.width..st} (74%) delete mode 100644 packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/addMessage.senderId..st create mode 100644 packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/addMessageAtBottom..st create mode 100644 packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/chat..st create mode 100644 packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/chat.st create mode 100644 packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/clearMessages.st delete mode 100644 packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/heightBetweenMessages.st delete mode 100644 packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/initializeMessages..st create mode 100644 packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/redrawMessages.st create mode 100644 packages/TelegramClient-UI.package/TCUMessage.class/class/newFromTCCMessage..st delete mode 100644 packages/TelegramClient-UI.package/TCUMessage.class/class/newWithText.senderId..st delete mode 100644 packages/TelegramClient-UI.package/TCUMessage.class/instance/adaptColor..st create mode 100644 packages/TelegramClient-UI.package/TCUMessage.class/instance/addText.st create mode 100644 packages/TelegramClient-UI.package/TCUMessage.class/instance/defaultMargin.st create mode 100644 packages/TelegramClient-UI.package/TCUMessage.class/instance/isSentByMe.st create mode 100644 packages/TelegramClient-UI.package/TCUMessage.class/instance/senderID..st create mode 100644 packages/TelegramClient-UI.package/TCUMessage.class/instance/senderID.st delete mode 100644 packages/TelegramClient-UI.package/TCUMessage.class/instance/setText..st diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index c912c21ea..81dfb2e38 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -1,4 +1,3 @@ - name: CI on: @@ -16,8 +15,11 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: + # Select platform(s) os: [ ubuntu-latest ] - smalltalk: [ Squeak64-5.2 ] + # Select compatible Smalltalk image(s) + # currently not running on Squeak64-trunk + smalltalk: [ Squeak64-5.3, Squeak64-5.2 ] name: ${{ matrix.smalltalk }} on ${{ matrix.os }} steps: - uses: actions/checkout@v2 diff --git a/README.md b/README.md index 1e260ba35..adb283c61 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,13 @@ -

TeleSqueak

+

TelegramClient Logo

-

TeleSqueak

- - + + + +

@@ -15,6 +16,15 @@ TeleSqueak is a **Squeak-Client** for the widely used Telegram-Messenger. It aim *This Project is part of the "Softwaretechnik" Lecture 2020 at the Hasso Plattner Institute.* +## CI Status +### Unit Tests +Develop: ![CI](https://github.com/hpi-swa-teaching/TelegramClient/workflows/CI/badge.svg?branch=develop) +Master(Release): ![CI](https://github.com/hpi-swa-teaching/TelegramClient/workflows/CI/badge.svg?branch=master) + +### Linting Tests +Develop: ![CI](https://github.com/hpi-swa-teaching/TelegramClient/workflows/CI-Lint/badge.svg?branch=develop) +Master(Release): ![CI](https://github.com/hpi-swa-teaching/TelegramClient/workflows/CI-Lint/badge.svg?branch=master) + ## Installation Make sure you have the current version of Squeak installed. * Step 1: Install the Squeak Git Client and clone this repository. For the trunk clone develop, for the latest stable release choose master. @@ -25,7 +35,7 @@ install: 'FFI-Kernel'.` * Step 4: Place the unzipped binaries inside of your squeak image inside the 'Resource' folder. * Step 5 (Windows only): Install the [Visual C++ Redistributable for Visual Studio 2015, 2017 and 2019](https://aka.ms/vs/16/release/vc_redist.x64.exe) -Alternatively, check our [release page](https://github.com/hpi-swa-teaching/TelegramClient/releases) for an online installer in the form of a sar file. In that case you just have to follow steps two and five. +Alternatively, check our (release page)[https://github.com/hpi-swa-teaching/TelegramClient/releases] for an online installer in the form of a sar file. In that case you just have to follow steps two and five. ## Running TelegramClient In a workspace window either execute the command `TCUTelegram newWithTCCCore` or click the Telegram entry in the Apps dropdown menu. The menu is only available if you already started the app once or installed the app via a release sar file. diff --git a/assets/logo.png b/assets/logo.png deleted file mode 100644 index eabb5ba3073d339481a20306a53944f38c9bfce7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 137805 zcmeFZWmKHawl3PZyL+P{Xyfkg1PC6Wad&rjcL^F2NN{)epuycWxLbfj@~yqrx9-_@ zpS#Dn=ihEdkI`?{GoLx@sX427ySq9m+t5O=T7M|jxR7GP`4 z4*-DG$Wu+zSq1C{w0E>KwXik;I(yig08QL2OaTD*#j=kUsoR{@rY}x7b_M=*jNr=qB&(d6((y`))0_Vq<4-C)e)oi2(fTdQao= zI&0qd!~PtzuRiF0D8X(v*Df)4AU8Mc*P*D-i}&S~`ipl7<+FEohu+=F_lg&lC#I(X ziC-^=<3fWeTG}BRpYh!g51yaLgxunNpS|uYF5F}T=3snxZ*Tk3(tYDn5blT1eEr%^ zg_I`r-@MF)mv@XmldV13Tx>la?j6`U-T!KzxIFd4_}-EG%P#Wes_S6R4NvHKnAtIQ zOF#7Tu)|56Z%q@wH;c^l>K^Ca?X{O{`*}{EgyX~N%~{cf{>J0O)4?x`TQ4PCvz1HI zUm5vfgWo>VZ&!8`DbBCW5zsWGZ^fomu#Ba*=hmqi#j!OhE(mS(W_oIWtgJ6XH^fHkjQx`xSTyl?b0?jDkGHohIs!K70N zw%D_gS3%xlsURpdT19g}?^aa_GrN&uVRRz~t88x47%3h^Xv8o+EVLGdp4L_MzIiaJ zj0mAUAa5X~zpB>c!P_j_l|*i%PSKV1kYzlkYim{Vyim>A`x*zlomF#Uy#88Ozj(N$ zGF(<$G&8GhXBQ_B5b#;3?Pk`?Z_T~Udt$gwPw(X-2}6p|Bl$dbP`Eu37Jh_^elHOF6R6oK=yd;|hb!hrFMUwtAAnf*CR%yQX7v z*1Ej8w=F>)>FWto1kB!*J%YzPr>)I_e=O~)Mh4s2@z)GY!9 zKF?yh5*?5@_140X_be9DlaoPiciVAM;c#6l(tTDx={3Y?e%rBSD5pWO}DLZYH?TvdeSVJr$_NzD_XFA6J2Lvuj~{5 zF$HMa<2>QEk0CR;W4lK@-)bDmYsBxJ;Z<87Klj(tsFR;{kji5NG-#a*UNu;CTooRP$#*=3 z2;n+Vz)o*`nAmyF;?x1d?Nh3+w!mplysicF?EqpN%NuC*hf-J?igPbK)}z? z4dkI(4aE>)s)m)n97e<{%$U#vPpf)?KaUr0_l!|HLf!B9bxwk?hRK$=t(-hgh=kp@ z00E0)f|mzoaOFzt5Omwf9T}r%n&UDfJvF|*aJAD`DSHA+o`1}QPdWGati2pm*rMatLrx$k<0nN8zEB4`A_E30 zN~bnAyWlR0)lPN;xA*ba+*N17#bL;VJe-m@u9AYRPTnCricv=Wh)5uIebh-T>t3gH zXvzn-$0=z`>qfIy=3iLaP^$E5@U_YF5ub?XG*2I;!4U)~Hg-6$cXf9>7!XXMZtCtI zPnV*%>4g*0;~M0dLK(O9=XFy{`UrRAUWn7k)K*n~ z`!-%GU8H+cM(v>LXg*UM9pA-yZL`*3m8+TI1B?kBEq^Q(7b=Mom9MX`} z%EvkafOIZN`3OHC)+H`tE8OGIb2 z{nKaeJKuZhc)Ch8!b@>^0GHQB_2p#P&6ie7aY=-2GIpPI+mjUI)n}e!y%UU$WGVj> zQ+*RG_X{Yafa(ah`Ka286#rNvQf_2e#kg=*s^u2ordOw)^koQB6L}~`LUP_5R9y$p zmE6-Ere;_cx*i`(lkApkZ!!>$7_h%`?JiGg4q7(q;i#b;JcAFHXWtg?b2&pm9hScR z0pK)R=M-DG_vxn(ICGT>0=u1UMN8wqgjRJcVw1ULagJW=~bQxAZBO7`*AKhLa#iY&1 zFU3|#=EFb-IBS;9F-vO$(lZO@BO>9HaBN9q)N4;}?(80YXiRpboV+)8jWH@+A~$$% zuUext^^Ivx;4&`x?|reHB3g>v6Ac zz*O6=P}6eYqhh36>PCY&vz~`JXkjLXkPhE79E6IU+=19k=t8H;==6g{J*B}_lALf^ zH#&201f7=6%ft3eD2gXCI^srPcle*);W_0Yh46_e0bwBV0);nCaoN2gSW6}W8=T~w zVb~(6AH7)Dh&D#}jU2T6{gH>MLO+GvM)+6Tg+pnLRE&NLqeb*Nhf!{x^tsJ7o9D3ZqQ!cDa6qZme!PLqy!S03C_EcXz< zWiP-KB7*td2xocKRGkgUjWsZv1>?-gv;=}^>a4)q>iNp77E`s7mLYdGW7u052Uiqj zEkpfAUH$WkffTU4sKe6viTq^rD6Fp2 za1CBZ-x#cRufzqk2UN4BSG$l+f0zL_8ewq(PClZbE5!9#x}>-9 z)i^9y0%7)7l3swT56m5gCG~q!VV>&EvZi49=1ugJ{%intb3oG%;5sGfE=6ARN8;x4 zQJwh(#`DMq-oh+j4Geax^jvTHmHhh?#G{BR0YAhD=0m1BLBb2z1sc zya|36`aQ7vx$SAf6oTupA=fTsZB}>ZP%3|QCQ&9MJ&FT>&Yc`5+Mt=g!JH36`KJ1& za{{U6-H*@P_Run&sr1Q++L}Kr%3{JL$ZPPa3_I4~$FK(XWBWbfMglw-BtEZ2cp9RL zDF?))9=>lcAdut|#F!S=81|xFiM{Mya1h!cGD#g`W1re-3Jje0c1MxN)hp0N)Lcar zqXbR3fHcu3Q8w;>lK1gPS?Us73_sZ>S}Q{18C89YB%yf}q19cXxH}mW-MV0VfSxK( zg?43C+nntSQieIPqJHyZbEK)VI@4W_^8_ibVNfgntX|E%Bn8;xFWa+dP;Dzt%8Rw0 z?H+3a-ikrPBs|qq7Bt2Tn8IQFU^gnc85&$JtB{ z4>F3_cG!InSS#2X5S^W{qNHdcf;gpU&j@E8K?7HSdK#D$LFsi$NcB)o9CH5O%La9>*ha-Vh?5p_SY;whEKkcyEPQm~oXI=f9eYnt~BVd{YtfVWJ8Jm?632=oP0)=6s2X z?DMH}HD`WV1O)3-nc3gnRU}>jZ2*9?dxCKLMu;U`J?jw|UlJ8;X_#OqEle~O2um~0 z^*Izstp?IboM|sX)$knJ>%ImM&YigNAWW_{VFzPa3O-^pIg0clI%|}g>K4Yy-BsaI zUu@MK8n5CtR8BQN5>9-1Jkc3~Gr8xNP8MZGX013jA$hHdV1L@#BVMvuikERm0Qa>F z9Q>W5v+m*LU7_QE?8^MZ)oSBU8gxZt9Io3=$l1e<=RTbiBWj6bl`G-S#PWN~R*Vl< zj&se1osk@tLfwe~*wP|>`djx?nxYlmYadc$oL=j?2kN&sJ6~v2e*hJP0a<8?Ndrp# z`&^i{TWn<4iAjSaSogT90c>2s_T=GB7)rqEp*Qj9>SC@*Niw1m=BuOM9N+=j*k;m^ zKQ16v6Y$im#K$AFcuzF6PnGH7GrL%vH<_jJ4E%T_=yg(2HAPy^Fx?ha^8=0JAYO__-&xS}vY3s&l-CWGf;c&2l zVpnt3N}C5-ZY=gL)+x-<`ZMqI_}5O`QV*7hyf4~3#c}m0C@A`8(X9~>K)Gm9yg*3k zO(-EzeXzG8DLl64yHhxf06>$=Tc?pXpGoq`SQ(31GO}aXpFZN;Hio~?o>l*@6BVAW zc;^HDToIliOkd@0fcAaE#Y&hy3K>F6)sN8uL2{XL7=;_A^?Jc1hb0i!if9JCw zw~X0sk~lSP#e=P!4R{n#W;XcvnGBZ^ezLU#?Q&Ebb&^m(_C_jow9LJ%Pf|&X&@Wj5 z-9aF`#JRyJ^f5fZS_(#7ltiYHu3YU~BNt(Hc?Dt=K^uh3v1^=ES0Dbn1*9_rt!kL| zxu=F$dNG<+rOw5QtfihK+YuJk1Qu4?=vqWLqZ0N4b?sy zcK=7=A`ESxir}ww^z2{8$^=6YXq}7fgiwJ3P<3+BtM;VelELO583{9$=|62LY`b&9 z5ky2B>;pr-RV+ZLuDYGZZb%_@oUncKU}75fS}E!g4ulL& zUVaLc(=GiuM1&!1$cTL9pZ^Z8k2J*M>qg@S^|Z)>e~*a9hEqaL#a&AdcP`KQxkqY9 z?}3hj4u}zYv+HuTD;w6PY;)#fv=7bdG&U{eEn+Du)29~@tkRmi5*oDVqgqngTT^^O zRv?G4M;=+Kh_!B6X%3}KAddRjvMIl)|NB0!WAR`ntIZCpEqCHw>?bmizV{1qA;Oo7 z<~rFS#*AM1b*zxiCmSiGEhv_xNfG~zFGQidn;-nOk|8q27(3AM2x~szVr6V+k>lgLqLat{BBJN@JbS8jRQgJN(Ynx5_=DZB5=;e zszY`an8nZpXH?m2oq1oJ*BMw%b;0~SO?X7ET0nn*NSpM$6(jtli&GcDt#(D`KvVN= zr9E}X!;`S^$u|>ucA>q8aTy4iSS-#@$$`D49_`IGuyYO?FPhqSylMVlOvG_fB=08~ znr*6Go11PgWV+$Df;zm{eFEVKg7I6Hxg`o;_I(ZK^4TmtczgPNkhrq@~B(AMYB89NL+}oE#ocW(up86J6~d z%h>ZiYdo}9t792bc#)ERe(0)Ku&t{ygaw~jt)5dgPWH4QgS79iIHT! zPAXzg|J$AfLf=Rh1~ex8HxS(5SQfZjkMsKZcffKVoVKb;qR$;0E1D%b#j0!QgbYnB z^rP>bg0M=Z5YwVyyoA`SJLJpHQ;i76yvI=hBNk5%q$lSqkM{)Ap^(A^Gtd(fq zW=(MPN@vZh2yfE%#)Jq|l4bJy^cu}Z7KXMdlAugFs@B`cX1y8w7CKoVlWXO3CCtvG zL4ZUNiVC)x{%qXDOW1YPAfvqdZ|lkL0+%Pq5@ewpv5!jF*2$O$)4h?qfGsj0M0ic!(RnuH>zntOBSSvg&7``1qeOE+;0~KT`D_ zgTN#coMfvuN|F4}@%c{ldUu?<+QatqEhYXUzGD;qTa3hQK^PeDV(H>Ejaj7;Ve4JGRT!(x7PINZq%kO8FGWH`=+&kL% z?U847FzR6`32$La$=S4e4>)C=o$$%@vd{01_j5hS;ga9vQv1tVwr_Mvep|MGs#c0t zE^i3DvnS(G#DB*aQ>P$5v*imvy92rONdT)ppz@{y2|~-@edJrcMUn(KNT|)=yE*c? zv=+e452Hpi-3Qyt#b~2CNq9iTb}XXO8RC)h70)NRHl< znkNC_whTXoC!lx-v3n_;3DRa*n6NKSI1R`*1L8tS`_J3QM{NMs%T$wqr&XEiD;FA@ zV&WAi+Y0$ryOeIHn8;Fclnl?j7lrkm7{_U1BVB)|tgT+BI{=k%vR!`&w_IbQSh3l` zRhOwl9ZNu2n=|s3O9ujd<7WNdc=bv2SqWo89=s)_HdRBewzFBI#%4+Kqv3^~o8Uwr z1{&r{%xa~%n+~?l&wc>Ce+C(eP&B)gxiL3k(1&Hxk}g78hu}NG>yt)Za(S)EARa^F z7NFg8icT;K}&mQWs95kIEu-`mOv7c*q9TCqc|oc0k#O?*3}|F50-piyMjy ztw}*tEZa*Bkp9unk+(iiQZ`@{Wq+LZ0E89Nb|i<$DVHKT9hoZB$Rm8|1ccz}8OVwu z5UqTWT!(U6_LX-#De!P{7E2Yk5&dwrTtZHB8RCp-c|FTof)Yfp{6!2Zx4*BX@on&0 zYHC4q<@SMk*QXfl*>rmqeu(t~(jh1Yv1cT&(QT;c!!D8q`6}4%5D5~YvYdG=6Bhy= z&A1QggyPx_2G^GO^^cH?88@ut=J-11%sM(UoSG&`q4jD)Rfph}A#s`nQwGfXOV}3& z4$g){q}UT=xgf^A)7&WCUXuMQ2#3(C<;Y%<^c3l57P2Jdj}l)S{2tigHL#oTj9HC=&jtDSDT^i7DZUvH`bxAY! z2Otie)N5>FQVd+N3?QAEoiEe546l(C+}M0XM<{k!3Xt{Q;HY(KfUn&nr}u1B@6x%rgIYek^s9d!Q!M^CTL03aTN{*tk=yFt9f z^{%&Rt^55i&Tpx58sqD#xdb9_iQilrWA)fBU@@iaZ}@a~Bh}GU4AvV%QT%l7rbdP% z%GBEXW;_lA%1$zw*_R<`DYuhkXUA{Fwlf|0RP96A<#CZy=-0wnWhJ<&q-G=RM~r$d zu7;E%$JxmIS{k${w5cn$9T>S@3=e&Qze^ufX!^DfH#_5tuMXcC5?VE_j-J2QYI9z@ zO{nzx-d`O_6Kq1vbN!p=^`%&QHiJ~b;{hezI$M%&xQ`34%&;>jaFUt|EQmbC*yU#o zC)NuM;G%iqlLeNo{?fMbNDsM_dKslFi*sdY$xsAwuU$L+iPd@!iC&kgBzzfpVbdiQ z5oG1$5<_!%o4tY;4Z(k!8mdDoc09{RdWwwZS;r-3i`A61G%9K%X;dY zaF!q41tJY_3I1Yyg|_Bsfu%D@7m^GxY52Y_c5%TF87wzl3=PN2s6wL1}zzttlzYO?Sa0&_DdU7@?j zaN+nwtidc{gN^fzdT0$Z&7$v@hHBFs&V-|d)KNTEG#s;8L5f5Y9&V(i4T8`Xxl>u& zAZ=Jl>{AC8tCQMQhxU^Zr>+ELfqD|!(}L_NU~0m>c5-z}OkQ@XOYElCJYn2734h81 zevNnjriG=A`TjinWIN5>S?^tH+!=lFk=HgW8<4d_pN76bnFPrNzd4J95`lJ<%ScnS z1+=lOP*H!xJ&(>^#|qd}6io_?E8wh+Zx0qst52TGhsVCofvFiHIjg9r+kq2Wy4Uoo z3;b}7LqTZFE*C^b-EHu#HWH$#9pNKwtz|+;cne0|2uE-(_=66{k0JMn`x*1^at5py z9IVklR;c!RK5*1d9)77LTD)NRgrK@ZARxB=bFoMB9>i*GQ#&MhBQ6q#8vWw47?L<_`v5A809+I2 zf6jq_!;$=}Pj!!o5I3+{KX)W4((TJb_qR}`p zw|Qb)X`(v92fXurT<)7P3y@aw)G;k3qmQ-c$lM>@H%KP6#M+gR(7%SeO5ihg7ZHj^ zfnm!khDn6k3+V}pe&=zsfdsV3+HIh>@Uuq?df)cTM6BH43;IKEp&1?7xa3l}j6Jz| z6r-5y_dY4=rDOV+MKZ^3QdhUB-D@0I8$nTQ%uu7<+#pQz$5@nw?XWDtVl42MX>6ZR z@n8XL=O#JIBQet~Yygr?<5vmjCTiX>awo@bj=d}oN2Lv|)CbKjTde9)ZpwWT1H`(e zMnua~t4m+yD%~{_DkZV`UU)}wVb@OB8HeRHRD&l>ln1g@RsMHy(+!7hl&BP)3yX@r zaYgj%W$}Q=R(1Z)0o$H;N`v}(A4Hf1T>8&CmHfNLwmid`MHl+JKqIo3+x0J;A8}UZ zV{mHsb4!KN7s_!*Ik7C>gDRDXT5=90E+MZxtdTUBnfudw?Q~pS@vRd~_~yn+R#@wp zDKI46gLVCO$O0*Z7u4H?=;G1!S2y+Wer3u08gL3L6qr{%b`WMo&sZu)!mR*Y`Um8u z5GRG^Ve=zupK(K#qpI9yaMg>f50rd1uk< zaVqz-=&Fh%E@t@%85UN#UKUA;$q&Y4&5#Zcdbbs{BHRC1dvw(sT-ne$jOgUaxf zfyJOFW7Z!MGyoylu(A@$?DYX1w-dR_3TEmP69JZE$q+w-dY85HECqPk=d1hT_C}EZ zMmnx3IvW<+ErMx$*Oq6ieP^vX(ozsoDfh|5T9imRedc^D~!>#_CpXwE#mmG%~xlt-h{q=KF0-7@wJxMq!HW6-zjyy3{$AIM#+OOuOB$E;wH~(3B z790i=XI20cB)Z^t6rTXxi&i9cY+Tr}0PIG1Z4%*t<$Ml1PPy{k@5pG0q-g5RBonJR zTFQm0E~<@HXLyEEW3EbIFWMiX*!JmAdDHO7NtU-vXYH=CiUAwz|nv^<>s5GQg&HH}Gu;iX8toisL>Iqyj;dW%9;=Sm7ruL#afs zx90`;JK*a?`NkI6w>KFa`*BhseC2Sh(Ggd-0HfU8;b%o7FY(D0Hh|Ro!<*S`BloSD z36Riv>15MhMgQ`^cWE;2V8fEt^LgMcj1OpHhg@%qlV<6C^J)8P#+29i#|}k%TMm!v zzMoDv@j-j?$zr7gC3c9M8SZ0ama5yU0wXD#qGmxiBxU;pm;zpoEWv=c>!vU=S?ax@ z1T*<40e!gO00MsVXPm2>FgbUOIKK_H1eQV5@b42Yc%z)}QxG{}TbE~LCS@kZ=W@?; z^5!1^kZ*&pob*>wi(o%w->vqI)-LVx8ggqVw`p{TY!5&lSun$IO-dpmI;j;?4ND=|4~i5KRQ zNWmS1hu;+d&#ZJg45UgdYpsS#4f~&#Du#;ifelor1E|*q`ZX(S%wFCvR>`D{4Imvhf@2 zDOP~1tj(&_7hM{O+eRGRM3c+AlB8(v>We-{<0Wk}K4Xwr;pVM%2zJhxvE2w}QW z*&@jpL3sWc3TZjF2V=g2#vt0$5928jv#%yGp2u>}K-E@%ltMgg8AE%;c7{m62R#OX z7~64~G}hlVf>c-S+31Vad24QwYCX=gY1hYzOMjkrKaaFu9s=Sk?L|#Mfexrj5V7X7 zHySU{t0OaIuUR`_B6Q%=UaOIB(owf(6s$Cz3MrbG!v|nW8~{&k4j;Rd5U9fULdH)JZ=2x4F2N%a(Pry^tJr^07p28Yfhxhb)viFoC)jSVu)wqICw_${1t>DkafL3_YWva%&dVF04eR!|9W36Q3 zqZ7CQ)pi3w<3HXY70_Kzt(GcTj$8|8apP^Egiy`=}p|zbFpXR=y^k9=)YmQn{jRSZsnc63_o6%QS9y-h(?VT`7e&O@1{Q{vp^{CI0Av1r6M)`REy*LS#}WII*W)A0@a z(Z>bNH?%r(EzX(sD_-{T{GJK*mz}-%TL$(U_rQKrD#7lA?EFfnX}yp3H4K>fhDcn_ zM>Q*F<#BtmseDO~RbGVMW${FfdKqWNArnQM62>we_{OyNHsf#19bZ4wXbY<*;fd{U z^6HYo+gyFqLp;oaBiDH=C;?{k`o=t3HQu2!)gzq)>e6Kz&tW2Kk8i|gQO;xtJx)I< zYiHD%iX?3ndF;$P_hl;8EtweRU&9c~8p)LGN~#HWNL#Au?x#|FQ0)LnsSDhg-xpJx z6X6bsz()Vbw17hO@_`E;fkqich?mBXs{;OHY1=nbLRT=~s3&9-K1QJq8K%?`rlt$Z zAPmEoMR9~jYAx4=E$A-cw=G|+h>PUqW$rd^-LeV}(LQBmZbiB8^e!+x%lL%W=;1bQ zJs-m6huNF^2A9%uun|($TI@{FeBX9ZbBiyUPqc;g%DE)o|1*! z3kYE)-PWH5hh-ml8ov)9;wh5`j9wp&ML(0q!!r(55; z^bVZMn<(fzI^*PDckiu~rk(Rf7Z*-A9!}(9bM~^{JKUH0K2aeKKcaSJ3>eMdv%!Lz zH;C%#?Ygk;f71y0tMl-`No&?;6S$1Deh(|kHF7+n*$;q zkr@e9ErXTdJ*J=U=%{Sx;n0LWb?T8>g@-Z=V##rRD~?**^53m{(ZASKdM*8Jn8!PO z#yH1S!30BhwbGAZe&pPl;8pj`>5|$;s=n>=$%_f0`bh=%+{x(`!wZC%A0)vIXnCjQ zsmEzHH0C=70-_q9Q`$j_-M>59Y1>YJ_TBX$e4B8n z!E+6CX;t@2Rr*@lutr=xJb08 z2J16IG=amw-_ER_`Es5i0UWHHMm2pj{|-$I&eRI{Ii08QMd^LD&*-eG2er1S6=}>F zi~33qJQ`J3c7VYLjS)`FpH)AV_&A*V8J{#LPW0RL{2oOF%!3bK0CSTDVPL}(;@7h$ z!4_g-$}(bN|8d;p^^nO&p9BHv9%14>ebvt@+Qdgdiu8P5Ep!}*X*%qD(PA8J7f{m` zQYL;PHl9>h-TL}~;Y?SbmIj=L2>LI8gQK&Ga{}f|8n$+?yZv&U+byZvDIouyN#+a( zta-DIsfr9snm&eD1w0rY42_YJVKO4CLfF1_ND9%uO6{Kd(j+9M#;A!5AKuG007pw$NPY#Zb*VxLQeF2Dmjy}yWK|KHfTAs!0@gGeEd0rzs8z!)^ouLVn zyN&(p@gM+zU&!4aY-DBP3^X(`v#=GQIBn^m09qIeP-t){fE4V-Ow28$JsnL{Jr&iA zJgtm)j46Z!5&7MDUkPkXoWVeM8*5u9UUvbCKfJuJuYWf)Qvm-!oUH^XG!>MAVs?%u zKz1f}CJ>{9yM-$&g&-o3-_h8VS4CX%9~7@w0u<)X&i1^_%x-ROOm1vUc8+GuEId3s z%pg`~R#wJW1f!FOtuxr2(bkFbH^pBZ;wDZ;ju!UL7IwD4-<)7WI~QjG3X0c$;6KP; zdyORAUmO47;P>?(dM9UNW|`Lu_Sf;e0+?ArAZ|twDIHD4;5ea zWOfJJGqW&(m~CwS&BDo9!u4PN{!0%DoBqUYZEVW?8q^=pf47m6QBeM;&2JgaENtxmSo}u+9cgUzPn^ArqxBz*u@SS0 zwTaDZAWpB$EdPdgwlMwI1pV81e)s%ufxNo=C;z{p|3j}ovHa1MSKQ9X<+oEAaRG|o z@$wqm8Ce+f{&{I)WNKu{1>$04F=gXqWM?%oVKg-4He}=hv4go;jlm!uQ?|cR$=EtM zgKdpWep9`YGg-Xyn1Hx=I9WJZ8NpoaAVzjDCpRMx4+l4+sfjT+k1;oh0|esu8-MY(#RSC2&1%ZVXk^M|1Tr=Pae=tOf2e-X z1Fwj(i~t2I6X;(p%GO|KQ#(f+0SX1M5l~6>Up;CTHYTdh;NPmTaJ+`g!@|zW$<58d z!}V8ee+bo09GzaX{5L5Jh>3;$kGZiCujDHw_%+)sY`|tF%=Wfse>#583-9Y_UX=y^ zE{<2`KkcuB;T3Z<0Xy3{s@d6D3sCL7h}Q&T|xe^d*vyq(b>!#`jX*NS9q@kc5k@Xsp13pV;oekZW2iSeH) zc-8T*E+ccWt(nQ|a{G^3`;T^u|0IvOxj5MjIa!PtjZKV=8QDQBU`B3}*NisdHZcXW z7=yuFAkKehcd|2eb^|+_h?u?R!0SA}*4CeS2GahOesBLB?q+WCJGVfrAja2%V`EWc zVdZ55@v?H#gIIY%Ad0`H9LUf7dzJlT{vRj*Eq(t-uK$tizoo!` z3;aLX^*?g`w-oqqf&VAF{(qAT@n5&yCbqBt{JFi}R4)?xX}{i(!y3v-i347K|K+t6 zCB3#F*h_0U0RTu?zn>6*%#Zl5jd0E~3KDSJaAb(2glnhtIj=wU0gw?FQFC8B@^Nb= zdEaz%S5^C5)kp&dg zk;VS9r_`^&$)%x#meUNa!>8x;j5f2=8YM?e$l%JgHM^wv52mK0nb)Oz9z+wB2}_Ai zi$p;aAb^1>V#m#m9j9a?__4L^xMws*WWJ%SDxSR*+yc=F5EgHZ8XugveE%5ja3>+| zNj1PARLRHV+Cw;78Oi}@2cvj}_>YZD!Z{)cL)k}2A8$B710Xuja%EtIQEt5`7tC8p zw`vEXl#Qk)D?{7pOxZ*8z$hhXIpFpCVf|-{mX;P2K;so3-h$wrI>cGsoSqfHyo$jJ zJAufI6I0yyt;*{eE?J9~@31$ooH`CJ7ZP?n9jD% zNP6eHRz0~&GDU@XodMfo926_fpf0XbaK)@srweB%ET9N>1jb(mfC>r1>x2N%K;a`9 zAp0keABB0f&zn8*0NMb}5Y{l21f7-uW++W4gEl|wY2u}e4!gKBUcHzq1ReV_iYt$* zB&)p%{NR`6sjXLX6f1yt4`IFBdZo8LUC5f1l~oqqXMSy27iXF+;+*llUC^QCz1%yj z<4-yuUu(F+Nv zQC3Ptehe+Vn9LGgJf+6+$HFacr5(qn2t`lWE;ydI(9vT`zD$@C6QBTiS`# zdI9=#)rxkAG2Y(qDJq3H<7?m+zVC;u?ijyce6)JV!+~{y>ZG9Hjmc1gwWswrKMTpI zp#h(RFIT>NVjjAsqM^#7faQ>YDfj{ufu`^e|6ZFaCSA+{h1^)0P=jM87ae`w(f|EWRcB zQlTvm5Xb6N5U1EF!IzwI!-ocrPe1`~p`;%X`*$Z?rgM@G(7fV>v zWT&%;58gPO$k{B-&+nW7us3?M-z1cI(?O%dcMBmvK;GvX01yd1mL&8QtLTt%OT)@P z!;xu%%XRB!i*+H$2{~r1LOSMSo%sCyLWNo5&yNX1Kk%Vm_ep8>~0zA5@ zwBhAzl%^vkwDi6}%BNh)Vb z!$LqU&(@4hBVOG-|NZBs{BPtnpTBjk-bsbqGr_w-AN0OH=YQ98yQ&E zLi$j*9T>Q@oGOh^Lorzpo@^{L&d9P1Fh{Z956pn*LzZGg{JvXiL%BEKY}5z!xejd& zEO>ro6neNje29gCgF<;xta77YH#-dA$9uS^{YL#OG}kv*TR+acFH(x|&%>}tQ-e9qeZM{XA|@c+R)FC)Bd*w}4EDv;BHh-t)Vfk6lyD zN!eA(A*WQyLP|5(bncXs!6J~2Nn{JiHquSn*Q%EFt9E;HJ4r zri&MzN}M(@?-?4N6SC(+>BUT>@DzG}RT?z+2tF-NXWJ61j$Qkr``u6nY*(x?yi=6n zHNB~iKx=I`U_S`{1vYC<O4OlBmlam|yjKH!BSbb0o%AP%BG5Oe+%D*7;d|MPc_AnDw)a@C2(^%f%k%o6pvw z=tCSDMXDLt;KnQEgMMhtElDtix4Gykz~ z0GKkhL!WuY|76`shost*76~v)tl?_y0hc7m5k3k#ofnZ6%5`?VdU~sUf_}n)>MC&)NFo{SI z$pNj^_W-^cUK(DIP0$FyYghx|_j|kG$|!#Qjbh{0?{z>YAIyUyDD~0}4FKbX5EFzD zokUg#vpbrITQzetfEd7wo;bEI`v5oJiJ5;LE{ zz=Z^~F*D9M>li2Yj&I8u?MV@p(obM>%M2Jk1FpRMi_?{htO|mo3e&89c!q~LUBy|e z2XF5oO@%d=uZtO)HG~j|_%j6!qA+qMBP4eM~o|i-fW=3w+xH5n2Y?=w za;;_OCV&}+VayZKTIf2(d0Oik0Hz{TFy>XV5&(J1sfQVpCQgB)TqKhb7SoQ;cD2om z3t>ph5Qs=Z)D(!D5~d^&2?z?ad9H%cz!$H}e+z*a4~;D&fhuJ{*TI#&i!{};b}g&7 zgn$Kt2Ek=USK5Y~>Cb2H`eyvL+wOzwDja>pDOmW)>)~kHr*)(PqVivGYE(pguLUze*VGCZ@>Az2mq6WP+F@m0r($O0t*`;zpvQ2S0wO?&T*ZrCmogT zX_^*MB4R~Mfv6!7F$k6vunfQ;pD%k969OU>FyNiN0>goZ)?ReD^z+Dcos-&|Y(D%q z3Nd@d49yAvK?p*`KW7bK%b<<5KfD6>-t#a%@L$*En--rIAG8@3k-st7GX}3mc*?`p z*!87*&Hi+dRdI%CNLe^&ug0*(S)t>G#c zN^59#QFJs4u7Y%(QcM4)lDX!grvCnJ^laOP?yfFu*|Y^tX=KS1rbQUjISNh56k@R` zVzC%fsT4+yZbNfR62_FHGMn2Mrc#!HQE>yQi0LzFg%WEpb4_&qs|)hs|D*EF^ZrHY zO39t1FtI&r_}Lxc3VFbNcC49EsRQqQMELJl?OMoVgsx_|8gP|@s}yYQ zz;P9dN@V0YLg+Ap zw8c%osJeoqy{LVIhBDo~gA}|AZXZPAdx2{O<)T?y=vuof{rwNWv+2y!&coFAeH}#? z5JYv)X|Di0@80#g3b0j>o>v{D2lCEUX@(>qVG?@Ru1Np>|D74NB5}(u<<|pP3a?{d z1l0w8Uh6fsu_0)z(+z-sg%@XXqqh96SbDgjM^L-G9FcAq#u5_ZMAxy8WyT!;bFiY# zIC9A`YV^{}vrhZOR7*TgiHJc&UXHZGfa`j!ibMI$g6LJ5bXECvp%klH-){I%Pg+MM zpF8As7BwfSl(!jB%uw2e)(pj7Xr7}qY^C991;Z{CTb{l(viao~=J=~*{9dwte-rEY0WLj z4#VPi1@L+Vr#I5;43Tvx4cLMACCI}MHcI~HQN!E7HCuxFw!NJDPNQ~x1K>wuQGkk#UGmP_eg=`n;SG?K zQXVW!^CacECu-L{5`I-PB0&c)KAaDD>-%z?1E=t3&_*V+>Ji?2s{TvZPX@cX|tJ6U(e_zQl2oSz9VKbxIBD|FD!{07j ztb8AS9>BW*+!a!*dF7rMHr4 z9&Jc@vRf*h$jk=@EPZt6cpQD=X-@v6528JlGMZu$ib#TDPbzhk2V{U>$~9aFh3kRH zYcu8QRfAJpkFSQ#i|U^lhpvZxwArbg9;n5BH8xXvQhc^pLax83u=QtG#h!TR9{>Qu zl(_ifbK#!ypP1AVfh8myxSo6uDzo}mjygO-9`7Gd5&rgt^YPSUtMIlPpT^{-=DNQ4 zodNVNX)N!Ff8Ni$_ivP|7$pUmg1kTx0&LdE+66dJkbcph5^J$fP^Jsw^^Zw83wA9jR3@SKlk^AqMJ+Y<>9k4S($##C~- zN-7mpU5!N79DZM!TzUim!#g2U!)mBB{7M`&iU~G4rX-k#C-wJavuJ+wSNhgp{7B>m zz1X6|k6M6PAN=3qm{D!fricLzjS@82j}Cw3K)-8{7a+Jki(k2I(D}_J$C+oI_AX3) z|5s6PJa)_@WZ=63_z|Vp)uhOgKi^#K<;O=QK@g)WUqnwar`!Mh3-Rz{f5O%s>+1fV zDHH7K0x@evM39D|mE$}c5^qfZnF+u=8u~L}-_H7IFYGL^Mc33<@Czh^Uu= z4Xo4_t@UCY=9^XE7$0Lf)-r@jC-){R+pKLvxFKc_j$W zj2T{V;EqBL;?D2l_qW|x_PtBfz)`21f^k!(!gXEbb6J3aQlWs&>(?Ng$#Y*%FBJy| z8O#bqM#YcB5QYH)A==ywDJ7!GBm@y6kq9i)1T%*l;(-9NZ3l&75q7D7TzU{rHovPK zj3%H*NMkLTVgp>gQYrNmGd~AlQ_b+1sIDkNJQT+Eb=y;C9`DA|x${&v zt^#{z_=RWu+VKY9x*9t&S(tzMHtzWCub`Cz3BrXJoDF*GXECWI3QLHxd@sl=_QHE~ zeLDwv0fM6ylET3DwQDlhfB4+g2R`uMDz)^3GUJR4;CIU2d8E>PB{0+V+w{f^kFjsh zXJP;L>sWU8ZvZelCr-qYPhOqLjG3KkNk)-~Mqt!z?v($lj$$aKkt-C@UnrqH8D|RR zYzpCRCZv!cL7r+rM54}os_OK|UZ+2;6uXXw<2rC$jgnGq*|~gj+cP4w`f=I2WsBVK z^2@S!HE@c*Nb!)by)fv5!6QnG`kCldjR;u zWuwy&R!@kUUZa-&d=c>tPh^%|^XXJycNYL)$?=C_)cdZ*jMf+umH`D9wjWg{#hz?r zcvy%hAFNCg7|bjD;9ZNMT?6mE=~+Z�vx@zZnnHZjbveQ|p2fwSEa*R|64)U=q+< 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 KMNUMnLSTX^@0JSy diff --git a/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/logout.st b/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/logout.st index 1c62979cf..72e55ea70 100644 --- a/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/logout.st +++ b/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/logout.st @@ -1,4 +1,6 @@ accessing logout - self client send: '{"@type": "logOut"}'. \ No newline at end of file + self client send: (TCCRequest + newWithType: 'logOut' + from: {}). \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCAuthHandler.class/methodProperties.json b/packages/TelegramClient-Core.package/TCCAuthHandler.class/methodProperties.json index 81a7c2d93..e560114eb 100644 --- a/packages/TelegramClient-Core.package/TCCAuthHandler.class/methodProperties.json +++ b/packages/TelegramClient-Core.package/TCCAuthHandler.class/methodProperties.json @@ -18,7 +18,7 @@ "isAwaitingDBEncryptionKey" : "r.s 7/15/2020 12:17", "isAwaitingPhoneNumber" : "r.s 7/15/2020 12:17", "isAwaitingTDLibParams" : "r.s 7/15/2020 12:17", - "logout" : "r.s 7/15/2020 12:52", + "logout" : "js 7/31/2020 14:13", "sendPhoneNumber:" : "js 6/13/2020 18:54", "setDBEncryptionKey:" : "rs 6/6/2020 16:26", "setTDLibParams" : "rs 6/14/2020 12:42", diff --git a/packages/TelegramClient-Core.package/TCCChat.class/instance/addMessage..st b/packages/TelegramClient-Core.package/TCCChat.class/instance/addMessage..st new file mode 100644 index 000000000..5eb3fe944 --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCChat.class/instance/addMessage..st @@ -0,0 +1,5 @@ +accessing +addMessage: aMessage + + self messages add: aMessage. + self triggerEvent: #newMessage with: aMessage. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCChat.class/instance/addNewMessage..st b/packages/TelegramClient-Core.package/TCCChat.class/instance/addNewMessage..st new file mode 100644 index 000000000..ed8bd3464 --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCChat.class/instance/addNewMessage..st @@ -0,0 +1,5 @@ +accessing +addNewMessage: aMessage + + self messages addFirst: aMessage. + self triggerEvent: #newMessage with: aMessage. \ 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 fd26a7b09..14a72cb42 100644 --- a/packages/TelegramClient-Core.package/TCCChat.class/methodProperties.json +++ b/packages/TelegramClient-Core.package/TCCChat.class/methodProperties.json @@ -2,6 +2,8 @@ "class" : { }, "instance" : { + "addMessage:" : "js 7/31/2020 16:42", + "addNewMessage:" : "js 7/31/2020 17:22", "id" : "rs 6/7/2020 22:20", "id:" : "rs 6/7/2020 22:20", "initialize" : "rs 6/29/2020 17:20", diff --git a/packages/TelegramClient-Core.package/TCCChats.class/instance/initialize.st b/packages/TelegramClient-Core.package/TCCChats.class/instance/initialize.st index d9eac0c2d..52101c4ea 100644 --- a/packages/TelegramClient-Core.package/TCCChats.class/instance/initialize.st +++ b/packages/TelegramClient-Core.package/TCCChats.class/instance/initialize.st @@ -2,5 +2,5 @@ initialize-release initialize super initialize. - - self sortBlock: [:aChat :anotherChat | aChat order >= anotherChat order]. \ No newline at end of file + + self sortBlock: [:aChat :anotherChat | aChat order >= anotherChat order] \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCChats.class/instance/notify.st b/packages/TelegramClient-Core.package/TCCChats.class/instance/notify.st new file mode 100644 index 000000000..e2f2da267 --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCChats.class/instance/notify.st @@ -0,0 +1,6 @@ +initialize-release +notify + + self + reSort; + triggerEvent: #chatsListChanged. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCChats.class/instance/sortBlock.st b/packages/TelegramClient-Core.package/TCCChats.class/instance/sortBlock.st deleted file mode 100644 index 3495175bb..000000000 --- a/packages/TelegramClient-Core.package/TCCChats.class/instance/sortBlock.st +++ /dev/null @@ -1,4 +0,0 @@ -initialize-release -sortBlock - - ^ [:aChat :anotherChat | aChat order >= anotherChat order] \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCChats.class/methodProperties.json b/packages/TelegramClient-Core.package/TCCChats.class/methodProperties.json index c1162cf78..b49ca805c 100644 --- a/packages/TelegramClient-Core.package/TCCChats.class/methodProperties.json +++ b/packages/TelegramClient-Core.package/TCCChats.class/methodProperties.json @@ -3,5 +3,5 @@ "new" : "rs 6/6/2020 17:58" }, "instance" : { "getChat:" : "rs 6/19/2020 17:13", - "initialize" : "rs 6/6/2020 17:57", - "sortBlock" : "rs 6/6/2020 17:56" } } + "initialize" : "LL 7/31/2020 15:55", + "notify" : "js 7/31/2020 14:47" } } diff --git a/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/addChat..st b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/addChat..st index 0e9fd8e43..fa98dee16 100644 --- a/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/addChat..st +++ b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/addChat..st @@ -11,4 +11,4 @@ addChat: aChatEvent self app chats add: chat; - triggerEvent: #chatsListChanged. \ No newline at end of file + notify. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/addNewMessage..st b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/addNewMessage..st index bc6944487..8352f998b 100644 --- a/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/addNewMessage..st +++ b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/addNewMessage..st @@ -1,13 +1,13 @@ events -addNewMessage: anEvent +addNewMessage: aMessage - | aMessage | + | message | - aMessage := (TCCMessage new - message: ((((anEvent at: 'message') at: 'content') at: 'text') at: 'text'); - senderId: (((anEvent at: 'message') at: 'sender_user_id')); - chatID: ((anEvent at: 'message') at: 'chat_id'); - messageId: ((anEvent at: 'message') at: 'id')). + message := (TCCMessage new + message: (((aMessage at: 'content') at: 'text') at: 'text'); + senderId: ((aMessage at: 'sender_user_id')); + chatID: (aMessage at: 'chat_id'); + messageId: (aMessage at: 'id')). - (self app chats getChat: ((anEvent at: 'message') at: 'chat_id')) messages addFirst: aMessage. - self app triggerEvent: #newMessageReceived with: aMessage. \ No newline at end of file + (self app chats getChat: message chatID) addNewMessage: message. + self app triggerEvent: #newMessageReceived with: message. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/chatHistoryReceived..st b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/chatHistoryReceived..st index 6fddcf0a8..bb02be73e 100644 --- a/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/chatHistoryReceived..st +++ b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/chatHistoryReceived..st @@ -9,7 +9,7 @@ chatHistoryReceived: aChatHistory (aChatHistory at: 'messages') do: [:message | ((message at: 'content') at: '@type') = 'messageText' ifTrue: [ - chat messages add: (TCCMessage new + chat addMessage: (TCCMessage new message: (((message at: 'content') at: 'text') at: 'text'); chatID: chatID; senderId: (message at: 'sender_user_id'); diff --git a/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/getChatHistoryFrom.with.and..st b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/getChatHistoryFrom.with.and..st index aaa8553d1..92a5836ce 100644 --- a/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/getChatHistoryFrom.with.and..st +++ b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/getChatHistoryFrom.with.and..st @@ -3,8 +3,9 @@ getChatHistoryFrom: aChatID with: aMessageId and: aLimit self client send: (TCCRequest newWithType: 'getChatHistory' - from: {'chat_id' -> aChatID. - 'from_message_id' -> aMessageId. - 'offset' -> 0. - 'limit' -> aLimit. - 'only_local' -> false.}). + from: { + 'chat_id' -> aChatID. + 'from_message_id' -> aMessageId. + 'offset' -> 0. + 'limit' -> aLimit. + 'only_local' -> false}). \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/handleNewMessage..st b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/handleNewMessage..st index 9ede7f038..0f5dadd07 100644 --- a/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/handleNewMessage..st +++ b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/handleNewMessage..st @@ -1,4 +1,8 @@ events handleNewMessage: anEvent - (((anEvent at: 'message') at: 'content') at: '@type') = 'messageText' ifTrue: [self addNewMessage: anEvent]. \ No newline at end of file + | message | + + message := anEvent at: 'message'. + ((message at: 'content') at: '@type') = 'messageText' + ifTrue: [self addNewMessage: message]. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/messageLimit.st b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/messageLimit.st index b70deb47b..b0d3329fe 100644 --- a/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/messageLimit.st +++ b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/messageLimit.st @@ -1,4 +1,4 @@ accessing messageLimit - ^messageLimit \ No newline at end of file + ^ messageLimit \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/sendMessage.to..st b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/sendMessage.to..st index fd3bb65db..87007a5a7 100644 --- a/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/sendMessage.to..st +++ b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/sendMessage.to..st @@ -1,13 +1,12 @@ accessing sendMessage: aString to: aChatID - |encoded| - encoded := aString asString squeakToUtf8. self client send: (TCCRequest newWithType: 'sendMessage' - from: {'chat_id' -> aChatID. + from: { + 'chat_id' -> aChatID. 'input_message_content' -> (Dictionary newFrom: { '@type' -> 'inputMessageText'. 'text' -> (Dictionary newFrom: { '@type' -> 'formattedText'. - 'text' -> encoded})})}). \ No newline at end of file + 'text' -> aString asString squeakToUtf8})})}). \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/updateChatOrder..st b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/updateChatOrder..st index 8f730beb1..146be5779 100644 --- a/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/updateChatOrder..st +++ b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/updateChatOrder..st @@ -4,4 +4,4 @@ updateChatOrder: anEvent (self app chats getChat: (anEvent at: 'chat_id')) order: (anEvent at: 'order'). - self app chats triggerEvent: #chatsListChanged. \ No newline at end of file + self app chats notify. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/updateLastMessage..st b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/updateLastMessage..st index a39f8a9c0..c3f26f2f3 100644 --- a/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/updateLastMessage..st +++ b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/updateLastMessage..st @@ -14,6 +14,4 @@ updateLastMessage: anEvent ifTrue: [chat lastMessage: 'A photo'] ifFalse: [chat lastMessage: 'A file']]. - self app chats - reSort; - triggerEvent: #chatsListChanged]. \ No newline at end of file + self app chats notify]. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCChatsHandler.class/methodProperties.json b/packages/TelegramClient-Core.package/TCCChatsHandler.class/methodProperties.json index 7d0891279..64ce0b2c3 100644 --- a/packages/TelegramClient-Core.package/TCCChatsHandler.class/methodProperties.json +++ b/packages/TelegramClient-Core.package/TCCChatsHandler.class/methodProperties.json @@ -2,19 +2,19 @@ "class" : { }, "instance" : { - "addChat:" : "rs 7/4/2020 18:48", - "addNewMessage:" : "rs 7/5/2020 14:24", + "addChat:" : "js 7/31/2020 14:51", + "addNewMessage:" : "js 7/31/2020 17:22", "app" : "js 6/1/2020 14:44", "app:" : "js 6/1/2020 14:45", - "chatHistoryReceived:" : "j 7/16/2020 13:29", + "chatHistoryReceived:" : "js 7/31/2020 17:21", "client" : "js 6/1/2020 14:44", - "getChatHistoryFrom:with:and:" : "f.w. 6/30/2020 16:17", - "getChats" : "rs 6/6/2020 16:36", - "handleNewMessage:" : "j 7/16/2020 12:31", - "messageLimit" : "j 7/16/2020 12:03", + "getChatHistoryFrom:with:and:" : "js 7/31/2020 14:26", + "getChats" : "js 7/31/2020 14:26", + "handleNewMessage:" : "js 7/31/2020 14:54", + "messageLimit" : "js 7/31/2020 14:52", "messageLimit:" : "j 7/16/2020 12:03", "openNewChat:" : "j 7/16/2020 12:04", "searchChat:" : "f.w. 7/15/2020 22:53", - "sendMessage:to:" : "N.S. 7/31/2020 13:18", - "updateChatOrder:" : "rs 6/25/2020 10:58", - "updateLastMessage:" : "r.s 7/7/2020 13:53" } } + "sendMessage:to:" : "js 7/31/2020 14:39", + "updateChatOrder:" : "js 7/31/2020 14:46", + "updateLastMessage:" : "js 7/31/2020 14:52" } } diff --git a/packages/TelegramClient-Core.package/TCCCore.class/instance/tryHandleError..st b/packages/TelegramClient-Core.package/TCCCore.class/instance/tryHandleError..st index fade77247..cadcf335e 100644 --- a/packages/TelegramClient-Core.package/TCCCore.class/instance/tryHandleError..st +++ b/packages/TelegramClient-Core.package/TCCCore.class/instance/tryHandleError..st @@ -1,16 +1,12 @@ errorhandling tryHandleError: anError - "Handles recoverable errors" (anError at: 'message') caseOf: { - ['USERNAME_NOT_OCCUPIED'] ->[ UIManager default inform: TCCErrorConstants unknownUsername .]. - ['USERNAME_INVALID'] -> [ UIManager default inform: TCCErrorConstants unknownUsername .]. - - ['PHONE_NUMBER_INVALID'] -> [ UIManager default inform: TCCErrorConstants invalidPhoneNumber.]. - ['PHONE_CODE_INVALID'] -> [ UIManager default inform: TCCErrorConstants invalidAuthenticationCode.]. - } + ['USERNAME_NOT_OCCUPIED'] -> [UIManager default inform: TCCErrorConstants unknownUsername]. + ['USERNAME_INVALID'] -> [UIManager default inform: TCCErrorConstants unknownUsername]. + ['PHONE_NUMBER_INVALID'] -> [UIManager default inform: TCCErrorConstants invalidAuthenticationCode]. + ['PHONE_CODE_INVALID'] -> [UIManager default inform: TCCErrorConstants invalidAuthenticationCode]} otherwise: [ ((anError at: 'message') startsWith: 'Can''t lock file') - ifTrue: [UIManager default inform: TCCErrorConstants tdlibAlreadyInUse ] - ifFalse: [self halt: 'An Error Occured. Check Transcript Output.'.]. - ]. \ No newline at end of file + ifTrue: [UIManager default inform: TCCErrorConstants tdlibAlreadyInUse] + ifFalse: [self halt: 'An Error Occured. Check Transcript Output.']]. \ 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 5e866b1db..e232aea59 100644 --- a/packages/TelegramClient-Core.package/TCCCore.class/methodProperties.json +++ b/packages/TelegramClient-Core.package/TCCCore.class/methodProperties.json @@ -26,5 +26,5 @@ "sendMessage:to:" : "rs 6/13/2020 15:26", "sendPhoneNumber:" : "js 6/13/2020 15:35", "setUserID:" : "N.S. 7/31/2020 14:23", - "tryHandleError:" : "r.s 7/31/2020 14:48", + "tryHandleError:" : "js 7/31/2020 15:13", "update" : "js 6/13/2020 19:14" } } diff --git a/packages/TelegramClient-Core.package/TCCMessage.class/instance/chatID.st b/packages/TelegramClient-Core.package/TCCMessage.class/instance/chatID.st index 4f61bdd2d..d732e5f82 100644 --- a/packages/TelegramClient-Core.package/TCCMessage.class/instance/chatID.st +++ b/packages/TelegramClient-Core.package/TCCMessage.class/instance/chatID.st @@ -1,4 +1,4 @@ accessing chatID - ^chatID \ No newline at end of file + ^ chatID \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCMessage.class/instance/messageId.st b/packages/TelegramClient-Core.package/TCCMessage.class/instance/messageId.st index e505c79f3..ebe1f169a 100644 --- a/packages/TelegramClient-Core.package/TCCMessage.class/instance/messageId.st +++ b/packages/TelegramClient-Core.package/TCCMessage.class/instance/messageId.st @@ -1,4 +1,4 @@ accessing messageId - ^messageId \ No newline at end of file + ^ messageId \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCMessage.class/methodProperties.json b/packages/TelegramClient-Core.package/TCCMessage.class/methodProperties.json index 7666f78e2..b6438d023 100644 --- a/packages/TelegramClient-Core.package/TCCMessage.class/methodProperties.json +++ b/packages/TelegramClient-Core.package/TCCMessage.class/methodProperties.json @@ -2,11 +2,11 @@ "class" : { }, "instance" : { - "chatID" : "j 7/16/2020 12:03", + "chatID" : "js 7/31/2020 15:14", "chatID:" : "j 7/16/2020 12:03", "message" : "rs 6/29/2020 17:13", "message:" : "rs 6/29/2020 17:13", - "messageId" : "j 7/16/2020 12:03", + "messageId" : "js 7/31/2020 15:14", "messageId:" : "f.w. 6/30/2020 15:18", "senderId" : "rs 6/29/2020 17:13", "senderId:" : "rs 6/29/2020 17:13", diff --git a/packages/TelegramClient-Tests.package/TCTChatTests.class/README.md b/packages/TelegramClient-Tests.package/TCTChatTests.class/README.md new file mode 100644 index 000000000..70d139d46 --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTChatTests.class/README.md @@ -0,0 +1 @@ +This Class tests the behavoir of TCCChat and TCCChats \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTChatTests.class/instance/chats..st b/packages/TelegramClient-Tests.package/TCTChatTests.class/instance/chats..st new file mode 100644 index 000000000..1b7acbc96 --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTChatTests.class/instance/chats..st @@ -0,0 +1,4 @@ +accessing +chats: aTCCChats + + chats := aTCCChats. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTChatTests.class/instance/chats.st b/packages/TelegramClient-Tests.package/TCTChatTests.class/instance/chats.st new file mode 100644 index 000000000..2ce278459 --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTChatTests.class/instance/chats.st @@ -0,0 +1,4 @@ +accessing +chats + + ^ chats \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTChatTests.class/instance/setUp.st b/packages/TelegramClient-Tests.package/TCTChatTests.class/instance/setUp.st new file mode 100644 index 000000000..4cdb48094 --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTChatTests.class/instance/setUp.st @@ -0,0 +1,7 @@ +running +setUp + + self chats: TCCChats new. + 1 to: 3 do: [:aNumber | self chats add: (TCCChat new + id: aNumber; + order: aNumber)]. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTChatTests.class/instance/testOrderInsert.st b/packages/TelegramClient-Tests.package/TCTChatTests.class/instance/testOrderInsert.st new file mode 100644 index 000000000..453c9a9c6 --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTChatTests.class/instance/testOrderInsert.st @@ -0,0 +1,8 @@ +testing +testOrderInsert + + self chats add: (TCCChat new + id: 4; + order: 4). + + self assert: (self chats first id == 4). \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTChatTests.class/instance/testOrderModify.st b/packages/TelegramClient-Tests.package/TCTChatTests.class/instance/testOrderModify.st new file mode 100644 index 000000000..440911d15 --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTChatTests.class/instance/testOrderModify.st @@ -0,0 +1,11 @@ +testing +testOrderModify + + | aChat | + + aChat := self chats last. + aChat order: 6. + + self chats notify. + + self assert: (self chats first id == 1). \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTChatTests.class/methodProperties.json b/packages/TelegramClient-Tests.package/TCTChatTests.class/methodProperties.json new file mode 100644 index 000000000..b1ae5643f --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTChatTests.class/methodProperties.json @@ -0,0 +1,9 @@ +{ + "class" : { + }, + "instance" : { + "chats" : "LL 7/31/2020 15:25", + "chats:" : "js 7/31/2020 21:31", + "setUp" : "js 7/31/2020 21:31", + "testOrderInsert" : "js 7/31/2020 21:29", + "testOrderModify" : "js 7/31/2020 21:29" } } diff --git a/packages/TelegramClient-Tests.package/TCTChatTests.class/properties.json b/packages/TelegramClient-Tests.package/TCTChatTests.class/properties.json new file mode 100644 index 000000000..56980cfb9 --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTChatTests.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "TelegramClient-Tests", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "js 7/31/2020 21:29", + "instvars" : [ + "chats" ], + "name" : "TCTChatTests", + "pools" : [ + ], + "super" : "TestCase", + "type" : "normal" } diff --git a/packages/TelegramClient-Tests.package/TCTSarFileGenerator.class/instance/testCreateSarFile.st b/packages/TelegramClient-Tests.package/TCTSarFileGenerator.class/instance/testCreateSarFile.st index a2d27a82e..cbf2221df 100644 --- a/packages/TelegramClient-Tests.package/TCTSarFileGenerator.class/instance/testCreateSarFile.st +++ b/packages/TelegramClient-Tests.package/TCTSarFileGenerator.class/instance/testCreateSarFile.st @@ -2,15 +2,15 @@ sar testCreateSarFile "Creates a release sar file" -|package ui zip folder | + | package ui zip folder | -package := 'TelegramClient-Core'. -ui := 'TelegramClient-UI'. -folder := 'TDLib'. -zip := ZipArchive new. -self streamForPackage: package inZip: zip. -self streamForPackage: ui inZip: zip. -zip addTree: Smalltalk imagePath match: [:e | e fullName startsWith: - Smalltalk imagePath , FileDirectory slash , folder]. -zip addString: (self generatePreamble: package uipackage: ui nativeResourceFolder: folder) as: 'install/preamble'. -zip writeToFileNamed: 'TelegramClient.sar'. \ No newline at end of file + package := 'TelegramClient-Core'. + ui := 'TelegramClient-UI'. + folder := 'TDLib'. + zip := ZipArchive new. + self streamForPackage: package inZip: zip. + self streamForPackage: ui inZip: zip. + zip addTree: Smalltalk imagePath match: [:e | e fullName startsWith: + Smalltalk imagePath , FileDirectory slash , folder]. + zip addString: (self generatePreamble: package uipackage: ui nativeResourceFolder: folder) as: 'install/preamble'. + zip writeToFileNamed: 'TelegramClient.sar'. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTSarFileGenerator.class/methodProperties.json b/packages/TelegramClient-Tests.package/TCTSarFileGenerator.class/methodProperties.json index 05768d623..fb32bd645 100644 --- a/packages/TelegramClient-Tests.package/TCTSarFileGenerator.class/methodProperties.json +++ b/packages/TelegramClient-Tests.package/TCTSarFileGenerator.class/methodProperties.json @@ -4,5 +4,5 @@ "instance" : { "generatePreamble:uipackage:nativeResourceFolder:" : "N.S. 7/24/2020 10:23", "streamForPackage:inZip:" : "N.S. 7/22/2020 18:14", - "testCreateSarFile" : "N.S. 7/22/2020 18:14", + "testCreateSarFile" : "js 7/31/2020 19:18", "versionForWorkingCopy:" : "N.S. 7/22/2020 18:28" } } diff --git a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createButtonBack.st b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createButtonBack.st index 86971005d..c30a7ae0c 100644 --- a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createButtonBack.st +++ b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createButtonBack.st @@ -1,10 +1,10 @@ initialization createButtonBack - self buttonBack: (TCUButton new + self + buttonBack: (TCUButton new text: 'Back'; center: self inputField center + ((-100) @ 50); hide; - on: #mouseDown send: #buttonBackPressed to: self). - - self addMorph: self buttonBack. \ No newline at end of file + on: #mouseDown send: #buttonBackPressed to: self); + addMorph: self buttonBack. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createButtonNext.st b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createButtonNext.st index 34f429a5d..7efe43d68 100644 --- a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createButtonNext.st +++ b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createButtonNext.st @@ -1,10 +1,10 @@ initialization createButtonNext - self buttonNext: (TCUButton new + self + buttonNext: (TCUButton new text: 'Next'; center: self inputField center + (100 @ 50); hide; - on: #mouseDown send: #buttonNextPressed to: self). - - self addMorph: self buttonNext. \ No newline at end of file + on: #mouseDown send: #buttonNextPressed to: self); + addMorph: self buttonNext. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createErrorLabel..st b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createErrorLabel..st index 0436d41eb..87daa5046 100644 --- a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createErrorLabel..st +++ b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createErrorLabel..st @@ -1,10 +1,10 @@ initialization createErrorLabel: aString - self errorLabel: (TextMorph new - contents: aString asText; - center: (self center + (0 @ (self defaultExtent y / 3))); - color: Color red; - lock). - - self addMorph: self errorLabel. \ No newline at end of file + self + errorLabel: (TextMorph new + contents: aString asText; + center: (self center + (0 @ (self defaultExtent y / 3))); + color: Color red; + lock); + addMorph: self errorLabel. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createInputField..st b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createInputField..st index f5769e475..c6c65000a 100644 --- a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createInputField..st +++ b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/createInputField..st @@ -1,12 +1,12 @@ initialization createInputField: aString - self inputField: (TextMorph new - contentsWrapped: aString asText; - extent: self defaultInputWidth @ 50; - borderColor: TCUDefaultValues colorGray; - borderWidth: 1; - center: self instructionLabel center + (0 @ 30); - hide). - - self addMorph: self inputField. \ No newline at end of file + self + inputField: (TextMorph new + contentsWrapped: aString asText; + extent: self defaultInputWidth @ 50; + borderColor: TCUDefaultValues colorGray; + borderWidth: 1; + center: self instructionLabel center + (0 @ 30); + hide); + addMorph: self inputField. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUAuthentication.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUAuthentication.class/methodProperties.json index ab9474187..47c2beb4a 100644 --- a/packages/TelegramClient-UI.package/TCUAuthentication.class/methodProperties.json +++ b/packages/TelegramClient-UI.package/TCUAuthentication.class/methodProperties.json @@ -15,11 +15,11 @@ "buttonVerifyPressed" : "js 5/31/2020 20:10", "core" : "js 6/13/2020 18:43", "core:" : "R.S 5/31/2020 20:18", - "createButtonBack" : "js 6/13/2020 18:43", - "createButtonNext" : "js 6/13/2020 18:44", + "createButtonBack" : "js 7/31/2020 15:17", + "createButtonNext" : "js 7/31/2020 15:17", "createButtonVerify" : "js 6/13/2020 18:44", - "createErrorLabel:" : "js 6/13/2020 18:53", - "createInputField:" : "rs 7/6/2020 17:30", + "createErrorLabel:" : "js 7/31/2020 15:18", + "createInputField:" : "js 7/31/2020 15:18", "createLabel:" : "js 6/13/2020 18:13", "defaultExtent" : "R.S 5/20/2020 13:51", "defaultInputWidth" : "R.S 5/20/2020 13:51", @@ -33,7 +33,7 @@ "instructionLabel" : "R.S 5/20/2020 13:52", "instructionLabel:" : "js 5/28/2020 17:51", "logInCompleted" : "js 6/13/2020 18:45", - "showFirstStep" : "N.S. 7/26/2020 15:54", + "showFirstStep" : "js 7/31/2020 15:19", "showLoadingMessage" : "js 6/13/2020 18:45", "showSecondStep" : "rs 7/6/2020 17:29", "subscribeCore" : "R.S 5/31/2020 20:21" } } diff --git a/packages/TelegramClient-UI.package/TCUChatListItem.class/class/newWithChat.andWidth..st b/packages/TelegramClient-UI.package/TCUChatListItem.class/class/newWithChat.width..st similarity index 74% rename from packages/TelegramClient-UI.package/TCUChatListItem.class/class/newWithChat.andWidth..st rename to packages/TelegramClient-UI.package/TCUChatListItem.class/class/newWithChat.width..st index 0294edcd6..0403957a9 100644 --- a/packages/TelegramClient-UI.package/TCUChatListItem.class/class/newWithChat.andWidth..st +++ b/packages/TelegramClient-UI.package/TCUChatListItem.class/class/newWithChat.width..st @@ -1,5 +1,5 @@ creation -newWithChat: aChat andWidth: aWidth +newWithChat: aChat width: aWidth ^ self new chat: aChat; diff --git a/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/addLastMessage.st b/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/addLastMessage.st index 69c01ee61..af43f56ed 100644 --- a/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/addLastMessage.st +++ b/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/addLastMessage.st @@ -2,7 +2,7 @@ initialization addLastMessage | text | - text := (self chat lastMessage truncateTo: self messagePreviewLength), '...'. + text := (self chat lastMessage condensedIntoOneLine truncateTo: self messagePreviewLength), '...'. self addMorph: (TextMorph new contents: text asText; diff --git a/packages/TelegramClient-UI.package/TCUChatListItem.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUChatListItem.class/methodProperties.json index 55f1afb99..2be1b2649 100644 --- a/packages/TelegramClient-UI.package/TCUChatListItem.class/methodProperties.json +++ b/packages/TelegramClient-UI.package/TCUChatListItem.class/methodProperties.json @@ -1,9 +1,9 @@ { "class" : { - "newWithChat:andWidth:" : "rs 7/4/2020 18:47" }, + "newWithChat:width:" : "js 7/31/2020 18:48" }, "instance" : { "addBorder" : "r.s 7/31/2020 14:43", - "addLastMessage" : "r.s 7/31/2020 14:18", + "addLastMessage" : "js 7/31/2020 19:06", "addTitle" : "rs 7/4/2020 19:05", "chat" : "rs 6/17/2020 21:45", "chat:" : "rs 6/17/2020 21:45", diff --git a/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/addMessage.senderId..st b/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/addMessage.senderId..st deleted file mode 100644 index fd1db93b4..000000000 --- a/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/addMessage.senderId..st +++ /dev/null @@ -1,11 +0,0 @@ -accessing -addMessage: aString senderId: senderId - - | message | - message := TCUMessage newWithText: aString senderId: senderId. - - self messages do: [:aMessage | aMessage position: (aMessage position - (0 @ (message height + self heightBetweenMessages)))]. - - message bottomLeft: (self bottomLeft + (self defaultMessageMargin @ 0)). - self addMorph: message. - self messages add: message. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/addMessageAtBottom..st b/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/addMessageAtBottom..st new file mode 100644 index 000000000..31434c010 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/addMessageAtBottom..st @@ -0,0 +1,13 @@ +accessing +addMessageAtBottom: aMessage + + | newMessage | + newMessage := TCUMessage newFromTCCMessage: aMessage. + + self messages do: [:message | message position: (message position - (0 @ (newMessage height)))]. + + newMessage isSentByMe + ifTrue: [newMessage bottomRight: (self bottomRight - (self defaultMessageMargin @ 0))] + ifFalse: [newMessage bottomLeft: (self bottomLeft + (self defaultMessageMargin @ 0))]. + self addMorph: newMessage. + self messages add: newMessage. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/chat..st b/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/chat..st new file mode 100644 index 000000000..3f6d8c03a --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/chat..st @@ -0,0 +1,4 @@ +accessing +chat: aChat + + chat := aChat. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/chat.st b/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/chat.st new file mode 100644 index 000000000..207f37ad7 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/chat.st @@ -0,0 +1,4 @@ +accessing +chat + + ^ chat \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/clearMessages.st b/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/clearMessages.st new file mode 100644 index 000000000..2222735e8 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/clearMessages.st @@ -0,0 +1,5 @@ +accessing +clearMessages + + self messages do: [:aMessage | aMessage delete]. + self messages removeAll. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/defaultMessageMargin.st b/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/defaultMessageMargin.st index 3fc410d81..d9e9bd92e 100644 --- a/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/defaultMessageMargin.st +++ b/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/defaultMessageMargin.st @@ -1,4 +1,4 @@ default values defaultMessageMargin - ^ 15 \ No newline at end of file + ^ 10 \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/displayChat..st b/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/displayChat..st index 3820d89cb..038e7b80f 100644 --- a/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/displayChat..st +++ b/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/displayChat..st @@ -1,5 +1,8 @@ accessing displayChat: aChat - self messages do: [:aMessage | aMessage delete]. - self messages removeAll. \ No newline at end of file + self chat removeActionsWithReceiver: self. + aChat when: #newMessage send: #redrawMessages to: self. + self + chat: aChat; + redrawMessages. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/heightBetweenMessages.st b/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/heightBetweenMessages.st deleted file mode 100644 index 30a49ccde..000000000 --- a/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/heightBetweenMessages.st +++ /dev/null @@ -1,4 +0,0 @@ -default values -heightBetweenMessages - - ^ 10 \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/initialize.st b/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/initialize.st index 9c924c84e..c3a4ad22c 100644 --- a/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/initialize.st +++ b/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/initialize.st @@ -4,5 +4,6 @@ initialize super initialize. self + chat: TCCNullChat new; clipSubmorphs: true; messages: OrderedCollection new. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/initializeMessages..st b/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/initializeMessages..st deleted file mode 100644 index 4aec3a59a..000000000 --- a/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/initializeMessages..st +++ /dev/null @@ -1,4 +0,0 @@ -initialization -initializeMessages: aMessageList - - aMessageList do: [:message| self addMessage: (message message) senderId: message senderId]. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/redrawMessages.st b/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/redrawMessages.st new file mode 100644 index 000000000..d0eca4b9d --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/redrawMessages.st @@ -0,0 +1,7 @@ +accessing +redrawMessages + + self clearMessages. + + self chat messages reversed do: [:aMessage | + self addMessageAtBottom: aMessage]. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatMessageList.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUChatMessageList.class/methodProperties.json index 95ecb0f8f..53fd4c967 100644 --- a/packages/TelegramClient-UI.package/TCUChatMessageList.class/methodProperties.json +++ b/packages/TelegramClient-UI.package/TCUChatMessageList.class/methodProperties.json @@ -2,11 +2,13 @@ "class" : { }, "instance" : { - "addMessage:senderId:" : "r.s 7/31/2020 14:05", - "defaultMessageMargin" : "r.s 7/31/2020 14:16", - "displayChat:" : "r.s 7/31/2020 14:04", - "heightBetweenMessages" : "r.s 7/31/2020 14:16", - "initialize" : "rs 6/17/2020 21:33", - "initializeMessages:" : "N.S. 7/26/2020 22:20", + "addMessageAtBottom:" : "js 7/31/2020 17:00", + "chat" : "js 7/31/2020 16:39", + "chat:" : "js 7/31/2020 16:39", + "clearMessages" : "js 7/31/2020 16:46", + "defaultMessageMargin" : "js 7/31/2020 15:50", + "displayChat:" : "js 7/31/2020 17:19", + "initialize" : "js 7/31/2020 17:19", "messages" : "rs 6/17/2020 19:10", - "messages:" : "rs 6/17/2020 19:10" } } + "messages:" : "rs 6/17/2020 19:10", + "redrawMessages" : "js 7/31/2020 17:06" } } diff --git a/packages/TelegramClient-UI.package/TCUChatMessageList.class/properties.json b/packages/TelegramClient-UI.package/TCUChatMessageList.class/properties.json index a9827369a..dc4ae1f83 100644 --- a/packages/TelegramClient-UI.package/TCUChatMessageList.class/properties.json +++ b/packages/TelegramClient-UI.package/TCUChatMessageList.class/properties.json @@ -6,7 +6,8 @@ ], "commentStamp" : "rs 6/17/2020 21:32", "instvars" : [ - "messages" ], + "messages", + "chat" ], "name" : "TCUChatMessageList", "pools" : [ ], diff --git a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/buttonSendPressed.st b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/buttonSendPressed.st index 6dfe8ae1e..20cf8eba8 100644 --- a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/buttonSendPressed.st +++ b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/buttonSendPressed.st @@ -5,5 +5,4 @@ buttonSendPressed 'chatId' -> self selectedChat id. 'message' -> self textInputField contents}). - self messageListWindow addMessage: self textInputField contents senderId: TCUMain core loggedInUserID. - self textInputField contents: ' '. \ No newline at end of file + self textInputField contents: ''. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/newChatSelected..st b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/newChatSelected..st index 62c8df8a4..79d398d59 100644 --- a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/newChatSelected..st +++ b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/newChatSelected..st @@ -1,13 +1,9 @@ initialization newChatSelected: aChat - | messageListReversed | - messageListReversed := aChat messages reverse. self welcomeMessage hide. self inputBar show. self selectedChat: aChat. self messageListWindow show. - self messageListWindow displayChat: aChat. - 1 to: messageListReversed size do: [: x | - self messageListWindow addMessage: ((messageListReversed at: x) message) senderId: (messageListReversed at: x) senderId]. \ No newline at end of file + self messageListWindow displayChat: aChat. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatWindow.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUChatWindow.class/methodProperties.json index 1cb20b3c1..0c9bf2be6 100644 --- a/packages/TelegramClient-UI.package/TCUChatWindow.class/methodProperties.json +++ b/packages/TelegramClient-UI.package/TCUChatWindow.class/methodProperties.json @@ -7,7 +7,7 @@ "addSendButton" : "js 6/13/2020 18:46", "addTextInputField" : "rs 6/17/2020 21:02", "addWelcomeMessage" : "N.S. 7/26/2020 15:57", - "buttonSendPressed" : "N.S. 7/26/2020 22:18", + "buttonSendPressed" : "js 7/31/2020 17:08", "clear" : "rs 6/17/2020 21:52", "createInputBar" : "rs 6/17/2020 21:01", "defaultInputfieldHeight" : "rs 6/12/2020 20:03", @@ -16,7 +16,7 @@ "inputBar:" : "rs 6/13/2020 10:38", "messageListWindow" : "rs 6/17/2020 19:12", "messageListWindow:" : "rs 6/17/2020 19:13", - "newChatSelected:" : "N.S. 7/26/2020 22:33", + "newChatSelected:" : "js 7/31/2020 16:38", "selectedChat" : "rs 6/13/2020 09:11", "selectedChat:" : "rs 6/13/2020 09:11", "textInputField" : "rs 6/13/2020 10:41", diff --git a/packages/TelegramClient-UI.package/TCUChatsList.class/instance/redrawItems.st b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/redrawItems.st index 914400939..478d3ee6e 100644 --- a/packages/TelegramClient-UI.package/TCUChatsList.class/instance/redrawItems.st +++ b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/redrawItems.st @@ -6,7 +6,8 @@ redrawItems "reversed is temporarly needed while chats are not in right order" self items: (self chats reversed collect: [:aChat | - item := TCUChatListItem newWithChat: aChat andWidth: self width. + item := TCUChatListItem newWithChat: aChat width: self width. + (aChat = self selectedChat) ifTrue: [item select]. item on: #mouseDown send: #chatItemClicked:event:from: to: self withValue: item]). self items do: [:anItem | self addMorph: anItem]. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatsList.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUChatsList.class/methodProperties.json index 326ecd493..2b2695bff 100644 --- a/packages/TelegramClient-UI.package/TCUChatsList.class/methodProperties.json +++ b/packages/TelegramClient-UI.package/TCUChatsList.class/methodProperties.json @@ -15,7 +15,7 @@ "maxHeight" : "f.w. 7/12/2020 00:10", "maxHeight:" : "f.w. 7/12/2020 04:56", "openNewChat:" : "f.w. 7/16/2020 00:02", - "redrawItems" : "f.w. 7/12/2020 04:42", + "redrawItems" : "js 7/31/2020 18:48", "scrollDown" : "f.w. 7/12/2020 04:14", "scrollUp" : "f.w. 7/12/2020 22:06", "selectedChat" : "rs 6/13/2020 08:51", diff --git a/packages/TelegramClient-UI.package/TCUMain.class/class/core..st b/packages/TelegramClient-UI.package/TCUMain.class/class/core..st index 5a88b6471..a8bce7caa 100644 --- a/packages/TelegramClient-UI.package/TCUMain.class/class/core..st +++ b/packages/TelegramClient-UI.package/TCUMain.class/class/core..st @@ -1,4 +1,4 @@ creation core: aCore - Core:=aCore. \ No newline at end of file + Core := aCore. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMain.class/class/core.st b/packages/TelegramClient-UI.package/TCUMain.class/class/core.st index 5d45d4dfa..60ff5fc7f 100644 --- a/packages/TelegramClient-UI.package/TCUMain.class/class/core.st +++ b/packages/TelegramClient-UI.package/TCUMain.class/class/core.st @@ -1,4 +1,4 @@ creation core - ^Core \ No newline at end of file + ^ Core \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMain.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUMain.class/methodProperties.json index bce377a4c..acd429f22 100644 --- a/packages/TelegramClient-UI.package/TCUMain.class/methodProperties.json +++ b/packages/TelegramClient-UI.package/TCUMain.class/methodProperties.json @@ -1,7 +1,7 @@ { "class" : { - "core" : "N.S. 7/26/2020 23:02", - "core:" : "N.S. 7/26/2020 22:26", + "core" : "js 7/31/2020 16:13", + "core:" : "js 7/31/2020 16:13", "newWithCore:" : "f.w. 6/3/2020 20:31" }, "instance" : { "addChatsList" : "rs 6/17/2020 22:54", diff --git a/packages/TelegramClient-UI.package/TCUMessage.class/class/newFromTCCMessage..st b/packages/TelegramClient-UI.package/TCUMessage.class/class/newFromTCCMessage..st new file mode 100644 index 000000000..b14e87cad --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUMessage.class/class/newFromTCCMessage..st @@ -0,0 +1,7 @@ +instance creation +newFromTCCMessage: aMessage + + ^ self basicNew + text: aMessage message; + senderID: aMessage senderId; + initialize \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMessage.class/class/newWithText.senderId..st b/packages/TelegramClient-UI.package/TCUMessage.class/class/newWithText.senderId..st deleted file mode 100644 index a5bf46e6e..000000000 --- a/packages/TelegramClient-UI.package/TCUMessage.class/class/newWithText.senderId..st +++ /dev/null @@ -1,12 +0,0 @@ -instance creation -newWithText: aString senderId: senderId - - | message | - message := self new - setText: aString. - message adaptColor: senderId. - message width: message text width + 20. - message height: message text height + 20. - message text center: message center. - - ^ message \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMessage.class/instance/adaptColor..st b/packages/TelegramClient-UI.package/TCUMessage.class/instance/adaptColor..st deleted file mode 100644 index 97c8e755c..000000000 --- a/packages/TelegramClient-UI.package/TCUMessage.class/instance/adaptColor..st +++ /dev/null @@ -1,5 +0,0 @@ -accessing -adaptColor: aSenderId - - (aSenderId = TCUMain core loggedInUserID) - ifTrue: [self color: TCUDefaultValues colorCarrot]. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMessage.class/instance/addText.st b/packages/TelegramClient-UI.package/TCUMessage.class/instance/addText.st new file mode 100644 index 000000000..b360b9e1f --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUMessage.class/instance/addText.st @@ -0,0 +1,18 @@ +accessing +addText + + | textMorph expectedWidth | + textMorph := TextMorph new contents: self text; + wrapFlag: true; + margins: self defaultTextMargins; + width: self defaultWidth; + hResizing: #rigid; + color: Color white; + lock. + + expectedWidth := textMorph textStyle fontArray first widthOfString: self text. + (expectedWidth <= self defaultWidth) ifTrue: [textMorph width: expectedWidth + 50]. + + self + extent: textMorph extent + self defaultMargin; + addMorphCentered: textMorph. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMessage.class/instance/defaultMargin.st b/packages/TelegramClient-UI.package/TCUMessage.class/instance/defaultMargin.st new file mode 100644 index 000000000..8f3d0805a --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUMessage.class/instance/defaultMargin.st @@ -0,0 +1,4 @@ +accessing +defaultMargin + + ^ 0 @ 10 \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMessage.class/instance/defaultMinTextLength.st b/packages/TelegramClient-UI.package/TCUMessage.class/instance/defaultMinTextLength.st index a879d1b27..475aeb1d8 100644 --- a/packages/TelegramClient-UI.package/TCUMessage.class/instance/defaultMinTextLength.st +++ b/packages/TelegramClient-UI.package/TCUMessage.class/instance/defaultMinTextLength.st @@ -1,4 +1,4 @@ accessing defaultMinTextLength - ^ 280 \ No newline at end of file + ^ 80 \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMessage.class/instance/defaultTextMargins.st b/packages/TelegramClient-UI.package/TCUMessage.class/instance/defaultTextMargins.st index 19c8149e7..2a5a26a5f 100644 --- a/packages/TelegramClient-UI.package/TCUMessage.class/instance/defaultTextMargins.st +++ b/packages/TelegramClient-UI.package/TCUMessage.class/instance/defaultTextMargins.st @@ -1,4 +1,4 @@ accessing defaultTextMargins - ^ (5 @ 4) \ No newline at end of file + ^ (5 @ 5) \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMessage.class/instance/initialize.st b/packages/TelegramClient-UI.package/TCUMessage.class/instance/initialize.st index ae1b8c217..8b421183f 100644 --- a/packages/TelegramClient-UI.package/TCUMessage.class/instance/initialize.st +++ b/packages/TelegramClient-UI.package/TCUMessage.class/instance/initialize.st @@ -6,7 +6,10 @@ initialize self width: self defaultWidth; height: self defaultHeight; - color: TCUDefaultValues colorLightBlue; + color: (self isSentByMe + ifTrue: [TCUDefaultValues colorCarrot] + ifFalse: [TCUDefaultValues colorLightBlue]); + addText; hResizing: #shrinkWrap; vResizing: #shrinkWrap; borderWidth: 0; diff --git a/packages/TelegramClient-UI.package/TCUMessage.class/instance/isSentByMe.st b/packages/TelegramClient-UI.package/TCUMessage.class/instance/isSentByMe.st new file mode 100644 index 000000000..f70e3385f --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUMessage.class/instance/isSentByMe.st @@ -0,0 +1,4 @@ +accessing +isSentByMe + + ^ self senderID = TCUMain core loggedInUserID \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMessage.class/instance/senderID..st b/packages/TelegramClient-UI.package/TCUMessage.class/instance/senderID..st new file mode 100644 index 000000000..f37508c1e --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUMessage.class/instance/senderID..st @@ -0,0 +1,4 @@ +accessing +senderID: anID + + senderID := anID. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMessage.class/instance/senderID.st b/packages/TelegramClient-UI.package/TCUMessage.class/instance/senderID.st new file mode 100644 index 000000000..8c0d6da28 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUMessage.class/instance/senderID.st @@ -0,0 +1,4 @@ +accessing +senderID + + ^ senderID \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMessage.class/instance/setText..st b/packages/TelegramClient-UI.package/TCUMessage.class/instance/setText..st deleted file mode 100644 index ca0b669c8..000000000 --- a/packages/TelegramClient-UI.package/TCUMessage.class/instance/setText..st +++ /dev/null @@ -1,17 +0,0 @@ -accessing -setText: aString - - |expectedWidth| - self text: (TextMorph new contents: aString; - wrapFlag: true; - margins: self defaultTextMargins; - width: self defaultWidth; - hResizing: #rigid; - color: Color white; - lock). - - expectedWidth := self text textStyle fontArray first widthOfString: aString. - (expectedWidth <= self defaultMinTextLength) ifTrue: [self text width: expectedWidth + 50. - self width: expectedWidth + 80]. - - self addMorphCentered: self text. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMessage.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUMessage.class/methodProperties.json index d867eeb9b..51b9bd0db 100644 --- a/packages/TelegramClient-UI.package/TCUMessage.class/methodProperties.json +++ b/packages/TelegramClient-UI.package/TCUMessage.class/methodProperties.json @@ -1,13 +1,16 @@ { "class" : { - "newWithText:senderId:" : "N.S. 7/26/2020 22:23" }, + "newFromTCCMessage:" : "js 7/31/2020 17:55" }, "instance" : { - "adaptColor:" : "r.s 7/31/2020 13:58", + "addText" : "js 7/31/2020 18:42", "defaultHeight" : "rs 6/17/2020 20:07", - "defaultMinTextLength" : "r.s 7/31/2020 14:21", - "defaultTextMargins" : "r.s 7/31/2020 14:21", + "defaultMargin" : "js 7/31/2020 18:19", + "defaultMinTextLength" : "js 7/31/2020 18:03", + "defaultTextMargins" : "js 7/31/2020 18:17", "defaultWidth" : "r.s 7/31/2020 14:19", - "initialize" : "r.s 7/31/2020 14:27", - "setText:" : "r.s 7/31/2020 14:28", + "initialize" : "js 7/31/2020 18:15", + "isSentByMe" : "js 7/31/2020 16:18", + "senderID" : "js 7/31/2020 16:11", + "senderID:" : "js 7/31/2020 16:10", "text" : "rs 6/17/2020 19:48", "text:" : "rs 6/17/2020 19:52" } } diff --git a/packages/TelegramClient-UI.package/TCUMessage.class/properties.json b/packages/TelegramClient-UI.package/TCUMessage.class/properties.json index 89861b33b..897b100af 100644 --- a/packages/TelegramClient-UI.package/TCUMessage.class/properties.json +++ b/packages/TelegramClient-UI.package/TCUMessage.class/properties.json @@ -6,7 +6,8 @@ ], "commentStamp" : "rs 6/17/2020 21:31", "instvars" : [ - "text" ], + "text", + "senderID" ], "name" : "TCUMessage", "pools" : [ ], From af1b32331322bdb84890bbfb35f65a6ce5bb91bc Mon Sep 17 00:00:00 2001 From: Jonas Schmidt Date: Sat, 1 Aug 2020 11:57:14 +0200 Subject: [PATCH 53/81] added new readme --- README.md | 20 +++++--------------- assets/logo.png | Bin 0 -> 137805 bytes 2 files changed, 5 insertions(+), 15 deletions(-) create mode 100644 assets/logo.png diff --git a/README.md b/README.md index adb283c61..1e260ba35 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,12 @@ -

TelegramClient Logo

+

TeleSqueak

+

TeleSqueak

- - - - + +

@@ -16,15 +15,6 @@ TeleSqueak is a **Squeak-Client** for the widely used Telegram-Messenger. It aim *This Project is part of the "Softwaretechnik" Lecture 2020 at the Hasso Plattner Institute.* -## CI Status -### Unit Tests -Develop: ![CI](https://github.com/hpi-swa-teaching/TelegramClient/workflows/CI/badge.svg?branch=develop) -Master(Release): ![CI](https://github.com/hpi-swa-teaching/TelegramClient/workflows/CI/badge.svg?branch=master) - -### Linting Tests -Develop: ![CI](https://github.com/hpi-swa-teaching/TelegramClient/workflows/CI-Lint/badge.svg?branch=develop) -Master(Release): ![CI](https://github.com/hpi-swa-teaching/TelegramClient/workflows/CI-Lint/badge.svg?branch=master) - ## Installation Make sure you have the current version of Squeak installed. * Step 1: Install the Squeak Git Client and clone this repository. For the trunk clone develop, for the latest stable release choose master. @@ -35,7 +25,7 @@ install: 'FFI-Kernel'.` * Step 4: Place the unzipped binaries inside of your squeak image inside the 'Resource' folder. * Step 5 (Windows only): Install the [Visual C++ Redistributable for Visual Studio 2015, 2017 and 2019](https://aka.ms/vs/16/release/vc_redist.x64.exe) -Alternatively, check our (release page)[https://github.com/hpi-swa-teaching/TelegramClient/releases] for an online installer in the form of a sar file. In that case you just have to follow steps two and five. +Alternatively, check our [release page](https://github.com/hpi-swa-teaching/TelegramClient/releases) for an online installer in the form of a sar file. In that case you just have to follow steps two and five. ## Running TelegramClient In a workspace window either execute the command `TCUTelegram newWithTCCCore` or click the Telegram entry in the Apps dropdown menu. The menu is only available if you already started the app once or installed the app via a release sar file. diff --git a/assets/logo.png b/assets/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..eabb5ba3073d339481a20306a53944f38c9bfce7 GIT binary patch literal 137805 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�vx@zZnnHZjbveQ|p2fwSEa*R|64)U=q+< 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 KMNUMnLSTX^@0JSy literal 0 HcmV?d00001 From 1cab084c6186933e51126806fd5920f5cf1e9f61 Mon Sep 17 00:00:00 2001 From: Niklas Schilli Date: Sat, 1 Aug 2020 18:37:58 +0200 Subject: [PATCH 54/81] Close button and direct ownership (#250) Co-authored-by: Rohan Sawahn Co-authored-by: Rohan Sawahn <49531442+rohansaw@users.noreply.github.com> --- ...acing..st => addCloseButtonTo.withSpacing.deletes..st} | 4 ++-- .../TCUMain.class/instance/addHeader.st | 2 +- .../TCUMain.class/instance/newChatButtonClicked.st | 8 +++++--- .../TCUMain.class/methodProperties.json | 8 ++++---- 4 files changed, 12 insertions(+), 10 deletions(-) rename packages/TelegramClient-UI.package/TCUMain.class/instance/{addCloseButtonTo.withSpacing..st => addCloseButtonTo.withSpacing.deletes..st} (67%) diff --git a/packages/TelegramClient-UI.package/TCUMain.class/instance/addCloseButtonTo.withSpacing..st b/packages/TelegramClient-UI.package/TCUMain.class/instance/addCloseButtonTo.withSpacing.deletes..st similarity index 67% rename from packages/TelegramClient-UI.package/TCUMain.class/instance/addCloseButtonTo.withSpacing..st rename to packages/TelegramClient-UI.package/TCUMain.class/instance/addCloseButtonTo.withSpacing.deletes..st index ef8d55ef4..11b9fc229 100644 --- a/packages/TelegramClient-UI.package/TCUMain.class/instance/addCloseButtonTo.withSpacing..st +++ b/packages/TelegramClient-UI.package/TCUMain.class/instance/addCloseButtonTo.withSpacing.deletes..st @@ -1,12 +1,12 @@ defaultValues -addCloseButtonTo: aMorph withSpacing: aSpacing +addCloseButtonTo: aMorph withSpacing: aSpacing deletes: aDeletableMorph | closeButton | closeButton := TCUButton new text: 'close'; color: TCUDefaultValues colorRed; - on: #mouseUp send: #delete to: self. + on: #mouseUp send: #delete to: aDeletableMorph. closeButton text color: Color white. closeButton position: (aMorph position x + aSpacing) @ aSpacing. diff --git a/packages/TelegramClient-UI.package/TCUMain.class/instance/addHeader.st b/packages/TelegramClient-UI.package/TCUMain.class/instance/addHeader.st index 80c24d733..ffa5949f8 100644 --- a/packages/TelegramClient-UI.package/TCUMain.class/instance/addHeader.st +++ b/packages/TelegramClient-UI.package/TCUMain.class/instance/addHeader.st @@ -12,6 +12,6 @@ addHeader addMorph: header; addTitle: 'Telegram' to: header; addLogoutButtonTo: header withSpacing: 5; - addCloseButtonTo: header withSpacing: 5; + addCloseButtonTo: header withSpacing: 5 deletes: self; "addInputFieldTo: header withSpacing: 5;" addNewChatButtonTo: header withSpacing: 5. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMain.class/instance/newChatButtonClicked.st b/packages/TelegramClient-UI.package/TCUMain.class/instance/newChatButtonClicked.st index e7b102eba..18691df18 100644 --- a/packages/TelegramClient-UI.package/TCUMain.class/instance/newChatButtonClicked.st +++ b/packages/TelegramClient-UI.package/TCUMain.class/instance/newChatButtonClicked.st @@ -10,7 +10,9 @@ newChatButtonClicked extent: 200 @ 50; borderColor: TCUDefaultValues colorLightBlue. inputField crAction: [self core searchChat: inputField text. modal delete]. - + + self addCloseButtonTo: modal withSpacing: 5 deletes: modal. + modal - addMorphCentered: inputField; - openCenteredInWorld. \ No newline at end of file + addMorphCentered: inputField. + self addMorphCentered: modal. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMain.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUMain.class/methodProperties.json index acd429f22..c7a4e86ed 100644 --- a/packages/TelegramClient-UI.package/TCUMain.class/methodProperties.json +++ b/packages/TelegramClient-UI.package/TCUMain.class/methodProperties.json @@ -5,8 +5,8 @@ "newWithCore:" : "f.w. 6/3/2020 20:31" }, "instance" : { "addChatsList" : "rs 6/17/2020 22:54", - "addCloseButtonTo:withSpacing:" : "LL 7/15/2020 19:36", - "addHeader" : "r.s 7/16/2020 08:56", + "addCloseButtonTo:withSpacing:deletes:" : "N.S. 7/31/2020 16:48", + "addHeader" : "N.S. 7/31/2020 16:48", "addInputFieldTo:withSpacing:" : "j 7/16/2020 12:27", "addLogoutButtonTo:withSpacing:" : "f.w. 7/16/2020 01:12", "addNewChatButtonTo:withSpacing:" : "r.s 7/16/2020 08:59", @@ -20,12 +20,12 @@ "createHeaderMorph" : "js 6/13/2020 18:01", "defaultExtent" : "R.S 6/1/2020 14:27", "defaultHeaderHeight" : "R.S 6/1/2020 14:27", - "delete" : "R.S 6/3/2020 20:54", + "delete" : "N.S. 7/31/2020 16:46", "getChatHistoryFrom:" : "j 7/16/2020 12:05", "initialize" : "f.w. 7/12/2020 21:51", "initializeChatWindow" : "js 6/13/2020 18:54", "logout" : "js 6/13/2020 18:11", - "newChatButtonClicked" : "r.s 7/16/2020 13:08", + "newChatButtonClicked" : "N.S. 7/31/2020 16:49", "newChatSelected:" : "f.w. 7/16/2020 00:02", "newMessageReceived:" : "j 7/16/2020 13:26", "sendMessage:" : "rs 6/17/2020 21:19", From 48fe58a20083210439e114d25ba64402d4e6d069 Mon Sep 17 00:00:00 2001 From: Jonas Schmidt <43679965+schmidtjonas@users.noreply.github.com> Date: Sat, 1 Aug 2020 18:41:12 +0200 Subject: [PATCH 55/81] Added tests and TCCEvent class (#257) * faster loading of chats maybe ?? :) * some test with 3 seconds wait * logs * removed count * small changes * added Unittests for event and request * fixed linter --- .../TCCChatsHandler.class/instance/getChats.st | 2 +- .../TCCChatsHandler.class/methodProperties.json | 8 ++++---- .../TCCCore.class/instance/handleEvent..st | 4 ++-- .../TCCCore.class/instance/update.st | 2 +- .../TCCCore.class/methodProperties.json | 4 ++-- .../TCCEvent.class/README.md | 1 + .../TCCEvent.class/class/newFromTDLibEvent..st | 7 +++++++ .../TCCEvent.class/instance/isError.st | 4 ++++ .../TCCEvent.class/instance/type..st | 4 ++++ .../TCCEvent.class/instance/type.st | 4 ++++ .../TCCEvent.class/methodProperties.json | 7 +++++++ .../TCCEvent.class/properties.json | 14 ++++++++++++++ .../TCCRequest.class/methodProperties.json | 2 +- .../class/newForCurrentPlatform.st | 4 ++++ .../TCCTeleClient.class/methodProperties.json | 1 + .../instance/createClient..st | 2 +- .../methodProperties.json | 2 +- .../TCTChatTests.class/instance/testOrderInsert.st | 2 +- .../TCTChatTests.class/instance/testOrderModify.st | 2 +- .../TCTChatTests.class/methodProperties.json | 4 ++-- .../TCTEventTest.class/README.md | 1 + .../TCTEventTest.class/instance/testError.st | 4 ++++ .../TCTEventTest.class/instance/testNoError.st | 6 ++++++ .../TCTEventTest.class/instance/testType.st | 9 +++++++++ .../TCTEventTest.class/methodProperties.json | 7 +++++++ .../TCTEventTest.class/properties.json | 14 ++++++++++++++ .../TCTLoggedInTests.class/instance/setUp.st | 3 ++- .../TCTLoggedInTests.class/methodProperties.json | 2 +- .../TCTRequestTest.class/README.md | 1 + .../TCTRequestTest.class/instance/request..st | 4 ++++ .../TCTRequestTest.class/instance/request.st | 4 ++++ .../TCTRequestTest.class/instance/setUp.st | 4 ++++ .../TCTRequestTest.class/instance/testString.st | 7 +++++++ .../TCTRequestTest.class/instance/testType.st | 4 ++++ .../TCTRequestTest.class/methodProperties.json | 9 +++++++++ .../TCTRequestTest.class/properties.json | 14 ++++++++++++++ .../TCUAuthentication.class/methodProperties.json | 2 +- .../instance/createChatListItem..st | 10 ++++++++++ .../TCUChatsList.class/instance/redrawItems.st | 5 +---- .../TCUChatsList.class/instance/setToTop.st | 4 ---- .../TCUChatsList.class/methodProperties.json | 6 +++--- .../TCUMain.class/methodProperties.json | 2 +- .../TCUTelegram.class/methodProperties.json | 2 +- 43 files changed, 171 insertions(+), 33 deletions(-) create mode 100644 packages/TelegramClient-Core.package/TCCEvent.class/README.md create mode 100644 packages/TelegramClient-Core.package/TCCEvent.class/class/newFromTDLibEvent..st create mode 100644 packages/TelegramClient-Core.package/TCCEvent.class/instance/isError.st create mode 100644 packages/TelegramClient-Core.package/TCCEvent.class/instance/type..st create mode 100644 packages/TelegramClient-Core.package/TCCEvent.class/instance/type.st create mode 100644 packages/TelegramClient-Core.package/TCCEvent.class/methodProperties.json create mode 100644 packages/TelegramClient-Core.package/TCCEvent.class/properties.json create mode 100644 packages/TelegramClient-Core.package/TCCTeleClient.class/class/newForCurrentPlatform.st create mode 100644 packages/TelegramClient-Tests.package/TCTEventTest.class/README.md create mode 100644 packages/TelegramClient-Tests.package/TCTEventTest.class/instance/testError.st create mode 100644 packages/TelegramClient-Tests.package/TCTEventTest.class/instance/testNoError.st create mode 100644 packages/TelegramClient-Tests.package/TCTEventTest.class/instance/testType.st create mode 100644 packages/TelegramClient-Tests.package/TCTEventTest.class/methodProperties.json create mode 100644 packages/TelegramClient-Tests.package/TCTEventTest.class/properties.json create mode 100644 packages/TelegramClient-Tests.package/TCTRequestTest.class/README.md create mode 100644 packages/TelegramClient-Tests.package/TCTRequestTest.class/instance/request..st create mode 100644 packages/TelegramClient-Tests.package/TCTRequestTest.class/instance/request.st create mode 100644 packages/TelegramClient-Tests.package/TCTRequestTest.class/instance/setUp.st create mode 100644 packages/TelegramClient-Tests.package/TCTRequestTest.class/instance/testString.st create mode 100644 packages/TelegramClient-Tests.package/TCTRequestTest.class/instance/testType.st create mode 100644 packages/TelegramClient-Tests.package/TCTRequestTest.class/methodProperties.json create mode 100644 packages/TelegramClient-Tests.package/TCTRequestTest.class/properties.json create mode 100644 packages/TelegramClient-UI.package/TCUChatsList.class/instance/createChatListItem..st delete mode 100644 packages/TelegramClient-UI.package/TCUChatsList.class/instance/setToTop.st diff --git a/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/getChats.st b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/getChats.st index a84d4d47b..0816df321 100644 --- a/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/getChats.st +++ b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/getChats.st @@ -4,5 +4,5 @@ getChats self client send: (TCCRequest newWithType: 'getChats' from: { - 'limit' -> '5'. + 'limit' -> 1000. 'offset_order' -> '9223372036854775807'}). \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCChatsHandler.class/methodProperties.json b/packages/TelegramClient-Core.package/TCCChatsHandler.class/methodProperties.json index 64ce0b2c3..28768b1c3 100644 --- a/packages/TelegramClient-Core.package/TCCChatsHandler.class/methodProperties.json +++ b/packages/TelegramClient-Core.package/TCCChatsHandler.class/methodProperties.json @@ -2,19 +2,19 @@ "class" : { }, "instance" : { - "addChat:" : "js 7/31/2020 14:51", + "addChat:" : "js 8/1/2020 12:07", "addNewMessage:" : "js 7/31/2020 17:22", "app" : "js 6/1/2020 14:44", "app:" : "js 6/1/2020 14:45", "chatHistoryReceived:" : "js 7/31/2020 17:21", "client" : "js 6/1/2020 14:44", "getChatHistoryFrom:with:and:" : "js 7/31/2020 14:26", - "getChats" : "js 7/31/2020 14:26", + "getChats" : "js 7/31/2020 22:50", "handleNewMessage:" : "js 7/31/2020 14:54", "messageLimit" : "js 7/31/2020 14:52", "messageLimit:" : "j 7/16/2020 12:03", "openNewChat:" : "j 7/16/2020 12:04", "searchChat:" : "f.w. 7/15/2020 22:53", "sendMessage:to:" : "js 7/31/2020 14:39", - "updateChatOrder:" : "js 7/31/2020 14:46", - "updateLastMessage:" : "js 7/31/2020 14:52" } } + "updateChatOrder:" : "js 8/1/2020 12:07", + "updateLastMessage:" : "js 8/1/2020 12:07" } } diff --git a/packages/TelegramClient-Core.package/TCCCore.class/instance/handleEvent..st b/packages/TelegramClient-Core.package/TCCCore.class/instance/handleEvent..st index bbdf76e1d..28b1f69b7 100644 --- a/packages/TelegramClient-Core.package/TCCCore.class/instance/handleEvent..st +++ b/packages/TelegramClient-Core.package/TCCCore.class/instance/handleEvent..st @@ -3,8 +3,8 @@ handleEvent: anEvent | update | update := nil. - (((anEvent at: '@type') = 'error') and: [(anEvent at: 'code') = 400 ]) ifTrue: [self tryHandleError: anEvent]. - (anEvent at: '@type') caseOf: { + anEvent isError ifTrue: [self tryHandleError: anEvent]. + anEvent type caseOf: { ['updateAuthorizationState'] -> [update := self authHandler handleEvent: anEvent]. ['updateNewChat'] -> [self chatsHandler addChat: anEvent]. ['updateChatOrder'] -> [self chatsHandler updateChatOrder: anEvent]. diff --git a/packages/TelegramClient-Core.package/TCCCore.class/instance/update.st b/packages/TelegramClient-Core.package/TCCCore.class/instance/update.st index e11a8bccc..0b92f4514 100644 --- a/packages/TelegramClient-Core.package/TCCCore.class/instance/update.st +++ b/packages/TelegramClient-Core.package/TCCCore.class/instance/update.st @@ -4,4 +4,4 @@ update | event | event := self client receive: 0.05. - event ifNotNil: [self handleEvent: event]. \ No newline at end of file + event ifNotNil: [self handleEvent: (TCCEvent newFromTDLibEvent: event)]. \ 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 e232aea59..60212c5d0 100644 --- a/packages/TelegramClient-Core.package/TCCCore.class/methodProperties.json +++ b/packages/TelegramClient-Core.package/TCCCore.class/methodProperties.json @@ -14,7 +14,7 @@ "client:" : "js 6/13/2020 19:10", "getChatHistoryFrom:" : "j 7/16/2020 12:24", "getOwnProfile" : "N.S. 7/31/2020 14:22", - "handleEvent:" : "r.s 7/31/2020 14:49", + "handleEvent:" : "js 7/31/2020 22:34", "initialize" : "rs 7/5/2020 15:12", "initializeClient" : "js 6/13/2020 18:20", "initializeHandlers" : "j 7/16/2020 11:42", @@ -27,4 +27,4 @@ "sendPhoneNumber:" : "js 6/13/2020 15:35", "setUserID:" : "N.S. 7/31/2020 14:23", "tryHandleError:" : "js 7/31/2020 15:13", - "update" : "js 6/13/2020 19:14" } } + "update" : "js 7/31/2020 22:34" } } diff --git a/packages/TelegramClient-Core.package/TCCEvent.class/README.md b/packages/TelegramClient-Core.package/TCCEvent.class/README.md new file mode 100644 index 000000000..35ed31ebd --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCEvent.class/README.md @@ -0,0 +1 @@ +data class for a event sent by tdlib \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCEvent.class/class/newFromTDLibEvent..st b/packages/TelegramClient-Core.package/TCCEvent.class/class/newFromTDLibEvent..st new file mode 100644 index 000000000..f009f0a98 --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCEvent.class/class/newFromTDLibEvent..st @@ -0,0 +1,7 @@ +instance creation +newFromTDLibEvent: anEvent + + ^ (self newFrom: anEvent) + type: (anEvent at: '@type'); + removeKey: '@type'; + yourself \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCEvent.class/instance/isError.st b/packages/TelegramClient-Core.package/TCCEvent.class/instance/isError.st new file mode 100644 index 000000000..63a76b1a1 --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCEvent.class/instance/isError.st @@ -0,0 +1,4 @@ +accessing +isError + + ^ self type = 'error' and: [(self at: 'code' ifAbsent: 0) = 400] \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCEvent.class/instance/type..st b/packages/TelegramClient-Core.package/TCCEvent.class/instance/type..st new file mode 100644 index 000000000..1e77211e4 --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCEvent.class/instance/type..st @@ -0,0 +1,4 @@ +accessing +type: aString + + type := aString. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCEvent.class/instance/type.st b/packages/TelegramClient-Core.package/TCCEvent.class/instance/type.st new file mode 100644 index 000000000..95c8cb06f --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCEvent.class/instance/type.st @@ -0,0 +1,4 @@ +accessing +type + + ^ type \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCEvent.class/methodProperties.json b/packages/TelegramClient-Core.package/TCCEvent.class/methodProperties.json new file mode 100644 index 000000000..96c057374 --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCEvent.class/methodProperties.json @@ -0,0 +1,7 @@ +{ + "class" : { + "newFromTDLibEvent:" : "js 8/1/2020 12:07" }, + "instance" : { + "isError" : "js 8/1/2020 12:32", + "type" : "js 7/31/2020 22:28", + "type:" : "js 7/31/2020 22:28" } } diff --git a/packages/TelegramClient-Core.package/TCCEvent.class/properties.json b/packages/TelegramClient-Core.package/TCCEvent.class/properties.json new file mode 100644 index 000000000..be7169e0d --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCEvent.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "TelegramClient-Core", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "js 8/1/2020 13:35", + "instvars" : [ + "type" ], + "name" : "TCCEvent", + "pools" : [ + ], + "super" : "Dictionary", + "type" : "normal" } diff --git a/packages/TelegramClient-Core.package/TCCRequest.class/methodProperties.json b/packages/TelegramClient-Core.package/TCCRequest.class/methodProperties.json index 061c0ee27..54215ab10 100644 --- a/packages/TelegramClient-Core.package/TCCRequest.class/methodProperties.json +++ b/packages/TelegramClient-Core.package/TCCRequest.class/methodProperties.json @@ -2,4 +2,4 @@ "class" : { "newWithType:from:" : "rs 6/6/2020 16:21" }, "instance" : { - "asString" : "js 6/13/2020 18:19" } } + "asString" : "js 8/1/2020 12:16" } } diff --git a/packages/TelegramClient-Core.package/TCCTeleClient.class/class/newForCurrentPlatform.st b/packages/TelegramClient-Core.package/TCCTeleClient.class/class/newForCurrentPlatform.st new file mode 100644 index 000000000..28ecb9cc1 --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCTeleClient.class/class/newForCurrentPlatform.st @@ -0,0 +1,4 @@ +creation +newForCurrentPlatform + + ^ self newWithClient: '' \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCTeleClient.class/methodProperties.json b/packages/TelegramClient-Core.package/TCCTeleClient.class/methodProperties.json index 07d5b3424..5f5b90096 100644 --- a/packages/TelegramClient-Core.package/TCCTeleClient.class/methodProperties.json +++ b/packages/TelegramClient-Core.package/TCCTeleClient.class/methodProperties.json @@ -1,5 +1,6 @@ { "class" : { + "newForCurrentPlatform" : "js 7/31/2020 22:53", "newWithClient:" : "js 6/13/2020 18:11" }, "instance" : { "execute:" : "js 5/28/2020 17:23", diff --git a/packages/TelegramClient-Core.package/TCCTeleClientFactory.class/instance/createClient..st b/packages/TelegramClient-Core.package/TCCTeleClientFactory.class/instance/createClient..st index c5b3fe9b0..b2b51866f 100644 --- a/packages/TelegramClient-Core.package/TCCTeleClientFactory.class/instance/createClient..st +++ b/packages/TelegramClient-Core.package/TCCTeleClientFactory.class/instance/createClient..st @@ -10,4 +10,4 @@ createClient: anOsName client setLogLevel: 3. "Log level is weird, 1 is fatal, 2 is critical, 3 is warning, 4 is default and debug, but 5-1024 are also fair game" - ^client \ No newline at end of file + ^ client \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCTeleClientFactory.class/methodProperties.json b/packages/TelegramClient-Core.package/TCCTeleClientFactory.class/methodProperties.json index 5a0891e10..1c28561f2 100644 --- a/packages/TelegramClient-Core.package/TCCTeleClientFactory.class/methodProperties.json +++ b/packages/TelegramClient-Core.package/TCCTeleClientFactory.class/methodProperties.json @@ -3,4 +3,4 @@ }, "instance" : { "createClient" : "js 5/28/2020 18:02", - "createClient:" : "N.S. 7/30/2020 17:32" } } + "createClient:" : "js 7/31/2020 21:37" } } diff --git a/packages/TelegramClient-Tests.package/TCTChatTests.class/instance/testOrderInsert.st b/packages/TelegramClient-Tests.package/TCTChatTests.class/instance/testOrderInsert.st index 453c9a9c6..95160de1c 100644 --- a/packages/TelegramClient-Tests.package/TCTChatTests.class/instance/testOrderInsert.st +++ b/packages/TelegramClient-Tests.package/TCTChatTests.class/instance/testOrderInsert.st @@ -5,4 +5,4 @@ testOrderInsert id: 4; order: 4). - self assert: (self chats first id == 4). \ No newline at end of file + self assert: (self chats first id = 4). \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTChatTests.class/instance/testOrderModify.st b/packages/TelegramClient-Tests.package/TCTChatTests.class/instance/testOrderModify.st index 440911d15..cc214de09 100644 --- a/packages/TelegramClient-Tests.package/TCTChatTests.class/instance/testOrderModify.st +++ b/packages/TelegramClient-Tests.package/TCTChatTests.class/instance/testOrderModify.st @@ -8,4 +8,4 @@ testOrderModify self chats notify. - self assert: (self chats first id == 1). \ No newline at end of file + self assert: (self chats first id = 1). \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTChatTests.class/methodProperties.json b/packages/TelegramClient-Tests.package/TCTChatTests.class/methodProperties.json index b1ae5643f..fadd3e3a9 100644 --- a/packages/TelegramClient-Tests.package/TCTChatTests.class/methodProperties.json +++ b/packages/TelegramClient-Tests.package/TCTChatTests.class/methodProperties.json @@ -5,5 +5,5 @@ "chats" : "LL 7/31/2020 15:25", "chats:" : "js 7/31/2020 21:31", "setUp" : "js 7/31/2020 21:31", - "testOrderInsert" : "js 7/31/2020 21:29", - "testOrderModify" : "js 7/31/2020 21:29" } } + "testOrderInsert" : "js 7/31/2020 22:44", + "testOrderModify" : "js 7/31/2020 22:44" } } diff --git a/packages/TelegramClient-Tests.package/TCTEventTest.class/README.md b/packages/TelegramClient-Tests.package/TCTEventTest.class/README.md new file mode 100644 index 000000000..d0aca19ba --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTEventTest.class/README.md @@ -0,0 +1 @@ +Tests the behavior of TCCEvent \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTEventTest.class/instance/testError.st b/packages/TelegramClient-Tests.package/TCTEventTest.class/instance/testError.st new file mode 100644 index 000000000..6366237a6 --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTEventTest.class/instance/testError.st @@ -0,0 +1,4 @@ +testing +testError + + self assert: (TCCEvent newFromTDLibEvent: (Dictionary newFrom: {'@type' -> 'error'. 'code' -> 400})) isError. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTEventTest.class/instance/testNoError.st b/packages/TelegramClient-Tests.package/TCTEventTest.class/instance/testNoError.st new file mode 100644 index 000000000..535282b46 --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTEventTest.class/instance/testNoError.st @@ -0,0 +1,6 @@ +testing +testNoError + + self assert: (TCCEvent newFromTDLibEvent: (Dictionary newFrom: {'@type' -> 'authentication'. 'code' -> 400})) isError not. + self assert: (TCCEvent newFromTDLibEvent: (Dictionary newFrom: {'@type' -> 'error'. 'code' -> 200})) isError not. + self assert: (TCCEvent newFromTDLibEvent: (Dictionary newFrom: {'@type' -> 'authentication'. 'code' -> 200})) isError not. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTEventTest.class/instance/testType.st b/packages/TelegramClient-Tests.package/TCTEventTest.class/instance/testType.st new file mode 100644 index 000000000..c6459c3c0 --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTEventTest.class/instance/testType.st @@ -0,0 +1,9 @@ +testing +testType + + | event | + + event := TCCEvent newFromTDLibEvent: (Dictionary newFrom: {'@type' -> 'authentication'. 'code' -> 200}). + + self assert: event type equals: 'authentication'. + self assert: (event includesKey: 'type') not. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTEventTest.class/methodProperties.json b/packages/TelegramClient-Tests.package/TCTEventTest.class/methodProperties.json new file mode 100644 index 000000000..08012abb0 --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTEventTest.class/methodProperties.json @@ -0,0 +1,7 @@ +{ + "class" : { + }, + "instance" : { + "testError" : "js 8/1/2020 12:30", + "testNoError" : "js 8/1/2020 12:35", + "testType" : "js 8/1/2020 13:36" } } diff --git a/packages/TelegramClient-Tests.package/TCTEventTest.class/properties.json b/packages/TelegramClient-Tests.package/TCTEventTest.class/properties.json new file mode 100644 index 000000000..39b284ec6 --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTEventTest.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "TelegramClient-Tests", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "js 8/1/2020 13:34", + "instvars" : [ + ], + "name" : "TCTEventTest", + "pools" : [ + ], + "super" : "TestCase", + "type" : "normal" } diff --git a/packages/TelegramClient-Tests.package/TCTLoggedInTests.class/instance/setUp.st b/packages/TelegramClient-Tests.package/TCTLoggedInTests.class/instance/setUp.st index d7f086b9c..d0774d8b9 100644 --- a/packages/TelegramClient-Tests.package/TCTLoggedInTests.class/instance/setUp.st +++ b/packages/TelegramClient-Tests.package/TCTLoggedInTests.class/instance/setUp.st @@ -4,5 +4,6 @@ setUp self timeout: 20. self core: TCTTestCore new. 1 seconds wait. - self core authHandler isAuthorizationStateReady ifFalse: [self core loginWithTestData. + self core authHandler isAuthorizationStateReady ifFalse: [ + self core loginWithTestData. 2 seconds wait]. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTLoggedInTests.class/methodProperties.json b/packages/TelegramClient-Tests.package/TCTLoggedInTests.class/methodProperties.json index f594517c9..38518d5d2 100644 --- a/packages/TelegramClient-Tests.package/TCTLoggedInTests.class/methodProperties.json +++ b/packages/TelegramClient-Tests.package/TCTLoggedInTests.class/methodProperties.json @@ -4,7 +4,7 @@ "instance" : { "core" : "r.s 7/15/2020 18:46", "core:" : "r.s 7/15/2020 18:46", - "setUp" : "r.s 7/16/2020 16:47", + "setUp" : "js 8/1/2020 12:51", "tearDown" : "r.s 7/16/2020 16:54", "testLogout" : "r.s 7/16/2020 16:54", "testMessageSending" : "r.s 7/16/2020 16:53" } } diff --git a/packages/TelegramClient-Tests.package/TCTRequestTest.class/README.md b/packages/TelegramClient-Tests.package/TCTRequestTest.class/README.md new file mode 100644 index 000000000..b26f0ff9a --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTRequestTest.class/README.md @@ -0,0 +1 @@ +Tests the behavior of TCCRequest \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTRequestTest.class/instance/request..st b/packages/TelegramClient-Tests.package/TCTRequestTest.class/instance/request..st new file mode 100644 index 000000000..a5c8b6fbe --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTRequestTest.class/instance/request..st @@ -0,0 +1,4 @@ +accessing +request: aRequest + + request := aRequest. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTRequestTest.class/instance/request.st b/packages/TelegramClient-Tests.package/TCTRequestTest.class/instance/request.st new file mode 100644 index 000000000..5222067ff --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTRequestTest.class/instance/request.st @@ -0,0 +1,4 @@ +accessing +request + + ^ request \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTRequestTest.class/instance/setUp.st b/packages/TelegramClient-Tests.package/TCTRequestTest.class/instance/setUp.st new file mode 100644 index 000000000..1f8b2f9c5 --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTRequestTest.class/instance/setUp.st @@ -0,0 +1,4 @@ +running +setUp + + self request: (TCCRequest newWithType: 'test' from: {'code' -> '0'. 'id' -> '10'}). \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTRequestTest.class/instance/testString.st b/packages/TelegramClient-Tests.package/TCTRequestTest.class/instance/testString.st new file mode 100644 index 000000000..0d3abc45d --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTRequestTest.class/instance/testString.st @@ -0,0 +1,7 @@ +testing +testString + + self assert: (self request asString includesSubstring: '"@type":"test"'). + self assert: (self request asString includesSubstring: '"code":"0"'). + self assert: (self request asString startsWith: '{'). + self assert: (self request asString endsWith: '}'). \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTRequestTest.class/instance/testType.st b/packages/TelegramClient-Tests.package/TCTRequestTest.class/instance/testType.st new file mode 100644 index 000000000..b22ddaf67 --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTRequestTest.class/instance/testType.st @@ -0,0 +1,4 @@ +testing +testType + + self assert: (self request at: '@type') equals: 'test'. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTRequestTest.class/methodProperties.json b/packages/TelegramClient-Tests.package/TCTRequestTest.class/methodProperties.json new file mode 100644 index 000000000..a1785290c --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTRequestTest.class/methodProperties.json @@ -0,0 +1,9 @@ +{ + "class" : { + }, + "instance" : { + "request" : "js 8/1/2020 12:09", + "request:" : "js 8/1/2020 12:10", + "setUp" : "js 8/1/2020 12:21", + "testString" : "js 8/1/2020 12:22", + "testType" : "js 8/1/2020 12:12" } } diff --git a/packages/TelegramClient-Tests.package/TCTRequestTest.class/properties.json b/packages/TelegramClient-Tests.package/TCTRequestTest.class/properties.json new file mode 100644 index 000000000..22bdffc99 --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTRequestTest.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "TelegramClient-Tests", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "js 8/1/2020 13:35", + "instvars" : [ + "request" ], + "name" : "TCTRequestTest", + "pools" : [ + ], + "super" : "TestCase", + "type" : "normal" } diff --git a/packages/TelegramClient-UI.package/TCUAuthentication.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUAuthentication.class/methodProperties.json index 47c2beb4a..f14fb0a87 100644 --- a/packages/TelegramClient-UI.package/TCUAuthentication.class/methodProperties.json +++ b/packages/TelegramClient-UI.package/TCUAuthentication.class/methodProperties.json @@ -32,7 +32,7 @@ "inputField:" : "js 5/31/2020 20:07", "instructionLabel" : "R.S 5/20/2020 13:52", "instructionLabel:" : "js 5/28/2020 17:51", - "logInCompleted" : "js 6/13/2020 18:45", + "logInCompleted" : "js 8/1/2020 12:08", "showFirstStep" : "js 7/31/2020 15:19", "showLoadingMessage" : "js 6/13/2020 18:45", "showSecondStep" : "rs 7/6/2020 17:29", diff --git a/packages/TelegramClient-UI.package/TCUChatsList.class/instance/createChatListItem..st b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/createChatListItem..st new file mode 100644 index 000000000..571cb7a78 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/createChatListItem..st @@ -0,0 +1,10 @@ +accessing +createChatListItem: aChat + + | item | + + item := TCUChatListItem newWithChat: aChat width: self width. + (aChat = self selectedChat) ifTrue: [item select]. + item on: #mouseDown send: #chatItemClicked:event:from: to: self withValue: item. + + ^ item \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatsList.class/instance/redrawItems.st b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/redrawItems.st index 478d3ee6e..c25793ee9 100644 --- a/packages/TelegramClient-UI.package/TCUChatsList.class/instance/redrawItems.st +++ b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/redrawItems.st @@ -1,13 +1,10 @@ accessing redrawItems - | item | self clearItems. "reversed is temporarly needed while chats are not in right order" self items: (self chats reversed collect: [:aChat | - item := TCUChatListItem newWithChat: aChat width: self width. - (aChat = self selectedChat) ifTrue: [item select]. - item on: #mouseDown send: #chatItemClicked:event:from: to: self withValue: item]). + self createChatListItem: aChat]). self items do: [:anItem | self addMorph: anItem]. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatsList.class/instance/setToTop.st b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/setToTop.st deleted file mode 100644 index 81a377900..000000000 --- a/packages/TelegramClient-UI.package/TCUChatsList.class/instance/setToTop.st +++ /dev/null @@ -1,4 +0,0 @@ -accessing -setToTop - - self position: (self position x)@(self owner position y + self owner defaultHeaderHeight). \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatsList.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUChatsList.class/methodProperties.json index 2b2695bff..0e1726bda 100644 --- a/packages/TelegramClient-UI.package/TCUChatsList.class/methodProperties.json +++ b/packages/TelegramClient-UI.package/TCUChatsList.class/methodProperties.json @@ -6,6 +6,7 @@ "chats" : "rs 6/17/2020 22:38", "chats:" : "f.w. 7/15/2020 23:57", "clearItems" : "rs 6/17/2020 22:39", + "createChatListItem:" : "js 7/31/2020 23:05", "defaultWidth" : "R.S 6/1/2020 14:24", "handleMouseWheel:" : "r.s 7/15/2020 15:09", "initialize" : "f.w. 7/12/2020 04:29", @@ -15,9 +16,8 @@ "maxHeight" : "f.w. 7/12/2020 00:10", "maxHeight:" : "f.w. 7/12/2020 04:56", "openNewChat:" : "f.w. 7/16/2020 00:02", - "redrawItems" : "js 7/31/2020 18:48", + "redrawItems" : "js 7/31/2020 23:06", "scrollDown" : "f.w. 7/12/2020 04:14", "scrollUp" : "f.w. 7/12/2020 22:06", "selectedChat" : "rs 6/13/2020 08:51", - "selectedChat:" : "rs 6/17/2020 22:25", - "setToTop" : "f.w. 7/12/2020 22:15" } } + "selectedChat:" : "rs 6/17/2020 22:25" } } diff --git a/packages/TelegramClient-UI.package/TCUMain.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUMain.class/methodProperties.json index c7a4e86ed..a3777aa36 100644 --- a/packages/TelegramClient-UI.package/TCUMain.class/methodProperties.json +++ b/packages/TelegramClient-UI.package/TCUMain.class/methodProperties.json @@ -29,4 +29,4 @@ "newChatSelected:" : "f.w. 7/16/2020 00:02", "newMessageReceived:" : "j 7/16/2020 13:26", "sendMessage:" : "rs 6/17/2020 21:19", - "subscribeChatsList" : "f.w. 7/15/2020 23:55" } } + "subscribeChatsList" : "js 7/31/2020 23:09" } } diff --git a/packages/TelegramClient-UI.package/TCUTelegram.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUTelegram.class/methodProperties.json index aaac1a839..4d7eaa81a 100644 --- a/packages/TelegramClient-UI.package/TCUTelegram.class/methodProperties.json +++ b/packages/TelegramClient-UI.package/TCUTelegram.class/methodProperties.json @@ -9,4 +9,4 @@ "core:" : "js 5/31/2020 20:04", "currentWindow" : "r.s 7/13/2020 17:11", "currentWindow:" : "r.s 7/13/2020 17:11", - "initialize" : "r.s 7/13/2020 17:11" } } + "initialize" : "js 7/31/2020 23:22" } } From ba83666f5f4231cd93da1e8b2a3fff528ed63b3a Mon Sep 17 00:00:00 2001 From: Jonas Schmidt <43679965+schmidtjonas@users.noreply.github.com> Date: Sat, 1 Aug 2020 19:02:38 +0200 Subject: [PATCH 56/81] Added scrolling and massive refactoring (#259) * message loading fix and message scrolling wip * added dynamic message loading on scrolling and fixed double message load bug * first try to merge with develop with scroll bug wip * fixed bug with develop merge, unclean code wip * moved blocked to chat * working now * message creation * wip refactoring * added nullmessage and giant refactoring * fixed linter * removed magic number Co-authored-by: Frederik Wollny --- .github/workflows/main.yml | 6 ++--- .../TCCChat.class/instance/addNewMessage..st | 2 +- .../defaultNumberOfRequestedMessages.st | 4 ++++ .../instance/ifWaitingForUpdate..st | 6 +++++ .../TCCChat.class/instance/initialize.st | 5 +++- .../instance/numberOfMessages.st | 4 ++++ .../instance/numberOfRequestedMessages..st | 4 ++++ .../instance/numberOfRequestedMessages.st | 4 ++++ .../instance/requestMessages..st | 4 ++++ .../instance/stillRequestedMessages.st | 4 ++++ .../instance/waitingForUpdate..st | 4 ++++ .../instance/waitingForUpdate.st | 4 ++++ .../TCCChat.class/methodProperties.json | 15 +++++++++--- .../TCCChat.class/properties.json | 4 +++- .../instance/addNewMessage..st | 10 +++----- .../instance/chatHistoryReceived..st | 23 ++++++++----------- .../instance/defaultMessageLimit.st | 4 ++++ .../instance/getChatHistoryFrom.with.and..st | 11 --------- .../getChatHistoryFrom.with.limit..st | 16 +++++++++++++ .../instance/messageLimit..st | 4 ---- .../instance/messageLimit.st | 4 ---- .../instance/remainingMessages..st | 4 ++++ .../instance/remainingMessages.st | 4 ++++ .../methodProperties.json | 11 +++++---- .../TCCChatsHandler.class/properties.json | 2 +- .../instance/getChatHistoryFrom..st | 14 ++++------- .../instance/initializeHandlers.st | 3 +-- .../TCCCore.class/methodProperties.json | 4 ++-- .../class/newFromMessageEvent..st | 10 ++++++++ .../TCCMessage.class/instance/id..st | 4 ++++ .../TCCMessage.class/instance/id.st | 4 ++++ .../TCCMessage.class/instance/initialize.st | 6 +++++ .../TCCMessage.class/instance/messageId..st | 4 ---- .../TCCMessage.class/instance/messageId.st | 4 ---- .../TCCMessage.class/instance/senderID..st | 4 ++++ .../TCCMessage.class/instance/senderID.st | 4 ++++ .../TCCMessage.class/instance/senderId..st | 4 ---- .../TCCMessage.class/instance/senderId.st | 4 ---- .../TCCMessage.class/instance/senderName..st | 4 ---- .../TCCMessage.class/instance/senderName.st | 4 ---- .../TCCMessage.class/methodProperties.json | 13 +++++------ .../TCCMessage.class/properties.json | 5 ++-- .../TCCNullMessage.class/README.md | 1 + .../TCCNullMessage.class/instance/id.st | 4 ++++ .../methodProperties.json | 5 ++++ .../TCCNullMessage.class/properties.json | 14 +++++++++++ .../instance/addMessages.st | 4 ++++ .../instance/displayChat..st | 5 ++-- .../instance/handleMouseWheel..st | 5 ++++ .../instance/lowestVisibleMessage..st | 4 ++++ .../instance/lowestVisibleMessage.st | 4 ++++ .../instance/redrawMessages.st | 7 ------ .../instance/scrollDown.st | 5 ++++ .../instance/scrollUp.st | 4 ++++ .../methodProperties.json | 9 ++++++-- .../TCUChatMessageList.class/properties.json | 3 ++- .../instance/addMessageWindow.st | 1 + .../instance/newChatSelected..st | 2 +- .../instance/showChatMessagesFrom..st | 14 +++++++++++ .../TCUChatWindow.class/methodProperties.json | 5 ++-- .../TCUChatWindow.class/properties.json | 3 ++- .../instance/newMessageReceived..st | 2 +- .../TCUMain.class/methodProperties.json | 2 +- .../class/newFromTCCMessage..st | 2 +- .../TCUMessage.class/methodProperties.json | 2 +- 65 files changed, 242 insertions(+), 123 deletions(-) create mode 100644 packages/TelegramClient-Core.package/TCCChat.class/instance/defaultNumberOfRequestedMessages.st create mode 100644 packages/TelegramClient-Core.package/TCCChat.class/instance/ifWaitingForUpdate..st create mode 100644 packages/TelegramClient-Core.package/TCCChat.class/instance/numberOfMessages.st create mode 100644 packages/TelegramClient-Core.package/TCCChat.class/instance/numberOfRequestedMessages..st create mode 100644 packages/TelegramClient-Core.package/TCCChat.class/instance/numberOfRequestedMessages.st create mode 100644 packages/TelegramClient-Core.package/TCCChat.class/instance/requestMessages..st create mode 100644 packages/TelegramClient-Core.package/TCCChat.class/instance/stillRequestedMessages.st create mode 100644 packages/TelegramClient-Core.package/TCCChat.class/instance/waitingForUpdate..st create mode 100644 packages/TelegramClient-Core.package/TCCChat.class/instance/waitingForUpdate.st create mode 100644 packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/defaultMessageLimit.st delete mode 100644 packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/getChatHistoryFrom.with.and..st create mode 100644 packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/getChatHistoryFrom.with.limit..st delete mode 100644 packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/messageLimit..st delete mode 100644 packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/messageLimit.st create mode 100644 packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/remainingMessages..st create mode 100644 packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/remainingMessages.st create mode 100644 packages/TelegramClient-Core.package/TCCMessage.class/class/newFromMessageEvent..st create mode 100644 packages/TelegramClient-Core.package/TCCMessage.class/instance/id..st create mode 100644 packages/TelegramClient-Core.package/TCCMessage.class/instance/id.st create mode 100644 packages/TelegramClient-Core.package/TCCMessage.class/instance/initialize.st delete mode 100644 packages/TelegramClient-Core.package/TCCMessage.class/instance/messageId..st delete mode 100644 packages/TelegramClient-Core.package/TCCMessage.class/instance/messageId.st create mode 100644 packages/TelegramClient-Core.package/TCCMessage.class/instance/senderID..st create mode 100644 packages/TelegramClient-Core.package/TCCMessage.class/instance/senderID.st delete mode 100644 packages/TelegramClient-Core.package/TCCMessage.class/instance/senderId..st delete mode 100644 packages/TelegramClient-Core.package/TCCMessage.class/instance/senderId.st delete mode 100644 packages/TelegramClient-Core.package/TCCMessage.class/instance/senderName..st delete mode 100644 packages/TelegramClient-Core.package/TCCMessage.class/instance/senderName.st create mode 100644 packages/TelegramClient-Core.package/TCCNullMessage.class/README.md create mode 100644 packages/TelegramClient-Core.package/TCCNullMessage.class/instance/id.st create mode 100644 packages/TelegramClient-Core.package/TCCNullMessage.class/methodProperties.json create mode 100644 packages/TelegramClient-Core.package/TCCNullMessage.class/properties.json create mode 100644 packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/addMessages.st create mode 100644 packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/handleMouseWheel..st create mode 100644 packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/lowestVisibleMessage..st create mode 100644 packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/lowestVisibleMessage.st delete mode 100644 packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/redrawMessages.st create mode 100644 packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/scrollDown.st create mode 100644 packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/scrollUp.st create mode 100644 packages/TelegramClient-UI.package/TCUChatWindow.class/instance/showChatMessagesFrom..st diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 81dfb2e38..c912c21ea 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -1,3 +1,4 @@ + name: CI on: @@ -15,11 +16,8 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - # Select platform(s) os: [ ubuntu-latest ] - # Select compatible Smalltalk image(s) - # currently not running on Squeak64-trunk - smalltalk: [ Squeak64-5.3, Squeak64-5.2 ] + smalltalk: [ Squeak64-5.2 ] name: ${{ matrix.smalltalk }} on ${{ matrix.os }} steps: - uses: actions/checkout@v2 diff --git a/packages/TelegramClient-Core.package/TCCChat.class/instance/addNewMessage..st b/packages/TelegramClient-Core.package/TCCChat.class/instance/addNewMessage..st index ed8bd3464..f02e92a10 100644 --- a/packages/TelegramClient-Core.package/TCCChat.class/instance/addNewMessage..st +++ b/packages/TelegramClient-Core.package/TCCChat.class/instance/addNewMessage..st @@ -1,5 +1,5 @@ accessing addNewMessage: aMessage - self messages addFirst: aMessage. + self messages add: aMessage afterIndex: 1. self triggerEvent: #newMessage with: aMessage. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCChat.class/instance/defaultNumberOfRequestedMessages.st b/packages/TelegramClient-Core.package/TCCChat.class/instance/defaultNumberOfRequestedMessages.st new file mode 100644 index 000000000..b61651516 --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCChat.class/instance/defaultNumberOfRequestedMessages.st @@ -0,0 +1,4 @@ +default values +defaultNumberOfRequestedMessages + + ^ 20 \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCChat.class/instance/ifWaitingForUpdate..st b/packages/TelegramClient-Core.package/TCCChat.class/instance/ifWaitingForUpdate..st new file mode 100644 index 000000000..6df011ef0 --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCChat.class/instance/ifWaitingForUpdate..st @@ -0,0 +1,6 @@ +accessing +ifWaitingForUpdate: aBlock + + self waitingForUpdate ifFalse: [ + self waitingForUpdate: true. + aBlock value]. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCChat.class/instance/initialize.st b/packages/TelegramClient-Core.package/TCCChat.class/instance/initialize.st index 27cbab7e2..e74ae6c2a 100644 --- a/packages/TelegramClient-Core.package/TCCChat.class/instance/initialize.st +++ b/packages/TelegramClient-Core.package/TCCChat.class/instance/initialize.st @@ -1,4 +1,7 @@ accessing initialize - self messages: OrderedCollection new. + self + messages: (OrderedCollection newFrom: {TCCNullMessage new}); + waitingForUpdate: false; + numberOfRequestedMessages: self defaultNumberOfRequestedMessages. diff --git a/packages/TelegramClient-Core.package/TCCChat.class/instance/numberOfMessages.st b/packages/TelegramClient-Core.package/TCCChat.class/instance/numberOfMessages.st new file mode 100644 index 000000000..3100838b5 --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCChat.class/instance/numberOfMessages.st @@ -0,0 +1,4 @@ +accessing +numberOfMessages + + ^ self messages size - 1 \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCChat.class/instance/numberOfRequestedMessages..st b/packages/TelegramClient-Core.package/TCCChat.class/instance/numberOfRequestedMessages..st new file mode 100644 index 000000000..5c9f8a4f8 --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCChat.class/instance/numberOfRequestedMessages..st @@ -0,0 +1,4 @@ +accessing +numberOfRequestedMessages: aNumber + + numberOfRequestedMessages := aNumber. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCChat.class/instance/numberOfRequestedMessages.st b/packages/TelegramClient-Core.package/TCCChat.class/instance/numberOfRequestedMessages.st new file mode 100644 index 000000000..240cdd8c0 --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCChat.class/instance/numberOfRequestedMessages.st @@ -0,0 +1,4 @@ +accessing +numberOfRequestedMessages + + ^ numberOfRequestedMessages \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCChat.class/instance/requestMessages..st b/packages/TelegramClient-Core.package/TCCChat.class/instance/requestMessages..st new file mode 100644 index 000000000..5d9693821 --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCChat.class/instance/requestMessages..st @@ -0,0 +1,4 @@ +accessing +requestMessages: aLimit + + self numberOfRequestedMessages: self numberOfMessages + aLimit \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCChat.class/instance/stillRequestedMessages.st b/packages/TelegramClient-Core.package/TCCChat.class/instance/stillRequestedMessages.st new file mode 100644 index 000000000..7f0da8be6 --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCChat.class/instance/stillRequestedMessages.st @@ -0,0 +1,4 @@ +accessing +stillRequestedMessages + + ^ self numberOfRequestedMessages - self numberOfMessages \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCChat.class/instance/waitingForUpdate..st b/packages/TelegramClient-Core.package/TCCChat.class/instance/waitingForUpdate..st new file mode 100644 index 000000000..84ce6d485 --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCChat.class/instance/waitingForUpdate..st @@ -0,0 +1,4 @@ +accessing +waitingForUpdate: aBoolean + + waitingForUpdate := aBoolean. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCChat.class/instance/waitingForUpdate.st b/packages/TelegramClient-Core.package/TCCChat.class/instance/waitingForUpdate.st new file mode 100644 index 000000000..b1623ec82 --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCChat.class/instance/waitingForUpdate.st @@ -0,0 +1,4 @@ +accessing +waitingForUpdate + + ^ waitingForUpdate \ 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 14a72cb42..4646dbe3e 100644 --- a/packages/TelegramClient-Core.package/TCCChat.class/methodProperties.json +++ b/packages/TelegramClient-Core.package/TCCChat.class/methodProperties.json @@ -3,17 +3,26 @@ }, "instance" : { "addMessage:" : "js 7/31/2020 16:42", - "addNewMessage:" : "js 7/31/2020 17:22", + "addNewMessage:" : "js 8/1/2020 17:59", + "defaultNumberOfRequestedMessages" : "js 8/1/2020 18:52", "id" : "rs 6/7/2020 22:20", "id:" : "rs 6/7/2020 22:20", - "initialize" : "rs 6/29/2020 17:20", + "ifWaitingForUpdate:" : "js 8/1/2020 17:07", + "initialize" : "js 8/1/2020 18:51", "lastMessage" : "rs 6/19/2020 17:33", "lastMessage:" : "rs 6/19/2020 17:33", "messages" : "R.S 6/1/2020 15:37", "messages:" : "R.S 6/1/2020 15:37", + "numberOfMessages" : "js 8/1/2020 18:04", + "numberOfRequestedMessages" : "js 8/1/2020 17:43", + "numberOfRequestedMessages:" : "js 8/1/2020 17:43", "order" : "js 6/13/2020 18:09", "order:" : "js 6/13/2020 19:11", + "requestMessages:" : "js 8/1/2020 18:05", + "stillRequestedMessages" : "js 8/1/2020 18:05", "title" : "rs 6/7/2020 22:24", "title:" : "rs 6/7/2020 22:24", "userId" : "R.S 6/1/2020 15:37", - "userId:" : "R.S 6/1/2020 15:37" } } + "userId:" : "R.S 6/1/2020 15:37", + "waitingForUpdate" : "js 8/1/2020 16:59", + "waitingForUpdate:" : "js 8/1/2020 17:00" } } diff --git a/packages/TelegramClient-Core.package/TCCChat.class/properties.json b/packages/TelegramClient-Core.package/TCCChat.class/properties.json index 886545a4d..81cc6204c 100644 --- a/packages/TelegramClient-Core.package/TCCChat.class/properties.json +++ b/packages/TelegramClient-Core.package/TCCChat.class/properties.json @@ -11,7 +11,9 @@ "order", "id", "title", - "lastMessage" ], + "lastMessage", + "waitingForUpdate", + "numberOfRequestedMessages" ], "name" : "TCCChat", "pools" : [ ], diff --git a/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/addNewMessage..st b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/addNewMessage..st index 8352f998b..fefd85ed7 100644 --- a/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/addNewMessage..st +++ b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/addNewMessage..st @@ -2,12 +2,8 @@ events addNewMessage: aMessage | message | - - message := (TCCMessage new - message: (((aMessage at: 'content') at: 'text') at: 'text'); - senderId: ((aMessage at: 'sender_user_id')); - chatID: (aMessage at: 'chat_id'); - messageId: (aMessage at: 'id')). - + + message := TCCMessage newFromMessageEvent: aMessage. + (self app chats getChat: message chatID) addNewMessage: message. self app triggerEvent: #newMessageReceived with: message. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/chatHistoryReceived..st b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/chatHistoryReceived..st index bb02be73e..cdb9a2bfa 100644 --- a/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/chatHistoryReceived..st +++ b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/chatHistoryReceived..st @@ -1,21 +1,18 @@ events chatHistoryReceived: aChatHistory - | chat chatMessageNumber oldestMessageId chatID | + | chat chatID | (aChatHistory at: 'messages') ifNotEmpty: [ - chatID := ((aChatHistory at: 'messages') first at: 'chat_id'). + chatID := (aChatHistory at: 'messages') first at: 'chat_id'. chat := self app chats getChat: chatID. - (aChatHistory at: 'messages') do: [:message | - ((message at: 'content') at: '@type') = 'messageText' ifTrue: [ - chat addMessage: (TCCMessage new - message: (((message at: 'content') at: 'text') at: 'text'); - chatID: chatID; - senderId: (message at: 'sender_user_id'); - messageId: (message at: 'id'))]]. + (aChatHistory at: 'messages') do: [:message | chat addMessage: (TCCMessage newFromMessageEvent: message)]. - chat messages ifNotEmpty: [ - oldestMessageId := chat messages last messageId. - chatMessageNumber := self messageLimit - chat messages size. - chatMessageNumber > 0 ifTrue: [self getChatHistoryFrom: chatID with: oldestMessageId and: chatMessageNumber]]]. \ No newline at end of file + chat waitingForUpdate: false. + + chat stillRequestedMessages > 0 + ifTrue: [self + getChatHistoryFrom: chatID + with: chat messages last id + limit: chat stillRequestedMessages]]. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/defaultMessageLimit.st b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/defaultMessageLimit.st new file mode 100644 index 000000000..5b8d6bbea --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/defaultMessageLimit.st @@ -0,0 +1,4 @@ +default values +defaultMessageLimit + + ^ 20 \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/getChatHistoryFrom.with.and..st b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/getChatHistoryFrom.with.and..st deleted file mode 100644 index 92a5836ce..000000000 --- a/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/getChatHistoryFrom.with.and..st +++ /dev/null @@ -1,11 +0,0 @@ -accessing -getChatHistoryFrom: aChatID with: aMessageId and: aLimit - - self client send: (TCCRequest - newWithType: 'getChatHistory' - from: { - 'chat_id' -> aChatID. - 'from_message_id' -> aMessageId. - 'offset' -> 0. - 'limit' -> aLimit. - 'only_local' -> false}). \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/getChatHistoryFrom.with.limit..st b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/getChatHistoryFrom.with.limit..st new file mode 100644 index 000000000..bfc9bb8df --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/getChatHistoryFrom.with.limit..st @@ -0,0 +1,16 @@ +accessing +getChatHistoryFrom: aChatID with: aMessageId limit: aLimit + + | chat | + + chat := self app chats getChat: aChatID. + chat ifWaitingForUpdate: [ + self client send: (TCCRequest + newWithType: 'getChatHistory' + from: {'chat_id' -> aChatID. + 'from_message_id' -> aMessageId. + 'offset' -> 0. + 'limit' -> aLimit. + 'only_local' -> false}). + + chat requestMessages: aLimit]. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/messageLimit..st b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/messageLimit..st deleted file mode 100644 index a8e426afa..000000000 --- a/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/messageLimit..st +++ /dev/null @@ -1,4 +0,0 @@ -accessing -messageLimit: aNumber - - messageLimit := aNumber. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/messageLimit.st b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/messageLimit.st deleted file mode 100644 index b0d3329fe..000000000 --- a/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/messageLimit.st +++ /dev/null @@ -1,4 +0,0 @@ -accessing -messageLimit - - ^ messageLimit \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/remainingMessages..st b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/remainingMessages..st new file mode 100644 index 000000000..00cd3eaa1 --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/remainingMessages..st @@ -0,0 +1,4 @@ +accessing +remainingMessages: aNumber + + remainingMessages := aNumber. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/remainingMessages.st b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/remainingMessages.st new file mode 100644 index 000000000..2174640b7 --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/remainingMessages.st @@ -0,0 +1,4 @@ +accessing +remainingMessages + + ^ remainingMessages \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCChatsHandler.class/methodProperties.json b/packages/TelegramClient-Core.package/TCCChatsHandler.class/methodProperties.json index 28768b1c3..996ba6871 100644 --- a/packages/TelegramClient-Core.package/TCCChatsHandler.class/methodProperties.json +++ b/packages/TelegramClient-Core.package/TCCChatsHandler.class/methodProperties.json @@ -3,17 +3,18 @@ }, "instance" : { "addChat:" : "js 8/1/2020 12:07", - "addNewMessage:" : "js 7/31/2020 17:22", + "addNewMessage:" : "js 8/1/2020 17:35", "app" : "js 6/1/2020 14:44", "app:" : "js 6/1/2020 14:45", - "chatHistoryReceived:" : "js 7/31/2020 17:21", + "chatHistoryReceived:" : "js 8/1/2020 18:19", "client" : "js 6/1/2020 14:44", - "getChatHistoryFrom:with:and:" : "js 7/31/2020 14:26", + "defaultMessageLimit" : "js 8/1/2020 18:24", + "getChatHistoryFrom:with:limit:" : "js 8/1/2020 18:04", "getChats" : "js 7/31/2020 22:50", "handleNewMessage:" : "js 7/31/2020 14:54", - "messageLimit" : "js 7/31/2020 14:52", - "messageLimit:" : "j 7/16/2020 12:03", "openNewChat:" : "j 7/16/2020 12:04", + "remainingMessages" : "js 8/1/2020 16:49", + "remainingMessages:" : "js 8/1/2020 16:50", "searchChat:" : "f.w. 7/15/2020 22:53", "sendMessage:to:" : "js 7/31/2020 14:39", "updateChatOrder:" : "js 8/1/2020 12:07", diff --git a/packages/TelegramClient-Core.package/TCCChatsHandler.class/properties.json b/packages/TelegramClient-Core.package/TCCChatsHandler.class/properties.json index 5b8009c99..72b18d64e 100644 --- a/packages/TelegramClient-Core.package/TCCChatsHandler.class/properties.json +++ b/packages/TelegramClient-Core.package/TCCChatsHandler.class/properties.json @@ -7,7 +7,7 @@ "commentStamp" : "js 6/13/2020 16:26", "instvars" : [ "app", - "messageLimit" ], + "remainingMessages" ], "name" : "TCCChatsHandler", "pools" : [ ], diff --git a/packages/TelegramClient-Core.package/TCCCore.class/instance/getChatHistoryFrom..st b/packages/TelegramClient-Core.package/TCCCore.class/instance/getChatHistoryFrom..st index 75ccb58af..9e6f18108 100644 --- a/packages/TelegramClient-Core.package/TCCCore.class/instance/getChatHistoryFrom..st +++ b/packages/TelegramClient-Core.package/TCCCore.class/instance/getChatHistoryFrom..st @@ -1,13 +1,7 @@ accessing getChatHistoryFrom: aChatID - | currentMessages messageId chatMessages | - - chatMessages := (self chats getChat: aChatID) messages. - chatMessages isEmpty - ifTrue: [messageId := 0] - ifFalse: [messageId := chatMessages last messageId]. - - currentMessages := (self chatsHandler messageLimit) - (chatMessages size). - currentMessages > 0 ifTrue: [ - self chatsHandler getChatHistoryFrom: aChatID with: messageId and: currentMessages]. \ No newline at end of file + self chatsHandler + getChatHistoryFrom: aChatID + with: (self chats getChat: aChatID) messages last id + limit: self chatsHandler defaultMessageLimit. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCCore.class/instance/initializeHandlers.st b/packages/TelegramClient-Core.package/TCCCore.class/instance/initializeHandlers.st index e0328877e..3979eca30 100644 --- a/packages/TelegramClient-Core.package/TCCCore.class/instance/initializeHandlers.st +++ b/packages/TelegramClient-Core.package/TCCCore.class/instance/initializeHandlers.st @@ -5,5 +5,4 @@ initializeHandlers authHandler: (TCCAuthHandler new app: self); chatsHandler: (TCCChatsHandler new - app: self; - messageLimit: 15). \ No newline at end of file + app: self). \ 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 60212c5d0..db802aa8b 100644 --- a/packages/TelegramClient-Core.package/TCCCore.class/methodProperties.json +++ b/packages/TelegramClient-Core.package/TCCCore.class/methodProperties.json @@ -12,12 +12,12 @@ "checkAuthenticationCode:" : "js 5/31/2020 20:10", "client" : "R.S 5/20/2020 16:08", "client:" : "js 6/13/2020 19:10", - "getChatHistoryFrom:" : "j 7/16/2020 12:24", + "getChatHistoryFrom:" : "js 8/1/2020 18:19", "getOwnProfile" : "N.S. 7/31/2020 14:22", "handleEvent:" : "js 7/31/2020 22:34", "initialize" : "rs 7/5/2020 15:12", "initializeClient" : "js 6/13/2020 18:20", - "initializeHandlers" : "j 7/16/2020 11:42", + "initializeHandlers" : "js 8/1/2020 18:09", "isClientAlive" : "js 5/28/2020 17:18", "loggedInUserID" : "rs 7/5/2020 14:48", "loggedInUserID:" : "rs 7/5/2020 14:48", diff --git a/packages/TelegramClient-Core.package/TCCMessage.class/class/newFromMessageEvent..st b/packages/TelegramClient-Core.package/TCCMessage.class/class/newFromMessageEvent..st new file mode 100644 index 000000000..a2111f91a --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCMessage.class/class/newFromMessageEvent..st @@ -0,0 +1,10 @@ +as yet unclassified +newFromMessageEvent: aMessageEvent + + ^ self new + message: (((aMessageEvent at: 'content') at: '@type') = 'messageText' + ifTrue: [((aMessageEvent at: 'content') at: 'text') at: 'text'] + ifFalse: ['message type not supported yet']); + chatID: (aMessageEvent at: 'chat_id'); + senderID: (aMessageEvent at: 'sender_user_id'); + id: (aMessageEvent at: 'id') \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCMessage.class/instance/id..st b/packages/TelegramClient-Core.package/TCCMessage.class/instance/id..st new file mode 100644 index 000000000..7a9230e8c --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCMessage.class/instance/id..st @@ -0,0 +1,4 @@ +accessing +id: aNumber + + id := aNumber. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCMessage.class/instance/id.st b/packages/TelegramClient-Core.package/TCCMessage.class/instance/id.st new file mode 100644 index 000000000..44798f6fa --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCMessage.class/instance/id.st @@ -0,0 +1,4 @@ +accessing +id + + ^ id \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCMessage.class/instance/initialize.st b/packages/TelegramClient-Core.package/TCCMessage.class/instance/initialize.st new file mode 100644 index 000000000..4ff3b2038 --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCMessage.class/instance/initialize.st @@ -0,0 +1,6 @@ +accessing +initialize + + super initialize. + + self message: ''. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCMessage.class/instance/messageId..st b/packages/TelegramClient-Core.package/TCCMessage.class/instance/messageId..st deleted file mode 100644 index 037ef004a..000000000 --- a/packages/TelegramClient-Core.package/TCCMessage.class/instance/messageId..st +++ /dev/null @@ -1,4 +0,0 @@ -accessing -messageId: aMessageId - - messageId := aMessageId. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCMessage.class/instance/messageId.st b/packages/TelegramClient-Core.package/TCCMessage.class/instance/messageId.st deleted file mode 100644 index ebe1f169a..000000000 --- a/packages/TelegramClient-Core.package/TCCMessage.class/instance/messageId.st +++ /dev/null @@ -1,4 +0,0 @@ -accessing -messageId - - ^ messageId \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCMessage.class/instance/senderID..st b/packages/TelegramClient-Core.package/TCCMessage.class/instance/senderID..st new file mode 100644 index 000000000..50102b91c --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCMessage.class/instance/senderID..st @@ -0,0 +1,4 @@ +accessing +senderID: aNumber + + senderID := aNumber \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCMessage.class/instance/senderID.st b/packages/TelegramClient-Core.package/TCCMessage.class/instance/senderID.st new file mode 100644 index 000000000..8c0d6da28 --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCMessage.class/instance/senderID.st @@ -0,0 +1,4 @@ +accessing +senderID + + ^ senderID \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCMessage.class/instance/senderId..st b/packages/TelegramClient-Core.package/TCCMessage.class/instance/senderId..st deleted file mode 100644 index 29300a926..000000000 --- a/packages/TelegramClient-Core.package/TCCMessage.class/instance/senderId..st +++ /dev/null @@ -1,4 +0,0 @@ -accessing -senderId: aNumber - - senderId := aNumber \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCMessage.class/instance/senderId.st b/packages/TelegramClient-Core.package/TCCMessage.class/instance/senderId.st deleted file mode 100644 index 4d3cb47a0..000000000 --- a/packages/TelegramClient-Core.package/TCCMessage.class/instance/senderId.st +++ /dev/null @@ -1,4 +0,0 @@ -accessing -senderId - - ^ senderId \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCMessage.class/instance/senderName..st b/packages/TelegramClient-Core.package/TCCMessage.class/instance/senderName..st deleted file mode 100644 index d49519986..000000000 --- a/packages/TelegramClient-Core.package/TCCMessage.class/instance/senderName..st +++ /dev/null @@ -1,4 +0,0 @@ -accessing -senderName: aString - - senderName := aString \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCMessage.class/instance/senderName.st b/packages/TelegramClient-Core.package/TCCMessage.class/instance/senderName.st deleted file mode 100644 index 5834b8d7b..000000000 --- a/packages/TelegramClient-Core.package/TCCMessage.class/instance/senderName.st +++ /dev/null @@ -1,4 +0,0 @@ -accessing -senderName - - ^ senderName \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCMessage.class/methodProperties.json b/packages/TelegramClient-Core.package/TCCMessage.class/methodProperties.json index b6438d023..e69bb2c44 100644 --- a/packages/TelegramClient-Core.package/TCCMessage.class/methodProperties.json +++ b/packages/TelegramClient-Core.package/TCCMessage.class/methodProperties.json @@ -1,14 +1,13 @@ { "class" : { - }, + "newFromMessageEvent:" : "js 8/1/2020 18:20" }, "instance" : { "chatID" : "js 7/31/2020 15:14", "chatID:" : "j 7/16/2020 12:03", + "id" : "js 8/1/2020 18:20", + "id:" : "js 8/1/2020 18:20", + "initialize" : "js 8/1/2020 18:18", "message" : "rs 6/29/2020 17:13", "message:" : "rs 6/29/2020 17:13", - "messageId" : "js 7/31/2020 15:14", - "messageId:" : "f.w. 6/30/2020 15:18", - "senderId" : "rs 6/29/2020 17:13", - "senderId:" : "rs 6/29/2020 17:13", - "senderName" : "rs 6/29/2020 17:13", - "senderName:" : "rs 6/29/2020 17:13" } } + "senderID" : "js 8/1/2020 18:21", + "senderID:" : "js 8/1/2020 18:21" } } diff --git a/packages/TelegramClient-Core.package/TCCMessage.class/properties.json b/packages/TelegramClient-Core.package/TCCMessage.class/properties.json index 442bbccb9..3501d486a 100644 --- a/packages/TelegramClient-Core.package/TCCMessage.class/properties.json +++ b/packages/TelegramClient-Core.package/TCCMessage.class/properties.json @@ -7,10 +7,9 @@ "commentStamp" : "f.w. 6/29/2020 17:05", "instvars" : [ "message", - "senderId", - "senderName", "chatID", - "messageId" ], + "id", + "senderID" ], "name" : "TCCMessage", "pools" : [ ], diff --git a/packages/TelegramClient-Core.package/TCCNullMessage.class/README.md b/packages/TelegramClient-Core.package/TCCNullMessage.class/README.md new file mode 100644 index 000000000..023baedb3 --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCNullMessage.class/README.md @@ -0,0 +1 @@ +a message, that is always the lowest message in a chat \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCNullMessage.class/instance/id.st b/packages/TelegramClient-Core.package/TCCNullMessage.class/instance/id.st new file mode 100644 index 000000000..51f3c8d6b --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCNullMessage.class/instance/id.st @@ -0,0 +1,4 @@ +accessing +id + + ^ 0 \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCNullMessage.class/methodProperties.json b/packages/TelegramClient-Core.package/TCCNullMessage.class/methodProperties.json new file mode 100644 index 000000000..9afaea71a --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCNullMessage.class/methodProperties.json @@ -0,0 +1,5 @@ +{ + "class" : { + }, + "instance" : { + "id" : "js 8/1/2020 18:24" } } diff --git a/packages/TelegramClient-Core.package/TCCNullMessage.class/properties.json b/packages/TelegramClient-Core.package/TCCNullMessage.class/properties.json new file mode 100644 index 000000000..c9dd28db4 --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCNullMessage.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "TelegramClient-Core", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "js 8/1/2020 18:29", + "instvars" : [ + ], + "name" : "TCCNullMessage", + "pools" : [ + ], + "super" : "TCCMessage", + "type" : "normal" } diff --git a/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/addMessages.st b/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/addMessages.st new file mode 100644 index 000000000..4cc073ef2 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/addMessages.st @@ -0,0 +1,4 @@ +accessing +addMessages + + self owner showChatMessagesFrom: self lowestVisibleMessage. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/displayChat..st b/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/displayChat..st index 038e7b80f..0b8a81831 100644 --- a/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/displayChat..st +++ b/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/displayChat..st @@ -2,7 +2,8 @@ accessing displayChat: aChat self chat removeActionsWithReceiver: self. - aChat when: #newMessage send: #redrawMessages to: self. + aChat when: #newMessage send: #addMessages to: self. self chat: aChat; - redrawMessages. \ No newline at end of file + lowestVisibleMessage: 0; + addMessages. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/handleMouseWheel..st b/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/handleMouseWheel..st new file mode 100644 index 000000000..58f937385 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/handleMouseWheel..st @@ -0,0 +1,5 @@ +accessing +handleMouseWheel: anEvent + + anEvent isWheelUp ifTrue: [self scrollUp]. + anEvent isWheelDown ifTrue: [self scrollDown]. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/lowestVisibleMessage..st b/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/lowestVisibleMessage..st new file mode 100644 index 000000000..47a72f80d --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/lowestVisibleMessage..st @@ -0,0 +1,4 @@ +accessing +lowestVisibleMessage: anInteger + + lowestVisibleMessage := anInteger. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/lowestVisibleMessage.st b/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/lowestVisibleMessage.st new file mode 100644 index 000000000..82ef00237 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/lowestVisibleMessage.st @@ -0,0 +1,4 @@ +accessing +lowestVisibleMessage + + ^ lowestVisibleMessage \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/redrawMessages.st b/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/redrawMessages.st deleted file mode 100644 index d0eca4b9d..000000000 --- a/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/redrawMessages.st +++ /dev/null @@ -1,7 +0,0 @@ -accessing -redrawMessages - - self clearMessages. - - self chat messages reversed do: [:aMessage | - self addMessageAtBottom: aMessage]. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/scrollDown.st b/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/scrollDown.st new file mode 100644 index 000000000..2d64e6669 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/scrollDown.st @@ -0,0 +1,5 @@ +accessing +scrollDown + + self lowestVisibleMessage < 1 ifFalse: [ + self owner showChatMessagesFrom: self lowestVisibleMessage - 1.]. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/scrollUp.st b/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/scrollUp.st new file mode 100644 index 000000000..e3e1af10c --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/scrollUp.st @@ -0,0 +1,4 @@ +accessing +scrollUp + + self owner showChatMessagesFrom: self lowestVisibleMessage + 1. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatMessageList.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUChatMessageList.class/methodProperties.json index 53fd4c967..70d29c0fe 100644 --- a/packages/TelegramClient-UI.package/TCUChatMessageList.class/methodProperties.json +++ b/packages/TelegramClient-UI.package/TCUChatMessageList.class/methodProperties.json @@ -3,12 +3,17 @@ }, "instance" : { "addMessageAtBottom:" : "js 7/31/2020 17:00", + "addMessages" : "f.w. 8/1/2020 05:09", "chat" : "js 7/31/2020 16:39", "chat:" : "js 7/31/2020 16:39", "clearMessages" : "js 7/31/2020 16:46", "defaultMessageMargin" : "js 7/31/2020 15:50", - "displayChat:" : "js 7/31/2020 17:19", + "displayChat:" : "f.w. 8/1/2020 04:53", + "handleMouseWheel:" : "f.w. 7/31/2020 23:53", "initialize" : "js 7/31/2020 17:19", + "lowestVisibleMessage" : "f.w. 7/31/2020 23:55", + "lowestVisibleMessage:" : "f.w. 7/31/2020 23:55", "messages" : "rs 6/17/2020 19:10", "messages:" : "rs 6/17/2020 19:10", - "redrawMessages" : "js 7/31/2020 17:06" } } + "scrollDown" : "f.w. 8/1/2020 02:37", + "scrollUp" : "f.w. 8/1/2020 02:17" } } diff --git a/packages/TelegramClient-UI.package/TCUChatMessageList.class/properties.json b/packages/TelegramClient-UI.package/TCUChatMessageList.class/properties.json index dc4ae1f83..03d005133 100644 --- a/packages/TelegramClient-UI.package/TCUChatMessageList.class/properties.json +++ b/packages/TelegramClient-UI.package/TCUChatMessageList.class/properties.json @@ -7,7 +7,8 @@ "commentStamp" : "rs 6/17/2020 21:32", "instvars" : [ "messages", - "chat" ], + "chat", + "lowestVisibleMessage" ], "name" : "TCUChatMessageList", "pools" : [ ], diff --git a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/addMessageWindow.st b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/addMessageWindow.st index da9a6db04..c348ddbd1 100644 --- a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/addMessageWindow.st +++ b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/addMessageWindow.st @@ -6,6 +6,7 @@ addMessageWindow height: self height - self defaultInputfieldHeight; width: self width; color: Color white; + lowestVisibleMessage: 0; topLeft: self topLeft; hide); addMorph: self messageListWindow. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/newChatSelected..st b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/newChatSelected..st index 79d398d59..6bf1596f6 100644 --- a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/newChatSelected..st +++ b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/newChatSelected..st @@ -4,6 +4,6 @@ newChatSelected: aChat self welcomeMessage hide. self inputBar show. self selectedChat: aChat. - + self messageListWindow show. self messageListWindow displayChat: aChat. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/showChatMessagesFrom..st b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/showChatMessagesFrom..st new file mode 100644 index 000000000..030b07bfd --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/showChatMessagesFrom..st @@ -0,0 +1,14 @@ +initialization +showChatMessagesFrom: lowestMessage + + | messageListReversed | + messageListReversed := self selectedChat messages reversed. + messageListReversed removeLast. + self messageListWindow clearMessages. + self messageListWindow lowestVisibleMessage: lowestMessage. + + 1 to: messageListReversed size - lowestMessage do: [: x | + self messageListWindow addMessageAtBottom: (messageListReversed at: x)]. + + messageListReversed size < (lowestMessage + 20) ifTrue: [ + self owner getChatHistoryFrom: self selectedChat.]. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatWindow.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUChatWindow.class/methodProperties.json index 0c9bf2be6..ce9d0294d 100644 --- a/packages/TelegramClient-UI.package/TCUChatWindow.class/methodProperties.json +++ b/packages/TelegramClient-UI.package/TCUChatWindow.class/methodProperties.json @@ -3,7 +3,7 @@ "newWithHeight:width:" : "rs 6/17/2020 20:22" }, "instance" : { "addInputBar" : "js 6/13/2020 17:59", - "addMessageWindow" : "rs 7/4/2020 19:29", + "addMessageWindow" : "f.w. 8/1/2020 02:37", "addSendButton" : "js 6/13/2020 18:46", "addTextInputField" : "rs 6/17/2020 21:02", "addWelcomeMessage" : "N.S. 7/26/2020 15:57", @@ -16,9 +16,10 @@ "inputBar:" : "rs 6/13/2020 10:38", "messageListWindow" : "rs 6/17/2020 19:12", "messageListWindow:" : "rs 6/17/2020 19:13", - "newChatSelected:" : "js 7/31/2020 16:38", + "newChatSelected:" : "js 8/1/2020 18:10", "selectedChat" : "rs 6/13/2020 09:11", "selectedChat:" : "rs 6/13/2020 09:11", + "showChatMessagesFrom:" : "js 8/1/2020 18:26", "textInputField" : "rs 6/13/2020 10:41", "textInputField:" : "rs 6/13/2020 10:42", "welcomeMessage" : "rs 6/13/2020 09:36", diff --git a/packages/TelegramClient-UI.package/TCUChatWindow.class/properties.json b/packages/TelegramClient-UI.package/TCUChatWindow.class/properties.json index fbf5811fe..c0196a77e 100644 --- a/packages/TelegramClient-UI.package/TCUChatWindow.class/properties.json +++ b/packages/TelegramClient-UI.package/TCUChatWindow.class/properties.json @@ -10,7 +10,8 @@ "selectedChat", "welcomeMessage", "textInputField", - "messageListWindow" ], + "messageListWindow", + "lowestVisibleMessage" ], "name" : "TCUChatWindow", "pools" : [ ], diff --git a/packages/TelegramClient-UI.package/TCUMain.class/instance/newMessageReceived..st b/packages/TelegramClient-UI.package/TCUMain.class/instance/newMessageReceived..st index 305f20255..8c5dc56ab 100644 --- a/packages/TelegramClient-UI.package/TCUMain.class/instance/newMessageReceived..st +++ b/packages/TelegramClient-UI.package/TCUMain.class/instance/newMessageReceived..st @@ -1,5 +1,5 @@ initialization newMessageReceived: aMessage - (self core loggedInUserID = aMessage senderId) ifFalse: [ + (self core loggedInUserID = aMessage senderID) ifFalse: [ [TCUNotification newWithMessage: aMessage] fork]. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMain.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUMain.class/methodProperties.json index a3777aa36..1bc8fed1c 100644 --- a/packages/TelegramClient-UI.package/TCUMain.class/methodProperties.json +++ b/packages/TelegramClient-UI.package/TCUMain.class/methodProperties.json @@ -27,6 +27,6 @@ "logout" : "js 6/13/2020 18:11", "newChatButtonClicked" : "N.S. 7/31/2020 16:49", "newChatSelected:" : "f.w. 7/16/2020 00:02", - "newMessageReceived:" : "j 7/16/2020 13:26", + "newMessageReceived:" : "js 8/1/2020 18:20", "sendMessage:" : "rs 6/17/2020 21:19", "subscribeChatsList" : "js 7/31/2020 23:09" } } diff --git a/packages/TelegramClient-UI.package/TCUMessage.class/class/newFromTCCMessage..st b/packages/TelegramClient-UI.package/TCUMessage.class/class/newFromTCCMessage..st index b14e87cad..752c46530 100644 --- a/packages/TelegramClient-UI.package/TCUMessage.class/class/newFromTCCMessage..st +++ b/packages/TelegramClient-UI.package/TCUMessage.class/class/newFromTCCMessage..st @@ -3,5 +3,5 @@ newFromTCCMessage: aMessage ^ self basicNew text: aMessage message; - senderID: aMessage senderId; + senderID: aMessage senderID; initialize \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMessage.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUMessage.class/methodProperties.json index 51b9bd0db..c767e6abc 100644 --- a/packages/TelegramClient-UI.package/TCUMessage.class/methodProperties.json +++ b/packages/TelegramClient-UI.package/TCUMessage.class/methodProperties.json @@ -1,6 +1,6 @@ { "class" : { - "newFromTCCMessage:" : "js 7/31/2020 17:55" }, + "newFromTCCMessage:" : "js 8/1/2020 18:21" }, "instance" : { "addText" : "js 7/31/2020 18:42", "defaultHeight" : "rs 6/17/2020 20:07", From 802ec2dd583d72f81499e251e0562011a4c8ec9b Mon Sep 17 00:00:00 2001 From: Rohan Sawahn <49531442+rohansaw@users.noreply.github.com> Date: Sun, 2 Aug 2020 10:10:07 +0200 Subject: [PATCH 57/81] ChatList item now Left-aligned (#262) * ChatList item now Left-aligned * Update addLastMessage.st * Update addTitle.st * Update lastMessageOffset.st * Update titleOffset.st * better truncation logic * increases preview length Co-authored-by: Jonas Schmidt --- .../TCUChatListItem.class/instance/addLastMessage.st | 9 +++------ .../TCUChatListItem.class/instance/addTitle.st | 10 ++++------ .../instance/lastMessageOffset.st | 4 ++++ .../instance/messagePreviewLength.st | 2 +- .../TCUChatListItem.class/instance/titleLength.st | 4 ++++ .../TCUChatListItem.class/instance/titleOffset.st | 4 ++++ .../TCUChatListItem.class/methodProperties.json | 11 +++++++---- .../TCUNotification.class/instance/addTextLabel.st | 5 +---- .../TCUNotification.class/methodProperties.json | 2 +- 9 files changed, 29 insertions(+), 22 deletions(-) create mode 100644 packages/TelegramClient-UI.package/TCUChatListItem.class/instance/lastMessageOffset.st create mode 100644 packages/TelegramClient-UI.package/TCUChatListItem.class/instance/titleLength.st create mode 100644 packages/TelegramClient-UI.package/TCUChatListItem.class/instance/titleOffset.st diff --git a/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/addLastMessage.st b/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/addLastMessage.st index af43f56ed..60b55598c 100644 --- a/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/addLastMessage.st +++ b/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/addLastMessage.st @@ -1,10 +1,7 @@ initialization addLastMessage - | text | - text := (self chat lastMessage condensedIntoOneLine truncateTo: self messagePreviewLength), '...'. - self addMorph: (TextMorph new - contents: text asText; - center: self center + (0 @ self messageMarginTop); - lock). \ No newline at end of file + contents: (self chat lastMessage condensedIntoOneLine truncateWithElipsisTo: self messagePreviewLength) asText; + bottomLeft: self bottomLeft + self lastMessageOffset; + lock). diff --git a/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/addTitle.st b/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/addTitle.st index c0e5d7ed0..81ef89568 100644 --- a/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/addTitle.st +++ b/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/addTitle.st @@ -1,9 +1,7 @@ initialization addTitle - | text | - text := (self chatName asText) addAttribute: TextEmphasis bold. - - self addMorphCentered: (TextMorph new - contents: text; - lock). \ No newline at end of file + self addMorph: (TextMorph new + position: self topLeft + self titleOffset; + contents: ((self chatName condensedIntoOneLine truncateWithElipsisTo: self titleLength) asText addAttribute: TextEmphasis bold); + lock). diff --git a/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/lastMessageOffset.st b/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/lastMessageOffset.st new file mode 100644 index 000000000..f4e88f786 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/lastMessageOffset.st @@ -0,0 +1,4 @@ +initialization +lastMessageOffset + + ^ 20 @ -12 diff --git a/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/messagePreviewLength.st b/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/messagePreviewLength.st index 3117a8300..0f7fca6b4 100644 --- a/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/messagePreviewLength.st +++ b/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/messagePreviewLength.st @@ -1,4 +1,4 @@ initialization messagePreviewLength - ^ 25 \ No newline at end of file + ^ 37 \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/titleLength.st b/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/titleLength.st new file mode 100644 index 000000000..16ff1993f --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/titleLength.st @@ -0,0 +1,4 @@ +initialization +titleLength + + ^ 32 \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/titleOffset.st b/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/titleOffset.st new file mode 100644 index 000000000..3623c9a12 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/titleOffset.st @@ -0,0 +1,4 @@ +initialization +titleOffset + + ^ 20 @ 20 diff --git a/packages/TelegramClient-UI.package/TCUChatListItem.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUChatListItem.class/methodProperties.json index 2be1b2649..078534540 100644 --- a/packages/TelegramClient-UI.package/TCUChatListItem.class/methodProperties.json +++ b/packages/TelegramClient-UI.package/TCUChatListItem.class/methodProperties.json @@ -3,8 +3,8 @@ "newWithChat:width:" : "js 7/31/2020 18:48" }, "instance" : { "addBorder" : "r.s 7/31/2020 14:43", - "addLastMessage" : "js 7/31/2020 19:06", - "addTitle" : "rs 7/4/2020 19:05", + "addLastMessage" : "js 8/2/2020 09:58", + "addTitle" : "js 8/2/2020 09:58", "chat" : "rs 6/17/2020 21:45", "chat:" : "rs 6/17/2020 21:45", "chatID" : "rs 6/17/2020 23:05", @@ -12,6 +12,9 @@ "defaultHeight" : "rs 7/4/2020 18:54", "deselect" : "rs 6/13/2020 09:02", "initialize" : "r.s 7/31/2020 14:43", + "lastMessageOffset" : "r.s 7/31/2020 16:05", "messageMarginTop" : "r.s 7/31/2020 14:18", - "messagePreviewLength" : "r.s 7/31/2020 14:17", - "select" : "rs 6/13/2020 08:49" } } + "messagePreviewLength" : "js 8/2/2020 10:06", + "select" : "rs 6/13/2020 08:49", + "titleLength" : "js 8/2/2020 10:00", + "titleOffset" : "r.s 7/31/2020 16:04" } } diff --git a/packages/TelegramClient-UI.package/TCUNotification.class/instance/addTextLabel.st b/packages/TelegramClient-UI.package/TCUNotification.class/instance/addTextLabel.st index 4efbb38b4..6cdbd2ea1 100644 --- a/packages/TelegramClient-UI.package/TCUNotification.class/instance/addTextLabel.st +++ b/packages/TelegramClient-UI.package/TCUNotification.class/instance/addTextLabel.st @@ -1,9 +1,6 @@ accessing addTextLabel - | shortText | - shortText := (self text truncateTo: 25), ' ...'. - self addMorphCentered: (TextMorph new - contents: shortText asText; + contents: (self text truncateWithElipsisTo: 25) asText; lock). \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUNotification.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUNotification.class/methodProperties.json index 399b072af..90ff2898c 100644 --- a/packages/TelegramClient-UI.package/TCUNotification.class/methodProperties.json +++ b/packages/TelegramClient-UI.package/TCUNotification.class/methodProperties.json @@ -2,7 +2,7 @@ "class" : { "newWithMessage:" : "j 7/16/2020 13:23" }, "instance" : { - "addTextLabel" : "j 7/16/2020 13:25", + "addTextLabel" : "js 8/2/2020 10:00", "calculatePosition" : "rs 7/5/2020 14:42", "chatID" : "rs 7/5/2020 14:31", "chatID:" : "rs 7/5/2020 14:31", From 443445df73f18ba5dcddfc7e00bd0f098b0c0d60 Mon Sep 17 00:00:00 2001 From: Jonas Schmidt <43679965+schmidtjonas@users.noreply.github.com> Date: Sun, 2 Aug 2020 12:44:04 +0200 Subject: [PATCH 58/81] removed factory (#264) * removed factory * removed factory ... again --- .../README.md | 1 - .../instance/createClient..st | 4 ---- .../methodProperties.json | 5 ----- .../properties.json | 14 -------------- .../instance/updateLastMessage..st | 18 ++++++++---------- .../methodProperties.json | 2 +- .../TCCCore.class/instance/initialize.st | 2 +- .../TCCCore.class/instance/initializeClient.st | 7 ------- .../TCCCore.class/methodProperties.json | 3 +-- .../class/defaultLogLevel.st | 6 ++++++ .../class/newForCurrentOS.st | 11 +++++++++++ .../class/newForCurrentPlatform.st | 4 ---- .../class/newWithClient..st | 10 +++------- .../TCCTeleClient.class/methodProperties.json | 5 +++-- .../TCCTeleClientFactory.class/README.md | 1 - .../instance/createClient..st | 13 ------------- .../instance/createClient.st | 4 ---- .../methodProperties.json | 6 ------ .../TCCTeleClientFactory.class/properties.json | 14 -------------- .../README.md | 1 - .../instance/createClient..st | 4 ---- .../methodProperties.json | 5 ----- .../TCTAuthTests.class/methodProperties.json | 3 +-- .../TCTClientTest.class/README.md | 1 + .../instance/testClientDestroysHandle.st | 2 +- .../TCTClientTest.class/methodProperties.json | 5 +++++ .../properties.json | 6 +++--- 27 files changed, 45 insertions(+), 112 deletions(-) delete mode 100644 packages/TelegramClient-Core.package/TCCAbstractTeleClientFactory.class/README.md delete mode 100644 packages/TelegramClient-Core.package/TCCAbstractTeleClientFactory.class/instance/createClient..st delete mode 100644 packages/TelegramClient-Core.package/TCCAbstractTeleClientFactory.class/methodProperties.json delete mode 100644 packages/TelegramClient-Core.package/TCCAbstractTeleClientFactory.class/properties.json delete mode 100644 packages/TelegramClient-Core.package/TCCCore.class/instance/initializeClient.st create mode 100644 packages/TelegramClient-Core.package/TCCTeleClient.class/class/defaultLogLevel.st create mode 100644 packages/TelegramClient-Core.package/TCCTeleClient.class/class/newForCurrentOS.st delete mode 100644 packages/TelegramClient-Core.package/TCCTeleClient.class/class/newForCurrentPlatform.st delete mode 100644 packages/TelegramClient-Core.package/TCCTeleClientFactory.class/README.md delete mode 100644 packages/TelegramClient-Core.package/TCCTeleClientFactory.class/instance/createClient..st delete mode 100644 packages/TelegramClient-Core.package/TCCTeleClientFactory.class/instance/createClient.st delete mode 100644 packages/TelegramClient-Core.package/TCCTeleClientFactory.class/methodProperties.json delete mode 100644 packages/TelegramClient-Core.package/TCCTeleClientFactory.class/properties.json delete mode 100644 packages/TelegramClient-Tests.package/TCTAbstractTeleClientFactoryMock.class/README.md delete mode 100644 packages/TelegramClient-Tests.package/TCTAbstractTeleClientFactoryMock.class/instance/createClient..st delete mode 100644 packages/TelegramClient-Tests.package/TCTAbstractTeleClientFactoryMock.class/methodProperties.json create mode 100644 packages/TelegramClient-Tests.package/TCTClientTest.class/README.md rename packages/TelegramClient-Tests.package/{TCTAuthTests.class => TCTClientTest.class}/instance/testClientDestroysHandle.st (77%) create mode 100644 packages/TelegramClient-Tests.package/TCTClientTest.class/methodProperties.json rename packages/TelegramClient-Tests.package/{TCTAbstractTeleClientFactoryMock.class => TCTClientTest.class}/properties.json (54%) diff --git a/packages/TelegramClient-Core.package/TCCAbstractTeleClientFactory.class/README.md b/packages/TelegramClient-Core.package/TCCAbstractTeleClientFactory.class/README.md deleted file mode 100644 index 634c0fd30..000000000 --- a/packages/TelegramClient-Core.package/TCCAbstractTeleClientFactory.class/README.md +++ /dev/null @@ -1 +0,0 @@ -This abstract factory can be used to create a new TeleClient. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCAbstractTeleClientFactory.class/instance/createClient..st b/packages/TelegramClient-Core.package/TCCAbstractTeleClientFactory.class/instance/createClient..st deleted file mode 100644 index e5eae37cc..000000000 --- a/packages/TelegramClient-Core.package/TCCAbstractTeleClientFactory.class/instance/createClient..st +++ /dev/null @@ -1,4 +0,0 @@ -creation -createClient: anOsName - - ^ self subclassResponsibility \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCAbstractTeleClientFactory.class/methodProperties.json b/packages/TelegramClient-Core.package/TCCAbstractTeleClientFactory.class/methodProperties.json deleted file mode 100644 index cae6a5531..000000000 --- a/packages/TelegramClient-Core.package/TCCAbstractTeleClientFactory.class/methodProperties.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "class" : { - }, - "instance" : { - "createClient:" : "js 5/28/2020 17:00" } } diff --git a/packages/TelegramClient-Core.package/TCCAbstractTeleClientFactory.class/properties.json b/packages/TelegramClient-Core.package/TCCAbstractTeleClientFactory.class/properties.json deleted file mode 100644 index 047b1839c..000000000 --- a/packages/TelegramClient-Core.package/TCCAbstractTeleClientFactory.class/properties.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "category" : "TelegramClient-Core", - "classinstvars" : [ - ], - "classvars" : [ - ], - "commentStamp" : "js 6/13/2020 16:24", - "instvars" : [ - ], - "name" : "TCCAbstractTeleClientFactory", - "pools" : [ - ], - "super" : "Object", - "type" : "normal" } diff --git a/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/updateLastMessage..st b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/updateLastMessage..st index c3f26f2f3..d42189362 100644 --- a/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/updateLastMessage..st +++ b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/updateLastMessage..st @@ -1,17 +1,15 @@ events updateLastMessage: anEvent - + | content chat | - - ((anEvent at: 'last_message') isNil not) ifTrue: [ - content := ((anEvent at: 'last_message') at: 'content'). - chat := (self app chats getChat: (anEvent at: 'chat_id')). + + (anEvent includesKey: 'last_message') ifTrue: [ + content := (anEvent at: 'last_message') at: 'content'. + chat := self app chats getChat: (anEvent at: 'chat_id'). chat order: (anEvent at: 'order'). - + (content at: '@type') = 'messageText' ifTrue: [chat lastMessage: ((content at: 'text') at: 'text')] - ifFalse: [(content at: '@type') = 'messagePhoto' - ifTrue: [chat lastMessage: 'A photo'] - ifFalse: [chat lastMessage: 'A file']]. - + ifFalse: [chat lastMessage: 'message type not supported yet']. + self app chats notify]. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCChatsHandler.class/methodProperties.json b/packages/TelegramClient-Core.package/TCCChatsHandler.class/methodProperties.json index 996ba6871..03f42262c 100644 --- a/packages/TelegramClient-Core.package/TCCChatsHandler.class/methodProperties.json +++ b/packages/TelegramClient-Core.package/TCCChatsHandler.class/methodProperties.json @@ -18,4 +18,4 @@ "searchChat:" : "f.w. 7/15/2020 22:53", "sendMessage:to:" : "js 7/31/2020 14:39", "updateChatOrder:" : "js 8/1/2020 12:07", - "updateLastMessage:" : "js 8/1/2020 12:07" } } + "updateLastMessage:" : "js 8/2/2020 12:37" } } diff --git a/packages/TelegramClient-Core.package/TCCCore.class/instance/initialize.st b/packages/TelegramClient-Core.package/TCCCore.class/instance/initialize.st index b2dd86669..aad10ad63 100644 --- a/packages/TelegramClient-Core.package/TCCCore.class/instance/initialize.st +++ b/packages/TelegramClient-Core.package/TCCCore.class/instance/initialize.st @@ -2,7 +2,7 @@ initialization initialize self - initializeClient; + client: TCCTeleClient newForCurrentOS; initializeHandlers; chats: TCCChats new; loggedInUserID: 0. diff --git a/packages/TelegramClient-Core.package/TCCCore.class/instance/initializeClient.st b/packages/TelegramClient-Core.package/TCCCore.class/instance/initializeClient.st deleted file mode 100644 index 19d67b948..000000000 --- a/packages/TelegramClient-Core.package/TCCCore.class/instance/initializeClient.st +++ /dev/null @@ -1,7 +0,0 @@ -initialization -initializeClient - - | specificClient | - specificClient := TCCTeleClientFactory new createClient. - - self client: (TCCTeleClient newWithClient: specificClient). \ 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 db802aa8b..abbb9554f 100644 --- a/packages/TelegramClient-Core.package/TCCCore.class/methodProperties.json +++ b/packages/TelegramClient-Core.package/TCCCore.class/methodProperties.json @@ -15,8 +15,7 @@ "getChatHistoryFrom:" : "js 8/1/2020 18:19", "getOwnProfile" : "N.S. 7/31/2020 14:22", "handleEvent:" : "js 7/31/2020 22:34", - "initialize" : "rs 7/5/2020 15:12", - "initializeClient" : "js 6/13/2020 18:20", + "initialize" : "js 8/2/2020 12:26", "initializeHandlers" : "js 8/1/2020 18:09", "isClientAlive" : "js 5/28/2020 17:18", "loggedInUserID" : "rs 7/5/2020 14:48", diff --git a/packages/TelegramClient-Core.package/TCCTeleClient.class/class/defaultLogLevel.st b/packages/TelegramClient-Core.package/TCCTeleClient.class/class/defaultLogLevel.st new file mode 100644 index 000000000..8d4e9f45d --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCTeleClient.class/class/defaultLogLevel.st @@ -0,0 +1,6 @@ +default values +defaultLogLevel + + "Log level is weird, 1 is fatal, 2 is critical, 3 is warning, 4 is default + and debug, but 5-1024 are also fair game" + ^ 2 \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCTeleClient.class/class/newForCurrentOS.st b/packages/TelegramClient-Core.package/TCCTeleClient.class/class/newForCurrentOS.st new file mode 100644 index 000000000..295b89e8b --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCTeleClient.class/class/newForCurrentOS.st @@ -0,0 +1,11 @@ +creation +newForCurrentOS + + | client | + client := Smalltalk platformName caseOf: { + ['Win32'] -> [TCCWindowsClient new]. + ['Mac OS'] -> [TCCMacClient new]. + ['unix'] -> [TCCLinuxClient new]}. + client setLogLevel: self defaultLogLevel. + + ^ self newWithClient: client \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCTeleClient.class/class/newForCurrentPlatform.st b/packages/TelegramClient-Core.package/TCCTeleClient.class/class/newForCurrentPlatform.st deleted file mode 100644 index 28ecb9cc1..000000000 --- a/packages/TelegramClient-Core.package/TCCTeleClient.class/class/newForCurrentPlatform.st +++ /dev/null @@ -1,4 +0,0 @@ -creation -newForCurrentPlatform - - ^ self newWithClient: '' \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCTeleClient.class/class/newWithClient..st b/packages/TelegramClient-Core.package/TCCTeleClient.class/class/newWithClient..st index 72d3970df..965331ca6 100644 --- a/packages/TelegramClient-Core.package/TCCTeleClient.class/class/newWithClient..st +++ b/packages/TelegramClient-Core.package/TCCTeleClient.class/class/newWithClient..st @@ -1,10 +1,6 @@ creation -newWithClient: anActualClient - - | specificClient | - - specificClient := anActualClient create. +newWithClient: aClient ^ self new - specificClient: anActualClient; - handle: specificClient \ No newline at end of file + specificClient: aClient; + handle: aClient create \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCTeleClient.class/methodProperties.json b/packages/TelegramClient-Core.package/TCCTeleClient.class/methodProperties.json index 5f5b90096..8e0d8f45f 100644 --- a/packages/TelegramClient-Core.package/TCCTeleClient.class/methodProperties.json +++ b/packages/TelegramClient-Core.package/TCCTeleClient.class/methodProperties.json @@ -1,7 +1,8 @@ { "class" : { - "newForCurrentPlatform" : "js 7/31/2020 22:53", - "newWithClient:" : "js 6/13/2020 18:11" }, + "defaultLogLevel" : "js 8/2/2020 12:21", + "newForCurrentOS" : "js 8/2/2020 12:22", + "newWithClient:" : "js 8/2/2020 12:23" }, "instance" : { "execute:" : "js 5/28/2020 17:23", "free" : "js 5/28/2020 17:24", diff --git a/packages/TelegramClient-Core.package/TCCTeleClientFactory.class/README.md b/packages/TelegramClient-Core.package/TCCTeleClientFactory.class/README.md deleted file mode 100644 index 57f8ab151..000000000 --- a/packages/TelegramClient-Core.package/TCCTeleClientFactory.class/README.md +++ /dev/null @@ -1 +0,0 @@ -This factory creates a TeleClient for the current OS. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCTeleClientFactory.class/instance/createClient..st b/packages/TelegramClient-Core.package/TCCTeleClientFactory.class/instance/createClient..st deleted file mode 100644 index b2b51866f..000000000 --- a/packages/TelegramClient-Core.package/TCCTeleClientFactory.class/instance/createClient..st +++ /dev/null @@ -1,13 +0,0 @@ -creation -createClient: anOsName - - | client | - client := (anOsName startsWith: 'Win32') - ifTrue: [TCCWindowsClient new] - ifFalse: [(anOsName startsWith: 'Mac OS') - ifTrue: [TCCMacClient new] - ifFalse: [TCCLinuxClient new]]. - client setLogLevel: 3. - "Log level is weird, 1 is fatal, 2 is critical, 3 is warning, 4 is default - and debug, but 5-1024 are also fair game" - ^ client \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCTeleClientFactory.class/instance/createClient.st b/packages/TelegramClient-Core.package/TCCTeleClientFactory.class/instance/createClient.st deleted file mode 100644 index a0c96d039..000000000 --- a/packages/TelegramClient-Core.package/TCCTeleClientFactory.class/instance/createClient.st +++ /dev/null @@ -1,4 +0,0 @@ -creation -createClient - - ^ self createClient: Smalltalk platformName \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCTeleClientFactory.class/methodProperties.json b/packages/TelegramClient-Core.package/TCCTeleClientFactory.class/methodProperties.json deleted file mode 100644 index 1c28561f2..000000000 --- a/packages/TelegramClient-Core.package/TCCTeleClientFactory.class/methodProperties.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "class" : { - }, - "instance" : { - "createClient" : "js 5/28/2020 18:02", - "createClient:" : "js 7/31/2020 21:37" } } diff --git a/packages/TelegramClient-Core.package/TCCTeleClientFactory.class/properties.json b/packages/TelegramClient-Core.package/TCCTeleClientFactory.class/properties.json deleted file mode 100644 index de0a690a0..000000000 --- a/packages/TelegramClient-Core.package/TCCTeleClientFactory.class/properties.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "category" : "TelegramClient-Core", - "classinstvars" : [ - ], - "classvars" : [ - ], - "commentStamp" : "js 6/13/2020 16:24", - "instvars" : [ - ], - "name" : "TCCTeleClientFactory", - "pools" : [ - ], - "super" : "TCCAbstractTeleClientFactory", - "type" : "normal" } diff --git a/packages/TelegramClient-Tests.package/TCTAbstractTeleClientFactoryMock.class/README.md b/packages/TelegramClient-Tests.package/TCTAbstractTeleClientFactoryMock.class/README.md deleted file mode 100644 index f0d6d39c8..000000000 --- a/packages/TelegramClient-Tests.package/TCTAbstractTeleClientFactoryMock.class/README.md +++ /dev/null @@ -1 +0,0 @@ -This abstract Factory creates Clients that behave like FFIClients. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTAbstractTeleClientFactoryMock.class/instance/createClient..st b/packages/TelegramClient-Tests.package/TCTAbstractTeleClientFactoryMock.class/instance/createClient..st deleted file mode 100644 index 7f0ffe1f3..000000000 --- a/packages/TelegramClient-Tests.package/TCTAbstractTeleClientFactoryMock.class/instance/createClient..st +++ /dev/null @@ -1,4 +0,0 @@ -creation -createClient: anOsName - - ^ TCTFFIClientMock new \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTAbstractTeleClientFactoryMock.class/methodProperties.json b/packages/TelegramClient-Tests.package/TCTAbstractTeleClientFactoryMock.class/methodProperties.json deleted file mode 100644 index d5beb0b81..000000000 --- a/packages/TelegramClient-Tests.package/TCTAbstractTeleClientFactoryMock.class/methodProperties.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "class" : { - }, - "instance" : { - "createClient:" : "js 5/28/2020 17:46" } } diff --git a/packages/TelegramClient-Tests.package/TCTAuthTests.class/methodProperties.json b/packages/TelegramClient-Tests.package/TCTAuthTests.class/methodProperties.json index 546c90f4d..641c0eff6 100644 --- a/packages/TelegramClient-Tests.package/TCTAuthTests.class/methodProperties.json +++ b/packages/TelegramClient-Tests.package/TCTAuthTests.class/methodProperties.json @@ -7,5 +7,4 @@ "setUp" : "r.s 7/15/2020 19:25", "tearDown" : "r.s 7/15/2020 19:29", "testAuthStateIsAwaitingPhoneNumber" : "r.s 7/15/2020 19:24", - "testAuthStateReady" : "r.s 7/15/2020 19:23", - "testClientDestroysHandle" : "r.s 7/13/2020 17:48" } } + "testAuthStateReady" : "r.s 7/15/2020 19:23" } } diff --git a/packages/TelegramClient-Tests.package/TCTClientTest.class/README.md b/packages/TelegramClient-Tests.package/TCTClientTest.class/README.md new file mode 100644 index 000000000..862812c9d --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTClientTest.class/README.md @@ -0,0 +1 @@ +tests FFIClients and TeleClient \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTAuthTests.class/instance/testClientDestroysHandle.st b/packages/TelegramClient-Tests.package/TCTClientTest.class/instance/testClientDestroysHandle.st similarity index 77% rename from packages/TelegramClient-Tests.package/TCTAuthTests.class/instance/testClientDestroysHandle.st rename to packages/TelegramClient-Tests.package/TCTClientTest.class/instance/testClientDestroysHandle.st index 8ea054531..b205397d7 100644 --- a/packages/TelegramClient-Tests.package/TCTAuthTests.class/instance/testClientDestroysHandle.st +++ b/packages/TelegramClient-Tests.package/TCTClientTest.class/instance/testClientDestroysHandle.st @@ -2,7 +2,7 @@ testing testClientDestroysHandle | aClient aMock | - aMock := TCTAbstractTeleClientFactoryMock new createClient: ''. + aMock := TCTFFIClientMock new. aClient := TCCTeleClient newWithClient: aMock. aClient free. diff --git a/packages/TelegramClient-Tests.package/TCTClientTest.class/methodProperties.json b/packages/TelegramClient-Tests.package/TCTClientTest.class/methodProperties.json new file mode 100644 index 000000000..f8ee41cd0 --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTClientTest.class/methodProperties.json @@ -0,0 +1,5 @@ +{ + "class" : { + }, + "instance" : { + "testClientDestroysHandle" : "js 8/2/2020 12:25" } } diff --git a/packages/TelegramClient-Tests.package/TCTAbstractTeleClientFactoryMock.class/properties.json b/packages/TelegramClient-Tests.package/TCTClientTest.class/properties.json similarity index 54% rename from packages/TelegramClient-Tests.package/TCTAbstractTeleClientFactoryMock.class/properties.json rename to packages/TelegramClient-Tests.package/TCTClientTest.class/properties.json index d6a952b1a..149346bca 100644 --- a/packages/TelegramClient-Tests.package/TCTAbstractTeleClientFactoryMock.class/properties.json +++ b/packages/TelegramClient-Tests.package/TCTClientTest.class/properties.json @@ -4,11 +4,11 @@ ], "classvars" : [ ], - "commentStamp" : "js 6/13/2020 16:23", + "commentStamp" : "js 8/2/2020 12:25", "instvars" : [ ], - "name" : "TCTAbstractTeleClientFactoryMock", + "name" : "TCTClientTest", "pools" : [ ], - "super" : "TCCAbstractTeleClientFactory", + "super" : "TestCase", "type" : "normal" } From 74f1dfb0bb6ee2660af5be6474b7de37ca5f2a9e Mon Sep 17 00:00:00 2001 From: Jonas Schmidt <43679965+schmidtjonas@users.noreply.github.com> Date: Sun, 2 Aug 2020 15:12:34 +0200 Subject: [PATCH 59/81] Fixed Textwidth Calculation and recategorized (#265) * defaultFont * refactoring and recategorizing * fixed and refactored sar * everything recategorized except ui * categoooorieees * fixed chats --- .../TCCAuthHandler.class/instance/apiHash.st | 2 +- .../TCCAuthHandler.class/instance/apiID.st | 2 +- .../instance/checkAuthenticationCode..st | 2 +- .../instance/handleEvent..st | 9 ++----- .../instance/isAuthorizationStateReady.st | 2 +- .../TCCAuthHandler.class/instance/logout.st | 2 +- .../instance/sendPhoneNumber..st | 2 +- .../instance/setDBEncryptionKey..st | 2 +- .../instance/setTDLibParams.st | 2 +- .../instance/useTestDC.st | 2 +- .../methodProperties.json | 2 +- .../TCCChat.class/instance/addNewMessage..st | 2 +- .../instance/addNewestMessage..st | 5 ++++ .../{addMessage..st => addOldestMessage..st} | 4 +-- .../instance/ifNotWaitingForUpdate..st | 7 +++++ .../instance/ifWaitingForUpdate..st | 6 ----- .../TCCChat.class/instance/initialize.st | 2 +- .../TCCChat.class/methodProperties.json | 5 ++-- .../TCCChats.class/class/defaultSortBlock.st | 4 +++ .../TCCChats.class/class/new.st | 6 ----- .../class/newWithDefaultSorting.st | 4 +++ .../TCCChats.class/instance/initialize.st | 6 ----- .../TCCChats.class/instance/notify.st | 2 +- .../TCCChats.class/methodProperties.json | 4 +-- .../instance/addNewMessage..st | 2 +- .../instance/chatHistoryReceived..st | 4 +-- .../getChatHistoryFrom.with.limit..st | 4 +-- .../instance/getChats.st | 2 +- .../instance/handleNewMessage..st | 2 +- .../instance/searchChat..st | 2 +- .../instance/sendMessage.to..st | 2 +- .../instance/updateChatOrder..st | 2 +- .../instance/updateLastMessage..st | 2 +- .../methodProperties.json | 10 +++---- .../TCCCore.class/instance/authSucceeded.st | 2 +- .../instance/checkAuthenticationCode..st | 2 +- .../instance/getChatHistoryFrom..st | 2 +- .../TCCCore.class/instance/getOwnProfile.st | 2 +- .../TCCCore.class/instance/handleEvent..st | 2 +- .../TCCCore.class/instance/initialize.st | 2 +- .../TCCCore.class/instance/receiveLoop.st | 2 +- .../TCCCore.class/instance/searchChat..st | 2 +- .../TCCCore.class/instance/sendMessage.to..st | 2 +- .../instance/sendPhoneNumber..st | 2 +- .../TCCCore.class/instance/setUserID..st | 5 +--- .../TCCCore.class/instance/tryHandleError..st | 2 +- .../TCCCore.class/instance/update.st | 2 +- .../TCCCore.class/methodProperties.json | 4 +-- .../TCCFFIClient.class/class/moduleName.st | 8 +----- .../TCCFFIClient.class/instance/create.st | 2 +- .../instance/execute.with..st | 2 +- .../TCCFFIClient.class/instance/free..st | 2 +- .../instance/receive.with..st | 2 +- .../TCCFFIClient.class/instance/send.with..st | 2 +- .../instance/setLogLevel..st | 2 +- .../TCCFFIClient.class/methodProperties.json | 3 +-- .../class/newFromMessageEvent..st | 2 +- .../TCCRequest.class/instance/asString.st | 2 +- .../class/newForCurrentOS.st | 2 +- .../class/newWithClient..st | 2 +- .../TCCTeleClient.class/instance/execute..st | 2 +- .../TCCTeleClient.class/instance/free.st | 2 +- .../instance/initialize..st | 2 +- .../TCCTeleClient.class/instance/receive..st | 2 +- .../TCCTeleClient.class/instance/send..st | 2 +- .../class/downloadArchive.st | 5 ++-- .../class/moduleName.st | 10 +++++++ .../methodProperties.json | 4 ++- .../TCTChatTests.class/instance/setUp.st | 2 +- .../instance/testOrderInsert.st | 6 ++--- .../instance/testOrderModify.st | 8 +++--- .../TCTChatTests.class/methodProperties.json | 6 ++--- .../TCTFFIClientMock.class/instance/create.st | 2 +- .../TCTFFIClientMock.class/instance/free..st | 2 +- .../instance/classTestObjects..st | 2 +- .../instance/classTestObjects.st | 2 +- .../TCTLinterTests.class/instance/classes..st | 2 +- .../TCTLinterTests.class/instance/classes.st | 2 +- .../instance/initialize.st | 2 +- .../instance/isLineWithOnlyTabsAndSpaces..st | 2 +- .../instance/methodTestObjects.st | 2 +- .../instance/methodsLinesDo..st | 2 +- ...reamble.uipackage.nativeResourceFolder..st | 26 ++++++++----------- .../instance/streamForPackage.inZip..st | 3 +-- .../instance/testCreateSarFile.st | 19 +++++++------- .../instance/versionForWorkingCopy..st | 13 +++++----- .../methodProperties.json | 8 +++--- .../instance/fetchClasses..st | 2 +- .../initializeForClasses.test.plugIn..st | 2 +- .../instance/loadTest.plugIn..st | 2 +- .../instance/systemClasses..st | 2 +- .../class/newWithCore..st | 2 +- .../instance/addHeader.st | 2 +- .../instance/addTitle.to..st | 2 +- .../instance/buttonBackPressed.st | 2 +- .../instance/buttonNextPressed.st | 2 +- .../instance/buttonVerifyPressed.st | 2 +- .../TCUAuthentication.class/instance/core..st | 2 +- .../TCUAuthentication.class/instance/core.st | 2 +- .../instance/delete.st | 2 +- .../instance/logInCompleted.st | 2 +- .../instance/showFirstStep.st | 2 +- .../instance/showLoadingMessage.st | 2 +- .../instance/showSecondStep.st | 2 +- .../instance/subscribeCore.st | 2 +- .../class/newWithChat.width..st | 2 +- .../instance/addBorder.st | 2 +- .../instance/addLastMessage.st | 2 +- .../instance/addTitle.st | 2 +- .../TCUChatListItem.class/instance/chat..st | 2 +- .../TCUChatListItem.class/instance/chat.st | 2 +- .../TCUChatListItem.class/instance/chatID.st | 2 +- .../instance/deselect.st | 2 +- .../instance/lastMessageOffset.st | 2 +- .../instance/messageMarginTop.st | 2 +- .../instance/messagePreviewLength.st | 2 +- .../TCUChatListItem.class/instance/select.st | 2 +- .../instance/titleLength.st | 2 +- .../instance/titleOffset.st | 2 +- .../instance/addMessageAtBottom..st | 2 +- .../instance/addMessages.st | 2 +- .../instance/clearMessages.st | 2 +- .../instance/displayChat..st | 2 +- .../instance/handleMouseWheel..st | 2 +- .../instance/scrollDown.st | 2 +- .../instance/scrollUp.st | 2 +- .../class/newWithHeight.width..st | 2 +- .../instance/addInputBar.st | 2 +- .../instance/addMessageWindow.st | 2 +- .../instance/addSendButton.st | 2 +- .../instance/addTextInputField.st | 2 +- .../instance/addWelcomeMessage.st | 2 +- .../instance/buttonSendPressed.st | 2 +- .../TCUChatWindow.class/instance/clear.st | 2 +- .../instance/createInputBar.st | 2 +- .../instance/defaultInputfieldHeight.st | 2 +- .../instance/newChatSelected..st | 2 +- .../instance/selectedChat..st | 2 +- .../instance/selectedChat.st | 2 +- .../instance/showChatMessagesFrom..st | 2 +- .../instance/chatItemClicked.event.from..st | 2 +- .../TCUChatsList.class/instance/clearItems.st | 2 +- .../instance/createChatListItem..st | 2 +- .../instance/defaultWidth.st | 2 +- .../instance/handleMouseWheel..st | 2 +- .../instance/openNewChat..st | 2 +- .../instance/redrawItems.st | 5 ++-- .../TCUChatsList.class/instance/scrollDown.st | 2 +- .../TCUChatsList.class/instance/scrollUp.st | 2 +- .../TCUChatsList.class/methodProperties.json | 2 +- .../TCUMain.class/class/core..st | 2 +- .../TCUMain.class/class/core.st | 2 +- .../TCUMain.class/class/newWithCore..st | 2 +- .../TCUMain.class/instance/addChatsList.st | 2 +- .../addCloseButtonTo.withSpacing.deletes..st | 2 +- .../TCUMain.class/instance/addHeader.st | 2 +- .../instance/addInputFieldTo.withSpacing..st | 2 +- .../addLogoutButtonTo.withSpacing..st | 2 +- .../addNewChatButtonTo.withSpacing..st | 2 +- .../TCUMain.class/instance/addTitle.to..st | 2 +- .../instance/createHeaderMorph.st | 2 +- .../TCUMain.class/instance/defaultExtent.st | 2 +- .../instance/defaultHeaderHeight.st | 2 +- .../TCUMain.class/instance/delete.st | 2 +- .../instance/getChatHistoryFrom..st | 2 +- .../TCUMain.class/instance/logout.st | 2 +- .../instance/newChatButtonClicked.st | 2 +- .../instance/newChatSelected..st | 2 +- .../instance/newMessageReceived..st | 2 +- .../TCUMain.class/instance/sendMessage..st | 2 +- .../instance/subscribeChatsList.st | 2 +- .../TCUMessage.class/instance/addText.st | 10 ++++--- .../instance/defaultHeight.st | 2 +- .../instance/defaultMargin.st | 2 +- .../instance/defaultMinTextLength.st | 2 +- .../instance/defaultTextMargins.st | 2 +- .../TCUMessage.class/instance/defaultWidth.st | 2 +- .../TCUMessage.class/instance/initialize.st | 2 +- .../TCUMessage.class/methodProperties.json | 2 +- .../TCUModal.class/instance/defaultHeight.st | 2 +- .../TCUModal.class/instance/defaultWidth.st | 2 +- .../TCUModal.class/instance/setColor.st | 2 +- .../TCUModal.class/instance/setText.st | 2 +- .../class/newWithMessage..st | 2 +- .../instance/addTextLabel.st | 2 +- .../instance/defaultHeight.st | 2 +- .../instance/defaultOffset.st | 2 +- .../instance/defaultWidth.st | 2 +- .../instance/startTimeOut.st | 2 +- .../TCUTelegram.class/class/initialize.st | 4 +++ .../TCUTelegram.class/class/newWithCore..st | 1 - .../class/registerInWorldMenu.st | 2 +- .../TCUTelegram.class/instance/initialize.st | 2 +- .../TCUTelegram.class/methodProperties.json | 5 ++-- 194 files changed, 274 insertions(+), 277 deletions(-) create mode 100644 packages/TelegramClient-Core.package/TCCChat.class/instance/addNewestMessage..st rename packages/TelegramClient-Core.package/TCCChat.class/instance/{addMessage..st => addOldestMessage..st} (69%) create mode 100644 packages/TelegramClient-Core.package/TCCChat.class/instance/ifNotWaitingForUpdate..st delete mode 100644 packages/TelegramClient-Core.package/TCCChat.class/instance/ifWaitingForUpdate..st create mode 100644 packages/TelegramClient-Core.package/TCCChats.class/class/defaultSortBlock.st delete mode 100644 packages/TelegramClient-Core.package/TCCChats.class/class/new.st create mode 100644 packages/TelegramClient-Core.package/TCCChats.class/class/newWithDefaultSorting.st delete mode 100644 packages/TelegramClient-Core.package/TCCChats.class/instance/initialize.st rename packages/TelegramClient-Core.package/{TCCFFIClient.class => TCCWindowsClient.class}/class/downloadArchive.st (75%) create mode 100644 packages/TelegramClient-Core.package/TCCWindowsClient.class/class/moduleName.st create mode 100644 packages/TelegramClient-UI.package/TCUTelegram.class/class/initialize.st diff --git a/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/apiHash.st b/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/apiHash.st index 91a8de315..4f78ac54a 100644 --- a/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/apiHash.st +++ b/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/apiHash.st @@ -1,4 +1,4 @@ -initialize +default values apiHash ^ 'a3406de8d171bb422bb6ddf3bbd800e2' \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/apiID.st b/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/apiID.st index 08ce06571..1deff4243 100644 --- a/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/apiID.st +++ b/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/apiID.st @@ -1,4 +1,4 @@ -initialize +default values apiID ^ '94575' \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/checkAuthenticationCode..st b/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/checkAuthenticationCode..st index be5562286..caae56981 100644 --- a/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/checkAuthenticationCode..st +++ b/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/checkAuthenticationCode..st @@ -1,4 +1,4 @@ -accessing +library calls checkAuthenticationCode: aString self client send: (TCCRequest diff --git a/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/handleEvent..st b/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/handleEvent..st index 2ae1f6a98..b4da328ff 100644 --- a/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/handleEvent..st +++ b/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/handleEvent..st @@ -1,16 +1,11 @@ -accessing +event handling handleEvent: anEvent self authState: ((anEvent at: 'authorization_state') at: '@type'). - - self isAuthStateClosed ifTrue: [self client free]. + self isAuthStateClosed ifTrue: [self client free]. self isAwaitingTDLibParams ifTrue: [self setTDLibParams]. - self isAwaitingDBEncryptionKey ifTrue: [self setDBEncryptionKey: '']. - self isAwaitingPhoneNumber ifTrue: [^ #awaitPhoneNumber]. - self isAwaitingAuthCode ifTrue: [^ #awaitAuthCode]. - self isAuthorizationStateReady ifTrue: [^ self app authSucceeded]. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/isAuthorizationStateReady.st b/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/isAuthorizationStateReady.st index e35b02cb0..890173a67 100644 --- a/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/isAuthorizationStateReady.st +++ b/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/isAuthorizationStateReady.st @@ -1,4 +1,4 @@ -initialize +accessing isAuthorizationStateReady ^ self authState = 'authorizationStateReady' \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/logout.st b/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/logout.st index 72e55ea70..c7ffff23d 100644 --- a/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/logout.st +++ b/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/logout.st @@ -1,4 +1,4 @@ -accessing +library calls logout self client send: (TCCRequest diff --git a/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/sendPhoneNumber..st b/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/sendPhoneNumber..st index 2b918f923..5c453e865 100644 --- a/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/sendPhoneNumber..st +++ b/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/sendPhoneNumber..st @@ -1,4 +1,4 @@ -accessing +library calls sendPhoneNumber: aNumber self client send: (TCCRequest diff --git a/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/setDBEncryptionKey..st b/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/setDBEncryptionKey..st index 65969223f..be762792f 100644 --- a/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/setDBEncryptionKey..st +++ b/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/setDBEncryptionKey..st @@ -1,4 +1,4 @@ -accessing +library calls setDBEncryptionKey: aString self client send: (TCCRequest diff --git a/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/setTDLibParams.st b/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/setTDLibParams.st index aee9af99e..359fc07ec 100644 --- a/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/setTDLibParams.st +++ b/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/setTDLibParams.st @@ -1,4 +1,4 @@ -accessing +library calls setTDLibParams self client send: (TCCRequest diff --git a/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/useTestDC.st b/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/useTestDC.st index 79c3029af..06527e7df 100644 --- a/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/useTestDC.st +++ b/packages/TelegramClient-Core.package/TCCAuthHandler.class/instance/useTestDC.st @@ -1,4 +1,4 @@ -initialize +default values useTestDC ^ false \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCAuthHandler.class/methodProperties.json b/packages/TelegramClient-Core.package/TCCAuthHandler.class/methodProperties.json index e560114eb..55cda3e16 100644 --- a/packages/TelegramClient-Core.package/TCCAuthHandler.class/methodProperties.json +++ b/packages/TelegramClient-Core.package/TCCAuthHandler.class/methodProperties.json @@ -10,7 +10,7 @@ "authState:" : "R.S 5/18/2020 17:54", "checkAuthenticationCode:" : "js 6/13/2020 18:31", "client" : "js 5/28/2020 18:36", - "handleEvent:" : "r.s 7/31/2020 14:47", + "handleEvent:" : "js 8/2/2020 12:54", "initialize" : "r.s 7/13/2020 18:15", "isAuthStateClosed" : "r.s 7/15/2020 12:17", "isAuthorizationStateReady" : "r.s 7/15/2020 12:17", diff --git a/packages/TelegramClient-Core.package/TCCChat.class/instance/addNewMessage..st b/packages/TelegramClient-Core.package/TCCChat.class/instance/addNewMessage..st index f02e92a10..4d46aa5a7 100644 --- a/packages/TelegramClient-Core.package/TCCChat.class/instance/addNewMessage..st +++ b/packages/TelegramClient-Core.package/TCCChat.class/instance/addNewMessage..st @@ -1,4 +1,4 @@ -accessing +adding addNewMessage: aMessage self messages add: aMessage afterIndex: 1. diff --git a/packages/TelegramClient-Core.package/TCCChat.class/instance/addNewestMessage..st b/packages/TelegramClient-Core.package/TCCChat.class/instance/addNewestMessage..st new file mode 100644 index 000000000..2b670619a --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCChat.class/instance/addNewestMessage..st @@ -0,0 +1,5 @@ +adding +addNewestMessage: aMessage + + self messages add: aMessage afterIndex: 1. + self triggerEvent: #newMessage with: aMessage. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCChat.class/instance/addMessage..st b/packages/TelegramClient-Core.package/TCCChat.class/instance/addOldestMessage..st similarity index 69% rename from packages/TelegramClient-Core.package/TCCChat.class/instance/addMessage..st rename to packages/TelegramClient-Core.package/TCCChat.class/instance/addOldestMessage..st index 5eb3fe944..0745f89f8 100644 --- a/packages/TelegramClient-Core.package/TCCChat.class/instance/addMessage..st +++ b/packages/TelegramClient-Core.package/TCCChat.class/instance/addOldestMessage..st @@ -1,5 +1,5 @@ -accessing -addMessage: aMessage +adding +addOldestMessage: aMessage self messages add: aMessage. self triggerEvent: #newMessage with: aMessage. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCChat.class/instance/ifNotWaitingForUpdate..st b/packages/TelegramClient-Core.package/TCCChat.class/instance/ifNotWaitingForUpdate..st new file mode 100644 index 000000000..57299242f --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCChat.class/instance/ifNotWaitingForUpdate..st @@ -0,0 +1,7 @@ +controlling +ifNotWaitingForUpdate: aBlock + + self waitingForUpdate ifTrue: [^ self]. + + self waitingForUpdate: true. + aBlock value. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCChat.class/instance/ifWaitingForUpdate..st b/packages/TelegramClient-Core.package/TCCChat.class/instance/ifWaitingForUpdate..st deleted file mode 100644 index 6df011ef0..000000000 --- a/packages/TelegramClient-Core.package/TCCChat.class/instance/ifWaitingForUpdate..st +++ /dev/null @@ -1,6 +0,0 @@ -accessing -ifWaitingForUpdate: aBlock - - self waitingForUpdate ifFalse: [ - self waitingForUpdate: true. - aBlock value]. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCChat.class/instance/initialize.st b/packages/TelegramClient-Core.package/TCCChat.class/instance/initialize.st index e74ae6c2a..cd210c092 100644 --- a/packages/TelegramClient-Core.package/TCCChat.class/instance/initialize.st +++ b/packages/TelegramClient-Core.package/TCCChat.class/instance/initialize.st @@ -1,4 +1,4 @@ -accessing +initialization initialize self diff --git a/packages/TelegramClient-Core.package/TCCChat.class/methodProperties.json b/packages/TelegramClient-Core.package/TCCChat.class/methodProperties.json index 4646dbe3e..b0ae0fca0 100644 --- a/packages/TelegramClient-Core.package/TCCChat.class/methodProperties.json +++ b/packages/TelegramClient-Core.package/TCCChat.class/methodProperties.json @@ -2,12 +2,13 @@ "class" : { }, "instance" : { - "addMessage:" : "js 7/31/2020 16:42", "addNewMessage:" : "js 8/1/2020 17:59", + "addNewestMessage:" : "js 8/2/2020 12:58", + "addOldestMessage:" : "js 8/2/2020 12:58", "defaultNumberOfRequestedMessages" : "js 8/1/2020 18:52", "id" : "rs 6/7/2020 22:20", "id:" : "rs 6/7/2020 22:20", - "ifWaitingForUpdate:" : "js 8/1/2020 17:07", + "ifNotWaitingForUpdate:" : "js 8/2/2020 13:17", "initialize" : "js 8/1/2020 18:51", "lastMessage" : "rs 6/19/2020 17:33", "lastMessage:" : "rs 6/19/2020 17:33", diff --git a/packages/TelegramClient-Core.package/TCCChats.class/class/defaultSortBlock.st b/packages/TelegramClient-Core.package/TCCChats.class/class/defaultSortBlock.st new file mode 100644 index 000000000..0dbd1d5d8 --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCChats.class/class/defaultSortBlock.st @@ -0,0 +1,4 @@ +instance creation +defaultSortBlock + + ^ [:aChat :anotherChat | aChat order <= anotherChat order] \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCChats.class/class/new.st b/packages/TelegramClient-Core.package/TCCChats.class/class/new.st deleted file mode 100644 index c8f4cc4ee..000000000 --- a/packages/TelegramClient-Core.package/TCCChats.class/class/new.st +++ /dev/null @@ -1,6 +0,0 @@ -instance creation -new - - ^ super new - initialize; - yourself \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCChats.class/class/newWithDefaultSorting.st b/packages/TelegramClient-Core.package/TCCChats.class/class/newWithDefaultSorting.st new file mode 100644 index 000000000..b52493f0b --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCChats.class/class/newWithDefaultSorting.st @@ -0,0 +1,4 @@ +instance creation +newWithDefaultSorting + + ^ self sortBlock: self defaultSortBlock \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCChats.class/instance/initialize.st b/packages/TelegramClient-Core.package/TCCChats.class/instance/initialize.st deleted file mode 100644 index 52101c4ea..000000000 --- a/packages/TelegramClient-Core.package/TCCChats.class/instance/initialize.st +++ /dev/null @@ -1,6 +0,0 @@ -initialize-release -initialize - - super initialize. - - self sortBlock: [:aChat :anotherChat | aChat order >= anotherChat order] \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCChats.class/instance/notify.st b/packages/TelegramClient-Core.package/TCCChats.class/instance/notify.st index e2f2da267..d395cdb60 100644 --- a/packages/TelegramClient-Core.package/TCCChats.class/instance/notify.st +++ b/packages/TelegramClient-Core.package/TCCChats.class/instance/notify.st @@ -1,4 +1,4 @@ -initialize-release +events notify self diff --git a/packages/TelegramClient-Core.package/TCCChats.class/methodProperties.json b/packages/TelegramClient-Core.package/TCCChats.class/methodProperties.json index b49ca805c..62db0c04c 100644 --- a/packages/TelegramClient-Core.package/TCCChats.class/methodProperties.json +++ b/packages/TelegramClient-Core.package/TCCChats.class/methodProperties.json @@ -1,7 +1,7 @@ { "class" : { - "new" : "rs 6/6/2020 17:58" }, + "defaultSortBlock" : "js 8/2/2020 13:29", + "newWithDefaultSorting" : "js 8/2/2020 13:29" }, "instance" : { "getChat:" : "rs 6/19/2020 17:13", - "initialize" : "LL 7/31/2020 15:55", "notify" : "js 7/31/2020 14:47" } } diff --git a/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/addNewMessage..st b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/addNewMessage..st index fefd85ed7..1cac69e66 100644 --- a/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/addNewMessage..st +++ b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/addNewMessage..st @@ -5,5 +5,5 @@ addNewMessage: aMessage message := TCCMessage newFromMessageEvent: aMessage. - (self app chats getChat: message chatID) addNewMessage: message. + (self app chats getChat: message chatID) addNewestMessage: message. self app triggerEvent: #newMessageReceived with: message. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/chatHistoryReceived..st b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/chatHistoryReceived..st index cdb9a2bfa..6187050b3 100644 --- a/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/chatHistoryReceived..st +++ b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/chatHistoryReceived..st @@ -1,4 +1,4 @@ -events +event handling chatHistoryReceived: aChatHistory | chat chatID | @@ -7,7 +7,7 @@ chatHistoryReceived: aChatHistory chatID := (aChatHistory at: 'messages') first at: 'chat_id'. chat := self app chats getChat: chatID. - (aChatHistory at: 'messages') do: [:message | chat addMessage: (TCCMessage newFromMessageEvent: message)]. + (aChatHistory at: 'messages') do: [:message | chat addOldestMessage: (TCCMessage newFromMessageEvent: message)]. chat waitingForUpdate: false. diff --git a/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/getChatHistoryFrom.with.limit..st b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/getChatHistoryFrom.with.limit..st index bfc9bb8df..929f8134b 100644 --- a/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/getChatHistoryFrom.with.limit..st +++ b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/getChatHistoryFrom.with.limit..st @@ -1,10 +1,10 @@ -accessing +library calls getChatHistoryFrom: aChatID with: aMessageId limit: aLimit | chat | chat := self app chats getChat: aChatID. - chat ifWaitingForUpdate: [ + chat ifNotWaitingForUpdate: [ self client send: (TCCRequest newWithType: 'getChatHistory' from: {'chat_id' -> aChatID. diff --git a/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/getChats.st b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/getChats.st index 0816df321..479754f74 100644 --- a/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/getChats.st +++ b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/getChats.st @@ -1,4 +1,4 @@ -accessing +library calls getChats self client send: (TCCRequest diff --git a/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/handleNewMessage..st b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/handleNewMessage..st index 0f5dadd07..6353d997c 100644 --- a/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/handleNewMessage..st +++ b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/handleNewMessage..st @@ -1,4 +1,4 @@ -events +event handling handleNewMessage: anEvent | message | diff --git a/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/searchChat..st b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/searchChat..st index ed0865355..cd95e9c47 100644 --- a/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/searchChat..st +++ b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/searchChat..st @@ -1,4 +1,4 @@ -accessing +library calls searchChat: aUsername self client send: (TCCRequest diff --git a/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/sendMessage.to..st b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/sendMessage.to..st index 87007a5a7..7468c617a 100644 --- a/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/sendMessage.to..st +++ b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/sendMessage.to..st @@ -1,4 +1,4 @@ -accessing +library calls sendMessage: aString to: aChatID self client send: (TCCRequest diff --git a/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/updateChatOrder..st b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/updateChatOrder..st index 146be5779..4ead35669 100644 --- a/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/updateChatOrder..st +++ b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/updateChatOrder..st @@ -1,4 +1,4 @@ -events +event handling updateChatOrder: anEvent (self app chats getChat: (anEvent at: 'chat_id')) diff --git a/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/updateLastMessage..st b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/updateLastMessage..st index d42189362..44e3ad1cc 100644 --- a/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/updateLastMessage..st +++ b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/updateLastMessage..st @@ -1,4 +1,4 @@ -events +event handling updateLastMessage: anEvent | content chat | diff --git a/packages/TelegramClient-Core.package/TCCChatsHandler.class/methodProperties.json b/packages/TelegramClient-Core.package/TCCChatsHandler.class/methodProperties.json index 03f42262c..dc9f0648e 100644 --- a/packages/TelegramClient-Core.package/TCCChatsHandler.class/methodProperties.json +++ b/packages/TelegramClient-Core.package/TCCChatsHandler.class/methodProperties.json @@ -2,16 +2,16 @@ "class" : { }, "instance" : { - "addChat:" : "js 8/1/2020 12:07", - "addNewMessage:" : "js 8/1/2020 17:35", + "addChat:" : "js 8/2/2020 13:33", + "addNewMessage:" : "js 8/2/2020 12:58", "app" : "js 6/1/2020 14:44", "app:" : "js 6/1/2020 14:45", - "chatHistoryReceived:" : "js 8/1/2020 18:19", + "chatHistoryReceived:" : "js 8/2/2020 12:58", "client" : "js 6/1/2020 14:44", "defaultMessageLimit" : "js 8/1/2020 18:24", - "getChatHistoryFrom:with:limit:" : "js 8/1/2020 18:04", + "getChatHistoryFrom:with:limit:" : "js 8/2/2020 13:17", "getChats" : "js 7/31/2020 22:50", - "handleNewMessage:" : "js 7/31/2020 14:54", + "handleNewMessage:" : "js 8/2/2020 12:58", "openNewChat:" : "j 7/16/2020 12:04", "remainingMessages" : "js 8/1/2020 16:49", "remainingMessages:" : "js 8/1/2020 16:50", diff --git a/packages/TelegramClient-Core.package/TCCCore.class/instance/authSucceeded.st b/packages/TelegramClient-Core.package/TCCCore.class/instance/authSucceeded.st index 93ddec7c2..481c6745a 100644 --- a/packages/TelegramClient-Core.package/TCCCore.class/instance/authSucceeded.st +++ b/packages/TelegramClient-Core.package/TCCCore.class/instance/authSucceeded.st @@ -1,4 +1,4 @@ -initialization +events authSucceeded self getOwnProfile. diff --git a/packages/TelegramClient-Core.package/TCCCore.class/instance/checkAuthenticationCode..st b/packages/TelegramClient-Core.package/TCCCore.class/instance/checkAuthenticationCode..st index 37675d345..8866d914c 100644 --- a/packages/TelegramClient-Core.package/TCCCore.class/instance/checkAuthenticationCode..st +++ b/packages/TelegramClient-Core.package/TCCCore.class/instance/checkAuthenticationCode..st @@ -1,4 +1,4 @@ -accessing +handlers checkAuthenticationCode: aString self authHandler checkAuthenticationCode: aString. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCCore.class/instance/getChatHistoryFrom..st b/packages/TelegramClient-Core.package/TCCCore.class/instance/getChatHistoryFrom..st index 9e6f18108..c94ed4061 100644 --- a/packages/TelegramClient-Core.package/TCCCore.class/instance/getChatHistoryFrom..st +++ b/packages/TelegramClient-Core.package/TCCCore.class/instance/getChatHistoryFrom..st @@ -1,4 +1,4 @@ -accessing +handlers getChatHistoryFrom: aChatID self chatsHandler diff --git a/packages/TelegramClient-Core.package/TCCCore.class/instance/getOwnProfile.st b/packages/TelegramClient-Core.package/TCCCore.class/instance/getOwnProfile.st index cc06f7332..8d312a5ec 100644 --- a/packages/TelegramClient-Core.package/TCCCore.class/instance/getOwnProfile.st +++ b/packages/TelegramClient-Core.package/TCCCore.class/instance/getOwnProfile.st @@ -1,4 +1,4 @@ -initialization +events getOwnProfile self client send: (TCCRequest diff --git a/packages/TelegramClient-Core.package/TCCCore.class/instance/handleEvent..st b/packages/TelegramClient-Core.package/TCCCore.class/instance/handleEvent..st index 28b1f69b7..c7eb279c4 100644 --- a/packages/TelegramClient-Core.package/TCCCore.class/instance/handleEvent..st +++ b/packages/TelegramClient-Core.package/TCCCore.class/instance/handleEvent..st @@ -1,4 +1,4 @@ -accessing +event handling handleEvent: anEvent | update | diff --git a/packages/TelegramClient-Core.package/TCCCore.class/instance/initialize.st b/packages/TelegramClient-Core.package/TCCCore.class/instance/initialize.st index aad10ad63..4e2ef6da4 100644 --- a/packages/TelegramClient-Core.package/TCCCore.class/instance/initialize.st +++ b/packages/TelegramClient-Core.package/TCCCore.class/instance/initialize.st @@ -4,7 +4,7 @@ initialize self client: TCCTeleClient newForCurrentOS; initializeHandlers; - chats: TCCChats new; + chats: TCCChats newWithDefaultSorting; loggedInUserID: 0. [self receiveLoop] fork. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCCore.class/instance/receiveLoop.st b/packages/TelegramClient-Core.package/TCCCore.class/instance/receiveLoop.st index 18cc2b047..90977ca98 100644 --- a/packages/TelegramClient-Core.package/TCCCore.class/instance/receiveLoop.st +++ b/packages/TelegramClient-Core.package/TCCCore.class/instance/receiveLoop.st @@ -1,4 +1,4 @@ -accessing +events receiveLoop [self isClientAlive] whileTrue: [ diff --git a/packages/TelegramClient-Core.package/TCCCore.class/instance/searchChat..st b/packages/TelegramClient-Core.package/TCCCore.class/instance/searchChat..st index 3420da51b..cc53abc83 100644 --- a/packages/TelegramClient-Core.package/TCCCore.class/instance/searchChat..st +++ b/packages/TelegramClient-Core.package/TCCCore.class/instance/searchChat..st @@ -1,4 +1,4 @@ -accessing +handlers searchChat: aUsername self chatsHandler searchChat: aUsername. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCCore.class/instance/sendMessage.to..st b/packages/TelegramClient-Core.package/TCCCore.class/instance/sendMessage.to..st index 7dd397b52..a9837420b 100644 --- a/packages/TelegramClient-Core.package/TCCCore.class/instance/sendMessage.to..st +++ b/packages/TelegramClient-Core.package/TCCCore.class/instance/sendMessage.to..st @@ -1,4 +1,4 @@ -initialization +handlers sendMessage: aString to: aChatId self chatsHandler sendMessage: aString to: aChatId. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCCore.class/instance/sendPhoneNumber..st b/packages/TelegramClient-Core.package/TCCCore.class/instance/sendPhoneNumber..st index 33bf0cfa3..56d9a94a6 100644 --- a/packages/TelegramClient-Core.package/TCCCore.class/instance/sendPhoneNumber..st +++ b/packages/TelegramClient-Core.package/TCCCore.class/instance/sendPhoneNumber..st @@ -1,4 +1,4 @@ -accessing +handlers sendPhoneNumber: aString self authHandler sendPhoneNumber: aString. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCCore.class/instance/setUserID..st b/packages/TelegramClient-Core.package/TCCCore.class/instance/setUserID..st index f73407f42..4130172b2 100644 --- a/packages/TelegramClient-Core.package/TCCCore.class/instance/setUserID..st +++ b/packages/TelegramClient-Core.package/TCCCore.class/instance/setUserID..st @@ -1,7 +1,4 @@ accessing setUserID: anUser - | userID | - self loggedInUserID = 0 ifTrue: [ - userID := anUser at: 'id'. - self loggedInUserID: userID]. \ No newline at end of file + self loggedInUserID = 0 ifTrue: [self loggedInUserID: (anUser at: 'id')]. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCCore.class/instance/tryHandleError..st b/packages/TelegramClient-Core.package/TCCCore.class/instance/tryHandleError..st index cadcf335e..066e6dfcc 100644 --- a/packages/TelegramClient-Core.package/TCCCore.class/instance/tryHandleError..st +++ b/packages/TelegramClient-Core.package/TCCCore.class/instance/tryHandleError..st @@ -1,4 +1,4 @@ -errorhandling +error handling tryHandleError: anError (anError at: 'message') caseOf: { diff --git a/packages/TelegramClient-Core.package/TCCCore.class/instance/update.st b/packages/TelegramClient-Core.package/TCCCore.class/instance/update.st index 0b92f4514..c3c4283e0 100644 --- a/packages/TelegramClient-Core.package/TCCCore.class/instance/update.st +++ b/packages/TelegramClient-Core.package/TCCCore.class/instance/update.st @@ -1,4 +1,4 @@ -accessing +events update | event | diff --git a/packages/TelegramClient-Core.package/TCCCore.class/methodProperties.json b/packages/TelegramClient-Core.package/TCCCore.class/methodProperties.json index abbb9554f..551b675b8 100644 --- a/packages/TelegramClient-Core.package/TCCCore.class/methodProperties.json +++ b/packages/TelegramClient-Core.package/TCCCore.class/methodProperties.json @@ -15,7 +15,7 @@ "getChatHistoryFrom:" : "js 8/1/2020 18:19", "getOwnProfile" : "N.S. 7/31/2020 14:22", "handleEvent:" : "js 7/31/2020 22:34", - "initialize" : "js 8/2/2020 12:26", + "initialize" : "js 8/2/2020 13:28", "initializeHandlers" : "js 8/1/2020 18:09", "isClientAlive" : "js 5/28/2020 17:18", "loggedInUserID" : "rs 7/5/2020 14:48", @@ -24,6 +24,6 @@ "searchChat:" : "f.w. 7/15/2020 22:53", "sendMessage:to:" : "rs 6/13/2020 15:26", "sendPhoneNumber:" : "js 6/13/2020 15:35", - "setUserID:" : "N.S. 7/31/2020 14:23", + "setUserID:" : "js 8/2/2020 13:15", "tryHandleError:" : "js 7/31/2020 15:13", "update" : "js 7/31/2020 22:34" } } diff --git a/packages/TelegramClient-Core.package/TCCFFIClient.class/class/moduleName.st b/packages/TelegramClient-Core.package/TCCFFIClient.class/class/moduleName.st index d72d8fccc..1e12ba429 100644 --- a/packages/TelegramClient-Core.package/TCCFFIClient.class/class/moduleName.st +++ b/packages/TelegramClient-Core.package/TCCFFIClient.class/class/moduleName.st @@ -6,15 +6,9 @@ moduleName filePath := FileDirectory default / self fileName. filePath exists ifFalse: [ - - (Smalltalk platformName = 'Win32') - ifTrue: [ - self downloadArchive. - ] - ifFalse: [ FileStream fileNamed: filePath fullName do: [:stream | response := WebClient httpGet: self downloadUrl. stream binary; - nextPutAll: response content]].]. + nextPutAll: response content]]. ^ filePath fullName \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCFFIClient.class/instance/create.st b/packages/TelegramClient-Core.package/TCCFFIClient.class/instance/create.st index f3465cff5..73243e45d 100644 --- a/packages/TelegramClient-Core.package/TCCFFIClient.class/instance/create.st +++ b/packages/TelegramClient-Core.package/TCCFFIClient.class/instance/create.st @@ -1,4 +1,4 @@ -ExternalCalls +external calls create diff --git a/packages/TelegramClient-Core.package/TCCFFIClient.class/instance/execute.with..st b/packages/TelegramClient-Core.package/TCCFFIClient.class/instance/execute.with..st index 7b9b3722c..96ff1d302 100644 --- a/packages/TelegramClient-Core.package/TCCFFIClient.class/instance/execute.with..st +++ b/packages/TelegramClient-Core.package/TCCFFIClient.class/instance/execute.with..st @@ -1,4 +1,4 @@ -ExternalCalls +external calls execute: aHandle with: aMessage diff --git a/packages/TelegramClient-Core.package/TCCFFIClient.class/instance/free..st b/packages/TelegramClient-Core.package/TCCFFIClient.class/instance/free..st index 10fec14fa..e4134ec8c 100644 --- a/packages/TelegramClient-Core.package/TCCFFIClient.class/instance/free..st +++ b/packages/TelegramClient-Core.package/TCCFFIClient.class/instance/free..st @@ -1,4 +1,4 @@ -ExternalCalls +external calls free: aHandle diff --git a/packages/TelegramClient-Core.package/TCCFFIClient.class/instance/receive.with..st b/packages/TelegramClient-Core.package/TCCFFIClient.class/instance/receive.with..st index ef3909cf2..bbc371c8d 100644 --- a/packages/TelegramClient-Core.package/TCCFFIClient.class/instance/receive.with..st +++ b/packages/TelegramClient-Core.package/TCCFFIClient.class/instance/receive.with..st @@ -1,4 +1,4 @@ -ExternalCalls +external calls receive: aHandle with: aTimeout diff --git a/packages/TelegramClient-Core.package/TCCFFIClient.class/instance/send.with..st b/packages/TelegramClient-Core.package/TCCFFIClient.class/instance/send.with..st index 6643e9262..fb1756e03 100644 --- a/packages/TelegramClient-Core.package/TCCFFIClient.class/instance/send.with..st +++ b/packages/TelegramClient-Core.package/TCCFFIClient.class/instance/send.with..st @@ -1,4 +1,4 @@ -ExternalCalls +external calls send: aHandle with: aMessage diff --git a/packages/TelegramClient-Core.package/TCCFFIClient.class/instance/setLogLevel..st b/packages/TelegramClient-Core.package/TCCFFIClient.class/instance/setLogLevel..st index 30039e71b..43465dff4 100644 --- a/packages/TelegramClient-Core.package/TCCFFIClient.class/instance/setLogLevel..st +++ b/packages/TelegramClient-Core.package/TCCFFIClient.class/instance/setLogLevel..st @@ -1,4 +1,4 @@ -ExternalCalls +external calls setLogLevel: aLogLevel diff --git a/packages/TelegramClient-Core.package/TCCFFIClient.class/methodProperties.json b/packages/TelegramClient-Core.package/TCCFFIClient.class/methodProperties.json index f93b23e02..16c016b91 100644 --- a/packages/TelegramClient-Core.package/TCCFFIClient.class/methodProperties.json +++ b/packages/TelegramClient-Core.package/TCCFFIClient.class/methodProperties.json @@ -1,9 +1,8 @@ { "class" : { - "downloadArchive" : "N.S. 7/24/2020 09:15", "downloadUrl" : "r.s 7/13/2020 17:05", "fileName" : "r.s 7/13/2020 17:05", - "moduleName" : "N.S. 7/24/2020 09:15" }, + "moduleName" : "js 8/2/2020 13:21" }, "instance" : { "create" : "js 6/13/2020 12:53", "execute:with:" : "js 6/13/2020 18:33", diff --git a/packages/TelegramClient-Core.package/TCCMessage.class/class/newFromMessageEvent..st b/packages/TelegramClient-Core.package/TCCMessage.class/class/newFromMessageEvent..st index a2111f91a..650093df2 100644 --- a/packages/TelegramClient-Core.package/TCCMessage.class/class/newFromMessageEvent..st +++ b/packages/TelegramClient-Core.package/TCCMessage.class/class/newFromMessageEvent..st @@ -1,4 +1,4 @@ -as yet unclassified +instance creation newFromMessageEvent: aMessageEvent ^ self new diff --git a/packages/TelegramClient-Core.package/TCCRequest.class/instance/asString.st b/packages/TelegramClient-Core.package/TCCRequest.class/instance/asString.st index aa9c30f8b..ebfcc3f64 100644 --- a/packages/TelegramClient-Core.package/TCCRequest.class/instance/asString.st +++ b/packages/TelegramClient-Core.package/TCCRequest.class/instance/asString.st @@ -1,4 +1,4 @@ -accessing +converting asString | aStream | diff --git a/packages/TelegramClient-Core.package/TCCTeleClient.class/class/newForCurrentOS.st b/packages/TelegramClient-Core.package/TCCTeleClient.class/class/newForCurrentOS.st index 295b89e8b..151c6b10a 100644 --- a/packages/TelegramClient-Core.package/TCCTeleClient.class/class/newForCurrentOS.st +++ b/packages/TelegramClient-Core.package/TCCTeleClient.class/class/newForCurrentOS.st @@ -1,4 +1,4 @@ -creation +instance creation newForCurrentOS | client | diff --git a/packages/TelegramClient-Core.package/TCCTeleClient.class/class/newWithClient..st b/packages/TelegramClient-Core.package/TCCTeleClient.class/class/newWithClient..st index 965331ca6..a58fac2f9 100644 --- a/packages/TelegramClient-Core.package/TCCTeleClient.class/class/newWithClient..st +++ b/packages/TelegramClient-Core.package/TCCTeleClient.class/class/newWithClient..st @@ -1,4 +1,4 @@ -creation +instance creation newWithClient: aClient ^ self new diff --git a/packages/TelegramClient-Core.package/TCCTeleClient.class/instance/execute..st b/packages/TelegramClient-Core.package/TCCTeleClient.class/instance/execute..st index 924420f78..f3536103e 100644 --- a/packages/TelegramClient-Core.package/TCCTeleClient.class/instance/execute..st +++ b/packages/TelegramClient-Core.package/TCCTeleClient.class/instance/execute..st @@ -1,4 +1,4 @@ -accessing +library calls execute: aMessage ^ self specificClient execute: self handle with: aMessage \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCTeleClient.class/instance/free.st b/packages/TelegramClient-Core.package/TCCTeleClient.class/instance/free.st index 8989e1d3e..293ce6817 100644 --- a/packages/TelegramClient-Core.package/TCCTeleClient.class/instance/free.st +++ b/packages/TelegramClient-Core.package/TCCTeleClient.class/instance/free.st @@ -1,4 +1,4 @@ -accessing +library calls free self specificClient free: self handle. diff --git a/packages/TelegramClient-Core.package/TCCTeleClient.class/instance/initialize..st b/packages/TelegramClient-Core.package/TCCTeleClient.class/instance/initialize..st index f2a510061..4d1e2a0d0 100644 --- a/packages/TelegramClient-Core.package/TCCTeleClient.class/instance/initialize..st +++ b/packages/TelegramClient-Core.package/TCCTeleClient.class/instance/initialize..st @@ -1,4 +1,4 @@ -initialize-release +initialization initialize: anActualClient self specificClient: anActualClient. diff --git a/packages/TelegramClient-Core.package/TCCTeleClient.class/instance/receive..st b/packages/TelegramClient-Core.package/TCCTeleClient.class/instance/receive..st index ed0acd028..6ee78d3e3 100644 --- a/packages/TelegramClient-Core.package/TCCTeleClient.class/instance/receive..st +++ b/packages/TelegramClient-Core.package/TCCTeleClient.class/instance/receive..st @@ -1,4 +1,4 @@ -initialize-release +library calls receive: aTimeoutNumber | event | diff --git a/packages/TelegramClient-Core.package/TCCTeleClient.class/instance/send..st b/packages/TelegramClient-Core.package/TCCTeleClient.class/instance/send..st index b9476481c..8a6da480c 100644 --- a/packages/TelegramClient-Core.package/TCCTeleClient.class/instance/send..st +++ b/packages/TelegramClient-Core.package/TCCTeleClient.class/instance/send..st @@ -1,4 +1,4 @@ -accessing +library calls send: aRequest self specificClient send: self handle with: aRequest asString. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCFFIClient.class/class/downloadArchive.st b/packages/TelegramClient-Core.package/TCCWindowsClient.class/class/downloadArchive.st similarity index 75% rename from packages/TelegramClient-Core.package/TCCFFIClient.class/class/downloadArchive.st rename to packages/TelegramClient-Core.package/TCCWindowsClient.class/class/downloadArchive.st index 9962cbd69..e92a84887 100644 --- a/packages/TelegramClient-Core.package/TCCFFIClient.class/class/downloadArchive.st +++ b/packages/TelegramClient-Core.package/TCCWindowsClient.class/class/downloadArchive.st @@ -1,12 +1,11 @@ helper downloadArchive - "downloads the link as an archive as is needed for windows" | intermediatePath archive response | intermediatePath := FileDirectory default / 'archive.zip'. FileStream fileNamed: intermediatePath fullName do: [:stream | - response := WebClient httpGet: self downloadUrl. - stream + response := WebClient httpGet: self downloadUrl. + stream binary; nextPutAll: response content]. archive := ZipArchive new readFrom: (intermediatePath fullName). diff --git a/packages/TelegramClient-Core.package/TCCWindowsClient.class/class/moduleName.st b/packages/TelegramClient-Core.package/TCCWindowsClient.class/class/moduleName.st new file mode 100644 index 000000000..b841d6680 --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCWindowsClient.class/class/moduleName.st @@ -0,0 +1,10 @@ +accessing +moduleName + + | filePath | + + filePath := FileDirectory default / self fileName. + + filePath exists ifFalse: [self downloadArchive]. + + ^ filePath fullName \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCWindowsClient.class/methodProperties.json b/packages/TelegramClient-Core.package/TCCWindowsClient.class/methodProperties.json index d0b832893..0c2a3b502 100644 --- a/packages/TelegramClient-Core.package/TCCWindowsClient.class/methodProperties.json +++ b/packages/TelegramClient-Core.package/TCCWindowsClient.class/methodProperties.json @@ -1,6 +1,8 @@ { "class" : { + "downloadArchive" : "js 8/2/2020 13:23", "downloadUrl" : "N.S. 7/23/2020 12:45", - "fileName" : "f.w. 7/15/2020 22:04" }, + "fileName" : "f.w. 7/15/2020 22:04", + "moduleName" : "js 8/2/2020 13:21" }, "instance" : { "type" : "r.s 7/13/2020 17:31" } } diff --git a/packages/TelegramClient-Tests.package/TCTChatTests.class/instance/setUp.st b/packages/TelegramClient-Tests.package/TCTChatTests.class/instance/setUp.st index 4cdb48094..c2ca84f8a 100644 --- a/packages/TelegramClient-Tests.package/TCTChatTests.class/instance/setUp.st +++ b/packages/TelegramClient-Tests.package/TCTChatTests.class/instance/setUp.st @@ -1,7 +1,7 @@ running setUp - self chats: TCCChats new. + self chats: TCCChats newWithDefaultSorting. 1 to: 3 do: [:aNumber | self chats add: (TCCChat new id: aNumber; order: aNumber)]. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTChatTests.class/instance/testOrderInsert.st b/packages/TelegramClient-Tests.package/TCTChatTests.class/instance/testOrderInsert.st index 95160de1c..4ea1f5fa4 100644 --- a/packages/TelegramClient-Tests.package/TCTChatTests.class/instance/testOrderInsert.st +++ b/packages/TelegramClient-Tests.package/TCTChatTests.class/instance/testOrderInsert.st @@ -2,7 +2,7 @@ testing testOrderInsert self chats add: (TCCChat new - id: 4; - order: 4). + id: 0; + order: 0). - self assert: (self chats first id = 4). \ No newline at end of file + self assert: self chats first id equals: 0. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTChatTests.class/instance/testOrderModify.st b/packages/TelegramClient-Tests.package/TCTChatTests.class/instance/testOrderModify.st index cc214de09..81a966e20 100644 --- a/packages/TelegramClient-Tests.package/TCTChatTests.class/instance/testOrderModify.st +++ b/packages/TelegramClient-Tests.package/TCTChatTests.class/instance/testOrderModify.st @@ -1,11 +1,11 @@ testing testOrderModify - | aChat | + | chat | - aChat := self chats last. - aChat order: 6. + chat := self chats first. + chat order: 6. self chats notify. - self assert: (self chats first id = 1). \ No newline at end of file + self assert: self chats last id equals: 1. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTChatTests.class/methodProperties.json b/packages/TelegramClient-Tests.package/TCTChatTests.class/methodProperties.json index fadd3e3a9..a79ec3ded 100644 --- a/packages/TelegramClient-Tests.package/TCTChatTests.class/methodProperties.json +++ b/packages/TelegramClient-Tests.package/TCTChatTests.class/methodProperties.json @@ -4,6 +4,6 @@ "instance" : { "chats" : "LL 7/31/2020 15:25", "chats:" : "js 7/31/2020 21:31", - "setUp" : "js 7/31/2020 21:31", - "testOrderInsert" : "js 7/31/2020 22:44", - "testOrderModify" : "js 7/31/2020 22:44" } } + "setUp" : "js 8/2/2020 14:43", + "testOrderInsert" : "js 8/2/2020 14:39", + "testOrderModify" : "js 8/2/2020 14:39" } } diff --git a/packages/TelegramClient-Tests.package/TCTFFIClientMock.class/instance/create.st b/packages/TelegramClient-Tests.package/TCTFFIClientMock.class/instance/create.st index bb3bd4732..e6bcf254f 100644 --- a/packages/TelegramClient-Tests.package/TCTFFIClientMock.class/instance/create.st +++ b/packages/TelegramClient-Tests.package/TCTFFIClientMock.class/instance/create.st @@ -1,4 +1,4 @@ -accessing +events create self setCreated. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTFFIClientMock.class/instance/free..st b/packages/TelegramClient-Tests.package/TCTFFIClientMock.class/instance/free..st index 6e92beffc..3ac9eeed9 100644 --- a/packages/TelegramClient-Tests.package/TCTFFIClientMock.class/instance/free..st +++ b/packages/TelegramClient-Tests.package/TCTFFIClientMock.class/instance/free..st @@ -1,4 +1,4 @@ -accessing +events free: aHandle self setFreed. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/classTestObjects..st b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/classTestObjects..st index f8b18648d..9a6bedcbe 100644 --- a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/classTestObjects..st +++ b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/classTestObjects..st @@ -1,4 +1,4 @@ -private +accessing classTestObjects: aCollection classTestObjects := aCollection. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/classTestObjects.st b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/classTestObjects.st index 5d3ccf7b8..363995218 100644 --- a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/classTestObjects.st +++ b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/classTestObjects.st @@ -1,4 +1,4 @@ -private +accessing classTestObjects ^ classTestObjects \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/classes..st b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/classes..st index d2e13a8c9..5588a6015 100644 --- a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/classes..st +++ b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/classes..st @@ -1,4 +1,4 @@ -private +accessing classes: aCollection classes := aCollection. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/classes.st b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/classes.st index c345ee62a..bf311ec77 100644 --- a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/classes.st +++ b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/classes.st @@ -1,4 +1,4 @@ -private +accessing classes ^ classes \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/initialize.st b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/initialize.st index e6dae7db5..0a8436190 100644 --- a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/initialize.st +++ b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/initialize.st @@ -1,4 +1,4 @@ -private +initialization initialize super initialize. diff --git a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/isLineWithOnlyTabsAndSpaces..st b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/isLineWithOnlyTabsAndSpaces..st index 1707cf86b..d709d9c17 100644 --- a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/isLineWithOnlyTabsAndSpaces..st +++ b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/isLineWithOnlyTabsAndSpaces..st @@ -1,4 +1,4 @@ -tests +private isLineWithOnlyTabsAndSpaces: aString ^ aString isEmpty or: [aString allSatisfy: [:aChar | aChar = Character space or: [aChar = Character tab]]] \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/methodTestObjects.st b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/methodTestObjects.st index bbebf9f64..c3c5e5284 100644 --- a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/methodTestObjects.st +++ b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/methodTestObjects.st @@ -1,4 +1,4 @@ -private +accessing methodTestObjects ^ (self classTestObjects collect: [:aClassTestObject | aClassTestObject methods]) flatten \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/methodsLinesDo..st b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/methodsLinesDo..st index 878e655db..29ccd3c02 100644 --- a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/methodsLinesDo..st +++ b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/methodsLinesDo..st @@ -1,4 +1,4 @@ -tests +private methodsLinesDo: aBlock self methodTestObjects do: [:aSLMethodTestObject | diff --git a/packages/TelegramClient-Tests.package/TCTSarFileGenerator.class/instance/generatePreamble.uipackage.nativeResourceFolder..st b/packages/TelegramClient-Tests.package/TCTSarFileGenerator.class/instance/generatePreamble.uipackage.nativeResourceFolder..st index e6e211b78..bec797e6e 100644 --- a/packages/TelegramClient-Tests.package/TCTSarFileGenerator.class/instance/generatePreamble.uipackage.nativeResourceFolder..st +++ b/packages/TelegramClient-Tests.package/TCTSarFileGenerator.class/instance/generatePreamble.uipackage.nativeResourceFolder..st @@ -1,17 +1,13 @@ helpers -generatePreamble: package uipackage: ui nativeResourceFolder: folder +generatePreamble: corePackage uipackage: uiPackage nativeResourceFolder: aFolder - "Returns the inteded filepath for the tdlib binaries" -^'| file destination | -self fileInMonticelloZipVersionNamed: -''' , package , '.mcz''.' ,' -file := ((Smalltalk platformName) startsWith: ''Win32'') -ifTrue: [''tdjson.dll'' ] -ifFalse: [(anOsName startsWith: ''Mac OS'') -ifTrue: [''libtdjson.1.6.0.dylib'' ] -ifFalse: [''libtdjson.so.1.6.0'' ]]. -destination := FileDirectory default. -self fileInMonticelloZipVersionNamed: -''' , ui , '.mcz''. -TCUTelegram registerOpenCommand. -(self membersMatching: (''' , folder , FileDirectory slash , ''',file)) do: [ :f | self extractMemberWithoutPath: f inDirectory: destination].' \ No newline at end of file + ^ ' + | file | + self fileInMonticelloZipVersionNamed: ''', corePackage, '.mcz''. + file := Smalltalk platformName caseOf: { + [''Win32''] -> [''tdjson.dll'']. + [''Mac OS''] -> [''libtdjson.1.6.0.dylib'']. + [''unix''] -> [''libtdjson.1.6.0.dylib'']}. + self fileInMonticelloZipVersionNamed: ''', uiPackage, '.mcz''. + TCUTelegram registerInWorldMenu. + (self membersMatching: (''', aFolder, FileDirectory slash, ''', file)) do: [:aFile | self extractMemberWithoutPath: aFile inDirectory: FileDirectory default].' \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTSarFileGenerator.class/instance/streamForPackage.inZip..st b/packages/TelegramClient-Tests.package/TCTSarFileGenerator.class/instance/streamForPackage.inZip..st index fa0952793..0cbc45d0c 100644 --- a/packages/TelegramClient-Tests.package/TCTSarFileGenerator.class/instance/streamForPackage.inZip..st +++ b/packages/TelegramClient-Tests.package/TCTSarFileGenerator.class/instance/streamForPackage.inZip..st @@ -1,9 +1,8 @@ helpers streamForPackage: aPackage inZip: aZip - "Adds a package to a zip file" - | mczStream workingCopy version | + mczStream := RWBinaryOrTextStream on: (String new: 10000). workingCopy := MCWorkingCopy forPackage: (MCPackage new name: aPackage). version := self versionForWorkingCopy: workingCopy. diff --git a/packages/TelegramClient-Tests.package/TCTSarFileGenerator.class/instance/testCreateSarFile.st b/packages/TelegramClient-Tests.package/TCTSarFileGenerator.class/instance/testCreateSarFile.st index cbf2221df..80ac8debe 100644 --- a/packages/TelegramClient-Tests.package/TCTSarFileGenerator.class/instance/testCreateSarFile.st +++ b/packages/TelegramClient-Tests.package/TCTSarFileGenerator.class/instance/testCreateSarFile.st @@ -1,16 +1,15 @@ -sar +testing testCreateSarFile - "Creates a release sar file" - | package ui zip folder | + | zip tdlibFolder corePackage uiPackage | - package := 'TelegramClient-Core'. - ui := 'TelegramClient-UI'. - folder := 'TDLib'. + corePackage := 'TelegramClient-Core'. + uiPackage := 'TelegramClient-UI'. + tdlibFolder := 'TDLib'. zip := ZipArchive new. - self streamForPackage: package inZip: zip. - self streamForPackage: ui inZip: zip. + self streamForPackage: corePackage inZip: zip. + self streamForPackage: uiPackage inZip: zip. zip addTree: Smalltalk imagePath match: [:e | e fullName startsWith: - Smalltalk imagePath , FileDirectory slash , folder]. - zip addString: (self generatePreamble: package uipackage: ui nativeResourceFolder: folder) as: 'install/preamble'. + Smalltalk imagePath , FileDirectory slash , tdlibFolder]. + zip addString: (self generatePreamble: corePackage uipackage: uiPackage nativeResourceFolder: tdlibFolder) as: 'install/preamble'. zip writeToFileNamed: 'TelegramClient.sar'. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTSarFileGenerator.class/instance/versionForWorkingCopy..st b/packages/TelegramClient-Tests.package/TCTSarFileGenerator.class/instance/versionForWorkingCopy..st index eae37cac1..4b4bd7487 100644 --- a/packages/TelegramClient-Tests.package/TCTSarFileGenerator.class/instance/versionForWorkingCopy..st +++ b/packages/TelegramClient-Tests.package/TCTSarFileGenerator.class/instance/versionForWorkingCopy..st @@ -1,13 +1,12 @@ helpers versionForWorkingCopy: aWorkingCopy - "Supresses the working copy dialogue and returns a version" - | version | - version := ''. "Needed for linter..." + + version := ''. [version := aWorkingCopy newVersion] on: MCVersionNameAndMessageRequest - do: [:n | - n patchBlock value. - n resume: (Array with: n suggestedName with: '' with: Set new)]. - ^version \ No newline at end of file + do: [:anObject | + anObject patchBlock value. + anObject resume: (Array with: anObject suggestedName with: '' with: Set new)]. + ^ version \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTSarFileGenerator.class/methodProperties.json b/packages/TelegramClient-Tests.package/TCTSarFileGenerator.class/methodProperties.json index fb32bd645..cd6af2a3d 100644 --- a/packages/TelegramClient-Tests.package/TCTSarFileGenerator.class/methodProperties.json +++ b/packages/TelegramClient-Tests.package/TCTSarFileGenerator.class/methodProperties.json @@ -2,7 +2,7 @@ "class" : { }, "instance" : { - "generatePreamble:uipackage:nativeResourceFolder:" : "N.S. 7/24/2020 10:23", - "streamForPackage:inZip:" : "N.S. 7/22/2020 18:14", - "testCreateSarFile" : "js 7/31/2020 19:18", - "versionForWorkingCopy:" : "N.S. 7/22/2020 18:28" } } + "generatePreamble:uipackage:nativeResourceFolder:" : "js 8/2/2020 14:26", + "streamForPackage:inZip:" : "js 8/2/2020 13:52", + "testCreateSarFile" : "js 8/2/2020 13:43", + "versionForWorkingCopy:" : "js 8/2/2020 13:52" } } diff --git a/packages/TelegramClient-Tests.package/TCTScopedEnvironment.class/instance/fetchClasses..st b/packages/TelegramClient-Tests.package/TCTScopedEnvironment.class/instance/fetchClasses..st index e95913ddd..bd80a84fb 100644 --- a/packages/TelegramClient-Tests.package/TCTScopedEnvironment.class/instance/fetchClasses..st +++ b/packages/TelegramClient-Tests.package/TCTScopedEnvironment.class/instance/fetchClasses..st @@ -1,4 +1,4 @@ -initialize-release +testing fetchClasses: aCollection aCollection do: [ :aClass | diff --git a/packages/TelegramClient-Tests.package/TCTScopedEnvironment.class/instance/initializeForClasses.test.plugIn..st b/packages/TelegramClient-Tests.package/TCTScopedEnvironment.class/instance/initializeForClasses.test.plugIn..st index c29321dff..58725f945 100644 --- a/packages/TelegramClient-Tests.package/TCTScopedEnvironment.class/instance/initializeForClasses.test.plugIn..st +++ b/packages/TelegramClient-Tests.package/TCTScopedEnvironment.class/instance/initializeForClasses.test.plugIn..st @@ -1,4 +1,4 @@ -initialize-release +initialization initializeForClasses: aCollection test: aSymbol plugIn: aPlugin super initialize. diff --git a/packages/TelegramClient-Tests.package/TCTScopedEnvironment.class/instance/loadTest.plugIn..st b/packages/TelegramClient-Tests.package/TCTScopedEnvironment.class/instance/loadTest.plugIn..st index f314412f4..3cdca478d 100644 --- a/packages/TelegramClient-Tests.package/TCTScopedEnvironment.class/instance/loadTest.plugIn..st +++ b/packages/TelegramClient-Tests.package/TCTScopedEnvironment.class/instance/loadTest.plugIn..st @@ -1,4 +1,4 @@ -initialize-release +testing loadTest: aSymbol plugIn: aPlugin self addTest: (SLTestData newFromDefault diff --git a/packages/TelegramClient-Tests.package/TCTScopedEnvironment.class/instance/systemClasses..st b/packages/TelegramClient-Tests.package/TCTScopedEnvironment.class/instance/systemClasses..st index fe3affa51..0695db44e 100644 --- a/packages/TelegramClient-Tests.package/TCTScopedEnvironment.class/instance/systemClasses..st +++ b/packages/TelegramClient-Tests.package/TCTScopedEnvironment.class/instance/systemClasses..st @@ -1,4 +1,4 @@ -initialize-release +accessing systemClasses: aCollection systemClasses := aCollection. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUAuthentication.class/class/newWithCore..st b/packages/TelegramClient-UI.package/TCUAuthentication.class/class/newWithCore..st index 4315d5317..23df20701 100644 --- a/packages/TelegramClient-UI.package/TCUAuthentication.class/class/newWithCore..st +++ b/packages/TelegramClient-UI.package/TCUAuthentication.class/class/newWithCore..st @@ -1,4 +1,4 @@ -creation +instance creation newWithCore: aCore ^ self basicNew diff --git a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/addHeader.st b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/addHeader.st index 153c998b8..d6aef178b 100644 --- a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/addHeader.st +++ b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/addHeader.st @@ -1,4 +1,4 @@ -initialization +drawing addHeader | header | diff --git a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/addTitle.to..st b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/addTitle.to..st index 19406c93b..805810b84 100644 --- a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/addTitle.to..st +++ b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/addTitle.to..st @@ -1,4 +1,4 @@ -initialization +drawing addTitle: aString to: aMorph | titleLable font | diff --git a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/buttonBackPressed.st b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/buttonBackPressed.st index 8128028a9..f758b7fa9 100644 --- a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/buttonBackPressed.st +++ b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/buttonBackPressed.st @@ -1,4 +1,4 @@ -initialization +event handling buttonBackPressed self showFirstStep. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/buttonNextPressed.st b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/buttonNextPressed.st index f705130fb..c7bc23ae2 100644 --- a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/buttonNextPressed.st +++ b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/buttonNextPressed.st @@ -1,4 +1,4 @@ -accessing +core communication buttonNextPressed self core sendPhoneNumber: self inputField text. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/buttonVerifyPressed.st b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/buttonVerifyPressed.st index f59225156..52fa54431 100644 --- a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/buttonVerifyPressed.st +++ b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/buttonVerifyPressed.st @@ -1,4 +1,4 @@ -initialization +event handling buttonVerifyPressed self core checkAuthenticationCode: self inputField text. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/core..st b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/core..st index 7c0019d8e..3844709d3 100644 --- a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/core..st +++ b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/core..st @@ -1,4 +1,4 @@ -initialization +accessing core: aCore core := aCore. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/core.st b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/core.st index 5e78e5bba..7652dd8d1 100644 --- a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/core.st +++ b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/core.st @@ -1,4 +1,4 @@ -initialization +accessing core ^ core \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/delete.st b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/delete.st index 77eec1260..d931c9f03 100644 --- a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/delete.st +++ b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/delete.st @@ -1,4 +1,4 @@ -initialization +submorphs-add/remove delete self core client free. diff --git a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/logInCompleted.st b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/logInCompleted.st index 9a98ed73d..fae9e6ceb 100644 --- a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/logInCompleted.st +++ b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/logInCompleted.st @@ -1,4 +1,4 @@ -initialization +event handling logInCompleted (TCUMain newWithCore: self core) openCenteredInWorld. diff --git a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/showFirstStep.st b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/showFirstStep.st index 7f5802b4e..1f10c7966 100644 --- a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/showFirstStep.st +++ b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/showFirstStep.st @@ -1,4 +1,4 @@ -accessing +drawing showFirstStep self instructionLabel diff --git a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/showLoadingMessage.st b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/showLoadingMessage.st index 2547c7b75..c41342646 100644 --- a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/showLoadingMessage.st +++ b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/showLoadingMessage.st @@ -1,4 +1,4 @@ -initialization +drawing showLoadingMessage self addMorphCentered: (self createLabel: 'Trying to connect to TDLib...'). \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/showSecondStep.st b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/showSecondStep.st index 49015cc45..a3d5342a6 100644 --- a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/showSecondStep.st +++ b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/showSecondStep.st @@ -1,4 +1,4 @@ -accessing +drawing showSecondStep self buttonNext hide. diff --git a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/subscribeCore.st b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/subscribeCore.st index 6c86f82cc..26b13a30a 100644 --- a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/subscribeCore.st +++ b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/subscribeCore.st @@ -1,4 +1,4 @@ -accessing +core communication subscribeCore self core diff --git a/packages/TelegramClient-UI.package/TCUChatListItem.class/class/newWithChat.width..st b/packages/TelegramClient-UI.package/TCUChatListItem.class/class/newWithChat.width..st index 0403957a9..ae1143aa4 100644 --- a/packages/TelegramClient-UI.package/TCUChatListItem.class/class/newWithChat.width..st +++ b/packages/TelegramClient-UI.package/TCUChatListItem.class/class/newWithChat.width..st @@ -1,4 +1,4 @@ -creation +instance creation newWithChat: aChat width: aWidth ^ self new diff --git a/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/addBorder.st b/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/addBorder.st index fcdd6eb04..7073c70bb 100644 --- a/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/addBorder.st +++ b/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/addBorder.st @@ -1,4 +1,4 @@ -initialization +drawing addBorder self addMorph: (Morph new diff --git a/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/addLastMessage.st b/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/addLastMessage.st index 60b55598c..f4a1bd26d 100644 --- a/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/addLastMessage.st +++ b/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/addLastMessage.st @@ -1,4 +1,4 @@ -initialization +drawing addLastMessage self addMorph: (TextMorph new diff --git a/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/addTitle.st b/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/addTitle.st index 81ef89568..de4367a62 100644 --- a/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/addTitle.st +++ b/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/addTitle.st @@ -1,4 +1,4 @@ -initialization +drawing addTitle self addMorph: (TextMorph new diff --git a/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/chat..st b/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/chat..st index 919a4b0f0..3f6d8c03a 100644 --- a/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/chat..st +++ b/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/chat..st @@ -1,4 +1,4 @@ -initialization +accessing chat: aChat chat := aChat. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/chat.st b/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/chat.st index 1a408480a..207f37ad7 100644 --- a/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/chat.st +++ b/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/chat.st @@ -1,4 +1,4 @@ -initialization +accessing chat ^ chat \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/chatID.st b/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/chatID.st index c176b3e25..06c899df0 100644 --- a/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/chatID.st +++ b/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/chatID.st @@ -1,4 +1,4 @@ -initialization +accessing chatID ^ self chat id \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/deselect.st b/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/deselect.st index 7a469f0bc..337611f7d 100644 --- a/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/deselect.st +++ b/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/deselect.st @@ -1,4 +1,4 @@ -initialization +event handling deselect self color: Color white. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/lastMessageOffset.st b/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/lastMessageOffset.st index f4e88f786..70a28f62b 100644 --- a/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/lastMessageOffset.st +++ b/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/lastMessageOffset.st @@ -1,4 +1,4 @@ -initialization +default values lastMessageOffset ^ 20 @ -12 diff --git a/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/messageMarginTop.st b/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/messageMarginTop.st index 0f144f288..e35b88516 100644 --- a/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/messageMarginTop.st +++ b/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/messageMarginTop.st @@ -1,4 +1,4 @@ -initialization +default values messageMarginTop ^ 20 \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/messagePreviewLength.st b/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/messagePreviewLength.st index 0f7fca6b4..d2e385c61 100644 --- a/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/messagePreviewLength.st +++ b/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/messagePreviewLength.st @@ -1,4 +1,4 @@ -initialization +default values messagePreviewLength ^ 37 \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/select.st b/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/select.st index 7660f7981..b243bca78 100644 --- a/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/select.st +++ b/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/select.st @@ -1,4 +1,4 @@ -initialization +event handling select self color: TCUDefaultValues colorLightBlue. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/titleLength.st b/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/titleLength.st index 16ff1993f..3b533c8ae 100644 --- a/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/titleLength.st +++ b/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/titleLength.st @@ -1,4 +1,4 @@ -initialization +default values titleLength ^ 32 \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/titleOffset.st b/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/titleOffset.st index 3623c9a12..1c813f836 100644 --- a/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/titleOffset.st +++ b/packages/TelegramClient-UI.package/TCUChatListItem.class/instance/titleOffset.st @@ -1,4 +1,4 @@ -initialization +default values titleOffset ^ 20 @ 20 diff --git a/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/addMessageAtBottom..st b/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/addMessageAtBottom..st index 31434c010..b9e66ef06 100644 --- a/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/addMessageAtBottom..st +++ b/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/addMessageAtBottom..st @@ -1,4 +1,4 @@ -accessing +messages addMessageAtBottom: aMessage | newMessage | diff --git a/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/addMessages.st b/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/addMessages.st index 4cc073ef2..7670d1e02 100644 --- a/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/addMessages.st +++ b/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/addMessages.st @@ -1,4 +1,4 @@ -accessing +messages addMessages self owner showChatMessagesFrom: self lowestVisibleMessage. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/clearMessages.st b/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/clearMessages.st index 2222735e8..d82a90b50 100644 --- a/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/clearMessages.st +++ b/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/clearMessages.st @@ -1,4 +1,4 @@ -accessing +messages clearMessages self messages do: [:aMessage | aMessage delete]. diff --git a/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/displayChat..st b/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/displayChat..st index 0b8a81831..d7167349c 100644 --- a/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/displayChat..st +++ b/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/displayChat..st @@ -1,4 +1,4 @@ -accessing +messages displayChat: aChat self chat removeActionsWithReceiver: self. diff --git a/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/handleMouseWheel..st b/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/handleMouseWheel..st index 58f937385..e783de544 100644 --- a/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/handleMouseWheel..st +++ b/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/handleMouseWheel..st @@ -1,4 +1,4 @@ -accessing +event handling handleMouseWheel: anEvent anEvent isWheelUp ifTrue: [self scrollUp]. diff --git a/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/scrollDown.st b/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/scrollDown.st index 2d64e6669..20aefcc00 100644 --- a/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/scrollDown.st +++ b/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/scrollDown.st @@ -1,4 +1,4 @@ -accessing +event handling scrollDown self lowestVisibleMessage < 1 ifFalse: [ diff --git a/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/scrollUp.st b/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/scrollUp.st index e3e1af10c..b7afe9740 100644 --- a/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/scrollUp.st +++ b/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/scrollUp.st @@ -1,4 +1,4 @@ -accessing +event handling scrollUp self owner showChatMessagesFrom: self lowestVisibleMessage + 1. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatWindow.class/class/newWithHeight.width..st b/packages/TelegramClient-UI.package/TCUChatWindow.class/class/newWithHeight.width..st index 9024b1164..40e5874fd 100644 --- a/packages/TelegramClient-UI.package/TCUChatWindow.class/class/newWithHeight.width..st +++ b/packages/TelegramClient-UI.package/TCUChatWindow.class/class/newWithHeight.width..st @@ -1,4 +1,4 @@ -creation +instance creation newWithHeight: aHeight width: aWidth ^ self basicNew diff --git a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/addInputBar.st b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/addInputBar.st index e765d66ff..6fdf16409 100644 --- a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/addInputBar.st +++ b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/addInputBar.st @@ -1,4 +1,4 @@ -initialization +drawing addInputBar self diff --git a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/addMessageWindow.st b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/addMessageWindow.st index c348ddbd1..73daa4ae9 100644 --- a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/addMessageWindow.st +++ b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/addMessageWindow.st @@ -1,4 +1,4 @@ -initialization +drawing addMessageWindow self diff --git a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/addSendButton.st b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/addSendButton.st index cb9b063c2..fe832d5f3 100644 --- a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/addSendButton.st +++ b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/addSendButton.st @@ -1,4 +1,4 @@ -initialization +drawing addSendButton self inputBar addMorph: (TCUButton new diff --git a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/addTextInputField.st b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/addTextInputField.st index e42d5183a..d058327c7 100644 --- a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/addTextInputField.st +++ b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/addTextInputField.st @@ -1,4 +1,4 @@ -initialization +drawing addTextInputField self textInputField: (TextMorph new diff --git a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/addWelcomeMessage.st b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/addWelcomeMessage.st index 963937b1a..7a61e41f2 100644 --- a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/addWelcomeMessage.st +++ b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/addWelcomeMessage.st @@ -1,4 +1,4 @@ -initialization +drawing addWelcomeMessage self diff --git a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/buttonSendPressed.st b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/buttonSendPressed.st index 20cf8eba8..218cd789b 100644 --- a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/buttonSendPressed.st +++ b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/buttonSendPressed.st @@ -1,4 +1,4 @@ -initialization +event handling buttonSendPressed self triggerEvent: #buttonSendPressed with: (Dictionary newFrom: { diff --git a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/clear.st b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/clear.st index 4cfbdda40..b649ee3b0 100644 --- a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/clear.st +++ b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/clear.st @@ -1,4 +1,4 @@ -initialization +drawing clear self inputBar hide. diff --git a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/createInputBar.st b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/createInputBar.st index 4265f95e9..1f10283fe 100644 --- a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/createInputBar.st +++ b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/createInputBar.st @@ -1,4 +1,4 @@ -initialization +drawing createInputBar self inputBar: (RectangleMorph new diff --git a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/defaultInputfieldHeight.st b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/defaultInputfieldHeight.st index 5fb7c2f63..86a15c03c 100644 --- a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/defaultInputfieldHeight.st +++ b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/defaultInputfieldHeight.st @@ -1,4 +1,4 @@ -initialization +default values defaultInputfieldHeight ^ 70 \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/newChatSelected..st b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/newChatSelected..st index 6bf1596f6..bcd873e2c 100644 --- a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/newChatSelected..st +++ b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/newChatSelected..st @@ -1,4 +1,4 @@ -initialization +event handling newChatSelected: aChat self welcomeMessage hide. diff --git a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/selectedChat..st b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/selectedChat..st index cef8356a6..0cf5e25e1 100644 --- a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/selectedChat..st +++ b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/selectedChat..st @@ -1,4 +1,4 @@ -initialization +accessing selectedChat: aChat selectedChat := aChat. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/selectedChat.st b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/selectedChat.st index c665c9757..83fe8d278 100644 --- a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/selectedChat.st +++ b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/selectedChat.st @@ -1,4 +1,4 @@ -initialization +accessing selectedChat ^ selectedChat \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/showChatMessagesFrom..st b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/showChatMessagesFrom..st index 030b07bfd..b3219d54f 100644 --- a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/showChatMessagesFrom..st +++ b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/showChatMessagesFrom..st @@ -1,4 +1,4 @@ -initialization +drawing showChatMessagesFrom: lowestMessage | messageListReversed | diff --git a/packages/TelegramClient-UI.package/TCUChatsList.class/instance/chatItemClicked.event.from..st b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/chatItemClicked.event.from..st index 51eee5e20..202fa5343 100644 --- a/packages/TelegramClient-UI.package/TCUChatsList.class/instance/chatItemClicked.event.from..st +++ b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/chatItemClicked.event.from..st @@ -1,4 +1,4 @@ -initialization +event handling chatItemClicked: aChatListItem event: anEvent from: aSender self items do: [:anItem | anItem deselect]. diff --git a/packages/TelegramClient-UI.package/TCUChatsList.class/instance/clearItems.st b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/clearItems.st index ce2d0cce2..24b33c724 100644 --- a/packages/TelegramClient-UI.package/TCUChatsList.class/instance/clearItems.st +++ b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/clearItems.st @@ -1,4 +1,4 @@ -initialization +drawing clearItems self items do: [:anItem | anItem delete]. diff --git a/packages/TelegramClient-UI.package/TCUChatsList.class/instance/createChatListItem..st b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/createChatListItem..st index 571cb7a78..3acc0fbac 100644 --- a/packages/TelegramClient-UI.package/TCUChatsList.class/instance/createChatListItem..st +++ b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/createChatListItem..st @@ -1,4 +1,4 @@ -accessing +drawing createChatListItem: aChat | item | diff --git a/packages/TelegramClient-UI.package/TCUChatsList.class/instance/defaultWidth.st b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/defaultWidth.st index 86944163a..6050c591e 100644 --- a/packages/TelegramClient-UI.package/TCUChatsList.class/instance/defaultWidth.st +++ b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/defaultWidth.st @@ -1,4 +1,4 @@ -defaultValues +default values defaultWidth ^ 300 \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatsList.class/instance/handleMouseWheel..st b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/handleMouseWheel..st index 295a5b562..94ba585a4 100644 --- a/packages/TelegramClient-UI.package/TCUChatsList.class/instance/handleMouseWheel..st +++ b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/handleMouseWheel..st @@ -1,4 +1,4 @@ -accessing +event handling handleMouseWheel: anEvent self maxHeight: (self owner position y). diff --git a/packages/TelegramClient-UI.package/TCUChatsList.class/instance/openNewChat..st b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/openNewChat..st index 83d0caf92..dbb364da3 100644 --- a/packages/TelegramClient-UI.package/TCUChatsList.class/instance/openNewChat..st +++ b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/openNewChat..st @@ -1,4 +1,4 @@ -accessing +events openNewChat: aChat self triggerEvent: #openNewChat with: aChat. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatsList.class/instance/redrawItems.st b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/redrawItems.st index c25793ee9..f394e8545 100644 --- a/packages/TelegramClient-UI.package/TCUChatsList.class/instance/redrawItems.st +++ b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/redrawItems.st @@ -1,10 +1,9 @@ -accessing +drawing redrawItems self clearItems. - "reversed is temporarly needed while chats are not in right order" - self items: (self chats reversed collect: [:aChat | + self items: (self chats collect: [:aChat | self createChatListItem: aChat]). self items do: [:anItem | self addMorph: anItem]. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatsList.class/instance/scrollDown.st b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/scrollDown.st index 5690923c7..3317d54dd 100644 --- a/packages/TelegramClient-UI.package/TCUChatsList.class/instance/scrollDown.st +++ b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/scrollDown.st @@ -1,4 +1,4 @@ -accessing +event handling scrollDown self position: self position - (0 @ 50). \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatsList.class/instance/scrollUp.st b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/scrollUp.st index cfd68c2c2..98e5bedba 100644 --- a/packages/TelegramClient-UI.package/TCUChatsList.class/instance/scrollUp.st +++ b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/scrollUp.st @@ -1,4 +1,4 @@ -accessing +event handling scrollUp self position y >= self maxHeight ifFalse:[ diff --git a/packages/TelegramClient-UI.package/TCUChatsList.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUChatsList.class/methodProperties.json index 0e1726bda..c7b849cd6 100644 --- a/packages/TelegramClient-UI.package/TCUChatsList.class/methodProperties.json +++ b/packages/TelegramClient-UI.package/TCUChatsList.class/methodProperties.json @@ -16,7 +16,7 @@ "maxHeight" : "f.w. 7/12/2020 00:10", "maxHeight:" : "f.w. 7/12/2020 04:56", "openNewChat:" : "f.w. 7/16/2020 00:02", - "redrawItems" : "js 7/31/2020 23:06", + "redrawItems" : "js 8/2/2020 13:31", "scrollDown" : "f.w. 7/12/2020 04:14", "scrollUp" : "f.w. 7/12/2020 22:06", "selectedChat" : "rs 6/13/2020 08:51", diff --git a/packages/TelegramClient-UI.package/TCUMain.class/class/core..st b/packages/TelegramClient-UI.package/TCUMain.class/class/core..st index a8bce7caa..194ac5d61 100644 --- a/packages/TelegramClient-UI.package/TCUMain.class/class/core..st +++ b/packages/TelegramClient-UI.package/TCUMain.class/class/core..st @@ -1,4 +1,4 @@ -creation +accessing core: aCore Core := aCore. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMain.class/class/core.st b/packages/TelegramClient-UI.package/TCUMain.class/class/core.st index 60ff5fc7f..28f9c689e 100644 --- a/packages/TelegramClient-UI.package/TCUMain.class/class/core.st +++ b/packages/TelegramClient-UI.package/TCUMain.class/class/core.st @@ -1,4 +1,4 @@ -creation +accessing core ^ Core \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMain.class/class/newWithCore..st b/packages/TelegramClient-UI.package/TCUMain.class/class/newWithCore..st index 4315d5317..23df20701 100644 --- a/packages/TelegramClient-UI.package/TCUMain.class/class/newWithCore..st +++ b/packages/TelegramClient-UI.package/TCUMain.class/class/newWithCore..st @@ -1,4 +1,4 @@ -creation +instance creation newWithCore: aCore ^ self basicNew diff --git a/packages/TelegramClient-UI.package/TCUMain.class/instance/addChatsList.st b/packages/TelegramClient-UI.package/TCUMain.class/instance/addChatsList.st index 0a8baadc8..436dccd20 100644 --- a/packages/TelegramClient-UI.package/TCUMain.class/instance/addChatsList.st +++ b/packages/TelegramClient-UI.package/TCUMain.class/instance/addChatsList.st @@ -1,4 +1,4 @@ -initialization +drawing addChatsList self chatsList: (TCUChatsList new diff --git a/packages/TelegramClient-UI.package/TCUMain.class/instance/addCloseButtonTo.withSpacing.deletes..st b/packages/TelegramClient-UI.package/TCUMain.class/instance/addCloseButtonTo.withSpacing.deletes..st index 11b9fc229..13ff60d1c 100644 --- a/packages/TelegramClient-UI.package/TCUMain.class/instance/addCloseButtonTo.withSpacing.deletes..st +++ b/packages/TelegramClient-UI.package/TCUMain.class/instance/addCloseButtonTo.withSpacing.deletes..st @@ -1,4 +1,4 @@ -defaultValues +drawing addCloseButtonTo: aMorph withSpacing: aSpacing deletes: aDeletableMorph | closeButton | diff --git a/packages/TelegramClient-UI.package/TCUMain.class/instance/addHeader.st b/packages/TelegramClient-UI.package/TCUMain.class/instance/addHeader.st index ffa5949f8..67c5a4685 100644 --- a/packages/TelegramClient-UI.package/TCUMain.class/instance/addHeader.st +++ b/packages/TelegramClient-UI.package/TCUMain.class/instance/addHeader.st @@ -1,4 +1,4 @@ -initialization +drawing addHeader | header | diff --git a/packages/TelegramClient-UI.package/TCUMain.class/instance/addInputFieldTo.withSpacing..st b/packages/TelegramClient-UI.package/TCUMain.class/instance/addInputFieldTo.withSpacing..st index f7837899c..75dd1204d 100644 --- a/packages/TelegramClient-UI.package/TCUMain.class/instance/addInputFieldTo.withSpacing..st +++ b/packages/TelegramClient-UI.package/TCUMain.class/instance/addInputFieldTo.withSpacing..st @@ -1,4 +1,4 @@ -defaultValues +drawing addInputFieldTo: aMorph withSpacing: aSpacing | inputField | diff --git a/packages/TelegramClient-UI.package/TCUMain.class/instance/addLogoutButtonTo.withSpacing..st b/packages/TelegramClient-UI.package/TCUMain.class/instance/addLogoutButtonTo.withSpacing..st index f97c9bd61..11f396d1b 100644 --- a/packages/TelegramClient-UI.package/TCUMain.class/instance/addLogoutButtonTo.withSpacing..st +++ b/packages/TelegramClient-UI.package/TCUMain.class/instance/addLogoutButtonTo.withSpacing..st @@ -1,4 +1,4 @@ -defaultValues +drawing addLogoutButtonTo: aMorph withSpacing: aSpacing | logoutButton | diff --git a/packages/TelegramClient-UI.package/TCUMain.class/instance/addNewChatButtonTo.withSpacing..st b/packages/TelegramClient-UI.package/TCUMain.class/instance/addNewChatButtonTo.withSpacing..st index 8e552f9b1..c30493e08 100644 --- a/packages/TelegramClient-UI.package/TCUMain.class/instance/addNewChatButtonTo.withSpacing..st +++ b/packages/TelegramClient-UI.package/TCUMain.class/instance/addNewChatButtonTo.withSpacing..st @@ -1,4 +1,4 @@ -initialization +drawing addNewChatButtonTo: aMorph withSpacing: aSpacing | newChatButton | diff --git a/packages/TelegramClient-UI.package/TCUMain.class/instance/addTitle.to..st b/packages/TelegramClient-UI.package/TCUMain.class/instance/addTitle.to..st index 050bfbf33..78e1c9413 100644 --- a/packages/TelegramClient-UI.package/TCUMain.class/instance/addTitle.to..st +++ b/packages/TelegramClient-UI.package/TCUMain.class/instance/addTitle.to..st @@ -1,4 +1,4 @@ -accessing +drawing addTitle: aString to: aMorph | titleLable font | diff --git a/packages/TelegramClient-UI.package/TCUMain.class/instance/createHeaderMorph.st b/packages/TelegramClient-UI.package/TCUMain.class/instance/createHeaderMorph.st index 7d5d5e56c..d110b37e1 100644 --- a/packages/TelegramClient-UI.package/TCUMain.class/instance/createHeaderMorph.st +++ b/packages/TelegramClient-UI.package/TCUMain.class/instance/createHeaderMorph.st @@ -1,4 +1,4 @@ -initialization +drawing createHeaderMorph ^ RectangleMorph new diff --git a/packages/TelegramClient-UI.package/TCUMain.class/instance/defaultExtent.st b/packages/TelegramClient-UI.package/TCUMain.class/instance/defaultExtent.st index 4a0345036..0b52ad8e8 100644 --- a/packages/TelegramClient-UI.package/TCUMain.class/instance/defaultExtent.st +++ b/packages/TelegramClient-UI.package/TCUMain.class/instance/defaultExtent.st @@ -1,4 +1,4 @@ -defaultValues +default values defaultExtent ^ 1200 @ 800 \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMain.class/instance/defaultHeaderHeight.st b/packages/TelegramClient-UI.package/TCUMain.class/instance/defaultHeaderHeight.st index 5f657d248..ff907d657 100644 --- a/packages/TelegramClient-UI.package/TCUMain.class/instance/defaultHeaderHeight.st +++ b/packages/TelegramClient-UI.package/TCUMain.class/instance/defaultHeaderHeight.st @@ -1,4 +1,4 @@ -defaultValues +default values defaultHeaderHeight ^ 40 \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMain.class/instance/delete.st b/packages/TelegramClient-UI.package/TCUMain.class/instance/delete.st index 8fbfe089e..d931c9f03 100644 --- a/packages/TelegramClient-UI.package/TCUMain.class/instance/delete.st +++ b/packages/TelegramClient-UI.package/TCUMain.class/instance/delete.st @@ -1,4 +1,4 @@ -deletion +submorphs-add/remove delete self core client free. diff --git a/packages/TelegramClient-UI.package/TCUMain.class/instance/getChatHistoryFrom..st b/packages/TelegramClient-UI.package/TCUMain.class/instance/getChatHistoryFrom..st index 0bcde441c..4d031c910 100644 --- a/packages/TelegramClient-UI.package/TCUMain.class/instance/getChatHistoryFrom..st +++ b/packages/TelegramClient-UI.package/TCUMain.class/instance/getChatHistoryFrom..st @@ -1,4 +1,4 @@ -initialization +core communication getChatHistoryFrom: aChat self core getChatHistoryFrom: aChat id. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMain.class/instance/logout.st b/packages/TelegramClient-UI.package/TCUMain.class/instance/logout.st index 796740806..3d4c05fa9 100644 --- a/packages/TelegramClient-UI.package/TCUMain.class/instance/logout.st +++ b/packages/TelegramClient-UI.package/TCUMain.class/instance/logout.st @@ -1,4 +1,4 @@ -defaultValues +core communication logout self core authHandler logout. diff --git a/packages/TelegramClient-UI.package/TCUMain.class/instance/newChatButtonClicked.st b/packages/TelegramClient-UI.package/TCUMain.class/instance/newChatButtonClicked.st index 18691df18..e239005b1 100644 --- a/packages/TelegramClient-UI.package/TCUMain.class/instance/newChatButtonClicked.st +++ b/packages/TelegramClient-UI.package/TCUMain.class/instance/newChatButtonClicked.st @@ -1,4 +1,4 @@ -initialization +event handling newChatButtonClicked | inputField modal | diff --git a/packages/TelegramClient-UI.package/TCUMain.class/instance/newChatSelected..st b/packages/TelegramClient-UI.package/TCUMain.class/instance/newChatSelected..st index a813c21c8..fcf57f76f 100644 --- a/packages/TelegramClient-UI.package/TCUMain.class/instance/newChatSelected..st +++ b/packages/TelegramClient-UI.package/TCUMain.class/instance/newChatSelected..st @@ -1,4 +1,4 @@ -initialization +event handling newChatSelected: aChat self chatWindow newChatSelected: aChat. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMain.class/instance/newMessageReceived..st b/packages/TelegramClient-UI.package/TCUMain.class/instance/newMessageReceived..st index 8c5dc56ab..870a1f26b 100644 --- a/packages/TelegramClient-UI.package/TCUMain.class/instance/newMessageReceived..st +++ b/packages/TelegramClient-UI.package/TCUMain.class/instance/newMessageReceived..st @@ -1,4 +1,4 @@ -initialization +event handling newMessageReceived: aMessage (self core loggedInUserID = aMessage senderID) ifFalse: [ diff --git a/packages/TelegramClient-UI.package/TCUMain.class/instance/sendMessage..st b/packages/TelegramClient-UI.package/TCUMain.class/instance/sendMessage..st index f43b9034b..51638bddb 100644 --- a/packages/TelegramClient-UI.package/TCUMain.class/instance/sendMessage..st +++ b/packages/TelegramClient-UI.package/TCUMain.class/instance/sendMessage..st @@ -1,4 +1,4 @@ -initialization +core communication sendMessage: aDictionary self core sendMessage: (aDictionary at: 'message') to: (aDictionary at: 'chatId'). \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMain.class/instance/subscribeChatsList.st b/packages/TelegramClient-UI.package/TCUMain.class/instance/subscribeChatsList.st index 1816b10b2..d73e08aeb 100644 --- a/packages/TelegramClient-UI.package/TCUMain.class/instance/subscribeChatsList.st +++ b/packages/TelegramClient-UI.package/TCUMain.class/instance/subscribeChatsList.st @@ -1,4 +1,4 @@ -initialization +core communication subscribeChatsList self chatsList diff --git a/packages/TelegramClient-UI.package/TCUMessage.class/instance/addText.st b/packages/TelegramClient-UI.package/TCUMessage.class/instance/addText.st index b360b9e1f..9019eb3ca 100644 --- a/packages/TelegramClient-UI.package/TCUMessage.class/instance/addText.st +++ b/packages/TelegramClient-UI.package/TCUMessage.class/instance/addText.st @@ -1,7 +1,8 @@ -accessing +drawing addText | textMorph expectedWidth | + textMorph := TextMorph new contents: self text; wrapFlag: true; margins: self defaultTextMargins; @@ -9,9 +10,10 @@ addText hResizing: #rigid; color: Color white; lock. - - expectedWidth := textMorph textStyle fontArray first widthOfString: self text. - (expectedWidth <= self defaultWidth) ifTrue: [textMorph width: expectedWidth + 50]. + + expectedWidth := textMorph textStyle defaultFont widthOfString: self text. + (expectedWidth <= self defaultWidth) + ifTrue: [textMorph width: expectedWidth + (self defaultTextMargins x * 2)]. self extent: textMorph extent + self defaultMargin; diff --git a/packages/TelegramClient-UI.package/TCUMessage.class/instance/defaultHeight.st b/packages/TelegramClient-UI.package/TCUMessage.class/instance/defaultHeight.st index 47aa17a20..75eced192 100644 --- a/packages/TelegramClient-UI.package/TCUMessage.class/instance/defaultHeight.st +++ b/packages/TelegramClient-UI.package/TCUMessage.class/instance/defaultHeight.st @@ -1,4 +1,4 @@ -accessing +default values defaultHeight ^ 80 \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMessage.class/instance/defaultMargin.st b/packages/TelegramClient-UI.package/TCUMessage.class/instance/defaultMargin.st index 8f3d0805a..764f2eb69 100644 --- a/packages/TelegramClient-UI.package/TCUMessage.class/instance/defaultMargin.st +++ b/packages/TelegramClient-UI.package/TCUMessage.class/instance/defaultMargin.st @@ -1,4 +1,4 @@ -accessing +default values defaultMargin ^ 0 @ 10 \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMessage.class/instance/defaultMinTextLength.st b/packages/TelegramClient-UI.package/TCUMessage.class/instance/defaultMinTextLength.st index 475aeb1d8..c95ff2818 100644 --- a/packages/TelegramClient-UI.package/TCUMessage.class/instance/defaultMinTextLength.st +++ b/packages/TelegramClient-UI.package/TCUMessage.class/instance/defaultMinTextLength.st @@ -1,4 +1,4 @@ -accessing +default values defaultMinTextLength ^ 80 \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMessage.class/instance/defaultTextMargins.st b/packages/TelegramClient-UI.package/TCUMessage.class/instance/defaultTextMargins.st index 2a5a26a5f..0751fa544 100644 --- a/packages/TelegramClient-UI.package/TCUMessage.class/instance/defaultTextMargins.st +++ b/packages/TelegramClient-UI.package/TCUMessage.class/instance/defaultTextMargins.st @@ -1,4 +1,4 @@ -accessing +default values defaultTextMargins ^ (5 @ 5) \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMessage.class/instance/defaultWidth.st b/packages/TelegramClient-UI.package/TCUMessage.class/instance/defaultWidth.st index 49bf6e2d4..cdca8e3b6 100644 --- a/packages/TelegramClient-UI.package/TCUMessage.class/instance/defaultWidth.st +++ b/packages/TelegramClient-UI.package/TCUMessage.class/instance/defaultWidth.st @@ -1,4 +1,4 @@ -accessing +default values defaultWidth ^ 500 \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMessage.class/instance/initialize.st b/packages/TelegramClient-UI.package/TCUMessage.class/instance/initialize.st index 8b421183f..3c05da0a5 100644 --- a/packages/TelegramClient-UI.package/TCUMessage.class/instance/initialize.st +++ b/packages/TelegramClient-UI.package/TCUMessage.class/instance/initialize.st @@ -1,4 +1,4 @@ -accessing +initialization initialize super initialize. diff --git a/packages/TelegramClient-UI.package/TCUMessage.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUMessage.class/methodProperties.json index c767e6abc..01b97cd0c 100644 --- a/packages/TelegramClient-UI.package/TCUMessage.class/methodProperties.json +++ b/packages/TelegramClient-UI.package/TCUMessage.class/methodProperties.json @@ -2,7 +2,7 @@ "class" : { "newFromTCCMessage:" : "js 8/1/2020 18:21" }, "instance" : { - "addText" : "js 7/31/2020 18:42", + "addText" : "js 8/2/2020 12:51", "defaultHeight" : "rs 6/17/2020 20:07", "defaultMargin" : "js 7/31/2020 18:19", "defaultMinTextLength" : "js 7/31/2020 18:03", diff --git a/packages/TelegramClient-UI.package/TCUModal.class/instance/defaultHeight.st b/packages/TelegramClient-UI.package/TCUModal.class/instance/defaultHeight.st index aa872c6cb..7e080b763 100644 --- a/packages/TelegramClient-UI.package/TCUModal.class/instance/defaultHeight.st +++ b/packages/TelegramClient-UI.package/TCUModal.class/instance/defaultHeight.st @@ -1,4 +1,4 @@ -defaultValues +default values defaultHeight ^ 280 \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUModal.class/instance/defaultWidth.st b/packages/TelegramClient-UI.package/TCUModal.class/instance/defaultWidth.st index 26845516e..12857a660 100644 --- a/packages/TelegramClient-UI.package/TCUModal.class/instance/defaultWidth.st +++ b/packages/TelegramClient-UI.package/TCUModal.class/instance/defaultWidth.st @@ -1,4 +1,4 @@ -defaultValues +default values defaultWidth ^ 520 \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUModal.class/instance/setColor.st b/packages/TelegramClient-UI.package/TCUModal.class/instance/setColor.st index 1030c888f..98ad646a3 100644 --- a/packages/TelegramClient-UI.package/TCUModal.class/instance/setColor.st +++ b/packages/TelegramClient-UI.package/TCUModal.class/instance/setColor.st @@ -1,4 +1,4 @@ -initialization +drawing setColor self type = 'information' ifTrue: [self color: Color white]. diff --git a/packages/TelegramClient-UI.package/TCUModal.class/instance/setText.st b/packages/TelegramClient-UI.package/TCUModal.class/instance/setText.st index 5ffe89879..3522fcb02 100644 --- a/packages/TelegramClient-UI.package/TCUModal.class/instance/setText.st +++ b/packages/TelegramClient-UI.package/TCUModal.class/instance/setText.st @@ -1,4 +1,4 @@ -initialization +drawing setText self addMorph: (TextMorph new diff --git a/packages/TelegramClient-UI.package/TCUNotification.class/class/newWithMessage..st b/packages/TelegramClient-UI.package/TCUNotification.class/class/newWithMessage..st index 0e9f0705a..289732d00 100644 --- a/packages/TelegramClient-UI.package/TCUNotification.class/class/newWithMessage..st +++ b/packages/TelegramClient-UI.package/TCUNotification.class/class/newWithMessage..st @@ -1,4 +1,4 @@ -creation +instance creation newWithMessage: aMessage ^ self basicNew diff --git a/packages/TelegramClient-UI.package/TCUNotification.class/instance/addTextLabel.st b/packages/TelegramClient-UI.package/TCUNotification.class/instance/addTextLabel.st index 6cdbd2ea1..02d2c90c4 100644 --- a/packages/TelegramClient-UI.package/TCUNotification.class/instance/addTextLabel.st +++ b/packages/TelegramClient-UI.package/TCUNotification.class/instance/addTextLabel.st @@ -1,4 +1,4 @@ -accessing +drawing addTextLabel self addMorphCentered: (TextMorph new diff --git a/packages/TelegramClient-UI.package/TCUNotification.class/instance/defaultHeight.st b/packages/TelegramClient-UI.package/TCUNotification.class/instance/defaultHeight.st index 416d3b1a7..75eced192 100644 --- a/packages/TelegramClient-UI.package/TCUNotification.class/instance/defaultHeight.st +++ b/packages/TelegramClient-UI.package/TCUNotification.class/instance/defaultHeight.st @@ -1,4 +1,4 @@ -defaultValues +default values defaultHeight ^ 80 \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUNotification.class/instance/defaultOffset.st b/packages/TelegramClient-UI.package/TCUNotification.class/instance/defaultOffset.st index 7810170f6..c2634bb7a 100644 --- a/packages/TelegramClient-UI.package/TCUNotification.class/instance/defaultOffset.st +++ b/packages/TelegramClient-UI.package/TCUNotification.class/instance/defaultOffset.st @@ -1,4 +1,4 @@ -defaultValues +default values defaultOffset ^ (20 @ 20) \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUNotification.class/instance/defaultWidth.st b/packages/TelegramClient-UI.package/TCUNotification.class/instance/defaultWidth.st index fb9d94941..d4cf6d820 100644 --- a/packages/TelegramClient-UI.package/TCUNotification.class/instance/defaultWidth.st +++ b/packages/TelegramClient-UI.package/TCUNotification.class/instance/defaultWidth.st @@ -1,4 +1,4 @@ -defaultValues +default values defaultWidth ^ 320 \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUNotification.class/instance/startTimeOut.st b/packages/TelegramClient-UI.package/TCUNotification.class/instance/startTimeOut.st index 74e832b8d..4742447d2 100644 --- a/packages/TelegramClient-UI.package/TCUNotification.class/instance/startTimeOut.st +++ b/packages/TelegramClient-UI.package/TCUNotification.class/instance/startTimeOut.st @@ -1,4 +1,4 @@ -accessing +initialization startTimeOut 5 seconds wait. diff --git a/packages/TelegramClient-UI.package/TCUTelegram.class/class/initialize.st b/packages/TelegramClient-UI.package/TCUTelegram.class/class/initialize.st new file mode 100644 index 000000000..ed3d3574d --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUTelegram.class/class/initialize.st @@ -0,0 +1,4 @@ +class initialization +initialize + + self registerInWorldMenu. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUTelegram.class/class/newWithCore..st b/packages/TelegramClient-UI.package/TCUTelegram.class/class/newWithCore..st index 9ef5f5537..23df20701 100644 --- a/packages/TelegramClient-UI.package/TCUTelegram.class/class/newWithCore..st +++ b/packages/TelegramClient-UI.package/TCUTelegram.class/class/newWithCore..st @@ -1,7 +1,6 @@ instance creation newWithCore: aCore - TCUTelegram registerInWorldMenu. ^ self basicNew core: aCore; initialize; diff --git a/packages/TelegramClient-UI.package/TCUTelegram.class/class/registerInWorldMenu.st b/packages/TelegramClient-UI.package/TCUTelegram.class/class/registerInWorldMenu.st index f314108a0..70b248f3e 100644 --- a/packages/TelegramClient-UI.package/TCUTelegram.class/class/registerInWorldMenu.st +++ b/packages/TelegramClient-UI.package/TCUTelegram.class/class/registerInWorldMenu.st @@ -1,4 +1,4 @@ menu registerInWorldMenu - TheWorldMenu registerOpenCommand: {'Telegram'. {TCUTelegram. #newWithTCCCore}} \ No newline at end of file + TheWorldMenu registerOpenCommand: {'Telegram'. {TCUTelegram. #newWithTCCCore}. 'opens a Telegram Client'}. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUTelegram.class/instance/initialize.st b/packages/TelegramClient-UI.package/TCUTelegram.class/instance/initialize.st index d095a7ace..f888f70e1 100644 --- a/packages/TelegramClient-UI.package/TCUTelegram.class/instance/initialize.st +++ b/packages/TelegramClient-UI.package/TCUTelegram.class/instance/initialize.st @@ -1,4 +1,4 @@ -initialize-release +initialization initialize super initialize. diff --git a/packages/TelegramClient-UI.package/TCUTelegram.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUTelegram.class/methodProperties.json index 4d7eaa81a..607fdce0f 100644 --- a/packages/TelegramClient-UI.package/TCUTelegram.class/methodProperties.json +++ b/packages/TelegramClient-UI.package/TCUTelegram.class/methodProperties.json @@ -1,9 +1,10 @@ { "class" : { - "newWithCore:" : "N.S. 7/24/2020 10:14", + "initialize" : "js 8/2/2020 14:31", + "newWithCore:" : "js 8/2/2020 14:29", "newWithTCCCore" : "rs 6/25/2020 10:16", "newWithTestCore" : "r.s 7/13/2020 17:36", - "registerInWorldMenu" : "r.s 7/24/2020 11:41" }, + "registerInWorldMenu" : "js 8/2/2020 14:28" }, "instance" : { "core" : "js 5/31/2020 20:04", "core:" : "js 5/31/2020 20:04", From 4242f9652fdeb6ad83fa9633ba30055e789529b8 Mon Sep 17 00:00:00 2001 From: sspangenberg <49531479+sspangenberg@users.noreply.github.com> Date: Sun, 2 Aug 2020 18:07:10 +0200 Subject: [PATCH 60/81] Add header to chat (#266) * Adds TitleBar to the Chat Window * Recategorize methods * fixed bug when clicking on Nullchat * fixed some bugs * only recategorized Co-authored-by: Jonas Schmidt --- .../TCCChat.class/instance/initialize.st | 1 + .../TCCChat.class/methodProperties.json | 2 +- .../TCUChatWindow.class/instance/addChatName.st | 6 ++++++ .../TCUChatWindow.class/instance/addTitleBar.st | 7 +++++++ .../TCUChatWindow.class/instance/clear.st | 1 + .../TCUChatWindow.class/instance/createTitleBar.st | 14 ++++++++++++++ .../instance/defaultTitleBarHeigth.st | 4 ++++ .../TCUChatWindow.class/instance/initialize.st | 3 ++- .../instance/newChatSelected..st | 9 ++++++--- .../TCUChatWindow.class/instance/titleBar..st | 4 ++++ .../TCUChatWindow.class/instance/titleBar.st | 4 ++++ .../TCUChatWindow.class/methodProperties.json | 12 +++++++++--- .../TCUChatWindow.class/properties.json | 1 + 13 files changed, 60 insertions(+), 8 deletions(-) create mode 100644 packages/TelegramClient-UI.package/TCUChatWindow.class/instance/addChatName.st create mode 100644 packages/TelegramClient-UI.package/TCUChatWindow.class/instance/addTitleBar.st create mode 100644 packages/TelegramClient-UI.package/TCUChatWindow.class/instance/createTitleBar.st create mode 100644 packages/TelegramClient-UI.package/TCUChatWindow.class/instance/defaultTitleBarHeigth.st create mode 100644 packages/TelegramClient-UI.package/TCUChatWindow.class/instance/titleBar..st create mode 100644 packages/TelegramClient-UI.package/TCUChatWindow.class/instance/titleBar.st diff --git a/packages/TelegramClient-Core.package/TCCChat.class/instance/initialize.st b/packages/TelegramClient-Core.package/TCCChat.class/instance/initialize.st index cd210c092..ba5d16410 100644 --- a/packages/TelegramClient-Core.package/TCCChat.class/instance/initialize.st +++ b/packages/TelegramClient-Core.package/TCCChat.class/instance/initialize.st @@ -2,6 +2,7 @@ initialization initialize self + title: ''; messages: (OrderedCollection newFrom: {TCCNullMessage new}); waitingForUpdate: false; numberOfRequestedMessages: self defaultNumberOfRequestedMessages. diff --git a/packages/TelegramClient-Core.package/TCCChat.class/methodProperties.json b/packages/TelegramClient-Core.package/TCCChat.class/methodProperties.json index b0ae0fca0..f2f072a08 100644 --- a/packages/TelegramClient-Core.package/TCCChat.class/methodProperties.json +++ b/packages/TelegramClient-Core.package/TCCChat.class/methodProperties.json @@ -9,7 +9,7 @@ "id" : "rs 6/7/2020 22:20", "id:" : "rs 6/7/2020 22:20", "ifNotWaitingForUpdate:" : "js 8/2/2020 13:17", - "initialize" : "js 8/1/2020 18:51", + "initialize" : "js 8/2/2020 17:33", "lastMessage" : "rs 6/19/2020 17:33", "lastMessage:" : "rs 6/19/2020 17:33", "messages" : "R.S 6/1/2020 15:37", diff --git a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/addChatName.st b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/addChatName.st new file mode 100644 index 000000000..e24bf56ea --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/addChatName.st @@ -0,0 +1,6 @@ +drawing +addChatName + + self titleBar addMorph: (TextMorph new + contents: self selectedChat title asText; + lock). \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/addTitleBar.st b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/addTitleBar.st new file mode 100644 index 000000000..abe157023 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/addTitleBar.st @@ -0,0 +1,7 @@ +drawing +addTitleBar + + self + createTitleBar; + addMorph: self titleBar; + addChatName. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/clear.st b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/clear.st index b649ee3b0..155865580 100644 --- a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/clear.st +++ b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/clear.st @@ -1,6 +1,7 @@ drawing clear + self titleBar delete. self inputBar hide. self welcomeMessage show. self messageListWindow hide. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/createTitleBar.st b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/createTitleBar.st new file mode 100644 index 000000000..52b746997 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/createTitleBar.st @@ -0,0 +1,14 @@ +drawing +createTitleBar + + self titleBar: (RectangleMorph new + borderWidth: 0; + color: TCUDefaultValues colorLightGray; + width: self width; + height: self defaultTitleBarHeigth; + topLeft: (self topLeft); + layoutPolicy: TableLayout new; + listDirection: #leftToRight; + layoutInset: 2; + vResizing: #shrinkWrap; + cellInset: 12). \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/defaultTitleBarHeigth.st b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/defaultTitleBarHeigth.st new file mode 100644 index 000000000..92517540c --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/defaultTitleBarHeigth.st @@ -0,0 +1,4 @@ +default values +defaultTitleBarHeigth + + ^ 50 \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/initialize.st b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/initialize.st index d5bfd4463..2151043e7 100644 --- a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/initialize.st +++ b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/initialize.st @@ -6,4 +6,5 @@ initialize self color: TCUDefaultValues colorLightGray; borderWidth: 0; - selectedChat: TCCNullChat new. \ No newline at end of file + selectedChat: TCCNullChat new; + titleBar: Morph new. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/newChatSelected..st b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/newChatSelected..st index bcd873e2c..fc9260d70 100644 --- a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/newChatSelected..st +++ b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/newChatSelected..st @@ -1,9 +1,12 @@ event handling newChatSelected: aChat - + self welcomeMessage hide. self inputBar show. - self selectedChat: aChat. - + self titleBar delete. + self + selectedChat: aChat; + addTitleBar. + self messageListWindow show. self messageListWindow displayChat: aChat. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/titleBar..st b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/titleBar..st new file mode 100644 index 000000000..b9062d355 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/titleBar..st @@ -0,0 +1,4 @@ +accessing +titleBar: aMorph + + titleBar := aMorph. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/titleBar.st b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/titleBar.st new file mode 100644 index 000000000..f086ab6ca --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/titleBar.st @@ -0,0 +1,4 @@ +accessing +titleBar + + ^ titleBar \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatWindow.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUChatWindow.class/methodProperties.json index ce9d0294d..de055a77d 100644 --- a/packages/TelegramClient-UI.package/TCUChatWindow.class/methodProperties.json +++ b/packages/TelegramClient-UI.package/TCUChatWindow.class/methodProperties.json @@ -2,25 +2,31 @@ "class" : { "newWithHeight:width:" : "rs 6/17/2020 20:22" }, "instance" : { + "addChatName" : "sp 8/2/2020 16:03", "addInputBar" : "js 6/13/2020 17:59", "addMessageWindow" : "f.w. 8/1/2020 02:37", "addSendButton" : "js 6/13/2020 18:46", "addTextInputField" : "rs 6/17/2020 21:02", + "addTitleBar" : "sp 8/2/2020 15:57", "addWelcomeMessage" : "N.S. 7/26/2020 15:57", "buttonSendPressed" : "js 7/31/2020 17:08", - "clear" : "rs 6/17/2020 21:52", + "clear" : "sp 8/2/2020 15:33", "createInputBar" : "rs 6/17/2020 21:01", + "createTitleBar" : "sp 8/2/2020 15:52", "defaultInputfieldHeight" : "rs 6/12/2020 20:03", - "initialize" : "rs 7/4/2020 19:18", + "defaultTitleBarHeigth" : "sp 8/2/2020 15:15", + "initialize" : "js 8/2/2020 17:47", "inputBar" : "rs 6/13/2020 10:38", "inputBar:" : "rs 6/13/2020 10:38", "messageListWindow" : "rs 6/17/2020 19:12", "messageListWindow:" : "rs 6/17/2020 19:13", - "newChatSelected:" : "js 8/1/2020 18:10", + "newChatSelected:" : "js 8/2/2020 17:46", "selectedChat" : "rs 6/13/2020 09:11", "selectedChat:" : "rs 6/13/2020 09:11", "showChatMessagesFrom:" : "js 8/1/2020 18:26", "textInputField" : "rs 6/13/2020 10:41", "textInputField:" : "rs 6/13/2020 10:42", + "titleBar" : "sp 8/2/2020 15:04", + "titleBar:" : "sp 8/2/2020 15:04", "welcomeMessage" : "rs 6/13/2020 09:36", "welcomeMessage:" : "rs 6/13/2020 09:36" } } diff --git a/packages/TelegramClient-UI.package/TCUChatWindow.class/properties.json b/packages/TelegramClient-UI.package/TCUChatWindow.class/properties.json index c0196a77e..3db975436 100644 --- a/packages/TelegramClient-UI.package/TCUChatWindow.class/properties.json +++ b/packages/TelegramClient-UI.package/TCUChatWindow.class/properties.json @@ -6,6 +6,7 @@ ], "commentStamp" : "js 6/13/2020 19:01", "instvars" : [ + "titleBar", "inputBar", "selectedChat", "welcomeMessage", From 9ccf789e9b8bfe544afa7452958cc4e2e131e9ba Mon Sep 17 00:00:00 2001 From: Jonas Schmidt <43679965+schmidtjonas@users.noreply.github.com> Date: Sun, 2 Aug 2020 22:40:14 +0200 Subject: [PATCH 61/81] Refactoring UI and added HeaderBar (#270) * Started refactoring * TCUHeader in own class now * more refactoring * Minor refactoring * Removed obsolete classes * fixes and refactorings * class comment Co-authored-by: Rohan Sawahn --- .../class/newFromNewChatEvent..st | 6 +++++ .../TCCChat.class/methodProperties.json | 2 +- .../instance/openNewChat..st | 3 +-- .../methodProperties.json | 2 +- .../class/newFromMessageEvent..st | 3 ++- .../TCCMessage.class/instance/isOutgoing..st | 4 +++ .../TCCMessage.class/instance/isOutgoing.st | 4 +++ .../TCCMessage.class/instance/message..st | 2 +- .../TCCMessage.class/instance/senderID..st | 2 +- .../TCCMessage.class/methodProperties.json | 8 +++--- .../TCCMessage.class/properties.json | 3 ++- .../instance/addHeader.st | 2 +- .../instance/defaultHeaderHeight.st | 2 +- .../methodProperties.json | 3 ++- .../instance/addMessageAtBottom..st | 2 +- .../instance/addMessages.st | 2 +- .../TCUChatMessageList.class/instance/core.st | 4 +++ .../instance/scrollDown.st | 2 +- .../instance/scrollUp.st | 2 +- .../instance/showChatMessagesFrom..st | 12 +++++++++ .../methodProperties.json | 10 ++++--- .../TCUChatWindow.class/instance/core.st | 4 +++ .../instance/showChatMessagesFrom..st | 14 ---------- .../TCUChatWindow.class/methodProperties.json | 4 +-- .../instance/chatItemClicked.event.from..st | 2 +- .../instance/defaultScrollStep.st | 4 +++ .../instance/deselectChats.st | 4 +++ .../TCUChatsList.class/instance/scrollDown.st | 2 +- .../TCUChatsList.class/instance/scrollUp.st | 2 +- .../TCUChatsList.class/methodProperties.json | 8 +++--- .../TCUHeaderBar.class/README.md | 1 + .../TCUHeaderBar.class/class/newForMain..st | 6 +++++ .../instance/addCloseButton.st | 13 +++++++++ .../instance/addLogoutButton.st | 11 ++++++++ .../instance/addNewChatButton.st | 13 +++++++++ .../instance/addTitle..st} | 12 ++++----- .../instance/defaultHeight.st | 4 +++ .../instance/defaultSpacing.st | 4 +++ .../TCUHeaderBar.class/instance/initialize.st | 15 +++++++++++ .../TCUHeaderBar.class/instance/main..st | 4 +++ .../TCUHeaderBar.class/instance/main.st | 4 +++ .../instance/newChatButtonClicked.st | 10 +++---- .../TCUHeaderBar.class/methodProperties.json | 14 ++++++++++ .../TCUHeaderBar.class/properties.json | 14 ++++++++++ .../TCUMain.class/class/core..st | 4 --- .../TCUMain.class/class/core.st | 4 --- .../TCUMain.class/instance/addChatsList.st | 6 ++--- .../addCloseButtonTo.withSpacing.deletes..st | 13 --------- .../TCUMain.class/instance/addHeader.st | 19 +++---------- .../instance/addInputFieldTo.withSpacing..st | 15 ----------- .../addLogoutButtonTo.withSpacing..st | 11 -------- .../addNewChatButtonTo.withSpacing..st | 12 --------- .../TCUMain.class/instance/core..st | 1 - .../instance/createHeaderMorph.st | 7 ----- .../TCUMain.class/instance/defaultSpacing.st | 4 +++ .../TCUMain.class/instance/header..st | 4 +++ .../TCUMain.class/instance/header.st | 4 +++ .../TCUMain.class/instance/initialize.st | 2 +- .../instance/initializeChatWindow.st | 4 +-- .../instance/newChatSelected..st | 3 +++ .../instance/newMessageReceived..st | 2 +- .../TCUMain.class/methodProperties.json | 27 +++++++------------ .../TCUMain.class/properties.json | 3 ++- .../class/newFromTCCMessage..st | 1 + .../TCUMessage.class/instance/addText.st | 3 ++- .../instance/defaultTextMargins.st | 2 +- .../TCUMessage.class/instance/initialize.st | 2 +- .../TCUMessage.class/instance/isOutgoing..st | 4 +++ .../TCUMessage.class/instance/isOutgoing.st | 4 +++ .../TCUMessage.class/instance/isSentByMe.st | 4 --- .../TCUMessage.class/methodProperties.json | 11 ++++---- .../TCUMessage.class/properties.json | 3 ++- .../TCUModal.class/instance/addCloseButton.st | 13 +++++++++ .../TCUModal.class/instance/defaultOffset.st | 4 +++ .../TCUModal.class/instance/defaultSpacing.st | 4 +++ .../TCUModal.class/instance/initialize.st | 3 ++- .../TCUModal.class/instance/setText.st | 2 +- .../TCUModal.class/methodProperties.json | 7 +++-- .../instance/defaultBorderWidth.st | 4 +++ .../instance/defaultTimeOutDuration.st | 4 +++ .../instance/initializeDefaults.st | 2 +- .../instance/startTimeOut.st | 2 +- .../methodProperties.json | 6 +++-- 83 files changed, 295 insertions(+), 184 deletions(-) create mode 100644 packages/TelegramClient-Core.package/TCCChat.class/class/newFromNewChatEvent..st create mode 100644 packages/TelegramClient-Core.package/TCCMessage.class/instance/isOutgoing..st create mode 100644 packages/TelegramClient-Core.package/TCCMessage.class/instance/isOutgoing.st rename packages/TelegramClient-UI.package/{TCUMain.class => TCUAuthentication.class}/instance/defaultHeaderHeight.st (63%) create mode 100644 packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/core.st create mode 100644 packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/showChatMessagesFrom..st create mode 100644 packages/TelegramClient-UI.package/TCUChatWindow.class/instance/core.st delete mode 100644 packages/TelegramClient-UI.package/TCUChatWindow.class/instance/showChatMessagesFrom..st create mode 100644 packages/TelegramClient-UI.package/TCUChatsList.class/instance/defaultScrollStep.st create mode 100644 packages/TelegramClient-UI.package/TCUChatsList.class/instance/deselectChats.st create mode 100644 packages/TelegramClient-UI.package/TCUHeaderBar.class/README.md create mode 100644 packages/TelegramClient-UI.package/TCUHeaderBar.class/class/newForMain..st create mode 100644 packages/TelegramClient-UI.package/TCUHeaderBar.class/instance/addCloseButton.st create mode 100644 packages/TelegramClient-UI.package/TCUHeaderBar.class/instance/addLogoutButton.st create mode 100644 packages/TelegramClient-UI.package/TCUHeaderBar.class/instance/addNewChatButton.st rename packages/TelegramClient-UI.package/{TCUMain.class/instance/addTitle.to..st => TCUHeaderBar.class/instance/addTitle..st} (55%) create mode 100644 packages/TelegramClient-UI.package/TCUHeaderBar.class/instance/defaultHeight.st create mode 100644 packages/TelegramClient-UI.package/TCUHeaderBar.class/instance/defaultSpacing.st create mode 100644 packages/TelegramClient-UI.package/TCUHeaderBar.class/instance/initialize.st create mode 100644 packages/TelegramClient-UI.package/TCUHeaderBar.class/instance/main..st create mode 100644 packages/TelegramClient-UI.package/TCUHeaderBar.class/instance/main.st rename packages/TelegramClient-UI.package/{TCUMain.class => TCUHeaderBar.class}/instance/newChatButtonClicked.st (65%) create mode 100644 packages/TelegramClient-UI.package/TCUHeaderBar.class/methodProperties.json create mode 100644 packages/TelegramClient-UI.package/TCUHeaderBar.class/properties.json delete mode 100644 packages/TelegramClient-UI.package/TCUMain.class/class/core..st delete mode 100644 packages/TelegramClient-UI.package/TCUMain.class/class/core.st delete mode 100644 packages/TelegramClient-UI.package/TCUMain.class/instance/addCloseButtonTo.withSpacing.deletes..st delete mode 100644 packages/TelegramClient-UI.package/TCUMain.class/instance/addInputFieldTo.withSpacing..st delete mode 100644 packages/TelegramClient-UI.package/TCUMain.class/instance/addLogoutButtonTo.withSpacing..st delete mode 100644 packages/TelegramClient-UI.package/TCUMain.class/instance/addNewChatButtonTo.withSpacing..st delete mode 100644 packages/TelegramClient-UI.package/TCUMain.class/instance/createHeaderMorph.st create mode 100644 packages/TelegramClient-UI.package/TCUMain.class/instance/defaultSpacing.st create mode 100644 packages/TelegramClient-UI.package/TCUMain.class/instance/header..st create mode 100644 packages/TelegramClient-UI.package/TCUMain.class/instance/header.st create mode 100644 packages/TelegramClient-UI.package/TCUMessage.class/instance/isOutgoing..st create mode 100644 packages/TelegramClient-UI.package/TCUMessage.class/instance/isOutgoing.st delete mode 100644 packages/TelegramClient-UI.package/TCUMessage.class/instance/isSentByMe.st create mode 100644 packages/TelegramClient-UI.package/TCUModal.class/instance/addCloseButton.st create mode 100644 packages/TelegramClient-UI.package/TCUModal.class/instance/defaultOffset.st create mode 100644 packages/TelegramClient-UI.package/TCUModal.class/instance/defaultSpacing.st create mode 100644 packages/TelegramClient-UI.package/TCUNotification.class/instance/defaultBorderWidth.st create mode 100644 packages/TelegramClient-UI.package/TCUNotification.class/instance/defaultTimeOutDuration.st diff --git a/packages/TelegramClient-Core.package/TCCChat.class/class/newFromNewChatEvent..st b/packages/TelegramClient-Core.package/TCCChat.class/class/newFromNewChatEvent..st new file mode 100644 index 000000000..3c181d839 --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCChat.class/class/newFromNewChatEvent..st @@ -0,0 +1,6 @@ +instance creation +newFromNewChatEvent: anEvent + + ^ self new + title: (anEvent at: 'title'); + id: (anEvent at: 'id') \ 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 f2f072a08..05ac1962f 100644 --- a/packages/TelegramClient-Core.package/TCCChat.class/methodProperties.json +++ b/packages/TelegramClient-Core.package/TCCChat.class/methodProperties.json @@ -1,6 +1,6 @@ { "class" : { - }, + "newFromNewChatEvent:" : "js 8/2/2020 22:26" }, "instance" : { "addNewMessage:" : "js 8/1/2020 17:59", "addNewestMessage:" : "js 8/2/2020 12:58", diff --git a/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/openNewChat..st b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/openNewChat..st index 8c9bb67b4..e800c0cac 100644 --- a/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/openNewChat..st +++ b/packages/TelegramClient-Core.package/TCCChatsHandler.class/instance/openNewChat..st @@ -1,5 +1,4 @@ events openNewChat: aChat - self app chats triggerEvent: #openNewChat with: (TCCChat new - id: (aChat at: 'id')). \ No newline at end of file + self app chats triggerEvent: #openNewChat with: (TCCChat newFromNewChatEvent: aChat). \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCChatsHandler.class/methodProperties.json b/packages/TelegramClient-Core.package/TCCChatsHandler.class/methodProperties.json index dc9f0648e..6b6e1cb3f 100644 --- a/packages/TelegramClient-Core.package/TCCChatsHandler.class/methodProperties.json +++ b/packages/TelegramClient-Core.package/TCCChatsHandler.class/methodProperties.json @@ -12,7 +12,7 @@ "getChatHistoryFrom:with:limit:" : "js 8/2/2020 13:17", "getChats" : "js 7/31/2020 22:50", "handleNewMessage:" : "js 8/2/2020 12:58", - "openNewChat:" : "j 7/16/2020 12:04", + "openNewChat:" : "js 8/2/2020 22:27", "remainingMessages" : "js 8/1/2020 16:49", "remainingMessages:" : "js 8/1/2020 16:50", "searchChat:" : "f.w. 7/15/2020 22:53", diff --git a/packages/TelegramClient-Core.package/TCCMessage.class/class/newFromMessageEvent..st b/packages/TelegramClient-Core.package/TCCMessage.class/class/newFromMessageEvent..st index 650093df2..9c6472b7c 100644 --- a/packages/TelegramClient-Core.package/TCCMessage.class/class/newFromMessageEvent..st +++ b/packages/TelegramClient-Core.package/TCCMessage.class/class/newFromMessageEvent..st @@ -7,4 +7,5 @@ newFromMessageEvent: aMessageEvent ifFalse: ['message type not supported yet']); chatID: (aMessageEvent at: 'chat_id'); senderID: (aMessageEvent at: 'sender_user_id'); - id: (aMessageEvent at: 'id') \ No newline at end of file + id: (aMessageEvent at: 'id'); + isOutgoing: (aMessageEvent at: 'is_outgoing') \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCMessage.class/instance/isOutgoing..st b/packages/TelegramClient-Core.package/TCCMessage.class/instance/isOutgoing..st new file mode 100644 index 000000000..edff07c5f --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCMessage.class/instance/isOutgoing..st @@ -0,0 +1,4 @@ +accessing +isOutgoing: aBoolean + + isOutgoing := aBoolean. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCMessage.class/instance/isOutgoing.st b/packages/TelegramClient-Core.package/TCCMessage.class/instance/isOutgoing.st new file mode 100644 index 000000000..be9441a50 --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCMessage.class/instance/isOutgoing.st @@ -0,0 +1,4 @@ +accessing +isOutgoing + + ^ isOutgoing \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCMessage.class/instance/message..st b/packages/TelegramClient-Core.package/TCCMessage.class/instance/message..st index fff1e343d..7d27f20fe 100644 --- a/packages/TelegramClient-Core.package/TCCMessage.class/instance/message..st +++ b/packages/TelegramClient-Core.package/TCCMessage.class/instance/message..st @@ -1,4 +1,4 @@ accessing message: aString - message := aString \ No newline at end of file + message := aString. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCMessage.class/instance/senderID..st b/packages/TelegramClient-Core.package/TCCMessage.class/instance/senderID..st index 50102b91c..9224139f1 100644 --- a/packages/TelegramClient-Core.package/TCCMessage.class/instance/senderID..st +++ b/packages/TelegramClient-Core.package/TCCMessage.class/instance/senderID..st @@ -1,4 +1,4 @@ accessing senderID: aNumber - senderID := aNumber \ No newline at end of file + senderID := aNumber. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCMessage.class/methodProperties.json b/packages/TelegramClient-Core.package/TCCMessage.class/methodProperties.json index e69bb2c44..a86268511 100644 --- a/packages/TelegramClient-Core.package/TCCMessage.class/methodProperties.json +++ b/packages/TelegramClient-Core.package/TCCMessage.class/methodProperties.json @@ -1,13 +1,15 @@ { "class" : { - "newFromMessageEvent:" : "js 8/1/2020 18:20" }, + "newFromMessageEvent:" : "js 8/2/2020 22:01" }, "instance" : { "chatID" : "js 7/31/2020 15:14", "chatID:" : "j 7/16/2020 12:03", "id" : "js 8/1/2020 18:20", "id:" : "js 8/1/2020 18:20", "initialize" : "js 8/1/2020 18:18", + "isOutgoing" : "js 8/2/2020 22:00", + "isOutgoing:" : "js 8/2/2020 22:00", "message" : "rs 6/29/2020 17:13", - "message:" : "rs 6/29/2020 17:13", + "message:" : "js 8/2/2020 22:01", "senderID" : "js 8/1/2020 18:21", - "senderID:" : "js 8/1/2020 18:21" } } + "senderID:" : "js 8/2/2020 22:00" } } diff --git a/packages/TelegramClient-Core.package/TCCMessage.class/properties.json b/packages/TelegramClient-Core.package/TCCMessage.class/properties.json index 3501d486a..5893b403a 100644 --- a/packages/TelegramClient-Core.package/TCCMessage.class/properties.json +++ b/packages/TelegramClient-Core.package/TCCMessage.class/properties.json @@ -9,7 +9,8 @@ "message", "chatID", "id", - "senderID" ], + "senderID", + "isOutgoing" ], "name" : "TCCMessage", "pools" : [ ], diff --git a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/addHeader.st b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/addHeader.st index d6aef178b..ac51e89ed 100644 --- a/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/addHeader.st +++ b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/addHeader.st @@ -5,7 +5,7 @@ addHeader header := RectangleMorph new borderWidth: 0; color: TCUDefaultValues colorGray; - extent: self width @ 40. + extent: self width @ self defaultHeaderHeight. self addMorph: header; diff --git a/packages/TelegramClient-UI.package/TCUMain.class/instance/defaultHeaderHeight.st b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/defaultHeaderHeight.st similarity index 63% rename from packages/TelegramClient-UI.package/TCUMain.class/instance/defaultHeaderHeight.st rename to packages/TelegramClient-UI.package/TCUAuthentication.class/instance/defaultHeaderHeight.st index ff907d657..5f657d248 100644 --- a/packages/TelegramClient-UI.package/TCUMain.class/instance/defaultHeaderHeight.st +++ b/packages/TelegramClient-UI.package/TCUAuthentication.class/instance/defaultHeaderHeight.st @@ -1,4 +1,4 @@ -default values +defaultValues defaultHeaderHeight ^ 40 \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUAuthentication.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUAuthentication.class/methodProperties.json index f14fb0a87..f5f43258b 100644 --- a/packages/TelegramClient-UI.package/TCUAuthentication.class/methodProperties.json +++ b/packages/TelegramClient-UI.package/TCUAuthentication.class/methodProperties.json @@ -2,7 +2,7 @@ "class" : { "newWithCore:" : "R.S 5/31/2020 20:16" }, "instance" : { - "addHeader" : "js 6/13/2020 19:18", + "addHeader" : "r.s 8/2/2020 21:29", "addTitle:to:" : "N.S. 7/26/2020 15:52", "buttonBack" : "rs 6/11/2020 18:53", "buttonBack:" : "rs 6/11/2020 18:53", @@ -22,6 +22,7 @@ "createInputField:" : "js 7/31/2020 15:18", "createLabel:" : "js 6/13/2020 18:13", "defaultExtent" : "R.S 5/20/2020 13:51", + "defaultHeaderHeight" : "r.s 8/2/2020 21:29", "defaultInputWidth" : "R.S 5/20/2020 13:51", "delete" : "f.w. 6/3/2020 20:51", "errorLabel" : "R.S 5/20/2020 13:51", diff --git a/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/addMessageAtBottom..st b/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/addMessageAtBottom..st index b9e66ef06..6c80ac0af 100644 --- a/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/addMessageAtBottom..st +++ b/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/addMessageAtBottom..st @@ -6,7 +6,7 @@ addMessageAtBottom: aMessage self messages do: [:message | message position: (message position - (0 @ (newMessage height)))]. - newMessage isSentByMe + newMessage isOutgoing ifTrue: [newMessage bottomRight: (self bottomRight - (self defaultMessageMargin @ 0))] ifFalse: [newMessage bottomLeft: (self bottomLeft + (self defaultMessageMargin @ 0))]. self addMorph: newMessage. diff --git a/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/addMessages.st b/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/addMessages.st index 7670d1e02..57486604d 100644 --- a/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/addMessages.st +++ b/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/addMessages.st @@ -1,4 +1,4 @@ messages addMessages - self owner showChatMessagesFrom: self lowestVisibleMessage. \ No newline at end of file + self showChatMessagesFrom: self lowestVisibleMessage. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/core.st b/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/core.st new file mode 100644 index 000000000..44e3b7100 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/core.st @@ -0,0 +1,4 @@ +event handling +core + + ^ self owner core \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/scrollDown.st b/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/scrollDown.st index 20aefcc00..f18559d96 100644 --- a/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/scrollDown.st +++ b/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/scrollDown.st @@ -2,4 +2,4 @@ event handling scrollDown self lowestVisibleMessage < 1 ifFalse: [ - self owner showChatMessagesFrom: self lowestVisibleMessage - 1.]. \ No newline at end of file + self showChatMessagesFrom: self lowestVisibleMessage - 1.]. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/scrollUp.st b/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/scrollUp.st index b7afe9740..0d21959ac 100644 --- a/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/scrollUp.st +++ b/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/scrollUp.st @@ -1,4 +1,4 @@ event handling scrollUp - self owner showChatMessagesFrom: self lowestVisibleMessage + 1. \ No newline at end of file + self showChatMessagesFrom: self lowestVisibleMessage + 1. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/showChatMessagesFrom..st b/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/showChatMessagesFrom..st new file mode 100644 index 000000000..24f54cae2 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUChatMessageList.class/instance/showChatMessagesFrom..st @@ -0,0 +1,12 @@ +accessing +showChatMessagesFrom: lowestMessage + + self clearMessages. + self lowestVisibleMessage: lowestMessage. + + self chat messages reversed collect: [:message | self addMessageAtBottom: message] + from: 1 + to: self chat numberOfMessages - lowestMessage. + + self chat numberOfMessages < (lowestMessage + 20) ifTrue: [ + self core getChatHistoryFrom: self chat id]. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatMessageList.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUChatMessageList.class/methodProperties.json index 70d29c0fe..b08095731 100644 --- a/packages/TelegramClient-UI.package/TCUChatMessageList.class/methodProperties.json +++ b/packages/TelegramClient-UI.package/TCUChatMessageList.class/methodProperties.json @@ -2,11 +2,12 @@ "class" : { }, "instance" : { - "addMessageAtBottom:" : "js 7/31/2020 17:00", - "addMessages" : "f.w. 8/1/2020 05:09", + "addMessageAtBottom:" : "js 8/2/2020 22:03", + "addMessages" : "js 8/2/2020 22:16", "chat" : "js 7/31/2020 16:39", "chat:" : "js 7/31/2020 16:39", "clearMessages" : "js 7/31/2020 16:46", + "core" : "js 8/2/2020 22:11", "defaultMessageMargin" : "js 7/31/2020 15:50", "displayChat:" : "f.w. 8/1/2020 04:53", "handleMouseWheel:" : "f.w. 7/31/2020 23:53", @@ -15,5 +16,6 @@ "lowestVisibleMessage:" : "f.w. 7/31/2020 23:55", "messages" : "rs 6/17/2020 19:10", "messages:" : "rs 6/17/2020 19:10", - "scrollDown" : "f.w. 8/1/2020 02:37", - "scrollUp" : "f.w. 8/1/2020 02:17" } } + "scrollDown" : "js 8/2/2020 22:17", + "scrollUp" : "js 8/2/2020 22:17", + "showChatMessagesFrom:" : "js 8/2/2020 22:18" } } diff --git a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/core.st b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/core.st new file mode 100644 index 000000000..c5c47a7b4 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/core.st @@ -0,0 +1,4 @@ +accessing +core + + ^ self owner core \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/showChatMessagesFrom..st b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/showChatMessagesFrom..st deleted file mode 100644 index b3219d54f..000000000 --- a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/showChatMessagesFrom..st +++ /dev/null @@ -1,14 +0,0 @@ -drawing -showChatMessagesFrom: lowestMessage - - | messageListReversed | - messageListReversed := self selectedChat messages reversed. - messageListReversed removeLast. - self messageListWindow clearMessages. - self messageListWindow lowestVisibleMessage: lowestMessage. - - 1 to: messageListReversed size - lowestMessage do: [: x | - self messageListWindow addMessageAtBottom: (messageListReversed at: x)]. - - messageListReversed size < (lowestMessage + 20) ifTrue: [ - self owner getChatHistoryFrom: self selectedChat.]. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatWindow.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUChatWindow.class/methodProperties.json index de055a77d..5789e032e 100644 --- a/packages/TelegramClient-UI.package/TCUChatWindow.class/methodProperties.json +++ b/packages/TelegramClient-UI.package/TCUChatWindow.class/methodProperties.json @@ -11,6 +11,7 @@ "addWelcomeMessage" : "N.S. 7/26/2020 15:57", "buttonSendPressed" : "js 7/31/2020 17:08", "clear" : "sp 8/2/2020 15:33", + "core" : "js 8/2/2020 22:11", "createInputBar" : "rs 6/17/2020 21:01", "createTitleBar" : "sp 8/2/2020 15:52", "defaultInputfieldHeight" : "rs 6/12/2020 20:03", @@ -20,10 +21,9 @@ "inputBar:" : "rs 6/13/2020 10:38", "messageListWindow" : "rs 6/17/2020 19:12", "messageListWindow:" : "rs 6/17/2020 19:13", - "newChatSelected:" : "js 8/2/2020 17:46", + "newChatSelected:" : "js 8/2/2020 22:30", "selectedChat" : "rs 6/13/2020 09:11", "selectedChat:" : "rs 6/13/2020 09:11", - "showChatMessagesFrom:" : "js 8/1/2020 18:26", "textInputField" : "rs 6/13/2020 10:41", "textInputField:" : "rs 6/13/2020 10:42", "titleBar" : "sp 8/2/2020 15:04", diff --git a/packages/TelegramClient-UI.package/TCUChatsList.class/instance/chatItemClicked.event.from..st b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/chatItemClicked.event.from..st index 202fa5343..a94192d8a 100644 --- a/packages/TelegramClient-UI.package/TCUChatsList.class/instance/chatItemClicked.event.from..st +++ b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/chatItemClicked.event.from..st @@ -1,7 +1,7 @@ event handling chatItemClicked: aChatListItem event: anEvent from: aSender - self items do: [:anItem | anItem deselect]. + self deselectChats. (aChatListItem chatID ~= self selectedChat id) ifTrue: [aChatListItem select. diff --git a/packages/TelegramClient-UI.package/TCUChatsList.class/instance/defaultScrollStep.st b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/defaultScrollStep.st new file mode 100644 index 000000000..d6258a2c4 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/defaultScrollStep.st @@ -0,0 +1,4 @@ +default values +defaultScrollStep + + ^ 50 \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatsList.class/instance/deselectChats.st b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/deselectChats.st new file mode 100644 index 000000000..2c72a0189 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/deselectChats.st @@ -0,0 +1,4 @@ +drawing +deselectChats + + self items do: [:each | each deselect]. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatsList.class/instance/scrollDown.st b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/scrollDown.st index 3317d54dd..6163af055 100644 --- a/packages/TelegramClient-UI.package/TCUChatsList.class/instance/scrollDown.st +++ b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/scrollDown.st @@ -1,4 +1,4 @@ event handling scrollDown - self position: self position - (0 @ 50). \ No newline at end of file + self position: self position - (0 @ self defaultScrollStep). \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatsList.class/instance/scrollUp.st b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/scrollUp.st index 98e5bedba..975366d3d 100644 --- a/packages/TelegramClient-UI.package/TCUChatsList.class/instance/scrollUp.st +++ b/packages/TelegramClient-UI.package/TCUChatsList.class/instance/scrollUp.st @@ -2,4 +2,4 @@ event handling scrollUp self position y >= self maxHeight ifFalse:[ - self position: self position + (0 @ 50).]. \ No newline at end of file + self position: self position + (0 @ self defaultScrollStep).]. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUChatsList.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUChatsList.class/methodProperties.json index c7b849cd6..b8877cc37 100644 --- a/packages/TelegramClient-UI.package/TCUChatsList.class/methodProperties.json +++ b/packages/TelegramClient-UI.package/TCUChatsList.class/methodProperties.json @@ -2,12 +2,14 @@ "class" : { }, "instance" : { - "chatItemClicked:event:from:" : "f.w. 6/26/2020 15:19", + "chatItemClicked:event:from:" : "js 8/2/2020 22:29", "chats" : "rs 6/17/2020 22:38", "chats:" : "f.w. 7/15/2020 23:57", "clearItems" : "rs 6/17/2020 22:39", "createChatListItem:" : "js 7/31/2020 23:05", + "defaultScrollStep" : "r.s 8/2/2020 21:24", "defaultWidth" : "R.S 6/1/2020 14:24", + "deselectChats" : "js 8/2/2020 22:29", "handleMouseWheel:" : "r.s 7/15/2020 15:09", "initialize" : "f.w. 7/12/2020 04:29", "initializeLayout" : "js 6/13/2020 18:49", @@ -17,7 +19,7 @@ "maxHeight:" : "f.w. 7/12/2020 04:56", "openNewChat:" : "f.w. 7/16/2020 00:02", "redrawItems" : "js 8/2/2020 13:31", - "scrollDown" : "f.w. 7/12/2020 04:14", - "scrollUp" : "f.w. 7/12/2020 22:06", + "scrollDown" : "r.s 8/2/2020 21:24", + "scrollUp" : "r.s 8/2/2020 21:24", "selectedChat" : "rs 6/13/2020 08:51", "selectedChat:" : "rs 6/17/2020 22:25" } } diff --git a/packages/TelegramClient-UI.package/TCUHeaderBar.class/README.md b/packages/TelegramClient-UI.package/TCUHeaderBar.class/README.md new file mode 100644 index 000000000..fb01ef147 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUHeaderBar.class/README.md @@ -0,0 +1 @@ +a simple Headerbar for the main view with some buttons \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUHeaderBar.class/class/newForMain..st b/packages/TelegramClient-UI.package/TCUHeaderBar.class/class/newForMain..st new file mode 100644 index 000000000..51c0be644 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUHeaderBar.class/class/newForMain..st @@ -0,0 +1,6 @@ +instance creation +newForMain: aMainWindow + + ^ self basicNew + main: aMainWindow; + initialize \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUHeaderBar.class/instance/addCloseButton.st b/packages/TelegramClient-UI.package/TCUHeaderBar.class/instance/addCloseButton.st new file mode 100644 index 000000000..e0be51f86 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUHeaderBar.class/instance/addCloseButton.st @@ -0,0 +1,13 @@ +initialization +addCloseButton + + | closeButton | + + closeButton := TCUButton new + text: 'close'; + color: TCUDefaultValues colorRed; + on: #mouseUp send: #delete to: self main. + closeButton text color: Color white. + closeButton position: (self main position x + self defaultSpacing) @ self defaultSpacing. + + self addMorph: closeButton. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUHeaderBar.class/instance/addLogoutButton.st b/packages/TelegramClient-UI.package/TCUHeaderBar.class/instance/addLogoutButton.st new file mode 100644 index 000000000..5faf022cc --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUHeaderBar.class/instance/addLogoutButton.st @@ -0,0 +1,11 @@ +initialization +addLogoutButton + + | logoutButton | + + logoutButton := TCUButton new + text: 'logout'; + on: #mouseUp send: #logout to: self main. + logoutButton position: (self main position x + self main width - logoutButton width - self defaultSpacing) @ self defaultSpacing. + + self addMorph: logoutButton. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUHeaderBar.class/instance/addNewChatButton.st b/packages/TelegramClient-UI.package/TCUHeaderBar.class/instance/addNewChatButton.st new file mode 100644 index 000000000..20443eacf --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUHeaderBar.class/instance/addNewChatButton.st @@ -0,0 +1,13 @@ +initialization +addNewChatButton + + | newChatButton | + + newChatButton := (TCUButton new + text: '+ Chat'; + on: #mouseUp send: #newChatButtonClicked to: self). + + newChatButton text color: Color white. + newChatButton position: (self main position x + newChatButton width + (4 * self defaultSpacing)) @ self defaultSpacing. + + self addMorph: newChatButton. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMain.class/instance/addTitle.to..st b/packages/TelegramClient-UI.package/TCUHeaderBar.class/instance/addTitle..st similarity index 55% rename from packages/TelegramClient-UI.package/TCUMain.class/instance/addTitle.to..st rename to packages/TelegramClient-UI.package/TCUHeaderBar.class/instance/addTitle..st index 78e1c9413..aeafa0a5d 100644 --- a/packages/TelegramClient-UI.package/TCUMain.class/instance/addTitle.to..st +++ b/packages/TelegramClient-UI.package/TCUHeaderBar.class/instance/addTitle..st @@ -1,13 +1,11 @@ -drawing -addTitle: aString to: aMorph +initialization +addTitle: aString - | titleLable font | + | font | font := (TextFontReference toFont: (StrikeFont familyName: 'DefaultTextStyle' size: 35)). - titleLable := TextMorph new + self addMorphCentered: (TextMorph new contents: (aString asText addAttribute: font); color: Color white; - lock. - - aMorph addMorphCentered: titleLable. \ No newline at end of file + lock). \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUHeaderBar.class/instance/defaultHeight.st b/packages/TelegramClient-UI.package/TCUHeaderBar.class/instance/defaultHeight.st new file mode 100644 index 000000000..efe6e3f24 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUHeaderBar.class/instance/defaultHeight.st @@ -0,0 +1,4 @@ +default values +defaultHeight + + ^ 40 \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUHeaderBar.class/instance/defaultSpacing.st b/packages/TelegramClient-UI.package/TCUHeaderBar.class/instance/defaultSpacing.st new file mode 100644 index 000000000..2f55932b1 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUHeaderBar.class/instance/defaultSpacing.st @@ -0,0 +1,4 @@ +default values +defaultSpacing + + ^ 5 \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUHeaderBar.class/instance/initialize.st b/packages/TelegramClient-UI.package/TCUHeaderBar.class/instance/initialize.st new file mode 100644 index 000000000..6922213b4 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUHeaderBar.class/instance/initialize.st @@ -0,0 +1,15 @@ +initialization +initialize + + super initialize. + + self + borderWidth: 0; + color: TCUDefaultValues colorGray; + extent: self main width @ self defaultHeight. + + self + addTitle: 'Telegram'; + addLogoutButton; + addCloseButton; + addNewChatButton. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUHeaderBar.class/instance/main..st b/packages/TelegramClient-UI.package/TCUHeaderBar.class/instance/main..st new file mode 100644 index 000000000..f8bbbce83 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUHeaderBar.class/instance/main..st @@ -0,0 +1,4 @@ +accessing +main: aMainWindow + + main := aMainWindow. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUHeaderBar.class/instance/main.st b/packages/TelegramClient-UI.package/TCUHeaderBar.class/instance/main.st new file mode 100644 index 000000000..f1beff8a1 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUHeaderBar.class/instance/main.st @@ -0,0 +1,4 @@ +accessing +main + + ^ main \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMain.class/instance/newChatButtonClicked.st b/packages/TelegramClient-UI.package/TCUHeaderBar.class/instance/newChatButtonClicked.st similarity index 65% rename from packages/TelegramClient-UI.package/TCUMain.class/instance/newChatButtonClicked.st rename to packages/TelegramClient-UI.package/TCUHeaderBar.class/instance/newChatButtonClicked.st index e239005b1..3c18a4e13 100644 --- a/packages/TelegramClient-UI.package/TCUMain.class/instance/newChatButtonClicked.st +++ b/packages/TelegramClient-UI.package/TCUHeaderBar.class/instance/newChatButtonClicked.st @@ -1,4 +1,4 @@ -event handling +accessing newChatButtonClicked | inputField modal | @@ -9,10 +9,10 @@ newChatButtonClicked borderWidth: 2; extent: 200 @ 50; borderColor: TCUDefaultValues colorLightBlue. - inputField crAction: [self core searchChat: inputField text. modal delete]. - - self addCloseButtonTo: modal withSpacing: 5 deletes: modal. + inputField crAction: [ + self main core searchChat: inputField text. + modal delete]. modal addMorphCentered: inputField. - self addMorphCentered: modal. \ No newline at end of file + self main addMorphCentered: modal. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUHeaderBar.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUHeaderBar.class/methodProperties.json new file mode 100644 index 000000000..0c961a48e --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUHeaderBar.class/methodProperties.json @@ -0,0 +1,14 @@ +{ + "class" : { + "newForMain:" : "js 8/2/2020 22:34" }, + "instance" : { + "addCloseButton" : "r.s 8/2/2020 19:02", + "addLogoutButton" : "r.s 8/2/2020 19:03", + "addNewChatButton" : "js 8/2/2020 22:21", + "addTitle:" : "r.s 8/2/2020 18:52", + "defaultHeight" : "r.s 8/2/2020 18:59", + "defaultSpacing" : "r.s 8/2/2020 18:54", + "initialize" : "r.s 8/2/2020 19:02", + "main" : "r.s 8/2/2020 19:02", + "main:" : "r.s 8/2/2020 19:02", + "newChatButtonClicked" : "js 8/2/2020 22:22" } } diff --git a/packages/TelegramClient-UI.package/TCUHeaderBar.class/properties.json b/packages/TelegramClient-UI.package/TCUHeaderBar.class/properties.json new file mode 100644 index 000000000..c86b345ce --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUHeaderBar.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "TelegramClient-UI", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "js 8/2/2020 22:35", + "instvars" : [ + "main" ], + "name" : "TCUHeaderBar", + "pools" : [ + ], + "super" : "RectangleMorph", + "type" : "normal" } diff --git a/packages/TelegramClient-UI.package/TCUMain.class/class/core..st b/packages/TelegramClient-UI.package/TCUMain.class/class/core..st deleted file mode 100644 index 194ac5d61..000000000 --- a/packages/TelegramClient-UI.package/TCUMain.class/class/core..st +++ /dev/null @@ -1,4 +0,0 @@ -accessing -core: aCore - - Core := aCore. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMain.class/class/core.st b/packages/TelegramClient-UI.package/TCUMain.class/class/core.st deleted file mode 100644 index 28f9c689e..000000000 --- a/packages/TelegramClient-UI.package/TCUMain.class/class/core.st +++ /dev/null @@ -1,4 +0,0 @@ -accessing -core - - ^ Core \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMain.class/instance/addChatsList.st b/packages/TelegramClient-UI.package/TCUMain.class/instance/addChatsList.st index 436dccd20..161d43c51 100644 --- a/packages/TelegramClient-UI.package/TCUMain.class/instance/addChatsList.st +++ b/packages/TelegramClient-UI.package/TCUMain.class/instance/addChatsList.st @@ -2,9 +2,9 @@ drawing addChatsList self chatsList: (TCUChatsList new - height: (self height - self defaultHeaderHeight); - position: (self position + (0 @ self defaultHeaderHeight)); + height: (self height - self header height); + position: (self position + (0 @ self header height)); chats: self core chats). self - addMorph: self chatsList. \ No newline at end of file + addMorphBack: self chatsList. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMain.class/instance/addCloseButtonTo.withSpacing.deletes..st b/packages/TelegramClient-UI.package/TCUMain.class/instance/addCloseButtonTo.withSpacing.deletes..st deleted file mode 100644 index 13ff60d1c..000000000 --- a/packages/TelegramClient-UI.package/TCUMain.class/instance/addCloseButtonTo.withSpacing.deletes..st +++ /dev/null @@ -1,13 +0,0 @@ -drawing -addCloseButtonTo: aMorph withSpacing: aSpacing deletes: aDeletableMorph - - | closeButton | - - closeButton := TCUButton new - text: 'close'; - color: TCUDefaultValues colorRed; - on: #mouseUp send: #delete to: aDeletableMorph. - closeButton text color: Color white. - closeButton position: (aMorph position x + aSpacing) @ aSpacing. - - aMorph addMorph: closeButton. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMain.class/instance/addHeader.st b/packages/TelegramClient-UI.package/TCUMain.class/instance/addHeader.st index 67c5a4685..01dab6682 100644 --- a/packages/TelegramClient-UI.package/TCUMain.class/instance/addHeader.st +++ b/packages/TelegramClient-UI.package/TCUMain.class/instance/addHeader.st @@ -1,17 +1,6 @@ drawing addHeader - - | header | - - header := RectangleMorph new - borderWidth: 0; - color: TCUDefaultValues colorGray; - extent: self width @ self defaultHeaderHeight. - - self - addMorph: header; - addTitle: 'Telegram' to: header; - addLogoutButtonTo: header withSpacing: 5; - addCloseButtonTo: header withSpacing: 5 deletes: self; - "addInputFieldTo: header withSpacing: 5;" - addNewChatButtonTo: header withSpacing: 5. \ No newline at end of file + + self + header: (TCUHeaderBar newForMain: self); + addMorph: self header. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMain.class/instance/addInputFieldTo.withSpacing..st b/packages/TelegramClient-UI.package/TCUMain.class/instance/addInputFieldTo.withSpacing..st deleted file mode 100644 index 75dd1204d..000000000 --- a/packages/TelegramClient-UI.package/TCUMain.class/instance/addInputFieldTo.withSpacing..st +++ /dev/null @@ -1,15 +0,0 @@ -drawing -addInputFieldTo: aMorph withSpacing: aSpacing - - | inputField | - - inputField := TextMorph new - "contentsWrapped: 'search';" - contents: 'search'; - borderColor: TCUDefaultValues colorLightGray; - color: TCUDefaultValues colorLightGray; - borderWidth: 1. - inputField position: (aMorph position x + 170 + aSpacing) @ aSpacing. - inputField crAction: [self core searchChat: inputField text]. - - aMorph addMorph: inputField. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMain.class/instance/addLogoutButtonTo.withSpacing..st b/packages/TelegramClient-UI.package/TCUMain.class/instance/addLogoutButtonTo.withSpacing..st deleted file mode 100644 index 11f396d1b..000000000 --- a/packages/TelegramClient-UI.package/TCUMain.class/instance/addLogoutButtonTo.withSpacing..st +++ /dev/null @@ -1,11 +0,0 @@ -drawing -addLogoutButtonTo: aMorph withSpacing: aSpacing - - | logoutButton | - - logoutButton := TCUButton new - text: 'logout'; - on: #mouseUp send: #logout to: self. - logoutButton position: (aMorph position x + aMorph width - logoutButton width - aSpacing) @ aSpacing. - - aMorph addMorph: logoutButton. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMain.class/instance/addNewChatButtonTo.withSpacing..st b/packages/TelegramClient-UI.package/TCUMain.class/instance/addNewChatButtonTo.withSpacing..st deleted file mode 100644 index c30493e08..000000000 --- a/packages/TelegramClient-UI.package/TCUMain.class/instance/addNewChatButtonTo.withSpacing..st +++ /dev/null @@ -1,12 +0,0 @@ -drawing -addNewChatButtonTo: aMorph withSpacing: aSpacing - - | newChatButton | - - newChatButton := TCUButton new - text: '+ Chat'; - on: #mouseUp send: #newChatButtonClicked to: self. - newChatButton text color: Color white. - newChatButton position: (aMorph position x + newChatButton width + (4 * aSpacing)) @ aSpacing. - - aMorph addMorph: newChatButton. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMain.class/instance/core..st b/packages/TelegramClient-UI.package/TCUMain.class/instance/core..st index 107b36a8d..e78ac3350 100644 --- a/packages/TelegramClient-UI.package/TCUMain.class/instance/core..st +++ b/packages/TelegramClient-UI.package/TCUMain.class/instance/core..st @@ -1,6 +1,5 @@ accessing core: aCore - TCUMain core: aCore. core := aCore. aCore when: #newMessageReceived send: #newMessageReceived: to: self. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMain.class/instance/createHeaderMorph.st b/packages/TelegramClient-UI.package/TCUMain.class/instance/createHeaderMorph.st deleted file mode 100644 index d110b37e1..000000000 --- a/packages/TelegramClient-UI.package/TCUMain.class/instance/createHeaderMorph.st +++ /dev/null @@ -1,7 +0,0 @@ -drawing -createHeaderMorph - - ^ RectangleMorph new - borderWidth: 0; - color: TCUDefaultValues colorGray; - extent: self width @ self defaultHeaderHeight \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMain.class/instance/defaultSpacing.st b/packages/TelegramClient-UI.package/TCUMain.class/instance/defaultSpacing.st new file mode 100644 index 000000000..2f55932b1 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUMain.class/instance/defaultSpacing.st @@ -0,0 +1,4 @@ +default values +defaultSpacing + + ^ 5 \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMain.class/instance/header..st b/packages/TelegramClient-UI.package/TCUMain.class/instance/header..st new file mode 100644 index 000000000..7b253caaf --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUMain.class/instance/header..st @@ -0,0 +1,4 @@ +accessing +header: anHeader + + header := anHeader. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMain.class/instance/header.st b/packages/TelegramClient-UI.package/TCUMain.class/instance/header.st new file mode 100644 index 000000000..51873713f --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUMain.class/instance/header.st @@ -0,0 +1,4 @@ +accessing +header + + ^ header \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMain.class/instance/initialize.st b/packages/TelegramClient-UI.package/TCUMain.class/instance/initialize.st index 4ed2a3215..a846ca233 100644 --- a/packages/TelegramClient-UI.package/TCUMain.class/instance/initialize.st +++ b/packages/TelegramClient-UI.package/TCUMain.class/instance/initialize.st @@ -5,9 +5,9 @@ initialize self extent: self defaultExtent; borderWidth: 0; + addHeader; chatWindow: TCUChatWindow new; addChatsList; - addHeader; initializeChatWindow; subscribeChatsList; clipSubmorphs: true. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMain.class/instance/initializeChatWindow.st b/packages/TelegramClient-UI.package/TCUMain.class/instance/initializeChatWindow.st index 823b7df1d..f6630886e 100644 --- a/packages/TelegramClient-UI.package/TCUMain.class/instance/initializeChatWindow.st +++ b/packages/TelegramClient-UI.package/TCUMain.class/instance/initializeChatWindow.st @@ -2,10 +2,10 @@ initialization initializeChatWindow self chatWindow: (TCUChatWindow - newWithHeight: (self height - self defaultHeaderHeight) + newWithHeight: (self height - self header height) width: (self width - self chatsList width)). self chatWindow - position: (self position + (self chatsList width @ self defaultHeaderHeight)); + position: (self position + (self chatsList width @ self header height)); when: #buttonSendPressed send: #sendMessage: to: self. self addMorph: self chatWindow. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMain.class/instance/newChatSelected..st b/packages/TelegramClient-UI.package/TCUMain.class/instance/newChatSelected..st index fcf57f76f..a047cce41 100644 --- a/packages/TelegramClient-UI.package/TCUMain.class/instance/newChatSelected..st +++ b/packages/TelegramClient-UI.package/TCUMain.class/instance/newChatSelected..st @@ -1,4 +1,7 @@ event handling newChatSelected: aChat + self chatsList + deselectChats; + selectedChat: TCCNullChat new. self chatWindow newChatSelected: aChat. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMain.class/instance/newMessageReceived..st b/packages/TelegramClient-UI.package/TCUMain.class/instance/newMessageReceived..st index 870a1f26b..0aa45a84d 100644 --- a/packages/TelegramClient-UI.package/TCUMain.class/instance/newMessageReceived..st +++ b/packages/TelegramClient-UI.package/TCUMain.class/instance/newMessageReceived..st @@ -1,5 +1,5 @@ event handling newMessageReceived: aMessage - (self core loggedInUserID = aMessage senderID) ifFalse: [ + aMessage isOutgoing ifFalse: [ [TCUNotification newWithMessage: aMessage] fork]. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMain.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUMain.class/methodProperties.json index 1bc8fed1c..be7fde321 100644 --- a/packages/TelegramClient-UI.package/TCUMain.class/methodProperties.json +++ b/packages/TelegramClient-UI.package/TCUMain.class/methodProperties.json @@ -1,32 +1,25 @@ { "class" : { - "core" : "js 7/31/2020 16:13", - "core:" : "js 7/31/2020 16:13", "newWithCore:" : "f.w. 6/3/2020 20:31" }, "instance" : { - "addChatsList" : "rs 6/17/2020 22:54", - "addCloseButtonTo:withSpacing:deletes:" : "N.S. 7/31/2020 16:48", - "addHeader" : "N.S. 7/31/2020 16:48", - "addInputFieldTo:withSpacing:" : "j 7/16/2020 12:27", - "addLogoutButtonTo:withSpacing:" : "f.w. 7/16/2020 01:12", - "addNewChatButtonTo:withSpacing:" : "r.s 7/16/2020 08:59", - "addTitle:to:" : "N.S. 7/26/2020 15:47", + "addChatsList" : "js 8/2/2020 22:05", + "addHeader" : "js 8/2/2020 22:05", "chatWindow" : "R.S 6/1/2020 14:27", "chatWindow:" : "R.S 6/1/2020 14:27", "chatsList" : "R.S 6/1/2020 14:27", "chatsList:" : "R.S 6/1/2020 14:27", "core" : "js 6/13/2020 18:51", - "core:" : "N.S. 7/26/2020 22:15", - "createHeaderMorph" : "js 6/13/2020 18:01", + "core:" : "r.s 8/2/2020 19:18", "defaultExtent" : "R.S 6/1/2020 14:27", - "defaultHeaderHeight" : "R.S 6/1/2020 14:27", + "defaultSpacing" : "r.s 8/2/2020 18:44", "delete" : "N.S. 7/31/2020 16:46", "getChatHistoryFrom:" : "j 7/16/2020 12:05", - "initialize" : "f.w. 7/12/2020 21:51", - "initializeChatWindow" : "js 6/13/2020 18:54", + "header" : "r.s 8/2/2020 19:07", + "header:" : "r.s 8/2/2020 19:08", + "initialize" : "r.s 8/2/2020 19:09", + "initializeChatWindow" : "r.s 8/2/2020 19:09", "logout" : "js 6/13/2020 18:11", - "newChatButtonClicked" : "N.S. 7/31/2020 16:49", - "newChatSelected:" : "f.w. 7/16/2020 00:02", - "newMessageReceived:" : "js 8/1/2020 18:20", + "newChatSelected:" : "js 8/2/2020 22:33", + "newMessageReceived:" : "js 8/2/2020 22:07", "sendMessage:" : "rs 6/17/2020 21:19", "subscribeChatsList" : "js 7/31/2020 23:09" } } diff --git a/packages/TelegramClient-UI.package/TCUMain.class/properties.json b/packages/TelegramClient-UI.package/TCUMain.class/properties.json index 4d869524d..156df6670 100644 --- a/packages/TelegramClient-UI.package/TCUMain.class/properties.json +++ b/packages/TelegramClient-UI.package/TCUMain.class/properties.json @@ -8,7 +8,8 @@ "instvars" : [ "chatWindow", "chatsList", - "core" ], + "core", + "header" ], "name" : "TCUMain", "pools" : [ ], diff --git a/packages/TelegramClient-UI.package/TCUMessage.class/class/newFromTCCMessage..st b/packages/TelegramClient-UI.package/TCUMessage.class/class/newFromTCCMessage..st index 752c46530..62795e09f 100644 --- a/packages/TelegramClient-UI.package/TCUMessage.class/class/newFromTCCMessage..st +++ b/packages/TelegramClient-UI.package/TCUMessage.class/class/newFromTCCMessage..st @@ -4,4 +4,5 @@ newFromTCCMessage: aMessage ^ self basicNew text: aMessage message; senderID: aMessage senderID; + isOutgoing: aMessage isOutgoing; initialize \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMessage.class/instance/addText.st b/packages/TelegramClient-UI.package/TCUMessage.class/instance/addText.st index 9019eb3ca..6a86c8f7b 100644 --- a/packages/TelegramClient-UI.package/TCUMessage.class/instance/addText.st +++ b/packages/TelegramClient-UI.package/TCUMessage.class/instance/addText.st @@ -3,7 +3,8 @@ addText | textMorph expectedWidth | - textMorph := TextMorph new contents: self text; + textMorph := TextMorph new + contents: self text; wrapFlag: true; margins: self defaultTextMargins; width: self defaultWidth; diff --git a/packages/TelegramClient-UI.package/TCUMessage.class/instance/defaultTextMargins.st b/packages/TelegramClient-UI.package/TCUMessage.class/instance/defaultTextMargins.st index 0751fa544..f6afbb1c5 100644 --- a/packages/TelegramClient-UI.package/TCUMessage.class/instance/defaultTextMargins.st +++ b/packages/TelegramClient-UI.package/TCUMessage.class/instance/defaultTextMargins.st @@ -1,4 +1,4 @@ default values defaultTextMargins - ^ (5 @ 5) \ No newline at end of file + ^ 5 @ 5 \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMessage.class/instance/initialize.st b/packages/TelegramClient-UI.package/TCUMessage.class/instance/initialize.st index 3c05da0a5..89e424653 100644 --- a/packages/TelegramClient-UI.package/TCUMessage.class/instance/initialize.st +++ b/packages/TelegramClient-UI.package/TCUMessage.class/instance/initialize.st @@ -6,7 +6,7 @@ initialize self width: self defaultWidth; height: self defaultHeight; - color: (self isSentByMe + color: (self isOutgoing ifTrue: [TCUDefaultValues colorCarrot] ifFalse: [TCUDefaultValues colorLightBlue]); addText; diff --git a/packages/TelegramClient-UI.package/TCUMessage.class/instance/isOutgoing..st b/packages/TelegramClient-UI.package/TCUMessage.class/instance/isOutgoing..st new file mode 100644 index 000000000..edff07c5f --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUMessage.class/instance/isOutgoing..st @@ -0,0 +1,4 @@ +accessing +isOutgoing: aBoolean + + isOutgoing := aBoolean. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMessage.class/instance/isOutgoing.st b/packages/TelegramClient-UI.package/TCUMessage.class/instance/isOutgoing.st new file mode 100644 index 000000000..be9441a50 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUMessage.class/instance/isOutgoing.st @@ -0,0 +1,4 @@ +accessing +isOutgoing + + ^ isOutgoing \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMessage.class/instance/isSentByMe.st b/packages/TelegramClient-UI.package/TCUMessage.class/instance/isSentByMe.st deleted file mode 100644 index f70e3385f..000000000 --- a/packages/TelegramClient-UI.package/TCUMessage.class/instance/isSentByMe.st +++ /dev/null @@ -1,4 +0,0 @@ -accessing -isSentByMe - - ^ self senderID = TCUMain core loggedInUserID \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUMessage.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUMessage.class/methodProperties.json index 01b97cd0c..c3639103f 100644 --- a/packages/TelegramClient-UI.package/TCUMessage.class/methodProperties.json +++ b/packages/TelegramClient-UI.package/TCUMessage.class/methodProperties.json @@ -1,15 +1,16 @@ { "class" : { - "newFromTCCMessage:" : "js 8/1/2020 18:21" }, + "newFromTCCMessage:" : "js 8/2/2020 22:02" }, "instance" : { - "addText" : "js 8/2/2020 12:51", + "addText" : "r.s 8/2/2020 18:41", "defaultHeight" : "rs 6/17/2020 20:07", "defaultMargin" : "js 7/31/2020 18:19", "defaultMinTextLength" : "js 7/31/2020 18:03", - "defaultTextMargins" : "js 7/31/2020 18:17", + "defaultTextMargins" : "r.s 8/2/2020 18:39", "defaultWidth" : "r.s 7/31/2020 14:19", - "initialize" : "js 7/31/2020 18:15", - "isSentByMe" : "js 7/31/2020 16:18", + "initialize" : "js 8/2/2020 22:03", + "isOutgoing" : "js 8/2/2020 22:02", + "isOutgoing:" : "js 8/2/2020 22:02", "senderID" : "js 7/31/2020 16:11", "senderID:" : "js 7/31/2020 16:10", "text" : "rs 6/17/2020 19:48", diff --git a/packages/TelegramClient-UI.package/TCUMessage.class/properties.json b/packages/TelegramClient-UI.package/TCUMessage.class/properties.json index 897b100af..006d32f81 100644 --- a/packages/TelegramClient-UI.package/TCUMessage.class/properties.json +++ b/packages/TelegramClient-UI.package/TCUMessage.class/properties.json @@ -7,7 +7,8 @@ "commentStamp" : "rs 6/17/2020 21:31", "instvars" : [ "text", - "senderID" ], + "senderID", + "isOutgoing" ], "name" : "TCUMessage", "pools" : [ ], diff --git a/packages/TelegramClient-UI.package/TCUModal.class/instance/addCloseButton.st b/packages/TelegramClient-UI.package/TCUModal.class/instance/addCloseButton.st new file mode 100644 index 000000000..98ef6a515 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUModal.class/instance/addCloseButton.st @@ -0,0 +1,13 @@ +initialization +addCloseButton + + | closeButton | + + closeButton := TCUButton new + text: 'close'; + color: TCUDefaultValues colorRed; + on: #mouseUp send: #delete to: self. + closeButton text color: Color white. + closeButton position: (self position x + self defaultSpacing) @ self defaultSpacing. + + self addMorph: closeButton. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUModal.class/instance/defaultOffset.st b/packages/TelegramClient-UI.package/TCUModal.class/instance/defaultOffset.st new file mode 100644 index 000000000..65dc5f0fd --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUModal.class/instance/defaultOffset.st @@ -0,0 +1,4 @@ +default values +defaultOffset + + ^ 20 \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUModal.class/instance/defaultSpacing.st b/packages/TelegramClient-UI.package/TCUModal.class/instance/defaultSpacing.st new file mode 100644 index 000000000..2f55932b1 --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUModal.class/instance/defaultSpacing.st @@ -0,0 +1,4 @@ +default values +defaultSpacing + + ^ 5 \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUModal.class/instance/initialize.st b/packages/TelegramClient-UI.package/TCUModal.class/instance/initialize.st index 787728713..42eb61c97 100644 --- a/packages/TelegramClient-UI.package/TCUModal.class/instance/initialize.st +++ b/packages/TelegramClient-UI.package/TCUModal.class/instance/initialize.st @@ -9,6 +9,7 @@ initialize borderWidth: 1; borderColor: TCUDefaultValues colorLightBlue; setColor; - useRoundedCorners. + useRoundedCorners; + addCloseButton. self setText. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUModal.class/instance/setText.st b/packages/TelegramClient-UI.package/TCUModal.class/instance/setText.st index 3522fcb02..2711bd4fb 100644 --- a/packages/TelegramClient-UI.package/TCUModal.class/instance/setText.st +++ b/packages/TelegramClient-UI.package/TCUModal.class/instance/setText.st @@ -4,4 +4,4 @@ setText self addMorph: (TextMorph new contents: self text; lock; - center: (self position + ((self width / 2) @ 20))). \ No newline at end of file + center: (self position + ((self width / 2) @ self defaultOffset))). \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUModal.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUModal.class/methodProperties.json index 7ec3bf919..2f3e780d7 100644 --- a/packages/TelegramClient-UI.package/TCUModal.class/methodProperties.json +++ b/packages/TelegramClient-UI.package/TCUModal.class/methodProperties.json @@ -2,11 +2,14 @@ "class" : { "newWithText:type:" : "r.s 7/16/2020 09:07" }, "instance" : { + "addCloseButton" : "r.s 8/2/2020 19:13", "defaultHeight" : "r.s 7/16/2020 09:04", + "defaultOffset" : "r.s 8/2/2020 18:38", + "defaultSpacing" : "r.s 8/2/2020 19:14", "defaultWidth" : "r.s 7/16/2020 09:04", - "initialize" : "r.s 7/16/2020 09:36", + "initialize" : "r.s 8/2/2020 19:14", "setColor" : "r.s 7/16/2020 09:17", - "setText" : "r.s 7/16/2020 09:14", + "setText" : "r.s 8/2/2020 18:38", "text" : "r.s 7/16/2020 09:09", "text:" : "r.s 7/16/2020 09:09", "type" : "r.s 7/16/2020 09:09", diff --git a/packages/TelegramClient-UI.package/TCUNotification.class/instance/defaultBorderWidth.st b/packages/TelegramClient-UI.package/TCUNotification.class/instance/defaultBorderWidth.st new file mode 100644 index 000000000..06026fc2e --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUNotification.class/instance/defaultBorderWidth.st @@ -0,0 +1,4 @@ +default values +defaultBorderWidth + + ^ 2 \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUNotification.class/instance/defaultTimeOutDuration.st b/packages/TelegramClient-UI.package/TCUNotification.class/instance/defaultTimeOutDuration.st new file mode 100644 index 000000000..0ef57b5ea --- /dev/null +++ b/packages/TelegramClient-UI.package/TCUNotification.class/instance/defaultTimeOutDuration.st @@ -0,0 +1,4 @@ +default values +defaultTimeOutDuration + + ^ 5 \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUNotification.class/instance/initializeDefaults.st b/packages/TelegramClient-UI.package/TCUNotification.class/instance/initializeDefaults.st index 6546d7d94..3a7b717fa 100644 --- a/packages/TelegramClient-UI.package/TCUNotification.class/instance/initializeDefaults.st +++ b/packages/TelegramClient-UI.package/TCUNotification.class/instance/initializeDefaults.st @@ -4,7 +4,7 @@ initializeDefaults self color: Color white; borderColor: TCUDefaultValues colorLightBlue; - borderWidth: 2; + borderWidth: self defaultBorderWidth; useRoundedCorners; height: self defaultHeight; width: self defaultWidth; diff --git a/packages/TelegramClient-UI.package/TCUNotification.class/instance/startTimeOut.st b/packages/TelegramClient-UI.package/TCUNotification.class/instance/startTimeOut.st index 4742447d2..359a011f7 100644 --- a/packages/TelegramClient-UI.package/TCUNotification.class/instance/startTimeOut.st +++ b/packages/TelegramClient-UI.package/TCUNotification.class/instance/startTimeOut.st @@ -1,5 +1,5 @@ initialization startTimeOut - 5 seconds wait. + self defaultTimeOutDuration seconds wait. self fadeOut. \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUNotification.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUNotification.class/methodProperties.json index 90ff2898c..3849fd659 100644 --- a/packages/TelegramClient-UI.package/TCUNotification.class/methodProperties.json +++ b/packages/TelegramClient-UI.package/TCUNotification.class/methodProperties.json @@ -6,11 +6,13 @@ "calculatePosition" : "rs 7/5/2020 14:42", "chatID" : "rs 7/5/2020 14:31", "chatID:" : "rs 7/5/2020 14:31", + "defaultBorderWidth" : "r.s 8/2/2020 18:37", "defaultHeight" : "rs 7/5/2020 14:18", "defaultOffset" : "rs 7/5/2020 14:43", + "defaultTimeOutDuration" : "r.s 8/2/2020 18:36", "defaultWidth" : "rs 7/5/2020 14:44", "initialize" : "rs 7/5/2020 14:43", - "initializeDefaults" : "rs 7/5/2020 14:43", - "startTimeOut" : "j 7/16/2020 13:25", + "initializeDefaults" : "r.s 8/2/2020 18:37", + "startTimeOut" : "r.s 8/2/2020 18:36", "text" : "rs 7/5/2020 14:28", "text:" : "rs 7/5/2020 14:28" } } From cd22bbf362beaed40055eb7f8e32d8a1e45c3c47 Mon Sep 17 00:00:00 2001 From: Jonas Schmidt <43679965+schmidtjonas@users.noreply.github.com> Date: Sun, 2 Aug 2020 22:57:49 +0200 Subject: [PATCH 62/81] Added tests for Core (#271) * added testbranch * fixed chats and chat test class * unfied test/testS to tests * state of work * small changes * tested chat * added accessortests in core * some tests * some useless tests * message testing * fixed linter tests * fixes Co-authored-by: Lukas Laskowski --- .../TCCChat.class/instance/addNewMessage..st | 5 ----- .../TCCChat.class/instance/userId..st | 4 ---- .../TCCChat.class/instance/userId.st | 4 ---- .../TCCChat.class/methodProperties.json | 3 --- .../TCCChat.class/properties.json | 3 +-- .../methodProperties.json | 2 +- .../TCTChatTests.class/instance/chat..st | 4 ++++ .../TCTChatTests.class/instance/chat.st | 4 ++++ .../TCTChatTests.class/instance/setUp.st | 12 ++++++---- .../instance/testAddNewestMessage.st | 5 +++++ .../instance/testAddOldestMessage.st | 5 +++++ .../TCTChatTests.class/instance/testID.st | 5 +++++ .../instance/testLastMessage.st | 5 +++++ .../instance/testMessage.st | 18 +++++++++++++++ .../instance/testMessages.st | 9 ++++++++ .../instance/testMessagesSize.st | 4 ++++ .../TCTChatTests.class/instance/testNullID.st | 4 ++++ .../instance/testNullMessage.st | 4 ++++ .../instance/testNullMessages.st | 4 ++++ .../TCTChatTests.class/instance/testOrder.st | 5 +++++ .../instance/testStillRequestedMessages.st | 12 ++++++++++ .../TCTChatTests.class/instance/testTitle.st | 5 +++++ .../instance/testWaitingForUpdate.st | 14 ++++++++++++ .../TCTChatTests.class/methodProperties.json | 22 ++++++++++++++----- .../TCTChatTests.class/properties.json | 2 +- .../TCTChatsTests.class/README.md | 1 + .../instance/chats..st | 0 .../instance/chats.st | 0 .../TCTChatsTests.class/instance/setUp.st | 7 ++++++ .../instance/testOrderInsert.st | 0 .../instance/testOrderModify.st | 0 .../TCTChatsTests.class/methodProperties.json | 9 ++++++++ .../TCTChatsTests.class/properties.json | 14 ++++++++++++ .../README.md | 0 .../instance/testClientConstants.st | 6 +++++ .../instance/testClientDestroysHandle.st | 0 .../methodProperties.json | 1 + .../properties.json | 2 +- .../TCTCoreTests.class/README.md | 1 + .../TCTCoreTests.class/instance/core..st | 4 ++++ .../TCTCoreTests.class/instance/core.st | 4 ++++ .../TCTCoreTests.class/instance/setUp.st | 4 ++++ .../TCTCoreTests.class/instance/tearDown.st | 4 ++++ .../instance/testAuthConstants.st | 6 +++++ .../instance/testAuthHandler.st | 8 +++++++ .../instance/testChatsHandler.st | 8 +++++++ .../instance/testErrorConstants.st | 7 ++++++ .../instance/testLoggedInUserID.st | 5 +++++ .../TCTCoreTests.class/methodProperties.json | 13 +++++++++++ .../TCTCoreTests.class/properties.json | 14 ++++++++++++ .../README.md | 0 .../instance/testError.st | 0 .../instance/testNoError.st | 0 .../instance/testType.st | 0 .../methodProperties.json | 0 .../properties.json | 2 +- .../README.md | 0 .../instance/request..st | 0 .../instance/request.st | 0 .../instance/setUp.st | 0 .../instance/testString.st | 0 .../instance/testType.st | 0 .../methodProperties.json | 0 .../properties.json | 2 +- 64 files changed, 254 insertions(+), 32 deletions(-) delete mode 100644 packages/TelegramClient-Core.package/TCCChat.class/instance/addNewMessage..st delete mode 100644 packages/TelegramClient-Core.package/TCCChat.class/instance/userId..st delete mode 100644 packages/TelegramClient-Core.package/TCCChat.class/instance/userId.st create mode 100644 packages/TelegramClient-Tests.package/TCTChatTests.class/instance/chat..st create mode 100644 packages/TelegramClient-Tests.package/TCTChatTests.class/instance/chat.st create mode 100644 packages/TelegramClient-Tests.package/TCTChatTests.class/instance/testAddNewestMessage.st create mode 100644 packages/TelegramClient-Tests.package/TCTChatTests.class/instance/testAddOldestMessage.st create mode 100644 packages/TelegramClient-Tests.package/TCTChatTests.class/instance/testID.st create mode 100644 packages/TelegramClient-Tests.package/TCTChatTests.class/instance/testLastMessage.st create mode 100644 packages/TelegramClient-Tests.package/TCTChatTests.class/instance/testMessage.st create mode 100644 packages/TelegramClient-Tests.package/TCTChatTests.class/instance/testMessages.st create mode 100644 packages/TelegramClient-Tests.package/TCTChatTests.class/instance/testMessagesSize.st create mode 100644 packages/TelegramClient-Tests.package/TCTChatTests.class/instance/testNullID.st create mode 100644 packages/TelegramClient-Tests.package/TCTChatTests.class/instance/testNullMessage.st create mode 100644 packages/TelegramClient-Tests.package/TCTChatTests.class/instance/testNullMessages.st create mode 100644 packages/TelegramClient-Tests.package/TCTChatTests.class/instance/testOrder.st create mode 100644 packages/TelegramClient-Tests.package/TCTChatTests.class/instance/testStillRequestedMessages.st create mode 100644 packages/TelegramClient-Tests.package/TCTChatTests.class/instance/testTitle.st create mode 100644 packages/TelegramClient-Tests.package/TCTChatTests.class/instance/testWaitingForUpdate.st create mode 100644 packages/TelegramClient-Tests.package/TCTChatsTests.class/README.md rename packages/TelegramClient-Tests.package/{TCTChatTests.class => TCTChatsTests.class}/instance/chats..st (100%) rename packages/TelegramClient-Tests.package/{TCTChatTests.class => TCTChatsTests.class}/instance/chats.st (100%) create mode 100644 packages/TelegramClient-Tests.package/TCTChatsTests.class/instance/setUp.st rename packages/TelegramClient-Tests.package/{TCTChatTests.class => TCTChatsTests.class}/instance/testOrderInsert.st (100%) rename packages/TelegramClient-Tests.package/{TCTChatTests.class => TCTChatsTests.class}/instance/testOrderModify.st (100%) create mode 100644 packages/TelegramClient-Tests.package/TCTChatsTests.class/methodProperties.json create mode 100644 packages/TelegramClient-Tests.package/TCTChatsTests.class/properties.json rename packages/TelegramClient-Tests.package/{TCTClientTest.class => TCTClientTests.class}/README.md (100%) create mode 100644 packages/TelegramClient-Tests.package/TCTClientTests.class/instance/testClientConstants.st rename packages/TelegramClient-Tests.package/{TCTClientTest.class => TCTClientTests.class}/instance/testClientDestroysHandle.st (100%) rename packages/TelegramClient-Tests.package/{TCTClientTest.class => TCTClientTests.class}/methodProperties.json (66%) rename packages/TelegramClient-Tests.package/{TCTClientTest.class => TCTClientTests.class}/properties.json (88%) create mode 100644 packages/TelegramClient-Tests.package/TCTCoreTests.class/README.md create mode 100644 packages/TelegramClient-Tests.package/TCTCoreTests.class/instance/core..st create mode 100644 packages/TelegramClient-Tests.package/TCTCoreTests.class/instance/core.st create mode 100644 packages/TelegramClient-Tests.package/TCTCoreTests.class/instance/setUp.st create mode 100644 packages/TelegramClient-Tests.package/TCTCoreTests.class/instance/tearDown.st create mode 100644 packages/TelegramClient-Tests.package/TCTCoreTests.class/instance/testAuthConstants.st create mode 100644 packages/TelegramClient-Tests.package/TCTCoreTests.class/instance/testAuthHandler.st create mode 100644 packages/TelegramClient-Tests.package/TCTCoreTests.class/instance/testChatsHandler.st create mode 100644 packages/TelegramClient-Tests.package/TCTCoreTests.class/instance/testErrorConstants.st create mode 100644 packages/TelegramClient-Tests.package/TCTCoreTests.class/instance/testLoggedInUserID.st create mode 100644 packages/TelegramClient-Tests.package/TCTCoreTests.class/methodProperties.json create mode 100644 packages/TelegramClient-Tests.package/TCTCoreTests.class/properties.json rename packages/TelegramClient-Tests.package/{TCTEventTest.class => TCTEventTests.class}/README.md (100%) rename packages/TelegramClient-Tests.package/{TCTEventTest.class => TCTEventTests.class}/instance/testError.st (100%) rename packages/TelegramClient-Tests.package/{TCTEventTest.class => TCTEventTests.class}/instance/testNoError.st (100%) rename packages/TelegramClient-Tests.package/{TCTEventTest.class => TCTEventTests.class}/instance/testType.st (100%) rename packages/TelegramClient-Tests.package/{TCTEventTest.class => TCTEventTests.class}/methodProperties.json (100%) rename packages/TelegramClient-Tests.package/{TCTEventTest.class => TCTEventTests.class}/properties.json (88%) rename packages/TelegramClient-Tests.package/{TCTRequestTest.class => TCTRequestTests.class}/README.md (100%) rename packages/TelegramClient-Tests.package/{TCTRequestTest.class => TCTRequestTests.class}/instance/request..st (100%) rename packages/TelegramClient-Tests.package/{TCTRequestTest.class => TCTRequestTests.class}/instance/request.st (100%) rename packages/TelegramClient-Tests.package/{TCTRequestTest.class => TCTRequestTests.class}/instance/setUp.st (100%) rename packages/TelegramClient-Tests.package/{TCTRequestTest.class => TCTRequestTests.class}/instance/testString.st (100%) rename packages/TelegramClient-Tests.package/{TCTRequestTest.class => TCTRequestTests.class}/instance/testType.st (100%) rename packages/TelegramClient-Tests.package/{TCTRequestTest.class => TCTRequestTests.class}/methodProperties.json (100%) rename packages/TelegramClient-Tests.package/{TCTRequestTest.class => TCTRequestTests.class}/properties.json (88%) diff --git a/packages/TelegramClient-Core.package/TCCChat.class/instance/addNewMessage..st b/packages/TelegramClient-Core.package/TCCChat.class/instance/addNewMessage..st deleted file mode 100644 index 4d46aa5a7..000000000 --- a/packages/TelegramClient-Core.package/TCCChat.class/instance/addNewMessage..st +++ /dev/null @@ -1,5 +0,0 @@ -adding -addNewMessage: aMessage - - self messages add: aMessage afterIndex: 1. - self triggerEvent: #newMessage with: aMessage. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCChat.class/instance/userId..st b/packages/TelegramClient-Core.package/TCCChat.class/instance/userId..st deleted file mode 100644 index a0f685a4f..000000000 --- a/packages/TelegramClient-Core.package/TCCChat.class/instance/userId..st +++ /dev/null @@ -1,4 +0,0 @@ -accessing -userId: aString - - userId := aString. \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCChat.class/instance/userId.st b/packages/TelegramClient-Core.package/TCCChat.class/instance/userId.st deleted file mode 100644 index fdb89c4be..000000000 --- a/packages/TelegramClient-Core.package/TCCChat.class/instance/userId.st +++ /dev/null @@ -1,4 +0,0 @@ -accessing -userId - - ^ userId \ 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 05ac1962f..141f4f7fc 100644 --- a/packages/TelegramClient-Core.package/TCCChat.class/methodProperties.json +++ b/packages/TelegramClient-Core.package/TCCChat.class/methodProperties.json @@ -2,7 +2,6 @@ "class" : { "newFromNewChatEvent:" : "js 8/2/2020 22:26" }, "instance" : { - "addNewMessage:" : "js 8/1/2020 17:59", "addNewestMessage:" : "js 8/2/2020 12:58", "addOldestMessage:" : "js 8/2/2020 12:58", "defaultNumberOfRequestedMessages" : "js 8/1/2020 18:52", @@ -23,7 +22,5 @@ "stillRequestedMessages" : "js 8/1/2020 18:05", "title" : "rs 6/7/2020 22:24", "title:" : "rs 6/7/2020 22:24", - "userId" : "R.S 6/1/2020 15:37", - "userId:" : "R.S 6/1/2020 15:37", "waitingForUpdate" : "js 8/1/2020 16:59", "waitingForUpdate:" : "js 8/1/2020 17:00" } } diff --git a/packages/TelegramClient-Core.package/TCCChat.class/properties.json b/packages/TelegramClient-Core.package/TCCChat.class/properties.json index 81cc6204c..86221496e 100644 --- a/packages/TelegramClient-Core.package/TCCChat.class/properties.json +++ b/packages/TelegramClient-Core.package/TCCChat.class/properties.json @@ -1,12 +1,11 @@ { "category" : "TelegramClient-Core", "classinstvars" : [ - ], + "userI" ], "classvars" : [ ], "commentStamp" : "js 6/13/2020 16:25", "instvars" : [ - "userId", "messages", "order", "id", diff --git a/packages/TelegramClient-Core.package/TCCChatsHandler.class/methodProperties.json b/packages/TelegramClient-Core.package/TCCChatsHandler.class/methodProperties.json index 6b6e1cb3f..498c29e84 100644 --- a/packages/TelegramClient-Core.package/TCCChatsHandler.class/methodProperties.json +++ b/packages/TelegramClient-Core.package/TCCChatsHandler.class/methodProperties.json @@ -11,7 +11,7 @@ "defaultMessageLimit" : "js 8/1/2020 18:24", "getChatHistoryFrom:with:limit:" : "js 8/2/2020 13:17", "getChats" : "js 7/31/2020 22:50", - "handleNewMessage:" : "js 8/2/2020 12:58", + "handleNewMessage:" : "js 8/2/2020 21:12", "openNewChat:" : "js 8/2/2020 22:27", "remainingMessages" : "js 8/1/2020 16:49", "remainingMessages:" : "js 8/1/2020 16:50", diff --git a/packages/TelegramClient-Tests.package/TCTChatTests.class/instance/chat..st b/packages/TelegramClient-Tests.package/TCTChatTests.class/instance/chat..st new file mode 100644 index 000000000..ea88f7a94 --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTChatTests.class/instance/chat..st @@ -0,0 +1,4 @@ +accessing +chat: aTCCChat + + chat := aTCCChat. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTChatTests.class/instance/chat.st b/packages/TelegramClient-Tests.package/TCTChatTests.class/instance/chat.st new file mode 100644 index 000000000..207f37ad7 --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTChatTests.class/instance/chat.st @@ -0,0 +1,4 @@ +accessing +chat + + ^ chat \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTChatTests.class/instance/setUp.st b/packages/TelegramClient-Tests.package/TCTChatTests.class/instance/setUp.st index c2ca84f8a..4795f55b3 100644 --- a/packages/TelegramClient-Tests.package/TCTChatTests.class/instance/setUp.st +++ b/packages/TelegramClient-Tests.package/TCTChatTests.class/instance/setUp.st @@ -1,7 +1,11 @@ running setUp - self chats: TCCChats newWithDefaultSorting. - 1 to: 3 do: [:aNumber | self chats add: (TCCChat new - id: aNumber; - order: aNumber)]. \ No newline at end of file + self chat: TCCChat new. + + 1 to: 5 do: [:aNumber | + self chat messages add: (TCCMessage new + message: aNumber asString; + chatID: aNumber * 2; + senderID: aNumber * 3; + id: aNumber * 4)]. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTChatTests.class/instance/testAddNewestMessage.st b/packages/TelegramClient-Tests.package/TCTChatTests.class/instance/testAddNewestMessage.st new file mode 100644 index 000000000..fdd38a093 --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTChatTests.class/instance/testAddNewestMessage.st @@ -0,0 +1,5 @@ +testing +testAddNewestMessage + + self chat addNewestMessage: (TCCMessage new message: 'test'). + self assert: self chat messages second message equals: 'test'. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTChatTests.class/instance/testAddOldestMessage.st b/packages/TelegramClient-Tests.package/TCTChatTests.class/instance/testAddOldestMessage.st new file mode 100644 index 000000000..e36f2060a --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTChatTests.class/instance/testAddOldestMessage.st @@ -0,0 +1,5 @@ +testing +testAddOldestMessage + + self chat addOldestMessage: (TCCMessage new message: 'test'). + self assert: self chat messages last message equals: 'test'. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTChatTests.class/instance/testID.st b/packages/TelegramClient-Tests.package/TCTChatTests.class/instance/testID.st new file mode 100644 index 000000000..33b911bad --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTChatTests.class/instance/testID.st @@ -0,0 +1,5 @@ +testing +testID + + self chat id: 15. + self assert: self chat id equals: 15. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTChatTests.class/instance/testLastMessage.st b/packages/TelegramClient-Tests.package/TCTChatTests.class/instance/testLastMessage.st new file mode 100644 index 000000000..226a01f23 --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTChatTests.class/instance/testLastMessage.st @@ -0,0 +1,5 @@ +testing +testLastMessage + + self chat lastMessage: 'test'. + self assert: self chat lastMessage equals: 'test'. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTChatTests.class/instance/testMessage.st b/packages/TelegramClient-Tests.package/TCTChatTests.class/instance/testMessage.st new file mode 100644 index 000000000..a8dec63b8 --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTChatTests.class/instance/testMessage.st @@ -0,0 +1,18 @@ +testing +testMessage + + | message | + + message := TCCMessage newFromMessageEvent: (TCCEvent newFromTDLibEvent: (Dictionary newFrom: { + '@type' -> 'message'. + 'chat_id' -> '1'. + 'sender_user_id' -> '2'. + 'id' -> '3'. + 'is_outgoing' -> false. + 'content' -> (Dictionary newFrom: { + '@type' -> 'messageText'. + 'text' -> (Dictionary newFrom: { + 'text' -> 'testText'})})})). + + self assert: message senderID equals: '2'. + self assert: message id equals: '3'. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTChatTests.class/instance/testMessages.st b/packages/TelegramClient-Tests.package/TCTChatTests.class/instance/testMessages.st new file mode 100644 index 000000000..12d2b51ba --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTChatTests.class/instance/testMessages.st @@ -0,0 +1,9 @@ +testing +testMessages + + | collection | + + collection := OrderedCollection newFrom: {TCCMessage new. TCCMessage new}. + + self chat messages: collection. + self assert: self chat messages equals: collection. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTChatTests.class/instance/testMessagesSize.st b/packages/TelegramClient-Tests.package/TCTChatTests.class/instance/testMessagesSize.st new file mode 100644 index 000000000..f7a564423 --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTChatTests.class/instance/testMessagesSize.st @@ -0,0 +1,4 @@ +testing +testMessagesSize + + self assert: self chat numberOfMessages equals: 5. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTChatTests.class/instance/testNullID.st b/packages/TelegramClient-Tests.package/TCTChatTests.class/instance/testNullID.st new file mode 100644 index 000000000..36923b26b --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTChatTests.class/instance/testNullID.st @@ -0,0 +1,4 @@ +testing +testNullID + + self assert: TCCNullChat new id isNumber. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTChatTests.class/instance/testNullMessage.st b/packages/TelegramClient-Tests.package/TCTChatTests.class/instance/testNullMessage.st new file mode 100644 index 000000000..0e0ac3215 --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTChatTests.class/instance/testNullMessage.st @@ -0,0 +1,4 @@ +testing +testNullMessage + + self assert: TCCNullMessage new id isNumber. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTChatTests.class/instance/testNullMessages.st b/packages/TelegramClient-Tests.package/TCTChatTests.class/instance/testNullMessages.st new file mode 100644 index 000000000..b7e74a71f --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTChatTests.class/instance/testNullMessages.st @@ -0,0 +1,4 @@ +testing +testNullMessages + + self assert: TCCNullChat new messages isCollection. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTChatTests.class/instance/testOrder.st b/packages/TelegramClient-Tests.package/TCTChatTests.class/instance/testOrder.st new file mode 100644 index 000000000..5d2ba63a7 --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTChatTests.class/instance/testOrder.st @@ -0,0 +1,5 @@ +testing +testOrder + + self chat order: 5. + self assert: self chat order equals: 5. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTChatTests.class/instance/testStillRequestedMessages.st b/packages/TelegramClient-Tests.package/TCTChatTests.class/instance/testStillRequestedMessages.st new file mode 100644 index 000000000..57cb83cea --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTChatTests.class/instance/testStillRequestedMessages.st @@ -0,0 +1,12 @@ +testing +testStillRequestedMessages + + self chat numberOfRequestedMessages: 10. + + self assert: self chat stillRequestedMessages equals: 5. + + self chat requestMessages: 20. + self assert: self chat stillRequestedMessages equals: 20. + + self chat addOldestMessage: TCCMessage new. + self assert: self chat stillRequestedMessages equals: 19. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTChatTests.class/instance/testTitle.st b/packages/TelegramClient-Tests.package/TCTChatTests.class/instance/testTitle.st new file mode 100644 index 000000000..ff53dae9d --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTChatTests.class/instance/testTitle.st @@ -0,0 +1,5 @@ +testing +testTitle + + self chat title: 'testing'. + self assert: self chat title equals: 'testing'. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTChatTests.class/instance/testWaitingForUpdate.st b/packages/TelegramClient-Tests.package/TCTChatTests.class/instance/testWaitingForUpdate.st new file mode 100644 index 000000000..4430d08c0 --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTChatTests.class/instance/testWaitingForUpdate.st @@ -0,0 +1,14 @@ +testing +testWaitingForUpdate + + | marker | + self assert: self chat waitingForUpdate not. + + marker := false. + self chat ifNotWaitingForUpdate: [marker := true]. + self assert: marker. + self assert: self chat waitingForUpdate. + + marker := false. + self chat ifNotWaitingForUpdate: [marker := true]. + self assert: marker not. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTChatTests.class/methodProperties.json b/packages/TelegramClient-Tests.package/TCTChatTests.class/methodProperties.json index a79ec3ded..4a6d34fd9 100644 --- a/packages/TelegramClient-Tests.package/TCTChatTests.class/methodProperties.json +++ b/packages/TelegramClient-Tests.package/TCTChatTests.class/methodProperties.json @@ -2,8 +2,20 @@ "class" : { }, "instance" : { - "chats" : "LL 7/31/2020 15:25", - "chats:" : "js 7/31/2020 21:31", - "setUp" : "js 8/2/2020 14:43", - "testOrderInsert" : "js 8/2/2020 14:39", - "testOrderModify" : "js 8/2/2020 14:39" } } + "chat" : "LL 8/2/2020 20:25", + "chat:" : "LL 8/2/2020 20:26", + "setUp" : "js 8/2/2020 20:44", + "testAddNewestMessage" : "js 8/2/2020 22:48", + "testAddOldestMessage" : "js 8/2/2020 20:47", + "testID" : "js 8/2/2020 21:03", + "testLastMessage" : "js 8/2/2020 21:04", + "testMessage" : "js 8/2/2020 22:53", + "testMessages" : "js 8/2/2020 21:06", + "testMessagesSize" : "js 8/2/2020 20:48", + "testNullID" : "js 8/2/2020 21:15", + "testNullMessage" : "js 8/2/2020 21:41", + "testNullMessages" : "js 8/2/2020 21:17", + "testOrder" : "js 8/2/2020 21:06", + "testStillRequestedMessages" : "js 8/2/2020 21:02", + "testTitle" : "js 8/2/2020 21:06", + "testWaitingForUpdate" : "js 8/2/2020 20:58" } } diff --git a/packages/TelegramClient-Tests.package/TCTChatTests.class/properties.json b/packages/TelegramClient-Tests.package/TCTChatTests.class/properties.json index 56980cfb9..36c8af059 100644 --- a/packages/TelegramClient-Tests.package/TCTChatTests.class/properties.json +++ b/packages/TelegramClient-Tests.package/TCTChatTests.class/properties.json @@ -6,7 +6,7 @@ ], "commentStamp" : "js 7/31/2020 21:29", "instvars" : [ - "chats" ], + "chat" ], "name" : "TCTChatTests", "pools" : [ ], diff --git a/packages/TelegramClient-Tests.package/TCTChatsTests.class/README.md b/packages/TelegramClient-Tests.package/TCTChatsTests.class/README.md new file mode 100644 index 000000000..70d139d46 --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTChatsTests.class/README.md @@ -0,0 +1 @@ +This Class tests the behavoir of TCCChat and TCCChats \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTChatTests.class/instance/chats..st b/packages/TelegramClient-Tests.package/TCTChatsTests.class/instance/chats..st similarity index 100% rename from packages/TelegramClient-Tests.package/TCTChatTests.class/instance/chats..st rename to packages/TelegramClient-Tests.package/TCTChatsTests.class/instance/chats..st diff --git a/packages/TelegramClient-Tests.package/TCTChatTests.class/instance/chats.st b/packages/TelegramClient-Tests.package/TCTChatsTests.class/instance/chats.st similarity index 100% rename from packages/TelegramClient-Tests.package/TCTChatTests.class/instance/chats.st rename to packages/TelegramClient-Tests.package/TCTChatsTests.class/instance/chats.st diff --git a/packages/TelegramClient-Tests.package/TCTChatsTests.class/instance/setUp.st b/packages/TelegramClient-Tests.package/TCTChatsTests.class/instance/setUp.st new file mode 100644 index 000000000..c2ca84f8a --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTChatsTests.class/instance/setUp.st @@ -0,0 +1,7 @@ +running +setUp + + self chats: TCCChats newWithDefaultSorting. + 1 to: 3 do: [:aNumber | self chats add: (TCCChat new + id: aNumber; + order: aNumber)]. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTChatTests.class/instance/testOrderInsert.st b/packages/TelegramClient-Tests.package/TCTChatsTests.class/instance/testOrderInsert.st similarity index 100% rename from packages/TelegramClient-Tests.package/TCTChatTests.class/instance/testOrderInsert.st rename to packages/TelegramClient-Tests.package/TCTChatsTests.class/instance/testOrderInsert.st diff --git a/packages/TelegramClient-Tests.package/TCTChatTests.class/instance/testOrderModify.st b/packages/TelegramClient-Tests.package/TCTChatsTests.class/instance/testOrderModify.st similarity index 100% rename from packages/TelegramClient-Tests.package/TCTChatTests.class/instance/testOrderModify.st rename to packages/TelegramClient-Tests.package/TCTChatsTests.class/instance/testOrderModify.st diff --git a/packages/TelegramClient-Tests.package/TCTChatsTests.class/methodProperties.json b/packages/TelegramClient-Tests.package/TCTChatsTests.class/methodProperties.json new file mode 100644 index 000000000..a79ec3ded --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTChatsTests.class/methodProperties.json @@ -0,0 +1,9 @@ +{ + "class" : { + }, + "instance" : { + "chats" : "LL 7/31/2020 15:25", + "chats:" : "js 7/31/2020 21:31", + "setUp" : "js 8/2/2020 14:43", + "testOrderInsert" : "js 8/2/2020 14:39", + "testOrderModify" : "js 8/2/2020 14:39" } } diff --git a/packages/TelegramClient-Tests.package/TCTChatsTests.class/properties.json b/packages/TelegramClient-Tests.package/TCTChatsTests.class/properties.json new file mode 100644 index 000000000..6a08e477c --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTChatsTests.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "TelegramClient-Tests", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "js 7/31/2020 21:29", + "instvars" : [ + "chats" ], + "name" : "TCTChatsTests", + "pools" : [ + ], + "super" : "TestCase", + "type" : "normal" } diff --git a/packages/TelegramClient-Tests.package/TCTClientTest.class/README.md b/packages/TelegramClient-Tests.package/TCTClientTests.class/README.md similarity index 100% rename from packages/TelegramClient-Tests.package/TCTClientTest.class/README.md rename to packages/TelegramClient-Tests.package/TCTClientTests.class/README.md diff --git a/packages/TelegramClient-Tests.package/TCTClientTests.class/instance/testClientConstants.st b/packages/TelegramClient-Tests.package/TCTClientTests.class/instance/testClientConstants.st new file mode 100644 index 000000000..ff856be5e --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTClientTests.class/instance/testClientConstants.st @@ -0,0 +1,6 @@ +testing +testClientConstants + + {TCCLinuxClient . TCCWindowsClient . TCCMacClient} do: [:aClientClass | + self assert: aClientClass downloadUrl isString. + self assert: aClientClass fileName isString]. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTClientTest.class/instance/testClientDestroysHandle.st b/packages/TelegramClient-Tests.package/TCTClientTests.class/instance/testClientDestroysHandle.st similarity index 100% rename from packages/TelegramClient-Tests.package/TCTClientTest.class/instance/testClientDestroysHandle.st rename to packages/TelegramClient-Tests.package/TCTClientTests.class/instance/testClientDestroysHandle.st diff --git a/packages/TelegramClient-Tests.package/TCTClientTest.class/methodProperties.json b/packages/TelegramClient-Tests.package/TCTClientTests.class/methodProperties.json similarity index 66% rename from packages/TelegramClient-Tests.package/TCTClientTest.class/methodProperties.json rename to packages/TelegramClient-Tests.package/TCTClientTests.class/methodProperties.json index f8ee41cd0..f7d4a4b41 100644 --- a/packages/TelegramClient-Tests.package/TCTClientTest.class/methodProperties.json +++ b/packages/TelegramClient-Tests.package/TCTClientTests.class/methodProperties.json @@ -2,4 +2,5 @@ "class" : { }, "instance" : { + "testClientConstants" : "js 8/2/2020 21:34", "testClientDestroysHandle" : "js 8/2/2020 12:25" } } diff --git a/packages/TelegramClient-Tests.package/TCTClientTest.class/properties.json b/packages/TelegramClient-Tests.package/TCTClientTests.class/properties.json similarity index 88% rename from packages/TelegramClient-Tests.package/TCTClientTest.class/properties.json rename to packages/TelegramClient-Tests.package/TCTClientTests.class/properties.json index 149346bca..de33d39ea 100644 --- a/packages/TelegramClient-Tests.package/TCTClientTest.class/properties.json +++ b/packages/TelegramClient-Tests.package/TCTClientTests.class/properties.json @@ -7,7 +7,7 @@ "commentStamp" : "js 8/2/2020 12:25", "instvars" : [ ], - "name" : "TCTClientTest", + "name" : "TCTClientTests", "pools" : [ ], "super" : "TestCase", diff --git a/packages/TelegramClient-Tests.package/TCTCoreTests.class/README.md b/packages/TelegramClient-Tests.package/TCTCoreTests.class/README.md new file mode 100644 index 000000000..96fe56be1 --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTCoreTests.class/README.md @@ -0,0 +1 @@ +tests TCCCore and some Handlers \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTCoreTests.class/instance/core..st b/packages/TelegramClient-Tests.package/TCTCoreTests.class/instance/core..st new file mode 100644 index 000000000..27523eab2 --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTCoreTests.class/instance/core..st @@ -0,0 +1,4 @@ +accessing +core: aTCCCore + + core := aTCCCore. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTCoreTests.class/instance/core.st b/packages/TelegramClient-Tests.package/TCTCoreTests.class/instance/core.st new file mode 100644 index 000000000..7652dd8d1 --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTCoreTests.class/instance/core.st @@ -0,0 +1,4 @@ +accessing +core + + ^ core \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTCoreTests.class/instance/setUp.st b/packages/TelegramClient-Tests.package/TCTCoreTests.class/instance/setUp.st new file mode 100644 index 000000000..9813ea784 --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTCoreTests.class/instance/setUp.st @@ -0,0 +1,4 @@ +running +setUp + + self core: TCCCore new. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTCoreTests.class/instance/tearDown.st b/packages/TelegramClient-Tests.package/TCTCoreTests.class/instance/tearDown.st new file mode 100644 index 000000000..c5bb8da1e --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTCoreTests.class/instance/tearDown.st @@ -0,0 +1,4 @@ +running +tearDown + + self core client free. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTCoreTests.class/instance/testAuthConstants.st b/packages/TelegramClient-Tests.package/TCTCoreTests.class/instance/testAuthConstants.st new file mode 100644 index 000000000..cb8c8c16d --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTCoreTests.class/instance/testAuthConstants.st @@ -0,0 +1,6 @@ +testing +testAuthConstants + + self assert: TCCAuthHandler new useTestDC not. + self assert: TCCAuthHandler new apiHash isString. + self assert: TCCAuthHandler new apiID isString. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTCoreTests.class/instance/testAuthHandler.st b/packages/TelegramClient-Tests.package/TCTCoreTests.class/instance/testAuthHandler.st new file mode 100644 index 000000000..5ff7672b2 --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTCoreTests.class/instance/testAuthHandler.st @@ -0,0 +1,8 @@ +testing +testAuthHandler + + | authHandler | + authHandler := TCCAuthHandler new. + self core authHandler: authHandler. + + self assert: (self core authHandler) equals: authHandler. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTCoreTests.class/instance/testChatsHandler.st b/packages/TelegramClient-Tests.package/TCTCoreTests.class/instance/testChatsHandler.st new file mode 100644 index 000000000..0b910ab37 --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTCoreTests.class/instance/testChatsHandler.st @@ -0,0 +1,8 @@ +testing +testChatsHandler + + | chatsHandler | + chatsHandler := TCCChatsHandler new. + self core chatsHandler: chatsHandler. + + self assert: (self core chatsHandler) equals: chatsHandler. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTCoreTests.class/instance/testErrorConstants.st b/packages/TelegramClient-Tests.package/TCTCoreTests.class/instance/testErrorConstants.st new file mode 100644 index 000000000..ca4ef98ff --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTCoreTests.class/instance/testErrorConstants.st @@ -0,0 +1,7 @@ +testing +testErrorConstants + + self assert: TCCErrorConstants unknownUsername isString. + self assert: TCCErrorConstants invalidPhoneNumber isString. + self assert: TCCErrorConstants tdlibAlreadyInUse isString. + self assert: TCCErrorConstants invalidAuthenticationCode isString. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTCoreTests.class/instance/testLoggedInUserID.st b/packages/TelegramClient-Tests.package/TCTCoreTests.class/instance/testLoggedInUserID.st new file mode 100644 index 000000000..a0799fee7 --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTCoreTests.class/instance/testLoggedInUserID.st @@ -0,0 +1,5 @@ +testing +testLoggedInUserID + + self core loggedInUserID: 5. + self assert: (self core loggedInUserID) equals: 5. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTCoreTests.class/methodProperties.json b/packages/TelegramClient-Tests.package/TCTCoreTests.class/methodProperties.json new file mode 100644 index 000000000..bcf020541 --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTCoreTests.class/methodProperties.json @@ -0,0 +1,13 @@ +{ + "class" : { + }, + "instance" : { + "core" : "LL 8/2/2020 20:44", + "core:" : "LL 8/2/2020 20:44", + "setUp" : "LL 8/2/2020 20:45", + "tearDown" : "js 8/2/2020 22:48", + "testAuthConstants" : "js 8/2/2020 22:54", + "testAuthHandler" : "js 8/2/2020 21:21", + "testChatsHandler" : "js 8/2/2020 21:21", + "testErrorConstants" : "js 8/2/2020 21:23", + "testLoggedInUserID" : "js 8/2/2020 21:21" } } diff --git a/packages/TelegramClient-Tests.package/TCTCoreTests.class/properties.json b/packages/TelegramClient-Tests.package/TCTCoreTests.class/properties.json new file mode 100644 index 000000000..21bb7b6b9 --- /dev/null +++ b/packages/TelegramClient-Tests.package/TCTCoreTests.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "TelegramClient-Tests", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "js 8/2/2020 22:47", + "instvars" : [ + "core" ], + "name" : "TCTCoreTests", + "pools" : [ + ], + "super" : "TestCase", + "type" : "normal" } diff --git a/packages/TelegramClient-Tests.package/TCTEventTest.class/README.md b/packages/TelegramClient-Tests.package/TCTEventTests.class/README.md similarity index 100% rename from packages/TelegramClient-Tests.package/TCTEventTest.class/README.md rename to packages/TelegramClient-Tests.package/TCTEventTests.class/README.md diff --git a/packages/TelegramClient-Tests.package/TCTEventTest.class/instance/testError.st b/packages/TelegramClient-Tests.package/TCTEventTests.class/instance/testError.st similarity index 100% rename from packages/TelegramClient-Tests.package/TCTEventTest.class/instance/testError.st rename to packages/TelegramClient-Tests.package/TCTEventTests.class/instance/testError.st diff --git a/packages/TelegramClient-Tests.package/TCTEventTest.class/instance/testNoError.st b/packages/TelegramClient-Tests.package/TCTEventTests.class/instance/testNoError.st similarity index 100% rename from packages/TelegramClient-Tests.package/TCTEventTest.class/instance/testNoError.st rename to packages/TelegramClient-Tests.package/TCTEventTests.class/instance/testNoError.st diff --git a/packages/TelegramClient-Tests.package/TCTEventTest.class/instance/testType.st b/packages/TelegramClient-Tests.package/TCTEventTests.class/instance/testType.st similarity index 100% rename from packages/TelegramClient-Tests.package/TCTEventTest.class/instance/testType.st rename to packages/TelegramClient-Tests.package/TCTEventTests.class/instance/testType.st diff --git a/packages/TelegramClient-Tests.package/TCTEventTest.class/methodProperties.json b/packages/TelegramClient-Tests.package/TCTEventTests.class/methodProperties.json similarity index 100% rename from packages/TelegramClient-Tests.package/TCTEventTest.class/methodProperties.json rename to packages/TelegramClient-Tests.package/TCTEventTests.class/methodProperties.json diff --git a/packages/TelegramClient-Tests.package/TCTEventTest.class/properties.json b/packages/TelegramClient-Tests.package/TCTEventTests.class/properties.json similarity index 88% rename from packages/TelegramClient-Tests.package/TCTEventTest.class/properties.json rename to packages/TelegramClient-Tests.package/TCTEventTests.class/properties.json index 39b284ec6..aa2c0737e 100644 --- a/packages/TelegramClient-Tests.package/TCTEventTest.class/properties.json +++ b/packages/TelegramClient-Tests.package/TCTEventTests.class/properties.json @@ -7,7 +7,7 @@ "commentStamp" : "js 8/1/2020 13:34", "instvars" : [ ], - "name" : "TCTEventTest", + "name" : "TCTEventTests", "pools" : [ ], "super" : "TestCase", diff --git a/packages/TelegramClient-Tests.package/TCTRequestTest.class/README.md b/packages/TelegramClient-Tests.package/TCTRequestTests.class/README.md similarity index 100% rename from packages/TelegramClient-Tests.package/TCTRequestTest.class/README.md rename to packages/TelegramClient-Tests.package/TCTRequestTests.class/README.md diff --git a/packages/TelegramClient-Tests.package/TCTRequestTest.class/instance/request..st b/packages/TelegramClient-Tests.package/TCTRequestTests.class/instance/request..st similarity index 100% rename from packages/TelegramClient-Tests.package/TCTRequestTest.class/instance/request..st rename to packages/TelegramClient-Tests.package/TCTRequestTests.class/instance/request..st diff --git a/packages/TelegramClient-Tests.package/TCTRequestTest.class/instance/request.st b/packages/TelegramClient-Tests.package/TCTRequestTests.class/instance/request.st similarity index 100% rename from packages/TelegramClient-Tests.package/TCTRequestTest.class/instance/request.st rename to packages/TelegramClient-Tests.package/TCTRequestTests.class/instance/request.st diff --git a/packages/TelegramClient-Tests.package/TCTRequestTest.class/instance/setUp.st b/packages/TelegramClient-Tests.package/TCTRequestTests.class/instance/setUp.st similarity index 100% rename from packages/TelegramClient-Tests.package/TCTRequestTest.class/instance/setUp.st rename to packages/TelegramClient-Tests.package/TCTRequestTests.class/instance/setUp.st diff --git a/packages/TelegramClient-Tests.package/TCTRequestTest.class/instance/testString.st b/packages/TelegramClient-Tests.package/TCTRequestTests.class/instance/testString.st similarity index 100% rename from packages/TelegramClient-Tests.package/TCTRequestTest.class/instance/testString.st rename to packages/TelegramClient-Tests.package/TCTRequestTests.class/instance/testString.st diff --git a/packages/TelegramClient-Tests.package/TCTRequestTest.class/instance/testType.st b/packages/TelegramClient-Tests.package/TCTRequestTests.class/instance/testType.st similarity index 100% rename from packages/TelegramClient-Tests.package/TCTRequestTest.class/instance/testType.st rename to packages/TelegramClient-Tests.package/TCTRequestTests.class/instance/testType.st diff --git a/packages/TelegramClient-Tests.package/TCTRequestTest.class/methodProperties.json b/packages/TelegramClient-Tests.package/TCTRequestTests.class/methodProperties.json similarity index 100% rename from packages/TelegramClient-Tests.package/TCTRequestTest.class/methodProperties.json rename to packages/TelegramClient-Tests.package/TCTRequestTests.class/methodProperties.json diff --git a/packages/TelegramClient-Tests.package/TCTRequestTest.class/properties.json b/packages/TelegramClient-Tests.package/TCTRequestTests.class/properties.json similarity index 88% rename from packages/TelegramClient-Tests.package/TCTRequestTest.class/properties.json rename to packages/TelegramClient-Tests.package/TCTRequestTests.class/properties.json index 22bdffc99..5eaa2f475 100644 --- a/packages/TelegramClient-Tests.package/TCTRequestTest.class/properties.json +++ b/packages/TelegramClient-Tests.package/TCTRequestTests.class/properties.json @@ -7,7 +7,7 @@ "commentStamp" : "js 8/1/2020 13:35", "instvars" : [ "request" ], - "name" : "TCTRequestTest", + "name" : "TCTRequestTests", "pools" : [ ], "super" : "TestCase", From 35150ce7706871130e397483a4b34d269f0854c7 Mon Sep 17 00:00:00 2001 From: Jonas Schmidt <43679965+schmidtjonas@users.noreply.github.com> Date: Mon, 3 Aug 2020 08:17:06 +0200 Subject: [PATCH 63/81] removed white color (#272) --- .../TCUChatWindow.class/instance/addTextInputField.st | 3 +-- .../TCUChatWindow.class/methodProperties.json | 4 ++-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/addTextInputField.st b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/addTextInputField.st index d058327c7..5feccb258 100644 --- a/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/addTextInputField.st +++ b/packages/TelegramClient-UI.package/TCUChatWindow.class/instance/addTextInputField.st @@ -2,10 +2,9 @@ drawing addTextInputField self textInputField: (TextMorph new - backgroundColor: Color white; borderWidth: 2; borderColor: TCUDefaultValues colorLightBlue; - contentsWrapped: ' ' asText; + contentsWrapped: '' asText; extent: ((self inputBar width - 200) @ self defaultInputfieldHeight); crAction: [self buttonSendPressed]). diff --git a/packages/TelegramClient-UI.package/TCUChatWindow.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUChatWindow.class/methodProperties.json index 5789e032e..2520a9b08 100644 --- a/packages/TelegramClient-UI.package/TCUChatWindow.class/methodProperties.json +++ b/packages/TelegramClient-UI.package/TCUChatWindow.class/methodProperties.json @@ -6,10 +6,10 @@ "addInputBar" : "js 6/13/2020 17:59", "addMessageWindow" : "f.w. 8/1/2020 02:37", "addSendButton" : "js 6/13/2020 18:46", - "addTextInputField" : "rs 6/17/2020 21:02", + "addTextInputField" : "js 8/2/2020 23:19", "addTitleBar" : "sp 8/2/2020 15:57", "addWelcomeMessage" : "N.S. 7/26/2020 15:57", - "buttonSendPressed" : "js 7/31/2020 17:08", + "buttonSendPressed" : "js 8/2/2020 23:19", "clear" : "sp 8/2/2020 15:33", "core" : "js 8/2/2020 22:11", "createInputBar" : "rs 6/17/2020 21:01", From dc15c7f6835089accc4f32bdc356252140a6f7f5 Mon Sep 17 00:00:00 2001 From: Fabio Niephaus Date: Mon, 3 Aug 2020 16:04:47 +0200 Subject: [PATCH 64/81] Make COVERALLS_REPO_TOKEN secret available This allows smalltalkCI to upload coverage reports to Coveralls from GitHub actions (example is at [1]). Unfortunately, Coveralls does not seem to support GitHub actions properly yet (the integration is limited to lcov files), but using a repo_token (see [2]) it is possible to upload coverage results in Coveralls' raw JSON format. [1] https://coveralls.io/jobs/65929250 [2] https://docs.coveralls.io/api-introduction --- .github/workflows/main.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index c912c21ea..585adb0ee 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -26,3 +26,5 @@ jobs: smalltalk-version: ${{ matrix.smalltalk }} - run: smalltalkci -s ${{ matrix.smalltalk }} timeout-minutes: 15 + env: + COVERALLS_REPO_TOKEN: ${{ secrets.COVERALLS_REPO_TOKEN }} From 3f445e4e2a325fd1744ab060b66e59b39177cab3 Mon Sep 17 00:00:00 2001 From: Lasklu <49564344+Lasklu@users.noreply.github.com> Date: Mon, 3 Aug 2020 21:24:42 +0200 Subject: [PATCH 65/81] Released CI limits to master/dev (#278) * Update main.yml * Update ci-linter.yml * fixed spacing * unified squeak versions in CI --- .github/workflows/ci-linter.yml | 4 ++-- .github/workflows/main.yml | 10 +--------- 2 files changed, 3 insertions(+), 11 deletions(-) diff --git a/.github/workflows/ci-linter.yml b/.github/workflows/ci-linter.yml index 265639bca..db213ba49 100644 --- a/.github/workflows/ci-linter.yml +++ b/.github/workflows/ci-linter.yml @@ -1,6 +1,6 @@ name: CI-Lint -on: [pull_request] +on: [ push, pull_request ] jobs: build: @@ -8,7 +8,7 @@ jobs: strategy: matrix: os: [ ubuntu-latest ] - smalltalk: [ Squeak64-5.3 ] + smalltalk: [ Squeak64-5.2 ] name: ${{ matrix.smalltalk }} on ${{ matrix.os }} steps: - uses: actions/checkout@v2 diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 585adb0ee..4b8f4ec11 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -1,15 +1,7 @@ name: CI -on: - push: - branches: - - develop - - master - pull_request: - branches: - - master - - develop +on: [ push, pull_request ] jobs: build: From ba868b95fe8303fd946595e44f0327bbbfe5d688 Mon Sep 17 00:00:00 2001 From: Niklas Schilli Date: Wed, 5 Aug 2020 08:59:45 +0200 Subject: [PATCH 66/81] Create release-trunk.yml (#280) * Create release-trunk.yml * Update release-trunk.yml * Update release-trunk.yml --- .github/workflows/release-trunk.yml | 47 +++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 .github/workflows/release-trunk.yml diff --git a/.github/workflows/release-trunk.yml b/.github/workflows/release-trunk.yml new file mode 100644 index 000000000..3172f9ff8 --- /dev/null +++ b/.github/workflows/release-trunk.yml @@ -0,0 +1,47 @@ +name: CI-Release-Trunk +on: + push: + branches: + - develop + +jobs: + build: + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [ ubuntu-latest ] + smalltalk: [ Squeak64-5.3 ] + name: ${{ matrix.smalltalk }} on ${{ matrix.os }} + steps: + - uses: actions/checkout@v2 + - uses: hpi-swa/setup-smalltalkCI@v1 + with: + smalltalk-version: ${{ matrix.smalltalk }} + - run: smalltalkci -s ${{ matrix.smalltalk }} .smalltalk.release.ston + timeout-minutes: 15 + - name: Get current time + uses: 1466587594/get-current-time@v1 + id: current-time + with: + format: YYYYMMDD-HH + utcOffset: "+01:00" + - name: Create Release + id: create_release + uses: actions/create-release@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + tag_name: Trunk ${{ steps.current-time.outputs.formattedTime }} + release_name: Trunk Release ${{ steps.current-time.outputs.formattedTime }} + draft: false + prerelease: true + - name: Upload Release Asset + id: upload-release-asset + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this blog post for more info: https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps + asset_path: /home/runner/.smalltalkCI/_builds/TelegramClient.sar + asset_name: TelegramClient.sar + asset_content_type: application/zip From 6586f04f870c7a814f99d136a275ede3344644ce Mon Sep 17 00:00:00 2001 From: Niklas Schilli Date: Wed, 5 Aug 2020 09:26:58 +0200 Subject: [PATCH 67/81] Update release-trunk.yml (#282) --- .github/workflows/release-trunk.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release-trunk.yml b/.github/workflows/release-trunk.yml index 3172f9ff8..ea4995f32 100644 --- a/.github/workflows/release-trunk.yml +++ b/.github/workflows/release-trunk.yml @@ -31,7 +31,7 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: - tag_name: Trunk ${{ steps.current-time.outputs.formattedTime }} + tag_name: Trunk${{ steps.current-time.outputs.formattedTime }} release_name: Trunk Release ${{ steps.current-time.outputs.formattedTime }} draft: false prerelease: true From aaabad068f031171196f80d5ed24144022ec3844 Mon Sep 17 00:00:00 2001 From: Fabio Niephaus Date: Wed, 5 Aug 2020 12:47:38 +0200 Subject: [PATCH 68/81] Use GITHUB_TOKEN instead of COVERALLS_REPO_TOKEN --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 4b8f4ec11..c7c811c39 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -19,4 +19,4 @@ jobs: - run: smalltalkci -s ${{ matrix.smalltalk }} timeout-minutes: 15 env: - COVERALLS_REPO_TOKEN: ${{ secrets.COVERALLS_REPO_TOKEN }} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} From 528cc73c799d87dcddc0c289d77ba429922619b1 Mon Sep 17 00:00:00 2001 From: Lasklu <49564344+Lasklu@users.noreply.github.com> Date: Thu, 6 Aug 2020 19:38:27 +0200 Subject: [PATCH 69/81] Revert #277 (#283) * revert * revert --- .github/workflows/ci-linter.yml | 10 +++++++++- .github/workflows/main.yml | 10 +++++++++- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci-linter.yml b/.github/workflows/ci-linter.yml index db213ba49..55a51b340 100644 --- a/.github/workflows/ci-linter.yml +++ b/.github/workflows/ci-linter.yml @@ -1,6 +1,14 @@ name: CI-Lint -on: [ push, pull_request ] +on: + push: + branches: + - develop + - master + pull_request: + branches: + - master + - develop jobs: build: diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index c7c811c39..b5c5c4faa 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -1,7 +1,15 @@ name: CI -on: [ push, pull_request ] +on: + push: + branches: + - develop + - master + pull_request: + branches: + - master + - develop jobs: build: From ea0d9ee56ecea6791de0b7389a3e230e67c77538 Mon Sep 17 00:00:00 2001 From: Lasklu <49564344+Lasklu@users.noreply.github.com> Date: Thu, 6 Aug 2020 21:55:57 +0200 Subject: [PATCH 70/81] edited readme (#284) * Update README.md * Update README.md * Update README.md * named to TelegramClient * moved tdlib section to wiki * Update README.md * moved badges * Changed Installation Guide so Windows tdlib works * Update README.md * Update README.md * Update README.md * Update README.md Co-authored-by: Freddy200 <45540897+Freddy200@users.noreply.github.com> Co-authored-by: Rohan Sawahn <49531442+rohansaw@users.noreply.github.com> --- README.md | 65 +++++++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 51 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index 1e260ba35..0928f6f40 100644 --- a/README.md +++ b/README.md @@ -1,17 +1,18 @@

TeleSqueak

-

TeleSqueak

+

TelegramClient

+ Coveralls github branch + Coveralls github branch -

- + ## Overview -TeleSqueak is a **Squeak-Client** for the widely used Telegram-Messenger. It aims to provide features such as Authentication, Contacts, Message and Media sending and a minimal, clean UI as well as as a Zen-mode and receiving messages in the background. +TelegramClient is a **Squeak-Client** for the widely used Telegram-Messenger. It aims to provide features such as Authentication, Contacts, Message and Media sending and a minimal, clean UI as well as as a Zen-mode and receiving messages in the background. *This Project is part of the "Softwaretechnik" Lecture 2020 at the Hasso Plattner Institute.* @@ -21,24 +22,60 @@ Make sure you have the current version of Squeak installed. * Step 2: Install the Squeak FFI Workload. To do so, open the Workspace in Squeak and execute the following command: `(Installer repository: 'http://source.squeak.org/FFI') install: 'FFI-Pools'; install: 'FFI-Kernel'.` -* Step 3: Download the required native Binaries for your system. [Windows](https://github.com/hpi-swa-teaching/tdlib/actions?query=workflow%3A%22Windows+CI%22), [Mac](https://github.com/hpi-swa-teaching/tdlib/actions?query=workflow%3A%22Tdlib+Max+x64+Build%22), [Ubuntu 18 lts](https://github.com/hpi-swa-teaching/tdlib/actions?query=workflow%3A%22Tdlib+Ubuntu+Build%22). Select the latest successful run of the pipeline and download the single artifact produced by the respective pipeline. -* Step 4: Place the unzipped binaries inside of your squeak image inside the 'Resource' folder. +* Step 3: Downloading the required native TDLib Binaries for your system: This should happen automatically. Alternatively you can download them here: On Windows you have to download [tdlib_windows.zip](https://github.com/hpi-swa-teaching/tdlib). For [Ubuntu 18 lts](https://github.com/hpi-swa-teaching/tdlib/actions?query=workflow%3A%22Tdlib+Ubuntu+Build%22) select the latest successful run of the pipeline and download the single artifact produced by the respective pipeline. We currently don't support MacOS yet, to find out more about this check our [wiki](https://github.com/hpi-swa-teaching/TelegramClient/wiki/Difficulties-and-Tips). +* Step 4 (Manual download only): Place the unzipped binaries inside of your squeak image inside the 'Resource' folder. * Step 5 (Windows only): Install the [Visual C++ Redistributable for Visual Studio 2015, 2017 and 2019](https://aka.ms/vs/16/release/vc_redist.x64.exe) Alternatively, check our [release page](https://github.com/hpi-swa-teaching/TelegramClient/releases) for an online installer in the form of a sar file. In that case you just have to follow steps two and five. ## Running TelegramClient In a workspace window either execute the command `TCUTelegram newWithTCCCore` or click the Telegram entry in the Apps dropdown menu. The menu is only available if you already started the app once or installed the app via a release sar file. -## Building Tdlib -Tdlib build instructions are available on their Github page. They also have a wonderful build instruction generator available which was the basis for our workflow . [Check it out here.](https://tdlib.github.io/td/build.html) Alternatively use the [Github Pipelines](https://github.com/hpi-swa-teaching/tdlib) we setup and modify them according to newer build instructions for successive tdlib versions. Currently we release at Tag 1.6.0. - -## Notes on Tdlib -The TelegramClient is build on the TelegramDatabseLibrary which provides access to Telegram API via a JSON-Interface. -We include Tdlib in our project and can access it with the Squeak FFI, in turn allowing us to access the Telegram API via JSON-Interface. -Once this project concludes there will be a need for the next group to aquire a new [API key](https://core.telegram.org/api/obtaining_api_id). +## Features + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Feature
🔓Authenticate yourself in TeleSqueak via Telegram
✉️Send messages to other users
💬Display open Chats in a List
📫Receive messages
🆕Create new chats
🔔Receive push notifications
🌍Start Telegram via WorldMenu
🚶Logout
## Resources for following groups -We have a [Discord](https://discord.gg/craraGh) server setup with a Github Webhook, notifying us on important changes to the repository. Most exchanges happened in there, making it a valueable resource for successive groups. +We have developed a [Project-Guide](https://github.com/hpi-swa-teaching/TelegramClient/wiki) which contains the most important information to continue developing the TelegramClient. Feel free to add new information to the wiki. ## Our Group Group 13 of the 2020 SWT I module incuded [Rohan Sawahn](https://github.com/rohansaw), [Jonas Schmidt](https://github.com/schmidtjonas), [Frederik Wollny](https://github.com/Freddy200), [Stefan Spangenberg](https://github.com/sspangenberg), [Lukas Laskowski](https://github.com/lasklu) and [Niklas Schilli](https://github.com/Mrnikbobjeff). From eff594e8790c8224bca03b504789c229b2d5fc1b Mon Sep 17 00:00:00 2001 From: Jonas Schmidt <43679965+schmidtjonas@users.noreply.github.com> Date: Fri, 7 Aug 2020 10:21:14 +0200 Subject: [PATCH 71/81] fixed readme (#287) --- README.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 0928f6f40..8a0493bbc 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -

TeleSqueak

+

TelegramClient-Logo

TelegramClient

@@ -12,7 +12,7 @@ ## Overview -TelegramClient is a **Squeak-Client** for the widely used Telegram-Messenger. It aims to provide features such as Authentication, Contacts, Message and Media sending and a minimal, clean UI as well as as a Zen-mode and receiving messages in the background. +TelegramClient is a **Squeak-Client** for the widely used Telegram-Messenger. It aims to provide features such as Authentication, Contacts, Message and Media sending and a minimal UI as well as as a Zen-mode and receiving messages in the background. *This Project is part of the "Softwaretechnik" Lecture 2020 at the Hasso Plattner Institute.* @@ -41,7 +41,7 @@ In a workspace window either execute the command `TCUTelegram newWithTCCCore` or 🔓 - Authenticate yourself in TeleSqueak via Telegram + Authenticate yourself in your Telegram-Account ✉️ @@ -63,7 +63,7 @@ In a workspace window either execute the command `TCUTelegram newWithTCCCore` or 🔔 Receive push notifications - + 🌍 Start Telegram via WorldMenu @@ -75,7 +75,7 @@ In a workspace window either execute the command `TCUTelegram newWithTCCCore` or ## Resources for following groups -We have developed a [Project-Guide](https://github.com/hpi-swa-teaching/TelegramClient/wiki) which contains the most important information to continue developing the TelegramClient. Feel free to add new information to the wiki. +We have developed a [Project-Guide](https://github.com/hpi-swa-teaching/TelegramClient/wiki) in our wiki page, which contains the most important information to continue developing the TelegramClient. Feel free to add new information to the wiki. ## Our Group -Group 13 of the 2020 SWT I module incuded [Rohan Sawahn](https://github.com/rohansaw), [Jonas Schmidt](https://github.com/schmidtjonas), [Frederik Wollny](https://github.com/Freddy200), [Stefan Spangenberg](https://github.com/sspangenberg), [Lukas Laskowski](https://github.com/lasklu) and [Niklas Schilli](https://github.com/Mrnikbobjeff). +Group 13 of the 2020 SWT I module incuded [Rohan Sawahn](https://github.com/rohansaw), [Jonas Schmidt](https://github.com/schmidtjonas), [Frederik Wollny](https://github.com/Freddy200), [Stefan Spangenberg](https://github.com/sspangenberg), [Lukas Laskowski](https://github.com/lasklu) and [Niklas Schilli](https://github.com/Mrnikbobjeff). Feel free to add your names to the list! From 46701a6a5b09ebd94b2dc85ccf5ff800c5306053 Mon Sep 17 00:00:00 2001 From: Jonas Schmidt <43679965+schmidtjonas@users.noreply.github.com> Date: Fri, 7 Aug 2020 10:31:15 +0200 Subject: [PATCH 72/81] Update generatePreamble.uipackage.nativeResourceFolder..st (#289) --- .../generatePreamble.uipackage.nativeResourceFolder..st | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/TelegramClient-Tests.package/TCTSarFileGenerator.class/instance/generatePreamble.uipackage.nativeResourceFolder..st b/packages/TelegramClient-Tests.package/TCTSarFileGenerator.class/instance/generatePreamble.uipackage.nativeResourceFolder..st index bec797e6e..21b86e5d3 100644 --- a/packages/TelegramClient-Tests.package/TCTSarFileGenerator.class/instance/generatePreamble.uipackage.nativeResourceFolder..st +++ b/packages/TelegramClient-Tests.package/TCTSarFileGenerator.class/instance/generatePreamble.uipackage.nativeResourceFolder..st @@ -7,7 +7,7 @@ generatePreamble: corePackage uipackage: uiPackage nativeResourceFolder: aFolder file := Smalltalk platformName caseOf: { [''Win32''] -> [''tdjson.dll'']. [''Mac OS''] -> [''libtdjson.1.6.0.dylib'']. - [''unix''] -> [''libtdjson.1.6.0.dylib'']}. + [''unix''] -> [''libtdjson.so.1.6.0'']}. self fileInMonticelloZipVersionNamed: ''', uiPackage, '.mcz''. TCUTelegram registerInWorldMenu. - (self membersMatching: (''', aFolder, FileDirectory slash, ''', file)) do: [:aFile | self extractMemberWithoutPath: aFile inDirectory: FileDirectory default].' \ No newline at end of file + (self membersMatching: (''', aFolder, FileDirectory slash, ''', file)) do: [:aFile | self extractMemberWithoutPath: aFile inDirectory: FileDirectory default].' From f33e153a6508ff51fdcbc08146e4b849cc8c3bdb Mon Sep 17 00:00:00 2001 From: Niklas Schilli Date: Fri, 7 Aug 2020 20:55:22 +0200 Subject: [PATCH 73/81] Fixed missing dlls on windows (#293) Co-authored-by: Rohan Sawahn --- .../generatePreamble.uipackage.nativeResourceFolder..st | 7 +------ .../TCTSarFileGenerator.class/methodProperties.json | 2 +- 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/packages/TelegramClient-Tests.package/TCTSarFileGenerator.class/instance/generatePreamble.uipackage.nativeResourceFolder..st b/packages/TelegramClient-Tests.package/TCTSarFileGenerator.class/instance/generatePreamble.uipackage.nativeResourceFolder..st index 21b86e5d3..1c5296514 100644 --- a/packages/TelegramClient-Tests.package/TCTSarFileGenerator.class/instance/generatePreamble.uipackage.nativeResourceFolder..st +++ b/packages/TelegramClient-Tests.package/TCTSarFileGenerator.class/instance/generatePreamble.uipackage.nativeResourceFolder..st @@ -2,12 +2,7 @@ helpers generatePreamble: corePackage uipackage: uiPackage nativeResourceFolder: aFolder ^ ' - | file | self fileInMonticelloZipVersionNamed: ''', corePackage, '.mcz''. - file := Smalltalk platformName caseOf: { - [''Win32''] -> [''tdjson.dll'']. - [''Mac OS''] -> [''libtdjson.1.6.0.dylib'']. - [''unix''] -> [''libtdjson.so.1.6.0'']}. self fileInMonticelloZipVersionNamed: ''', uiPackage, '.mcz''. TCUTelegram registerInWorldMenu. - (self membersMatching: (''', aFolder, FileDirectory slash, ''', file)) do: [:aFile | self extractMemberWithoutPath: aFile inDirectory: FileDirectory default].' + ((self zip) members) do: [:aFile | self extractMemberWithoutPath: aFile inDirectory: FileDirectory default].' diff --git a/packages/TelegramClient-Tests.package/TCTSarFileGenerator.class/methodProperties.json b/packages/TelegramClient-Tests.package/TCTSarFileGenerator.class/methodProperties.json index cd6af2a3d..ae1fa6eb9 100644 --- a/packages/TelegramClient-Tests.package/TCTSarFileGenerator.class/methodProperties.json +++ b/packages/TelegramClient-Tests.package/TCTSarFileGenerator.class/methodProperties.json @@ -2,7 +2,7 @@ "class" : { }, "instance" : { - "generatePreamble:uipackage:nativeResourceFolder:" : "js 8/2/2020 14:26", + "generatePreamble:uipackage:nativeResourceFolder:" : "N.S. 8/7/2020 20:53", "streamForPackage:inZip:" : "js 8/2/2020 13:52", "testCreateSarFile" : "js 8/2/2020 13:43", "versionForWorkingCopy:" : "js 8/2/2020 13:52" } } From fa833c4f33fbd851c0631a297c046e0a60702c36 Mon Sep 17 00:00:00 2001 From: Lasklu <49564344+Lasklu@users.noreply.github.com> Date: Fri, 7 Aug 2020 22:32:26 +0200 Subject: [PATCH 74/81] Update CONTRIBUTING.md (#296) --- CONTRIBUTING.md | 61 +++++++------------------------------------------ 1 file changed, 8 insertions(+), 53 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 9a2753d06..6edde254b 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -23,14 +23,9 @@ Features - feature/fix + feature/bugfix Always branch off HEAD of Working - - Hotfix - hotfix-* - Always branch off Stable - @@ -55,7 +50,6 @@ The different types of branches we may use are: * Feature branches * fix branches -* Hotfix branches Each of these branches have a specific purpose and are bound to strict rules as to which branches may be their originating branch and which branches must be their merge targets. Each branch and its usage is explained below. @@ -95,6 +89,8 @@ $ git push origin develop // push merge changes $ git push origin :feature/GH-id // deletes the remote branch ``` +> Please merge via the CLI instead of merging via Squeak. Otherwise some git-files for the CI and other services will be lost. + ### Fix Branches Fix branches differ from feature branches only semantically. Fix branches will be created when there is a bug on the develop branch that should be fixed and merged into the next deployment. For that reason, a bug branch typically will not last longer than one deployment cycle. Additionally, bug branches are used to explicitly track the difference between bug development and feature development. No matter when the bug branch will be finished, it will always be merged back into `develop`. @@ -105,15 +101,15 @@ Although likelihood will be less, during the lifespan of the bug development, th * Must branch from: `develop` * Must merge back into: `develop` -* Branch naming convention: `fix/GH-` +* Branch naming convention: `bugfix/GH-` #### Working with a fix branch If the branch does not exist yet, create the branch locally and then push to GitHub. A bug branch should always be 'publicly' available. That is, development should never exist in just one developer's local branch. ``` -$ git checkout -b fix/GH-id develop // creates a local branch for the new bug -$ git push origin fix/GH-id // makes the new bug remotely available +$ git checkout -b bugfix/GH-id develop // creates a local branch for the new bug +$ git push origin bugfix/GH-id // makes the new bug remotely available ``` Periodically, changes made to `develop` (if any) should be merged back into your bug branch. @@ -126,48 +122,7 @@ When development on the bug is complete, [the Lead] should merge changes into `d ``` $ git checkout develop // change to the develop branch -$ git merge --no-ff fix/GH-id // makes sure to create a commit object during merge +$ git merge --no-ff bugfix/GH-id // makes sure to create a commit object during merge $ git push origin develop // push merge changes -$ git push origin :fix/GH-id // deletes the remote branch -``` - -### Hotfix Branches - -A hotfix branch comes from the need to act immediately upon an undesired state of a live production version. Additionally, because of the urgency, a hotfix is not required to be be pushed during a scheduled deployment. Due to these requirements, a hotfix branch is always branched from a tagged `master` branch. This is done for two reasons: - -* Development on the `develop` branch can continue while the hotfix is being addressed. -* A tagged `master` branch still represents what is in production. At the point in time where a hotfix is needed, there could have been multiple commits to `develop` which would then no longer represent production. - -`` represents the Github issue to which Project Management will be tracked. - -* Must branch from: tagged `master` -* Must merge back into: `master` and `develop` -* Branch naming convention: `hotfix-/GH-` - -#### Working with a hotfix branch - -If the branch does not exist yet, create the branch locally and then push to GitHub. A hotfix branch should always be 'publicly' available. That is, development should never exist in just one developer's local branch. - +$ git push origin :bugfix/GH-id // deletes the remote branch ``` -$ git checkout -b hotfix-/GH-id master // creates a local branch for the new hotfix -$ git push origin hotfix-/GH-id // makes the new hotfix remotely available -``` - -When development on the hotfix is complete, one person should merge changes into `master` and then update the tag. - -``` -$ git checkout master // change to the stable branch -$ git merge --no-ff hotfix/GH-id // forces creation of commit object during merge -$ git tag -a // tags the fix -$ git push origin master --tags // push tag changes -``` - -Merge changes into `develop` so not to lose the hotfix and then delete the remote hotfix branch. - -``` -$ git checkout develop // change to the master branch -$ git merge --no-ff hotfix/GH-id // forces creation of commit object during merge -$ git push origin develop // push merge changes -$ git push origin :hotfix/GH-id // deletes the remote branch -``` - From 4dd97531dcacf85caf45b79175eb93eddbaf2f12 Mon Sep 17 00:00:00 2001 From: Jonas Schmidt <43679965+schmidtjonas@users.noreply.github.com> Date: Fri, 7 Aug 2020 22:43:53 +0200 Subject: [PATCH 75/81] added autodownload in sar file (#297) * fixed some stuff * fomatting --- .../TCCFFIClient.class/class/newForCurrentOS.st | 7 +++++++ .../TCCFFIClient.class/methodProperties.json | 3 ++- .../TCCTeleClient.class/class/newForCurrentOS.st | 9 +-------- .../TCCTeleClient.class/class/newWithClient..st | 1 + .../TCCTeleClient.class/methodProperties.json | 4 ++-- .../generatePreamble.uipackage.nativeResourceFolder..st | 3 ++- .../instance/testCreateSarFile.st | 3 +-- .../TCTSarFileGenerator.class/methodProperties.json | 4 ++-- 8 files changed, 18 insertions(+), 16 deletions(-) create mode 100644 packages/TelegramClient-Core.package/TCCFFIClient.class/class/newForCurrentOS.st diff --git a/packages/TelegramClient-Core.package/TCCFFIClient.class/class/newForCurrentOS.st b/packages/TelegramClient-Core.package/TCCFFIClient.class/class/newForCurrentOS.st new file mode 100644 index 000000000..18895a25c --- /dev/null +++ b/packages/TelegramClient-Core.package/TCCFFIClient.class/class/newForCurrentOS.st @@ -0,0 +1,7 @@ +accessing +newForCurrentOS + + ^ Smalltalk platformName caseOf: { + ['Win32'] -> [TCCWindowsClient new]. + ['Mac OS'] -> [TCCMacClient new]. + ['unix'] -> [TCCLinuxClient new]} \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCFFIClient.class/methodProperties.json b/packages/TelegramClient-Core.package/TCCFFIClient.class/methodProperties.json index 16c016b91..e48719284 100644 --- a/packages/TelegramClient-Core.package/TCCFFIClient.class/methodProperties.json +++ b/packages/TelegramClient-Core.package/TCCFFIClient.class/methodProperties.json @@ -2,7 +2,8 @@ "class" : { "downloadUrl" : "r.s 7/13/2020 17:05", "fileName" : "r.s 7/13/2020 17:05", - "moduleName" : "js 8/2/2020 13:21" }, + "moduleName" : "js 8/2/2020 13:21", + "newForCurrentOS" : "js 8/7/2020 22:19" }, "instance" : { "create" : "js 6/13/2020 12:53", "execute:with:" : "js 6/13/2020 18:33", diff --git a/packages/TelegramClient-Core.package/TCCTeleClient.class/class/newForCurrentOS.st b/packages/TelegramClient-Core.package/TCCTeleClient.class/class/newForCurrentOS.st index 151c6b10a..8112b597b 100644 --- a/packages/TelegramClient-Core.package/TCCTeleClient.class/class/newForCurrentOS.st +++ b/packages/TelegramClient-Core.package/TCCTeleClient.class/class/newForCurrentOS.st @@ -1,11 +1,4 @@ instance creation newForCurrentOS - - | client | - client := Smalltalk platformName caseOf: { - ['Win32'] -> [TCCWindowsClient new]. - ['Mac OS'] -> [TCCMacClient new]. - ['unix'] -> [TCCLinuxClient new]}. - client setLogLevel: self defaultLogLevel. - ^ self newWithClient: client \ No newline at end of file + ^ self newWithClient: TCCFFIClient newForCurrentOS \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCTeleClient.class/class/newWithClient..st b/packages/TelegramClient-Core.package/TCCTeleClient.class/class/newWithClient..st index a58fac2f9..a59b7106d 100644 --- a/packages/TelegramClient-Core.package/TCCTeleClient.class/class/newWithClient..st +++ b/packages/TelegramClient-Core.package/TCCTeleClient.class/class/newWithClient..st @@ -1,6 +1,7 @@ instance creation newWithClient: aClient + aClient setLogLevel: self defaultLogLevel. ^ self new specificClient: aClient; handle: aClient create \ No newline at end of file diff --git a/packages/TelegramClient-Core.package/TCCTeleClient.class/methodProperties.json b/packages/TelegramClient-Core.package/TCCTeleClient.class/methodProperties.json index 8e0d8f45f..d93c29260 100644 --- a/packages/TelegramClient-Core.package/TCCTeleClient.class/methodProperties.json +++ b/packages/TelegramClient-Core.package/TCCTeleClient.class/methodProperties.json @@ -1,8 +1,8 @@ { "class" : { "defaultLogLevel" : "js 8/2/2020 12:21", - "newForCurrentOS" : "js 8/2/2020 12:22", - "newWithClient:" : "js 8/2/2020 12:23" }, + "newForCurrentOS" : "js 8/7/2020 22:19", + "newWithClient:" : "js 8/7/2020 22:19" }, "instance" : { "execute:" : "js 5/28/2020 17:23", "free" : "js 5/28/2020 17:24", diff --git a/packages/TelegramClient-Tests.package/TCTSarFileGenerator.class/instance/generatePreamble.uipackage.nativeResourceFolder..st b/packages/TelegramClient-Tests.package/TCTSarFileGenerator.class/instance/generatePreamble.uipackage.nativeResourceFolder..st index 1c5296514..eaf831e9e 100644 --- a/packages/TelegramClient-Tests.package/TCTSarFileGenerator.class/instance/generatePreamble.uipackage.nativeResourceFolder..st +++ b/packages/TelegramClient-Tests.package/TCTSarFileGenerator.class/instance/generatePreamble.uipackage.nativeResourceFolder..st @@ -5,4 +5,5 @@ generatePreamble: corePackage uipackage: uiPackage nativeResourceFolder: aFolder self fileInMonticelloZipVersionNamed: ''', corePackage, '.mcz''. self fileInMonticelloZipVersionNamed: ''', uiPackage, '.mcz''. TCUTelegram registerInWorldMenu. - ((self zip) members) do: [:aFile | self extractMemberWithoutPath: aFile inDirectory: FileDirectory default].' + self zip members do: [:aFile | self extractMemberWithoutPath: aFile inDirectory: FileDirectory default]. + TCCFFIClient newForCurrentOS class moduleName.' \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTSarFileGenerator.class/instance/testCreateSarFile.st b/packages/TelegramClient-Tests.package/TCTSarFileGenerator.class/instance/testCreateSarFile.st index 80ac8debe..fb75586e1 100644 --- a/packages/TelegramClient-Tests.package/TCTSarFileGenerator.class/instance/testCreateSarFile.st +++ b/packages/TelegramClient-Tests.package/TCTSarFileGenerator.class/instance/testCreateSarFile.st @@ -9,7 +9,6 @@ testCreateSarFile zip := ZipArchive new. self streamForPackage: corePackage inZip: zip. self streamForPackage: uiPackage inZip: zip. - zip addTree: Smalltalk imagePath match: [:e | e fullName startsWith: - Smalltalk imagePath , FileDirectory slash , tdlibFolder]. + zip addTree: Smalltalk imagePath match: [:e | e fullName startsWith: Smalltalk imagePath, FileDirectory slash, tdlibFolder]. zip addString: (self generatePreamble: corePackage uipackage: uiPackage nativeResourceFolder: tdlibFolder) as: 'install/preamble'. zip writeToFileNamed: 'TelegramClient.sar'. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTSarFileGenerator.class/methodProperties.json b/packages/TelegramClient-Tests.package/TCTSarFileGenerator.class/methodProperties.json index ae1fa6eb9..db31576f9 100644 --- a/packages/TelegramClient-Tests.package/TCTSarFileGenerator.class/methodProperties.json +++ b/packages/TelegramClient-Tests.package/TCTSarFileGenerator.class/methodProperties.json @@ -2,7 +2,7 @@ "class" : { }, "instance" : { - "generatePreamble:uipackage:nativeResourceFolder:" : "N.S. 8/7/2020 20:53", + "generatePreamble:uipackage:nativeResourceFolder:" : "js 8/7/2020 22:23", "streamForPackage:inZip:" : "js 8/2/2020 13:52", - "testCreateSarFile" : "js 8/2/2020 13:43", + "testCreateSarFile" : "js 8/7/2020 22:28", "versionForWorkingCopy:" : "js 8/2/2020 13:52" } } From 2cab0490d5f8699f64c560b9c1299af25c5bc0a8 Mon Sep 17 00:00:00 2001 From: Jonas Schmidt <43679965+schmidtjonas@users.noreply.github.com> Date: Fri, 7 Aug 2020 23:18:19 +0200 Subject: [PATCH 76/81] changed README (#299) * changed README * changed readme again --- README.md | 45 +++++++++++++++++++++++++++------------------ 1 file changed, 27 insertions(+), 18 deletions(-) diff --git a/README.md b/README.md index 8a0493bbc..4ad0009fc 100644 --- a/README.md +++ b/README.md @@ -10,27 +10,15 @@ Coveralls github branch Coveralls github branch - + ## Overview + TelegramClient is a **Squeak-Client** for the widely used Telegram-Messenger. It aims to provide features such as Authentication, Contacts, Message and Media sending and a minimal UI as well as as a Zen-mode and receiving messages in the background. *This Project is part of the "Softwaretechnik" Lecture 2020 at the Hasso Plattner Institute.* -## Installation -Make sure you have the current version of Squeak installed. -* Step 1: Install the Squeak Git Client and clone this repository. For the trunk clone develop, for the latest stable release choose master. -* Step 2: Install the Squeak FFI Workload. To do so, open the Workspace in Squeak and execute the following command: `(Installer repository: 'http://source.squeak.org/FFI') -install: 'FFI-Pools'; -install: 'FFI-Kernel'.` -* Step 3: Downloading the required native TDLib Binaries for your system: This should happen automatically. Alternatively you can download them here: On Windows you have to download [tdlib_windows.zip](https://github.com/hpi-swa-teaching/tdlib). For [Ubuntu 18 lts](https://github.com/hpi-swa-teaching/tdlib/actions?query=workflow%3A%22Tdlib+Ubuntu+Build%22) select the latest successful run of the pipeline and download the single artifact produced by the respective pipeline. We currently don't support MacOS yet, to find out more about this check our [wiki](https://github.com/hpi-swa-teaching/TelegramClient/wiki/Difficulties-and-Tips). -* Step 4 (Manual download only): Place the unzipped binaries inside of your squeak image inside the 'Resource' folder. -* Step 5 (Windows only): Install the [Visual C++ Redistributable for Visual Studio 2015, 2017 and 2019](https://aka.ms/vs/16/release/vc_redist.x64.exe) - -Alternatively, check our [release page](https://github.com/hpi-swa-teaching/TelegramClient/releases) for an online installer in the form of a sar file. In that case you just have to follow steps two and five. -## Running TelegramClient -In a workspace window either execute the command `TCUTelegram newWithTCCCore` or click the Telegram entry in the Apps dropdown menu. The menu is only available if you already started the app once or installed the app via a release sar file. - ## Features + @@ -74,8 +62,29 @@ In a workspace window either execute the command `TCUTelegram newWithTCCCore` or
-## Resources for following groups -We have developed a [Project-Guide](https://github.com/hpi-swa-teaching/TelegramClient/wiki) in our wiki page, which contains the most important information to continue developing the TelegramClient. Feel free to add new information to the wiki. +## Running TelegramClient + +We currently only support Squeak 5.3. + +1. Install the last compatible FFI version. For Squeak version 5.3 use `Metacello new configuration: 'FFI'; load.` to install it. + +2. Check our [release page](https://github.com/hpi-swa-teaching/TelegramClient/releases) for an online installer in the form of a sar file. Install this sar file in your Squeak image. + +3. Click the Telegram entry in the Apps WorldMenu or execute the command `TCUTelegram newWithTCCCore`. The menu is only available if you already started the app once or installed the app via a release sar file. + +For further information or manual setup take a look in our [setup +guide](https://github.com/hpi-swa-teaching/TelegramClient/wiki/Setup-Guide). + +## Development + +### Wiki + +The [wiki](https://github.com/hpi-swa-teaching/TelegramClient/wiki) has a lot of useful information for continuing the development of this project. Feel free to add new information to the wiki. + +### Releasing + +Pre-Releases are created automatically whenever a commit is added to the develop-branch. Releases should created before each client meeting and can simply be done by merging develop into master. ## Our Group -Group 13 of the 2020 SWT I module incuded [Rohan Sawahn](https://github.com/rohansaw), [Jonas Schmidt](https://github.com/schmidtjonas), [Frederik Wollny](https://github.com/Freddy200), [Stefan Spangenberg](https://github.com/sspangenberg), [Lukas Laskowski](https://github.com/lasklu) and [Niklas Schilli](https://github.com/Mrnikbobjeff). Feel free to add your names to the list! + +Group 13 of the 2020 SWT I module included [Rohan Sawahn](https://github.com/rohansaw), [Jonas Schmidt](https://github.com/schmidtjonas), [Frederik Wollny](https://github.com/Freddy200), [Stefan Spangenberg](https://github.com/sspangenberg), [Lukas Laskowski](https://github.com/lasklu) and [Niklas Schilli](https://github.com/Mrnikbobjeff). Feel free to add your names to the list. From 69853477de788b8c632a31d69abedbd33e165814 Mon Sep 17 00:00:00 2001 From: Christoph Thiede Date: Wed, 7 Oct 2020 19:36:33 +0200 Subject: [PATCH 77/81] Remove unnecessary dependeny from UI to tests --- .squot | 8 ++++---- .../TCUTelegram.class/class/newWithTestCore.st | 4 ---- .../TCUTelegram.class/methodProperties.json | 1 - 3 files changed, 4 insertions(+), 9 deletions(-) delete mode 100644 packages/TelegramClient-UI.package/TCUTelegram.class/class/newWithTestCore.st diff --git a/.squot b/.squot index 186abbbdb..a43ec1953 100644 --- a/.squot +++ b/.squot @@ -1,6 +1,6 @@ OrderedDictionary { - 'packages\/TelegramClient-Core.package' : #SquotCypressCodeSerializer, - 'packages\/TelegramClient-Tests.package' : #SquotCypressCodeSerializer, - 'packages\/BaselineOfTelegramClient.package' : #SquotCypressCodeSerializer, - 'packages\/TelegramClient-UI.package' : #SquotCypressCodeSerializer + 'packages/TelegramClient-Core.package' : #SquotCypressCodeSerializer, + 'packages/TelegramClient-Tests.package' : #SquotCypressCodeSerializer, + 'packages/BaselineOfTelegramClient.package' : #SquotCypressCodeSerializer, + 'packages/TelegramClient-UI.package' : #SquotCypressCodeSerializer } \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUTelegram.class/class/newWithTestCore.st b/packages/TelegramClient-UI.package/TCUTelegram.class/class/newWithTestCore.st deleted file mode 100644 index 1bf845783..000000000 --- a/packages/TelegramClient-UI.package/TCUTelegram.class/class/newWithTestCore.st +++ /dev/null @@ -1,4 +0,0 @@ -instance creation -newWithTestCore - - ^ self newWithCore: TCTTestCore new \ No newline at end of file diff --git a/packages/TelegramClient-UI.package/TCUTelegram.class/methodProperties.json b/packages/TelegramClient-UI.package/TCUTelegram.class/methodProperties.json index 607fdce0f..9b973ac2c 100644 --- a/packages/TelegramClient-UI.package/TCUTelegram.class/methodProperties.json +++ b/packages/TelegramClient-UI.package/TCUTelegram.class/methodProperties.json @@ -3,7 +3,6 @@ "initialize" : "js 8/2/2020 14:31", "newWithCore:" : "js 8/2/2020 14:29", "newWithTCCCore" : "rs 6/25/2020 10:16", - "newWithTestCore" : "r.s 7/13/2020 17:36", "registerInWorldMenu" : "js 8/2/2020 14:28" }, "instance" : { "core" : "js 5/31/2020 20:04", From e6391a05d47a8e1a7e3d0fdfc3514113a89f78f0 Mon Sep 17 00:00:00 2001 From: Christoph Thiede Date: Wed, 7 Oct 2020 19:37:25 +0200 Subject: [PATCH 78/81] Fix DeprecationWarnings for #startsWith: --- .../TCCCore.class/instance/tryHandleError..st | 2 +- .../TCCCore.class/methodProperties.json | 2 +- .../TCTLinterTests.class/instance/initialize.st | 2 +- .../TCTLinterTests.class/instance/testCorrectClassPrefix.st | 6 +++--- .../TCTLinterTests.class/methodProperties.json | 4 ++-- .../TCTRequestTests.class/instance/testString.st | 2 +- .../TCTRequestTests.class/methodProperties.json | 2 +- .../TCTSarFileGenerator.class/instance/testCreateSarFile.st | 2 +- .../TCTSarFileGenerator.class/methodProperties.json | 2 +- 9 files changed, 12 insertions(+), 12 deletions(-) diff --git a/packages/TelegramClient-Core.package/TCCCore.class/instance/tryHandleError..st b/packages/TelegramClient-Core.package/TCCCore.class/instance/tryHandleError..st index 066e6dfcc..fd1b7e6df 100644 --- a/packages/TelegramClient-Core.package/TCCCore.class/instance/tryHandleError..st +++ b/packages/TelegramClient-Core.package/TCCCore.class/instance/tryHandleError..st @@ -7,6 +7,6 @@ tryHandleError: anError ['PHONE_NUMBER_INVALID'] -> [UIManager default inform: TCCErrorConstants invalidAuthenticationCode]. ['PHONE_CODE_INVALID'] -> [UIManager default inform: TCCErrorConstants invalidAuthenticationCode]} otherwise: [ - ((anError at: 'message') startsWith: 'Can''t lock file') + ((anError at: 'message') beginsWith: 'Can''t lock file') ifTrue: [UIManager default inform: TCCErrorConstants tdlibAlreadyInUse] ifFalse: [self halt: 'An Error Occured. Check Transcript Output.']]. \ 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 551b675b8..188d22480 100644 --- a/packages/TelegramClient-Core.package/TCCCore.class/methodProperties.json +++ b/packages/TelegramClient-Core.package/TCCCore.class/methodProperties.json @@ -25,5 +25,5 @@ "sendMessage:to:" : "rs 6/13/2020 15:26", "sendPhoneNumber:" : "js 6/13/2020 15:35", "setUserID:" : "js 8/2/2020 13:15", - "tryHandleError:" : "js 7/31/2020 15:13", + "tryHandleError:" : "ct 10/7/2020 19:37", "update" : "js 7/31/2020 22:34" } } diff --git a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/initialize.st b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/initialize.st index 0a8436190..0674512bf 100644 --- a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/initialize.st +++ b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/initialize.st @@ -6,5 +6,5 @@ initialize self classes: ((SystemNavigation default allClasses select: [:aClass | - (aClass class category startsWith: 'TelegramClient') and: [(aClass class name startsWith: 'TCCFFIClient') not]])); + (aClass class category beginsWith: 'TelegramClient') and: [(aClass class name beginsWith: 'TCCFFIClient') not]])); classTestObjects: (self classes collect: [:anObject | anObject as: SLTestObject]). \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testCorrectClassPrefix.st b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testCorrectClassPrefix.st index e837100f2..6f1cf7f69 100644 --- a/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testCorrectClassPrefix.st +++ b/packages/TelegramClient-Tests.package/TCTLinterTests.class/instance/testCorrectClassPrefix.st @@ -3,10 +3,10 @@ testCorrectClassPrefix self classes do: [:aClass | (aClass class category endsWith: 'Core') - ifTrue: [self assert: (aClass class name startsWith: 'TCC')]. + ifTrue: [self assert: (aClass class name beginsWith: 'TCC')]. (aClass class category endsWith: 'Tests') - ifTrue: [self assert: (aClass class name startsWith: 'TCT')]. + ifTrue: [self assert: (aClass class name beginsWith: 'TCT')]. (aClass class category endsWith: 'UI') - ifTrue: [self assert: (aClass class name startsWith: 'TCU')]] \ No newline at end of file + ifTrue: [self assert: (aClass class name beginsWith: 'TCU')]] \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTLinterTests.class/methodProperties.json b/packages/TelegramClient-Tests.package/TCTLinterTests.class/methodProperties.json index c7d55b286..6bbb90e27 100644 --- a/packages/TelegramClient-Tests.package/TCTLinterTests.class/methodProperties.json +++ b/packages/TelegramClient-Tests.package/TCTLinterTests.class/methodProperties.json @@ -9,11 +9,11 @@ "classes" : "js 6/13/2020 11:38", "classes:" : "js 6/13/2020 11:38", "environmentFor:withRule:" : "js 6/13/2020 17:53", - "initialize" : "js 6/13/2020 18:35", + "initialize" : "ct 10/7/2020 19:31", "isLineWithOnlyTabsAndSpaces:" : "j 7/16/2020 12:30", "methodTestObjects" : "js 6/13/2020 14:06", "methodsLinesDo:" : "js 6/13/2020 18:05", - "testCorrectClassPrefix" : "js 6/13/2020 18:23", + "testCorrectClassPrefix" : "ct 10/7/2020 19:32", "testIfTrueReturnsRule" : "js 6/13/2020 18:35", "testInstanceVarAccess" : "js 6/13/2020 16:54", "testLongMethods" : "rs 6/25/2020 10:47", diff --git a/packages/TelegramClient-Tests.package/TCTRequestTests.class/instance/testString.st b/packages/TelegramClient-Tests.package/TCTRequestTests.class/instance/testString.st index 0d3abc45d..afc03954c 100644 --- a/packages/TelegramClient-Tests.package/TCTRequestTests.class/instance/testString.st +++ b/packages/TelegramClient-Tests.package/TCTRequestTests.class/instance/testString.st @@ -3,5 +3,5 @@ testString self assert: (self request asString includesSubstring: '"@type":"test"'). self assert: (self request asString includesSubstring: '"code":"0"'). - self assert: (self request asString startsWith: '{'). + self assert: (self request asString beginsWith: '{'). self assert: (self request asString endsWith: '}'). \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTRequestTests.class/methodProperties.json b/packages/TelegramClient-Tests.package/TCTRequestTests.class/methodProperties.json index a1785290c..5aec101d5 100644 --- a/packages/TelegramClient-Tests.package/TCTRequestTests.class/methodProperties.json +++ b/packages/TelegramClient-Tests.package/TCTRequestTests.class/methodProperties.json @@ -5,5 +5,5 @@ "request" : "js 8/1/2020 12:09", "request:" : "js 8/1/2020 12:10", "setUp" : "js 8/1/2020 12:21", - "testString" : "js 8/1/2020 12:22", + "testString" : "ct 10/7/2020 19:31", "testType" : "js 8/1/2020 12:12" } } diff --git a/packages/TelegramClient-Tests.package/TCTSarFileGenerator.class/instance/testCreateSarFile.st b/packages/TelegramClient-Tests.package/TCTSarFileGenerator.class/instance/testCreateSarFile.st index fb75586e1..a2e8dd9f6 100644 --- a/packages/TelegramClient-Tests.package/TCTSarFileGenerator.class/instance/testCreateSarFile.st +++ b/packages/TelegramClient-Tests.package/TCTSarFileGenerator.class/instance/testCreateSarFile.st @@ -9,6 +9,6 @@ testCreateSarFile zip := ZipArchive new. self streamForPackage: corePackage inZip: zip. self streamForPackage: uiPackage inZip: zip. - zip addTree: Smalltalk imagePath match: [:e | e fullName startsWith: Smalltalk imagePath, FileDirectory slash, tdlibFolder]. + zip addTree: Smalltalk imagePath match: [:e | e fullName beginsWith: Smalltalk imagePath, FileDirectory slash, tdlibFolder]. zip addString: (self generatePreamble: corePackage uipackage: uiPackage nativeResourceFolder: tdlibFolder) as: 'install/preamble'. zip writeToFileNamed: 'TelegramClient.sar'. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTSarFileGenerator.class/methodProperties.json b/packages/TelegramClient-Tests.package/TCTSarFileGenerator.class/methodProperties.json index db31576f9..a09cea951 100644 --- a/packages/TelegramClient-Tests.package/TCTSarFileGenerator.class/methodProperties.json +++ b/packages/TelegramClient-Tests.package/TCTSarFileGenerator.class/methodProperties.json @@ -4,5 +4,5 @@ "instance" : { "generatePreamble:uipackage:nativeResourceFolder:" : "js 8/7/2020 22:23", "streamForPackage:inZip:" : "js 8/2/2020 13:52", - "testCreateSarFile" : "js 8/7/2020 22:28", + "testCreateSarFile" : "ct 10/7/2020 19:32", "versionForWorkingCopy:" : "js 8/2/2020 13:52" } } From 9f9710ebbd83da11d61e2e7d805fdafbb161fcf0 Mon Sep 17 00:00:00 2001 From: Christoph Thiede Date: Wed, 7 Oct 2020 19:38:05 +0200 Subject: [PATCH 79/81] Specify timeout for TCTLoggedInTests >> #testLogout --- .../TCTLoggedInTests.class/instance/testLogout.st | 1 + .../TCTLoggedInTests.class/methodProperties.json | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/TelegramClient-Tests.package/TCTLoggedInTests.class/instance/testLogout.st b/packages/TelegramClient-Tests.package/TCTLoggedInTests.class/instance/testLogout.st index 83b782a2e..9c41d2b76 100644 --- a/packages/TelegramClient-Tests.package/TCTLoggedInTests.class/instance/testLogout.st +++ b/packages/TelegramClient-Tests.package/TCTLoggedInTests.class/instance/testLogout.st @@ -1,5 +1,6 @@ testing testLogout + self core authHandler logout. 10 seconds wait. diff --git a/packages/TelegramClient-Tests.package/TCTLoggedInTests.class/methodProperties.json b/packages/TelegramClient-Tests.package/TCTLoggedInTests.class/methodProperties.json index 38518d5d2..2b6adf25b 100644 --- a/packages/TelegramClient-Tests.package/TCTLoggedInTests.class/methodProperties.json +++ b/packages/TelegramClient-Tests.package/TCTLoggedInTests.class/methodProperties.json @@ -6,5 +6,5 @@ "core:" : "r.s 7/15/2020 18:46", "setUp" : "js 8/1/2020 12:51", "tearDown" : "r.s 7/16/2020 16:54", - "testLogout" : "r.s 7/16/2020 16:54", + "testLogout" : "ct 10/7/2020 19:35", "testMessageSending" : "r.s 7/16/2020 16:53" } } From 22aec419c4b326b9745b55a099924f2bd5206673 Mon Sep 17 00:00:00 2001 From: Christoph Thiede Date: Wed, 7 Oct 2020 20:16:39 +0200 Subject: [PATCH 80/81] Fix failing test authentication by resetting test data Closes #307 --- .../TCTTestCore.class/instance/loginWithTestData.st | 4 ++-- .../TCTTestCore.class/methodProperties.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/TelegramClient-Tests.package/TCTTestCore.class/instance/loginWithTestData.st b/packages/TelegramClient-Tests.package/TCTTestCore.class/instance/loginWithTestData.st index 907e09d98..fbb2cd5ec 100644 --- a/packages/TelegramClient-Tests.package/TCTTestCore.class/instance/loginWithTestData.st +++ b/packages/TelegramClient-Tests.package/TCTTestCore.class/instance/loginWithTestData.st @@ -1,6 +1,6 @@ logIn loginWithTestData - self authHandler sendPhoneNumber: '9996621234'. + self authHandler sendPhoneNumber: '9996612345'. 2 seconds wait. - self checkAuthenticationCode: '22222'. \ No newline at end of file + self checkAuthenticationCode: '11111'. \ No newline at end of file diff --git a/packages/TelegramClient-Tests.package/TCTTestCore.class/methodProperties.json b/packages/TelegramClient-Tests.package/TCTTestCore.class/methodProperties.json index 0c5b9f11f..498a6f1cc 100644 --- a/packages/TelegramClient-Tests.package/TCTTestCore.class/methodProperties.json +++ b/packages/TelegramClient-Tests.package/TCTTestCore.class/methodProperties.json @@ -3,4 +3,4 @@ }, "instance" : { "initializeHandlers" : "rs 6/14/2020 12:49", - "loginWithTestData" : "r.s 7/15/2020 12:42" } } + "loginWithTestData" : "ct 10/7/2020 20:11" } } From b746f42ecd2c3eee88bc473f7ad10b0d4075fdd3 Mon Sep 17 00:00:00 2001 From: Christoph Thiede Date: Wed, 7 Oct 2020 20:21:17 +0200 Subject: [PATCH 81/81] Please linter #testMethodHasEmptyLine --- .../TCTLoggedInTests.class/instance/testLogout.st | 1 + .../TCTLoggedInTests.class/methodProperties.json | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/TelegramClient-Tests.package/TCTLoggedInTests.class/instance/testLogout.st b/packages/TelegramClient-Tests.package/TCTLoggedInTests.class/instance/testLogout.st index 9c41d2b76..f7844ac5e 100644 --- a/packages/TelegramClient-Tests.package/TCTLoggedInTests.class/instance/testLogout.st +++ b/packages/TelegramClient-Tests.package/TCTLoggedInTests.class/instance/testLogout.st @@ -1,5 +1,6 @@ testing testLogout + self core authHandler logout. diff --git a/packages/TelegramClient-Tests.package/TCTLoggedInTests.class/methodProperties.json b/packages/TelegramClient-Tests.package/TCTLoggedInTests.class/methodProperties.json index 2b6adf25b..ea72d17cf 100644 --- a/packages/TelegramClient-Tests.package/TCTLoggedInTests.class/methodProperties.json +++ b/packages/TelegramClient-Tests.package/TCTLoggedInTests.class/methodProperties.json @@ -6,5 +6,5 @@ "core:" : "r.s 7/15/2020 18:46", "setUp" : "js 8/1/2020 12:51", "tearDown" : "r.s 7/16/2020 16:54", - "testLogout" : "ct 10/7/2020 19:35", + "testLogout" : "ct 10/7/2020 20:20", "testMessageSending" : "r.s 7/16/2020 16:53" } }