core/features/content
2022-03-17 22:36:53 +06:00
..
binary updates 2022-03-02 14:36:17 +06:00
client unbuildable version 2022-03-17 22:36:53 +06:00
common now it is possible to publish different content based on web post created 2022-03-12 01:44:41 +06:00
server include compose 2022-01-22 20:19:50 +06:00
text unbuildable version 2022-03-17 22:36:53 +06:00
README.md fix Readme.md 2022-01-07 20:26:32 +06:00

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:
        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:
       // 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:
    singleWithRandomQualifier<ContentSerializersModuleConfigurator.Element> { MyFormatContentSerializerModuleConfigurator }