diff --git a/client/build.gradle b/client/build.gradle index 3227d2ea..9c2f2a2d 100644 --- a/client/build.gradle +++ b/client/build.gradle @@ -21,6 +21,7 @@ kotlin { api project(":postssystem.features.roles.client") api project(":postssystem.features.roles.manager.client") api project(":postssystem.features.content.client") + api project(":postssystem.features.content.text.client") api "dev.inmo:micro_utils.fsm.common:$microutils_version" api "dev.inmo:micro_utils.fsm.repos.common:$microutils_version" api "dev.inmo:micro_utils.crypto:$microutils_version" diff --git a/client/src/commonMain/kotlin/dev/inmo/postssystem/client/DI.kt b/client/src/commonMain/kotlin/dev/inmo/postssystem/client/DI.kt index b0f61bed..17064dbe 100644 --- a/client/src/commonMain/kotlin/dev/inmo/postssystem/client/DI.kt +++ b/client/src/commonMain/kotlin/dev/inmo/postssystem/client/DI.kt @@ -28,6 +28,7 @@ import dev.inmo.postssystem.features.common.common.SerializersModuleConfigurator import dev.inmo.postssystem.features.common.common.singleWithRandomQualifier import dev.inmo.postssystem.features.content.common.ContentSerializersModuleConfigurator import dev.inmo.postssystem.features.content.common.OtherContentSerializerModuleConfigurator +import dev.inmo.postssystem.features.content.content.text.common.TextContentSerializerModuleConfigurator import dev.inmo.postssystem.features.status.client.StatusFeatureClient import io.ktor.client.HttpClient import kotlinx.coroutines.CoroutineScope @@ -67,6 +68,7 @@ fun baseKoin( modules( module { singleWithRandomQualifier { OtherContentSerializerModuleConfigurator } + singleWithRandomQualifier { TextContentSerializerModuleConfigurator } singleWithRandomQualifier { ContentSerializersModuleConfigurator(getAll()) } single { SerializersModuleConfigurator(getAll()) } diff --git a/features/content/text/client/build.gradle b/features/content/text/client/build.gradle new file mode 100644 index 00000000..b5421304 --- /dev/null +++ b/features/content/text/client/build.gradle @@ -0,0 +1,18 @@ +plugins { + id "org.jetbrains.kotlin.multiplatform" + id "org.jetbrains.kotlin.plugin.serialization" + id "com.android.library" +} + +apply from: "$mppProjectWithSerializationPresetPath" + +kotlin { + sourceSets { + commonMain { + dependencies { + api project(":postssystem.features.content.text.common") + api project(":postssystem.features.common.client") + } + } + } +} diff --git a/features/content/text/client/src/main/AndroidManifest.xml b/features/content/text/client/src/main/AndroidManifest.xml new file mode 100644 index 00000000..e2c3d0a4 --- /dev/null +++ b/features/content/text/client/src/main/AndroidManifest.xml @@ -0,0 +1 @@ + diff --git a/features/content/text/common/build.gradle b/features/content/text/common/build.gradle new file mode 100644 index 00000000..f4369eca --- /dev/null +++ b/features/content/text/common/build.gradle @@ -0,0 +1,18 @@ +plugins { + id "org.jetbrains.kotlin.multiplatform" + id "org.jetbrains.kotlin.plugin.serialization" + id "com.android.library" +} + +apply from: "$mppProjectWithSerializationPresetPath" + +kotlin { + sourceSets { + commonMain { + dependencies { + api project(":postssystem.features.common.common") + api project(":postssystem.features.content.common") + } + } + } +} diff --git a/features/content/text/common/src/commonMain/kotlin/dev/inmo/postssystem/features/content/content/text/common/TextContent.kt b/features/content/text/common/src/commonMain/kotlin/dev/inmo/postssystem/features/content/content/text/common/TextContent.kt new file mode 100644 index 00000000..a6285c5f --- /dev/null +++ b/features/content/text/common/src/commonMain/kotlin/dev/inmo/postssystem/features/content/content/text/common/TextContent.kt @@ -0,0 +1,9 @@ +package dev.inmo.postssystem.features.content.content.text.common + +import dev.inmo.postssystem.features.content.common.Content +import kotlinx.serialization.Serializable + +@Serializable +data class TextContent( + val text: String +) : Content diff --git a/features/content/text/common/src/commonMain/kotlin/dev/inmo/postssystem/features/content/content/text/common/TextContentSerializerModuleConfigurator.kt b/features/content/text/common/src/commonMain/kotlin/dev/inmo/postssystem/features/content/content/text/common/TextContentSerializerModuleConfigurator.kt new file mode 100644 index 00000000..09cc547c --- /dev/null +++ b/features/content/text/common/src/commonMain/kotlin/dev/inmo/postssystem/features/content/content/text/common/TextContentSerializerModuleConfigurator.kt @@ -0,0 +1,11 @@ +package dev.inmo.postssystem.features.content.content.text.common + +import dev.inmo.postssystem.features.content.common.Content +import dev.inmo.postssystem.features.content.common.ContentSerializersModuleConfigurator +import kotlinx.serialization.modules.PolymorphicModuleBuilder + +object TextContentSerializerModuleConfigurator : ContentSerializersModuleConfigurator.Element { + override fun PolymorphicModuleBuilder.invoke() { + subclass(TextContent::class, TextContent.serializer()) + } +} diff --git a/features/content/text/common/src/main/AndroidManifest.xml b/features/content/text/common/src/main/AndroidManifest.xml new file mode 100644 index 00000000..f9c5c71a --- /dev/null +++ b/features/content/text/common/src/main/AndroidManifest.xml @@ -0,0 +1 @@ + diff --git a/features/content/text/server/build.gradle b/features/content/text/server/build.gradle new file mode 100644 index 00000000..5773b282 --- /dev/null +++ b/features/content/text/server/build.gradle @@ -0,0 +1,17 @@ +plugins { + id "org.jetbrains.kotlin.multiplatform" + id "org.jetbrains.kotlin.plugin.serialization" +} + +apply from: "$mppJavaProjectPresetPath" + +kotlin { + sourceSets { + commonMain { + dependencies { + api project(":postssystem.features.content.text.common") + api project(":postssystem.features.common.server") + } + } + } +} diff --git a/server/build.gradle b/server/build.gradle index b386be3c..0506e90e 100644 --- a/server/build.gradle +++ b/server/build.gradle @@ -19,6 +19,7 @@ dependencies { api project(":postssystem.features.roles.server") api project(":postssystem.features.roles.manager.server") api project(":postssystem.features.content.server") + api project(":postssystem.features.content.text.server") api "io.ktor:ktor-server-netty:$ktor_version" api "io.ktor:ktor-websockets:$ktor_version" api "org.jetbrains.exposed:exposed-jdbc:$kotlin_exposed_version" diff --git a/server/src/main/java/dev/inmo/postssystem/server/DI.kt b/server/src/main/java/dev/inmo/postssystem/server/DI.kt index 7f2bd0df..dc3cca68 100644 --- a/server/src/main/java/dev/inmo/postssystem/server/DI.kt +++ b/server/src/main/java/dev/inmo/postssystem/server/DI.kt @@ -28,6 +28,7 @@ import dev.inmo.micro_utils.repos.exposed.onetomany.ExposedOneToManyKeyValueRepo import dev.inmo.postssystem.features.common.common.* import dev.inmo.postssystem.features.content.common.ContentSerializersModuleConfigurator import dev.inmo.postssystem.features.content.common.OtherContentSerializerModuleConfigurator +import dev.inmo.postssystem.features.content.content.text.common.TextContentSerializerModuleConfigurator import io.ktor.application.featureOrNull import io.ktor.application.log import io.ktor.routing.Route @@ -72,6 +73,7 @@ fun getDIModule( return module { singleWithRandomQualifier { OtherContentSerializerModuleConfigurator } + singleWithRandomQualifier { TextContentSerializerModuleConfigurator } singleWithRandomQualifier { ContentSerializersModuleConfigurator(getAll()) } single { SerializersModuleConfigurator(getAll()) } diff --git a/settings.gradle b/settings.gradle index 97e556aa..8bb86c9a 100644 --- a/settings.gradle +++ b/settings.gradle @@ -33,6 +33,10 @@ String[] includes = [ ":features:content:client", ":features:content:server", + ":features:content:text:common", + ":features:content:text:client", + ":features:content:text:server", + ":server", ":client", ]