From 5fe8cf948a29437a343c38f2e7c4073a8d9a1e8a Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Thu, 8 Dec 2022 08:57:54 +0600 Subject: [PATCH 1/5] start 4.2.1 --- CHANGELOG.md | 2 ++ gradle.properties | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1bf7ab8ace..09e646337a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,7 @@ # TelegramBotAPI changelog +## 4.2.1 + ## 4.2.0 * `Versions`: diff --git a/gradle.properties b/gradle.properties index 185be80f68..21733ff3fb 100644 --- a/gradle.properties +++ b/gradle.properties @@ -6,4 +6,4 @@ kotlin.incremental=true kotlin.incremental.js=true library_group=dev.inmo -library_version=4.2.0 +library_version=4.2.1 From f71ac51461559b8c8c269cec0e32e79ac1e4b5f8 Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Thu, 8 Dec 2022 09:06:54 +0600 Subject: [PATCH 2/5] improve makeLinkToMessage --- CHANGELOG.md | 3 ++ .../utils/formatting/LinksFormatting.kt | 52 +++++++++++-------- 2 files changed, 32 insertions(+), 23 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 09e646337a..6e2d550a06 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,9 @@ ## 4.2.1 +* `Utils`: + * Improve support of `makeLinkToMessage` extensions + ## 4.2.0 * `Versions`: diff --git a/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/formatting/LinksFormatting.kt b/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/formatting/LinksFormatting.kt index 7ea69b1134..d0a8b9ea66 100644 --- a/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/formatting/LinksFormatting.kt +++ b/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/formatting/LinksFormatting.kt @@ -24,22 +24,34 @@ inline fun makeDeepLink(username: Username, startParameter: String) = makeTelegr inline fun makeTelegramDeepLink(username: Username, startParameter: String) = makeDeepLink(username, startParameter) inline fun makeTelegramStartattach(username: Username, data: String? = null) = makeTelegramStartattach(username.usernameWithoutAt, data) -fun makeLinkToMessage( - username: String, - messageId: MessageId -): String = "$internalLinkBeginning/$username/$messageId" -fun makeLinkToMessage( - username: Username, - messageId: MessageId -): String = makeLinkToMessage(username.username, messageId) -fun makeLinkToMessage( - chat: UsernameChat, - messageId: MessageId -): String? = chat.username ?.let { makeLinkToMessage(it, messageId) } - private val linkIdRedundantPartRegex = Regex("^-100") private val usernameBeginSymbolRegex = Regex("^@") +fun makeLinkToMessage( + username: String, + messageId: MessageId, + threadId: MessageThreadId? = null +): String = "$internalLinkBeginning/${username.replace(usernameBeginSymbolRegex, "")}/${threadId ?.let { "$it/" } ?: ""}$messageId" +fun makeLinkToMessage( + username: Username, + messageId: MessageId, + threadId: MessageThreadId? = null +): String = makeLinkToMessage(username.username, messageId, threadId) +fun makeLinkToMessage( + chatId: Identifier, + messageId: MessageId, + threadId: MessageThreadId? = null +): String = chatId.toString().replace( + linkIdRedundantPartRegex, + "" +).let { bareId -> + "$internalLinkBeginning/c/$bareId//${threadId ?.let { "$it/" } ?: ""}$messageId" +} +fun makeLinkToMessage( + chatId: IdChatIdentifier, + messageId: MessageId, +): String = makeLinkToMessage(chatId.chatId, messageId, chatId.threadId) + /** * Link which can be used as by any user to get access to [Message]. Returns null in case when there are no * known way to build link (for [PrivateChat]s, for example) @@ -49,16 +61,10 @@ fun makeLinkToMessage( messageId: MessageId ): String? { return when { - chat is UsernameChat && chat.username != null -> { - "$internalLinkBeginning/${chat.username ?.username ?.replace( - usernameBeginSymbolRegex, "")}/$messageId" - } - chat !is PrivateChat -> chat.id.chatId.toString().replace( - linkIdRedundantPartRegex, - "" - ).let { bareId -> - "$internalLinkBeginning/c/$bareId/$messageId" - } + chat is UsernameChat && chat.username != null -> chat.username ?.let { + makeLinkToMessage(it, messageId, chat.id.threadId) + } ?: makeLinkToMessage(chat.id, messageId) + chat !is PrivateChat -> makeLinkToMessage(chat.id, messageId) else -> return null } } From d3584e793c912365e0b9ebc4e4b2124630e4c427 Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Thu, 8 Dec 2022 09:17:58 +0600 Subject: [PATCH 3/5] add makeChatLink --- .../utils/formatting/LinksFormatting.kt | 20 ++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/formatting/LinksFormatting.kt b/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/formatting/LinksFormatting.kt index d0a8b9ea66..d44a86475e 100644 --- a/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/formatting/LinksFormatting.kt +++ b/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/formatting/LinksFormatting.kt @@ -7,17 +7,27 @@ import dev.inmo.tgbotapi.types.message.textsources.link import io.ktor.http.encodeURLQueryComponent -fun makeUsernameLink(username: String) = "$internalLinkBeginning/$username" +fun makeUsernameLink(username: String, threadId: MessageThreadId? = null) = "$internalLinkBeginning/$username${threadId ?.let { "/$it" } ?: ""}" +fun makeChatLink(identifier: Identifier, threadId: MessageThreadId? = null) = identifier.toString().replace( + linkIdRedundantPartRegex, + "" +).let { bareId -> + "$internalLinkBeginning/c/$bareId${threadId ?.let { "/$it" } ?: ""}" +} fun makeUsernameDeepLinkPrefix(username: String) = "${makeUsernameLink(username)}?start=" fun makeUsernameStartattachPrefix(username: String) = "$internalLinkBeginning/$username?startattach" fun makeUsernameStartattachLink(username: String, data: String? = null) = "${makeUsernameStartattachPrefix(username)}${data?.let { "=$it" } ?: ""}" inline val Username.link get() = makeUsernameLink(usernameWithoutAt) +val IdChatIdentifier.link: String + get() = makeChatLink(chatId, threadId) +fun ChatId.link(threadId: MessageThreadId?) = makeChatLink(chatId, threadId) +inline fun Username.link(threadId: MessageThreadId?) = makeUsernameLink(usernameWithoutAt, threadId) inline val Username.deepLinkPrefix get() = makeUsernameDeepLinkPrefix(usernameWithoutAt) inline val Username.startattachPrefix get() = makeUsernameStartattachPrefix(usernameWithoutAt) -inline fun makeLink(username: Username) = username.link +inline fun makeLink(username: Username, threadId: MessageThreadId? = null) = username.link(threadId) inline fun makeTelegramDeepLink(username: String, startParameter: String) = "${makeUsernameDeepLinkPrefix(username)}$startParameter".encodeURLQueryComponent() inline fun makeTelegramStartattach(username: String, data: String? = null) = makeUsernameStartattachLink(username, data) inline fun makeDeepLink(username: Username, startParameter: String) = makeTelegramDeepLink(username.usernameWithoutAt, startParameter) @@ -31,7 +41,7 @@ fun makeLinkToMessage( username: String, messageId: MessageId, threadId: MessageThreadId? = null -): String = "$internalLinkBeginning/${username.replace(usernameBeginSymbolRegex, "")}/${threadId ?.let { "$it/" } ?: ""}$messageId" +): String = "${makeUsernameLink(username, threadId)}/$messageId" fun makeLinkToMessage( username: Username, messageId: MessageId, @@ -45,7 +55,7 @@ fun makeLinkToMessage( linkIdRedundantPartRegex, "" ).let { bareId -> - "$internalLinkBeginning/c/$bareId//${threadId ?.let { "$it/" } ?: ""}$messageId" + "$internalLinkBeginning/c/$bareId/${threadId ?.let { "$it/" } ?: ""}$messageId" } fun makeLinkToMessage( chatId: IdChatIdentifier, @@ -85,7 +95,7 @@ val Message.link: String? val Chat.link: String? get() { if (this is UsernameChat) { - username ?.link + username ?.link ?: id.link } if (this is ExtendedPublicChat) { inviteLink ?.let { return it } From b906d605f44d01d24ae73b62778656f8a1084799 Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Thu, 8 Dec 2022 09:35:22 +0600 Subject: [PATCH 4/5] temporal include of internal microutils build --- build.gradle | 1 + gradle/libs.versions.toml | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/build.gradle b/build.gradle index 8be94d48a0..c4e040a799 100644 --- a/build.gradle +++ b/build.gradle @@ -20,6 +20,7 @@ allprojects { mavenLocal() mavenCentral() google() + maven { url "https://git.inmo.dev/api/packages/InsanusMokrassar/maven" } } if (it != rootProject.findProject("docs")) { tasks.whenTaskAdded { task -> diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 5d75997828..904d6e00e6 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -8,12 +8,12 @@ javax-activation = "1.1.1" korlibs = "3.4.0" uuid = "0.6.0" -ktor = "2.1.3" +ktor = "2.2.1" ksp = "1.7.22-1.0.8" kotlin-poet = "1.12.0" -microutils = "0.15.0" +microutils = "0.16.0-branch_0.16.0-build277" github-release-plugin = "2.4.1" dokka = "1.7.20" From e626d8b5cc6debdf3da28440154acc15db1adeef Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Thu, 8 Dec 2022 10:30:26 +0600 Subject: [PATCH 5/5] fix dependencies and fill changelog --- CHANGELOG.md | 3 +++ gradle/libs.versions.toml | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6e2d550a06..2f28995447 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,9 @@ ## 4.2.1 +* `Versions`: + * `MicroUtils`: `0.15.0` -> `0.16.0` + * `Ktor`: `2.1.3` -> `2.2.1` * `Utils`: * Improve support of `makeLinkToMessage` extensions diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 904d6e00e6..550cf78e57 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -13,7 +13,7 @@ ktor = "2.2.1" ksp = "1.7.22-1.0.8" kotlin-poet = "1.12.0" -microutils = "0.16.0-branch_0.16.0-build277" +microutils = "0.16.0" github-release-plugin = "2.4.1" dokka = "1.7.20"