core/features/content/README.md

49 lines
2.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## 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 }
```
## Client
**Currently, this information is actual only for JS (browser) clients. Other client platforms will be added later**
Besides, you may (and it is strongly recommended to) create your own client `ContentClientProvider` realization.
This realization will contain all main functions for drawing of content on the client side.
## Server
On the server side it is required to