73 lines
2.2 KiB
Kotlin
73 lines
2.2 KiB
Kotlin
package dev.inmo.tgbotapi.types.business_connection
|
|
|
|
import dev.inmo.tgbotapi.types.*
|
|
import dev.inmo.tgbotapi.types.chat.PreviewUser
|
|
import dev.inmo.tgbotapi.utils.internal.ClassCastsIncluded
|
|
import kotlinx.serialization.EncodeDefault
|
|
import kotlinx.serialization.KSerializer
|
|
import kotlinx.serialization.SerialName
|
|
import kotlinx.serialization.Serializable
|
|
import kotlinx.serialization.descriptors.SerialDescriptor
|
|
import kotlinx.serialization.encoding.Decoder
|
|
import kotlinx.serialization.encoding.Encoder
|
|
|
|
@Serializable
|
|
@ClassCastsIncluded
|
|
sealed interface BusinessConnection {
|
|
val id: BusinessConnectionId
|
|
val user: PreviewUser
|
|
val userChatId: ChatId
|
|
val date: TelegramDate
|
|
val canReply: Boolean
|
|
val isEnabled: Boolean
|
|
|
|
@Serializable
|
|
data class Enabled(
|
|
@SerialName(idField)
|
|
override val id: BusinessConnectionId,
|
|
@SerialName(userField)
|
|
override val user: PreviewUser,
|
|
@SerialName(userChatIdField)
|
|
override val userChatId: ChatId,
|
|
@SerialName(dateField)
|
|
override val date: TelegramDate,
|
|
@SerialName(canReplyField)
|
|
override val canReply: Boolean,
|
|
) : BusinessConnection {
|
|
@EncodeDefault
|
|
override val isEnabled: Boolean = true
|
|
}
|
|
|
|
@Serializable
|
|
data class Disabled(
|
|
@SerialName(idField)
|
|
override val id: BusinessConnectionId,
|
|
@SerialName(userField)
|
|
override val user: PreviewUser,
|
|
@SerialName(userChatIdField)
|
|
override val userChatId: ChatId,
|
|
@SerialName(dateField)
|
|
override val date: TelegramDate,
|
|
@SerialName(canReplyField)
|
|
override val canReply: Boolean,
|
|
) : BusinessConnection {
|
|
@EncodeDefault
|
|
override val isEnabled: Boolean = false
|
|
}
|
|
|
|
companion object : KSerializer<BusinessConnection> {
|
|
override val descriptor: SerialDescriptor
|
|
get() = RawBusinessConnection.serializer().descriptor
|
|
|
|
override fun deserialize(decoder: Decoder): BusinessConnection {
|
|
return RawBusinessConnection.serializer().deserialize(decoder).asBusinessConnection
|
|
|
|
}
|
|
|
|
override fun serialize(encoder: Encoder, value: BusinessConnection) {
|
|
|
|
}
|
|
|
|
}
|
|
}
|