38 lines
1.7 KiB
Markdown
38 lines
1.7 KiB
Markdown
|
## 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:
|
|||
|
```groovy
|
|||
|
String[] includes = [
|
|||
|
...
|
|||
|
":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
|
|||
|
// MyFormatContent.kt
|
|||
|
@Serializable
|
|||
|
data class MyFormatContent(
|
|||
|
// Your code
|
|||
|
) : Content
|
|||
|
|
|||
|
// MyFormatContentSerializerModuleConfigurator.kt
|
|||
|
object MyFormatContentSerializerModuleConfigurator : ContentSerializersModuleConfigurator.Element {
|
|||
|
override fun PolymorphicModuleBuilder<Content>.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<ContentSerializersModuleConfigurator.Element> { MyFormatContentSerializerModuleConfigurator }
|
|||
|
```
|