tgbotapi/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/MessageId.kt

34 lines
1.0 KiB
Kotlin

package dev.inmo.tgbotapi.types
import kotlinx.serialization.KSerializer
import kotlinx.serialization.Serializable
import kotlinx.serialization.descriptors.SerialDescriptor
import kotlinx.serialization.encoding.Decoder
import kotlinx.serialization.encoding.Encoder
import kotlinx.serialization.json.*
import kotlin.jvm.JvmInline
object MessageIdSerializer : KSerializer<MessageId> {
override val descriptor: SerialDescriptor = JsonObject.serializer().descriptor
override fun deserialize(decoder: Decoder): MessageId = JsonObject.serializer().deserialize(decoder)[messageIdField]!!.jsonPrimitive.long.asTelegramMessageId()
override fun serialize(encoder: Encoder, value: MessageId) {
JsonObject.serializer().serialize(
encoder,
JsonObject(
mapOf(
messageIdField to JsonPrimitive(value.long)
)
)
)
}
}
@Serializable
@JvmInline
value class MessageId(
val long: Long
)
fun Long.asTelegramMessageId() = MessageId(this)