From 1ebaa1c38739acb07f0729627864c6c8e3ae956a Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Mon, 7 Feb 2022 18:08:06 +0600 Subject: [PATCH] deeplinking fixes and additions --- CHANGELOG.md | 8 ++++++++ .../kotlin/dev/inmo/tgbotapi/types/ChatIdentifier.kt | 3 +++ .../extensions/utils/formatting/LinksFormatting.kt | 8 +++++++- 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 245dfe7b01..9fbd7a8fe6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,14 @@ ## 0.38.5 +* `Core`: + * `Username` got new property `usernameWithoutAt` which will return `username` without leading `@` +* `Utils`: + * Several new functions for working with deep links: + * `makeUsernameDeepLinkPrefix` + * `makeTelegramDeepLink` + * `makeDeepLink` + ## 0.38.4 __This update contains including of [Telegram Bot API 5.7](https://core.telegram.org/bots/api-changelog#january-31-2022)__ diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatIdentifier.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatIdentifier.kt index cf3f5c256b..9d0ba534b5 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatIdentifier.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatIdentifier.kt @@ -46,6 +46,9 @@ fun Byte.toChatId(): ChatId = toLong().toChatId() data class Username( val username: String ) : ChatIdentifier() { + val usernameWithoutAt + get() = username.dropWhile { it == '@' } + init { if (!username.startsWith("@")) { throw IllegalArgumentException("Username must starts with `@`") 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 8d7e2687d6..cffa0cd74f 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 @@ -9,9 +9,15 @@ import dev.inmo.tgbotapi.types.message.abstracts.Message private const val internalLinkBeginning = "https://t.me" fun makeUsernameLink(username: String) = "$internalLinkBeginning/$username" +fun makeUsernameDeepLinkPrefix(username: String) = "${makeUsernameLink(username)}?start=" inline val Username.link - get() = makeUsernameLink(username) + get() = makeUsernameLink(usernameWithoutAt) +inline val Username.deepLinkPrefix + get() = makeUsernameDeepLinkPrefix(usernameWithoutAt) inline fun makeLink(username: Username) = username.link +inline fun makeTelegramDeepLink(username: String, startParameter: String) = "${makeUsernameDeepLinkPrefix(username)}$startParameter" +inline fun makeDeepLink(username: Username, startParameter: String) = "${username.deepLinkPrefix}$startParameter" +inline fun makeTelegramDeepLink(username: Username, startParameter: String) = makeDeepLink(username, startParameter) fun makeLinkToMessage( username: String,