hotfix for username

This commit is contained in:
InsanusMokrassar 2019-02-18 14:35:58 +08:00
parent 3d786ee4bb
commit a1b2aed78c
3 changed files with 14 additions and 14 deletions

View File

@ -28,6 +28,10 @@ work with media groups lists
* Now most part of usernames in library have type `Username`
* Fix `replyMarkup` in `InlineQueryResultArticle`
### 0.10.3
* Hotfix for username data class
## 0.9.0
* Old extension `OkHttpClient.Builder#useWith` now deprecated and must be replaced by the same in

View File

@ -1,4 +1,4 @@
project.version = "0.10.2"
project.version = "0.10.3"
project.group = "com.github.insanusmokrassar"
buildscript {

View File

@ -19,19 +19,11 @@ fun Identifier.toChatId(): ChatId = ChatId(this)
@Serializable(ChatIdentifierSerializer::class)
data class Username(
private val baseUsername: String
val username: String
) : ChatIdentifier() {
@Transient
val username: String = if (!baseUsername.startsWith("@")) {
"@$baseUsername"
} else {
baseUsername
}
override fun equals(other: Any?): Boolean {
return super.equals(other) || when (other) {
is String -> super.equals("@$other")
else -> false
init {
if (!username.startsWith("@")) {
throw IllegalArgumentException("Username must starts with `@`")
}
}
}
@ -44,7 +36,11 @@ internal class ChatIdentifierSerializer: KSerializer<ChatIdentifier> {
val id = input.decodeString()
return id.toLongOrNull() ?.let {
ChatId(it)
} ?: Username(id)
} ?: if (!id.startsWith("@")) {
Username("@$id")
} else {
Username(id)
}
}
override fun serialize(output: Encoder, obj: ChatIdentifier) {