diff --git a/README.md b/README.md index a632cd67..060faacc 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ * Client - часть с клиентским кодом. В большинстве своём включает работу с сервером, MVVM часть (View при этом должны находиться в платформенной части, если их нельзя вынести в сommon часть клиента) * Client - итоговый клиент. На момент написания этой доки (`Пн окт 25 12:56:41 +06 2021`) предполагается два варианта: - * Мультиплатформенный проект со сборкой каждого таргета. Скорее всего, не будет использован в силу сложности настройки + * Мультиплатформенный проект со сборкой каждого таргета. Скорее всего, не будет использован в силу сложности настройки части клиентов (например, андроид) * Мультимодульный проект * Server - пока что JVM-only модуль, включающий все необходимые для сервера фичи diff --git a/features/content/README.MD b/features/content/README.MD new file mode 100644 index 00000000..3a2c1774 --- /dev/null +++ b/features/content/README.MD @@ -0,0 +1,33 @@ +## How to create content? + +For example, you want to create content named "MyFormat". To do this, you must perform the following actions: + +1. Copy "template" folder from "core/features" in "core/features/content" +2. Rename this folder in "myformat" +3. Inside the "myformat" folder rename all the "template" on "content.myformat" +4. In the "settings.gradle" file in the "includes" array add the following code: +```kotlin + ":features:content:myformat:common", + ":features:content:myformat:client", + ":features:content:myformat:server", +``` +5. In the "core/features/content/myformat/common/src" folder create folders with appropriate subfolders "commonMain/kotlin/dev/inmo/postssystem/features/content/myformat/common": +6. In the last folder "сommon", create a data class and the configurator as shown below: +```kotlin + @Serializable + data class MyFormatContent( + // Your code + ) : Content +``` + +```kotlin +object MyFormatContentSerializerModuleConfigurator : ContentSerializersModuleConfigurator.Element { + override fun PolymorphicModuleBuilder.invoke() { + subclass(MyFormatContent::class, MyFormatContent.serializer()) + } +} +``` +7. In two "di.kt" file located in "core/client/src/commonMain/kotlin/dev/inmo/postsystem/client" and "core/server/src/main/java/dev/inmo/postsystem/client" respectively add the following string: +```kotlin + singleWithRandomQualifier { MyFormatContentSerializerModuleConfigurator } +``` \ No newline at end of file