31 lines
1.2 KiB
Kotlin
31 lines
1.2 KiB
Kotlin
package dev.inmo.postssystem.services.posts.client.ui.create
|
|
|
|
import dev.inmo.postssystem.features.common.common.AbstractUIModel
|
|
import dev.inmo.postssystem.features.content.common.Content
|
|
import dev.inmo.postssystem.publicators.simple.client.SimplePublicatorService
|
|
import dev.inmo.postssystem.services.posts.common.FullNewPost
|
|
import dev.inmo.postssystem.services.posts.common.WritePostsService
|
|
import kotlinx.coroutines.delay
|
|
|
|
class DefaultPostCreateUIModel(
|
|
private val postCreationService: WritePostsService,
|
|
private val publicationService: SimplePublicatorService
|
|
) : PostCreateUIModel, AbstractUIModel<PostCreateUIState>(
|
|
PostCreateUIState.Init
|
|
) {
|
|
override suspend fun create(content: List<Content>) {
|
|
runCatching {
|
|
_currentState.value = PostCreateUIState.Uploading
|
|
val post = postCreationService.create(
|
|
FullNewPost(content)
|
|
) ?: return@runCatching
|
|
delay(1000L)
|
|
// publicationService.publish(post.id)
|
|
}.onFailure {
|
|
_currentState.value = PostCreateUIState.Fail
|
|
}.onSuccess {
|
|
_currentState.value = PostCreateUIState.Completed
|
|
}
|
|
}
|
|
}
|