now it is possible to publish different content based on web post created

This commit is contained in:
InsanusMokrassar committed 2022-03-12 01:44:41 +06:00
1 parent 369dcb12f5
commit 634d954465
5 files changed
+88 -43

No files matched your search

@@ -1,26 +1,21 @@
package dev.inmo.postssystem.client.fsm.ui
import androidx.compose.runtime.mutableStateOf
import dev.inmo.jsuikit.elements.DefaultButton
import dev.inmo.jsuikit.elements.DropArea
import dev.inmo.jsuikit.utils.InputAttrs
import dev.inmo.micro_utils.common.MPPFile
import dev.inmo.micro_utils.common.filename
import androidx.compose.runtime.mutableStateListOf
import dev.inmo.jsuikit.elements.*
import dev.inmo.jsuikit.modifiers.*
import dev.inmo.micro_utils.common.*
import dev.inmo.micro_utils.coroutines.launchSafelyWithoutExceptions
import dev.inmo.micro_utils.fsm.common.StatesMachine
import dev.inmo.postssystem.client.ui.fsm.CreatePostUIFSMState
import dev.inmo.postssystem.client.ui.fsm.UIFSMState
import dev.inmo.postssystem.client.utils.renderComposableAndLinkToContext
import dev.inmo.postssystem.features.common.common.*
import dev.inmo.postssystem.features.content.common.BinaryContent
import dev.inmo.postssystem.features.content.common.*
import dev.inmo.postssystem.features.content.text.common.TextContent
import dev.inmo.postssystem.services.posts.client.ui.create.PostCreateUIModel
import dev.inmo.postssystem.services.posts.client.ui.create.PostCreateUIViewModel
import kotlinx.coroutines.CompletableDeferred
import kotlinx.coroutines.CoroutineScope
import org.jetbrains.compose.web.dom.*
import org.w3c.dom.HTMLElement
import org.w3c.files.get
class PostCreateView(
private val createPostCreateUIModel: PostCreateUIViewModel,
@@ -32,46 +27,71 @@ class PostCreateView(
): UIFSMState? {
val result = CompletableDeferred<UIFSMState?>()
val textContent = mutableStateOf("")
val fileState = mutableStateOf<MPPFile?>(null)
val contentStatesList = mutableStateListOf<Content>()
renderComposableAndLinkToContext(htmlElement) {
Form {
TextArea(textContent.value) {
onInput { textContent.value = it.value }
}
DropArea (
inputAttrs = InputAttrs {
onInput {
it.target.files ?.get(0) ?.let {
fileState.value = it
Flex(
UIKitFlex.Alignment.Horizontal.Center
) {
Div({ include(UIKitWidth.Fixed.XLarge) }) {
contentStatesList.forEachIndexed { i, it ->
Flex(UIKitWidth.Expand) {
when (it) {
is TextContent -> {
TextArea(it.text) {
include(UIKitWidth.Expand)
onInput { contentStatesList[i] = TextContent(it.value) }
}
}
is BinaryContent -> {
DefaultButton(it.filename.name, UIKitWidth.Expand) {
selectFile {
contentStatesList[i] = it.binaryContent()
}
}
}
}
DefaultButton("Remove") {
contentStatesList.removeAt(i)
}
}
}
)
DefaultButton(
"Upload",
disabled = fileState.value == null || textContent.value.isBlank()
) {
it.preventDefault()
fileState.value ?.let { file ->
DefaultButton("Add content")
Dropdown {
DefaultNav {
NavItemElement(
attributesCustomizer = {
onClick {
contentStatesList.add(TextContent(""))
}
}
) {
Text("Text")
}
NavItemElement(
attributesCustomizer = {
onClick {
selectFile {
contentStatesList.add(it.binaryContent())
}
}
}
) {
Text("File")
}
}
}
DefaultButton(
"Upload",
disabled = contentStatesList.isEmpty()
) {
it.preventDefault()
uiScope.launchSafelyWithoutExceptions {
createPostCreateUIModel.create(
listOf(
TextContent(
textContent.value
),
BinaryContent(
file.filename,
file.mimeType,
file.inputProvider()
)
)
contentStatesList.toList()
)
}
}
console.log("")
}
}
}
@@ -0,0 +1,12 @@
package dev.inmo.postssystem.features.content.common
import dev.inmo.micro_utils.common.MPPFile
import dev.inmo.micro_utils.common.filename
import dev.inmo.postssystem.features.common.common.inputProvider
import dev.inmo.postssystem.features.common.common.mimeType
fun MPPFile.binaryContent() = BinaryContent(
filename,
mimeType,
inputProvider()
)
+2 -2
View File
@@ -2,9 +2,9 @@
kotlin = "1.6.10"
kotlin-serialization = "1.3.2"
jsuikit = "0.0.42"
jsuikit = "0.0.43"
compose = "1.1.0"
microutils = "0.9.10"
microutils = "0.9.12"
tgbotapi = "0.38.6"
ktor = "1.6.7"
klock = "2.6.1"
+13
View File
@@ -0,0 +1,13 @@
<component name="ProjectRunConfigurationManager">
<configuration default="true" name="EntranceKt" type="JetRunConfigurationType" nameIsGenerated="true">
<option name="MAIN_CLASS_NAME" value="dev.inmo.postssystem.server.EntranceKt" />
<module name="postssystem.postssystem.server.main" />
<option name="PROGRAM_PARAMETERS" value="$PROJECT_DIR$/server/local.config.json" />
<shortenClasspath name="NONE" />
<method v="2">
<option name="Gradle.BeforeRunTask" enabled="true" tasks="build" externalProjectPath="$PROJECT_DIR$/client" vmOptions="" scriptParameters="" />
<option name="Gradle.BeforeRunTask" enabled="true" tasks="copyClient" externalProjectPath="$PROJECT_DIR$/server" vmOptions="" scriptParameters="" />
<option name="Gradle.BeforeRunTask" enabled="true" tasks="build" externalProjectPath="$PROJECT_DIR$/server" vmOptions="" scriptParameters="" />
</method>
</configuration>
</component>
@@ -1,2 +1,2 @@
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["postssystem.client"]=t():e["postssystem.client"]=t()}(this,(function(){return(()=>{var __webpack_modules__={643:function(module,exports){var __WEBPACK_AMD_DEFINE_FACTORY__,__WEBPACK_AMD_DEFINE_ARRAY__,__WEBPACK_AMD_DEFINE_RESULT__,factory;factory=function(_){"use strict";function toList(e){switch(e.length){case 0:return emptyList();case 1:return listOf_0(e[0]);default:return toMutableList(e)}}function withIndex(e){return new IndexingIterable(_no_name_provided_$factory(e))}function _get_indices_(e){return new IntRange(0,_get_lastIndex_(e))}function _get_indices__0(e){return new IntRange(0,_get_lastIndex__0(e))}function indexOf(e,t){if(null==t){var n=0,_=e.length-1|0;if(n<=_)do{var i=n;if(n=n+1|0,null==e[i])return i}while(n<=_)}else{var r=0,o=e.length-1|0;if(r<=o)do{var a=r;if(r=r+1|0,equals_1(t,e[a]))return a}while(r<=o)}return-1}function lastIndexOf(e,t){if(null==t){var n=e.length-1|0;if(0<=n)do{var _=n;if(n=n+-1|0,null==e[_])return _}while(0<=n)}else{var i=e.length-1|0;if(0<=i)do{var r=i;if(i=i+-1|0,equals_1(t,e[r]))return r}while(0<=i)}return-1}function toMutableList(e){return ArrayList_init_$Create$_1(asCollection(e))}function filterNotNull(e){return filterNotNullTo(e,ArrayList_init_$Create$())}function single(e){var t;switch(e.length){case 0:throw NoSuchElementException_init_$Create$_0("Array is empty.");case 1:t=e[0];break;default:throw IllegalArgumentException_init_$Create$_0("Array has more than one element.")}return t}function _get_lastIndex_(e){return e.length-1|0}function _get_lastIndex__0(e){return e.length-1|0}function filterNotNullTo(e,t){for(var n=e,_=0,i=n.length;_<i;){var r=n[_];_=_+1|0,null!=r&&(t.add_2bq_k$(r),Unit_getInstance())}return t}function toSet(e){switch(e.length){case 0:return emptySet();case 1:return setOf_0(e[0]);default:return toCollection(e,LinkedHashSet_init_$Create$_1(mapCapacity(e.length)))}}function toCollection(e,t){for(var n=e,_=0,i=n.length;_<i;){var r=n[_];_=_+1|0,t.add_2bq_k$(r),Unit_getInstance()}return t}function contains(e,t){return indexOf(e,t)>=0}function joinToString(e,t,n,_,i,r,o){return joinTo(e,StringBuilder_init_$Create$_0(),t,n,_,i,r,o).toString()}function joinToString$default(e,t,n,_,i,r,o,a,s){return 0!=(1&a)&&(t=", "),0!=(2&a)&&(n=""),0!=(4&a)&&(_=""),0!=(8&a)&&(i=-1),0!=(16&a)&&(r="..."),0!=(32&a)&&(o=null),joinToString(e,t,n,_,i,r,o)}function joinTo(e,t,n,_,i,r,o,a){t.append_v1o70a_k$(_),Unit_getInstance();var s=0,c=e,l=0,p=c.length;e:for(;l<p;){var d=c[l];if(l=l+1|0,(s=s+1|0)>1&&(t.append_v1o70a_k$(n),Unit_getInstance()),!(r<0||s<=r))break e;appendElement(t,d,a)}return r>=0&&s>r&&(t.append_v1o70a_k$(o),Unit_getInstance()),t.append_v1o70a_k$(i),Unit_getInstance(),t}function contains_0(e,t){return indexOf_0(e,t)>=0}function indexOf_0(e,t){var n=0,_=e.length-1|0;if(n<=_)do{var i=n;if(n=n+1|0,t.equals(e[i]))return i}while(n<=_);return-1}function zip(e,t){var n=e.length,_=t.length,i=Math.min(n,_),r=ArrayList_init_$Create$_0(i),o=0;if(o<i)do{var a,s=o;o=o+1|0,a=to(e[s],t[s]),r.add_2bq_k$(a),Unit_getInstance()}while(o<i);return r}function first(e){if(0===e.length)throw NoSuchElementException_init_$Create$_0("Array is empty.");return e[0]}function _get_lastIndex__1(e){return e.length-1|0}function asIterable(e){return 0===e.length?emptyList():new _no_name_provided__1(e)}function _no_name_provided_(e){this._$this_withIndex=e}function _no_name_provided__1(e){this._$this_asIterable=e}function _no_name_provided_$factory(e){var t=new _no_name_provided_(e);return function(){return t.invoke_0_k$()}}function toHashSet(e){return toCollection_0(e,HashSet_init_$Create$_1(mapCapacity(collectionSizeOrDefault(e,12))))}function toBooleanArray(e){for(var t=booleanArray(e._get_size__0_k$()),n=0,_=e.iterator_0_k$();_.hasNext_0_k$();){var i=_.next_0_k$(),r=n;n=r+1|0,t[r]=i}return t}function joinToString_0(e,t,n,_,i,r,o){return joinTo_0(e,StringBuilder_init_$Create$_0(),t,n,_,i,r,o).toString()}function joinToString$default_0(e,t,n,_,i,r,o,a,s){return 0!=(1&a)&&(t=", "),0!=(2&a)&&(n=""),0!=(4&a)&&(_=""),0!=(8&a)&&(i=-1),0!=(16&a)&&(r="..."),0!=(32&a)&&(o=null),joinToString_0(e,t,n,_,i,r,o)}function toList_0(e){if(isInterface(e,Collection)){var t;switch(e._get_size__0_k$()){case 0:t=emptyList();break;case 1:t=listOf_0(isInterface(e,List)?e.get_ha5a7z_k$(0):e.iterator_0_k$().next_0_k$());break;default:t=toMutableList_0(e)}return t}return optimizeReadOnlyList(toMutableList_1(e))}function reversed(e){if(isInterface(e,Collection)&&e._get_size__0_k$()<=1)return toList_0(e);var t=toMutableList_1(e);return reverse(t),t}function plus(e,t){if(isInterface(t,Collection)){var n=ArrayList_init_$Create$_0(e._get_size__0_k$()+t._get_size__0_k$()|0);return n.addAll_dxd4eo_k$(e),Unit_getInstance(),n.addAll_dxd4eo_k$(t),Unit_getInstance(),n}var _=ArrayList_init_$Create$_1(e);return addAll_0(_,t),Unit_getInstance(),_}function plus_0Line truncated
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["postssystem.client"]=t():e["postssystem.client"]=t()}(this,(function(){return(()=>{var __webpack_modules__={643:function(module,exports){var __WEBPACK_AMD_DEFINE_FACTORY__,__WEBPACK_AMD_DEFINE_ARRAY__,__WEBPACK_AMD_DEFINE_RESULT__,factory;factory=function(_){"use strict";function toList(e){switch(e.length){case 0:return emptyList();case 1:return listOf_0(e[0]);default:return toMutableList(e)}}function withIndex(e){return new IndexingIterable(_no_name_provided_$factory(e))}function _get_indices_(e){return new IntRange(0,_get_lastIndex_(e))}function _get_indices__0(e){return new IntRange(0,_get_lastIndex__0(e))}function indexOf(e,t){if(null==t){var n=0,_=e.length-1|0;if(n<=_)do{var i=n;if(n=n+1|0,null==e[i])return i}while(n<=_)}else{var r=0,o=e.length-1|0;if(r<=o)do{var a=r;if(r=r+1|0,equals_1(t,e[a]))return a}while(r<=o)}return-1}function lastIndexOf(e,t){if(null==t){var n=e.length-1|0;if(0<=n)do{var _=n;if(n=n+-1|0,null==e[_])return _}while(0<=n)}else{var i=e.length-1|0;if(0<=i)do{var r=i;if(i=i+-1|0,equals_1(t,e[r]))return r}while(0<=i)}return-1}function toMutableList(e){return ArrayList_init_$Create$_1(asCollection(e))}function filterNotNull(e){return filterNotNullTo(e,ArrayList_init_$Create$())}function single(e){var t;switch(e.length){case 0:throw NoSuchElementException_init_$Create$_0("Array is empty.");case 1:t=e[0];break;default:throw IllegalArgumentException_init_$Create$_0("Array has more than one element.")}return t}function _get_lastIndex_(e){return e.length-1|0}function _get_lastIndex__0(e){return e.length-1|0}function filterNotNullTo(e,t){for(var n=e,_=0,i=n.length;_<i;){var r=n[_];_=_+1|0,null!=r&&(t.add_2bq_k$(r),Unit_getInstance())}return t}function toSet(e){switch(e.length){case 0:return emptySet();case 1:return setOf_0(e[0]);default:return toCollection(e,LinkedHashSet_init_$Create$_1(mapCapacity(e.length)))}}function toCollection(e,t){for(var n=e,_=0,i=n.length;_<i;){var r=n[_];_=_+1|0,t.add_2bq_k$(r),Unit_getInstance()}return t}function contains(e,t){return indexOf(e,t)>=0}function joinToString(e,t,n,_,i,r,o){return joinTo(e,StringBuilder_init_$Create$_0(),t,n,_,i,r,o).toString()}function joinToString$default(e,t,n,_,i,r,o,a,s){return 0!=(1&a)&&(t=", "),0!=(2&a)&&(n=""),0!=(4&a)&&(_=""),0!=(8&a)&&(i=-1),0!=(16&a)&&(r="..."),0!=(32&a)&&(o=null),joinToString(e,t,n,_,i,r,o)}function joinTo(e,t,n,_,i,r,o,a){t.append_v1o70a_k$(_),Unit_getInstance();var s=0,c=e,l=0,p=c.length;e:for(;l<p;){var d=c[l];if(l=l+1|0,(s=s+1|0)>1&&(t.append_v1o70a_k$(n),Unit_getInstance()),!(r<0||s<=r))break e;appendElement(t,d,a)}return r>=0&&s>r&&(t.append_v1o70a_k$(o),Unit_getInstance()),t.append_v1o70a_k$(i),Unit_getInstance(),t}function contains_0(e,t){return indexOf_0(e,t)>=0}function indexOf_0(e,t){var n=0,_=e.length-1|0;if(n<=_)do{var i=n;if(n=n+1|0,t.equals(e[i]))return i}while(n<=_);return-1}function zip(e,t){var n=e.length,_=t.length,i=Math.min(n,_),r=ArrayList_init_$Create$_0(i),o=0;if(o<i)do{var a,s=o;o=o+1|0,a=to(e[s],t[s]),r.add_2bq_k$(a),Unit_getInstance()}while(o<i);return r}function first(e){if(0===e.length)throw NoSuchElementException_init_$Create$_0("Array is empty.");return e[0]}function _get_lastIndex__1(e){return e.length-1|0}function asIterable(e){return 0===e.length?emptyList():new _no_name_provided__1(e)}function _no_name_provided_(e){this._$this_withIndex=e}function _no_name_provided__1(e){this._$this_asIterable=e}function _no_name_provided_$factory(e){var t=new _no_name_provided_(e);return function(){return t.invoke_0_k$()}}function toHashSet(e){return toCollection_0(e,HashSet_init_$Create$_1(mapCapacity(collectionSizeOrDefault(e,12))))}function toBooleanArray(e){for(var t=booleanArray(e._get_size__0_k$()),n=0,_=e.iterator_0_k$();_.hasNext_0_k$();){var i=_.next_0_k$(),r=n;n=r+1|0,t[r]=i}return t}function joinToString_0(e,t,n,_,i,r,o){return joinTo_0(e,StringBuilder_init_$Create$_0(),t,n,_,i,r,o).toString()}function joinToString$default_0(e,t,n,_,i,r,o,a,s){return 0!=(1&a)&&(t=", "),0!=(2&a)&&(n=""),0!=(4&a)&&(_=""),0!=(8&a)&&(i=-1),0!=(16&a)&&(r="..."),0!=(32&a)&&(o=null),joinToString_0(e,t,n,_,i,r,o)}function toList_0(e){if(isInterface(e,Collection)){var t;switch(e._get_size__0_k$()){case 0:t=emptyList();break;case 1:t=listOf_0(isInterface(e,List)?e.get_ha5a7z_k$(0):e.iterator_0_k$().next_0_k$());break;default:t=toMutableList_0(e)}return t}return optimizeReadOnlyList(toMutableList_1(e))}function reversed(e){if(isInterface(e,Collection)&&e._get_size__0_k$()<=1)return toList_0(e);var t=toMutableList_1(e);return reverse(t),t}function plus(e,t){if(isInterface(t,Collection)){var n=ArrayList_init_$Create$_0(e._get_size__0_k$()+t._get_size__0_k$()|0);return n.addAll_dxd4eo_k$(e),Unit_getInstance(),n.addAll_dxd4eo_k$(t),Unit_getInstance(),n}var _=ArrayList_init_$Create$_1(e);return addAll_0(_,t),Unit_getInstance(),_}function plus_0Line truncated
//# sourceMappingURL=postssystem.client.js.map