tgbotapi/TelegramBotAPI/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/polls/PollOption.kt

40 lines
1.2 KiB
Kotlin

package com.github.insanusmokrassar.TelegramBotAPI.types.polls
import com.github.insanusmokrassar.TelegramBotAPI.types.textField
import com.github.insanusmokrassar.TelegramBotAPI.types.votesCountField
import kotlinx.serialization.*
import kotlinx.serialization.descriptors.SerialDescriptor
import kotlinx.serialization.encoding.Decoder
import kotlinx.serialization.encoding.Encoder
@Serializable(PollOptionSerializer::class)
sealed class PollOption {
abstract val text: String
abstract val votes: Int
}
@Serializable
data class SimplePollOption (
@SerialName(textField)
override val text: String,
@SerialName(votesCountField)
override val votes: Int
) : PollOption()
internal object PollOptionSerializer : KSerializer<PollOption> {
override val descriptor: SerialDescriptor = SimplePollOption.serializer().descriptor
override fun deserialize(decoder: Decoder): PollOption = SimplePollOption.serializer().deserialize(
decoder
)
override fun serialize(encoder: Encoder, value: PollOption) {
when (value) {
is SimplePollOption -> SimplePollOption.serializer().serialize(
encoder,
value
)
}
}
}