1
0
mirror of https://github.com/InsanusMokrassar/TelegramBotAPI.git synced 2025-09-04 15:49:41 +00:00

refactor: replace transactionType String with TransactionType enum

This commit is contained in:
bpavuk
2025-04-19 16:11:44 +03:00
parent b407fc5c86
commit 608fde4139
2 changed files with 40 additions and 2 deletions

View File

@@ -49,7 +49,7 @@ sealed interface TransactionPartner {
@SerialName(userField)
val user: PreviewUser,
@SerialName(transactionTypeField)
val transactionType: String,
val transactionType: TransactionType,
@SerialName(affiliateField)
val affiliate: AffiliateInfo? = null,
@SerialName(invoicePayloadField)
@@ -156,7 +156,7 @@ sealed interface TransactionPartner {
val paid_media_payload: PaidMediaPayload? = null,
val gift: Gift? = null,
val premium_subscription_duration: Int? = null,
val transaction_type: String? = null,
val transaction_type: TransactionType? = null,
val request_count: Int? = null,
val sponsor_user: PreviewBot? = null,
val commission_per_mille: Int? = null,

View File

@@ -0,0 +1,38 @@
package dev.inmo.tgbotapi.types.payments.stars
import kotlinx.serialization.KSerializer
import kotlinx.serialization.Serializable
import kotlinx.serialization.descriptors.PrimitiveKind
import kotlinx.serialization.descriptors.PrimitiveSerialDescriptor
import kotlinx.serialization.descriptors.SerialDescriptor
import kotlinx.serialization.encoding.Decoder
import kotlinx.serialization.encoding.Encoder
@Serializable(with = TransactionTypeSerializer::class)
enum class TransactionType {
INVOICE_PAYMENT,
PAID_MEDIA_PAYMENT,
GIFT_PURCHASE,
PREMIUM_PURCHASE,
BUSINESS_ACCOUNT_TRANSFER,
UNKNOWN
}
private object TransactionTypeSerializer : KSerializer<TransactionType> {
override val descriptor: SerialDescriptor = PrimitiveSerialDescriptor(
serialName = "dev.inmo.tgbotapi.types.payments.stars.TransactionType",
kind = PrimitiveKind.STRING
)
override fun deserialize(decoder: Decoder): TransactionType {
return try {
TransactionType.valueOf(decoder.decodeString())
} catch (e: IllegalArgumentException) {
TransactionType.UNKNOWN
}
}
override fun serialize(encoder: Encoder, value: TransactionType) {
encoder.encodeString(value.name)
}
}