From 36f22579b2a16498480685bdd873ecd150ce8994 Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Sun, 20 Mar 2022 11:52:29 +0600 Subject: [PATCH] add MessageContent.Companion#serializationModule --- CHANGELOG.md | 3 ++ .../content/abstracts/MessageContent.kt | 38 ++++++++++++++++++- 2 files changed, 40 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 14c8d510a7..2731b2b136 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,9 @@ ## 0.38.9 +* `Core`: + * New function `MessageContent.Companion#serializationModule` + ## 0.38.8 * `Common`: diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/abstracts/MessageContent.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/abstracts/MessageContent.kt index 96c6d9c83c..47cd2b3939 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/abstracts/MessageContent.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/abstracts/MessageContent.kt @@ -1,3 +1,39 @@ package dev.inmo.tgbotapi.types.message.content.abstracts -interface MessageContent: ResendableContent +import dev.inmo.tgbotapi.types.message.content.* +import dev.inmo.tgbotapi.types.message.content.media.* +import dev.inmo.tgbotapi.types.message.payments.InvoiceContent +import kotlinx.serialization.modules.* + +interface MessageContent: ResendableContent { + companion object { + fun serializationModule( + additionalBuilder: PolymorphicModuleBuilder.() -> Unit = {} + ) = SerializersModule { + polymorphic(MessageContent::class) { + + subclass(ContactContent::class) + subclass(VenueContent::class) + subclass(PollContent::class) + subclass(DiceContent::class) + subclass(TextContent::class) + + subclass(LiveLocationContent::class) + subclass(StaticLocationContent::class) + + subclass(PhotoContent::class) + subclass(VideoContent::class) + subclass(AudioContent::class) + subclass(DocumentContent::class) + + subclass(VoiceContent::class) + subclass(VideoNoteContent::class) + subclass(AnimationContent::class) + subclass(StickerContent::class) + subclass(InvoiceContent::class) + + additionalBuilder() + } + } + } +}