unbuildable version
This commit is contained in:
client/src/jsMain/kotlin/dev/inmo/postssystem/client/fsm/ui
features/content
client
src
jsMain
kotlin
dev
inmo
postssystem
features
content
client
text
client
gradle
kotlin-js-store
@ -4,6 +4,7 @@ import androidx.compose.runtime.*
|
||||
import dev.inmo.jsuikit.elements.*
|
||||
import dev.inmo.jsuikit.modifiers.*
|
||||
import dev.inmo.jsuikit.utils.Attrs
|
||||
import dev.inmo.micro_utils.common.compose.DefaultDisposableEffectResult
|
||||
import dev.inmo.micro_utils.coroutines.launchSafelyWithoutExceptions
|
||||
import dev.inmo.micro_utils.fsm.common.StatesMachine
|
||||
import dev.inmo.postssystem.client.ui.fsm.CreatePostUIFSMState
|
||||
@ -14,6 +15,7 @@ import dev.inmo.postssystem.features.content.common.Content
|
||||
import dev.inmo.postssystem.services.posts.client.ui.create.PostCreateUIViewModel
|
||||
import kotlinx.coroutines.CompletableDeferred
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.flow.StateFlow
|
||||
import org.jetbrains.compose.web.dom.Div
|
||||
import org.jetbrains.compose.web.dom.Text
|
||||
import org.w3c.dom.HTMLElement
|
||||
@ -29,7 +31,8 @@ class PostCreateView(
|
||||
): UIFSMState? {
|
||||
val result = CompletableDeferred<UIFSMState?>()
|
||||
|
||||
val contentProvidersList = mutableStateListOf<ContentClientProvider.ContentRenderer>()
|
||||
val contentProvidersList = mutableStateListOf<ContentClientProvider>()
|
||||
val statesList = mutableListOf<StateFlow<Content>>()
|
||||
|
||||
renderComposableAndLinkToContext(htmlElement) {
|
||||
Flex(
|
||||
@ -38,7 +41,17 @@ class PostCreateView(
|
||||
Div ({ include(UIKitWidth.Fixed.XLarge) }) {
|
||||
contentProvidersList.forEachIndexed { i, renderer ->
|
||||
Flex(UIKitWidth.Expand) {
|
||||
renderer.render()
|
||||
Div(
|
||||
{
|
||||
ref {
|
||||
val flow = renderer.drawNewContent(it)
|
||||
statesList.add(i, flow)
|
||||
DefaultDisposableEffectResult {
|
||||
statesList.removeAt(i)
|
||||
}
|
||||
}
|
||||
}
|
||||
)
|
||||
|
||||
DefaultButton("Remove") {
|
||||
contentProvidersList.removeAt(i)
|
||||
@ -52,7 +65,7 @@ class PostCreateView(
|
||||
NavItemElement(
|
||||
attributesCustomizer = {
|
||||
onClick { _ ->
|
||||
contentProvidersList.add(it.createNewContentRenderer())
|
||||
contentProvidersList.add(it)
|
||||
}
|
||||
}
|
||||
) {
|
||||
@ -68,7 +81,7 @@ class PostCreateView(
|
||||
it.preventDefault()
|
||||
uiScope.launchSafelyWithoutExceptions {
|
||||
createPostCreateUIModel.create(
|
||||
contentProvidersList.mapNotNull { it.state.value }
|
||||
statesList.map { it.value }
|
||||
)
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user