mirror of
https://github.com/anyproto/anytype-kotlin.git
synced 2025-06-08 05:47:05 +09:00
DROID-1821 Templates | Simplification of default type in collections (#445)
This commit is contained in:
parent
b304e3f77d
commit
60ab3a0872
5 changed files with 44 additions and 228 deletions
|
@ -230,18 +230,7 @@ fun TypeTemplatesWidget(
|
|||
)
|
||||
}
|
||||
}
|
||||
val title = when (val s = currentState) {
|
||||
is TypeTemplatesWidgetUI.Data.CreateObject -> stringResource(R.string.type_templates_widget_title)
|
||||
is TypeTemplatesWidgetUI.Data.DefaultObject -> {
|
||||
if (s.isPossibleToChangeType) {
|
||||
stringResource(R.string.default_object)
|
||||
} else {
|
||||
stringResource(R.string.default_template)
|
||||
}
|
||||
|
||||
}
|
||||
is TypeTemplatesWidgetUI.Init -> ""
|
||||
}
|
||||
val title = stringResource(R.string.type_templates_widget_title)
|
||||
Box(modifier = Modifier.align(Alignment.Center)) {
|
||||
Text(
|
||||
text = title,
|
||||
|
@ -325,12 +314,10 @@ fun TypeTemplatesWidget(
|
|||
menuClick = menuClick
|
||||
)
|
||||
is TemplateView.Template -> {
|
||||
val withDefaultForView = currentState is TypeTemplatesWidgetUI.Data.DefaultObject
|
||||
MoreMenu(
|
||||
itemId = templateView.id,
|
||||
currentCoordinates = currentClickedMoreButtonCoordinates,
|
||||
menuClick = menuClick,
|
||||
withDefaultForView = withDefaultForView
|
||||
)
|
||||
}
|
||||
is TemplateView.New -> Unit
|
||||
|
@ -343,8 +330,7 @@ fun TypeTemplatesWidget(
|
|||
private fun MoreMenu(
|
||||
itemId: Id,
|
||||
currentCoordinates: IntOffset,
|
||||
menuClick: (TemplateMenuClick) -> Unit,
|
||||
withDefaultForView: Boolean
|
||||
menuClick: (TemplateMenuClick) -> Unit
|
||||
) {
|
||||
val moreButtonXCoordinatesDp = with(LocalDensity.current) { currentCoordinates.x.toDp() }
|
||||
val offsetX = if (moreButtonXCoordinatesDp > 244.dp) {
|
||||
|
@ -365,13 +351,6 @@ private fun MoreMenu(
|
|||
elevation = 30.dp
|
||||
) {
|
||||
Column {
|
||||
if (withDefaultForView) {
|
||||
MenuItem(
|
||||
click = { menuClick(TemplateMenuClick.Default(itemId)) },
|
||||
text = stringResource(id = R.string.templates_menu_default_for_view)
|
||||
)
|
||||
Divider(paddingStart = 0.dp, paddingEnd = 0.dp)
|
||||
}
|
||||
MenuItem(
|
||||
click = { menuClick(TemplateMenuClick.Edit(itemId)) },
|
||||
text = stringResource(id = R.string.templates_menu_edit)
|
||||
|
@ -509,8 +488,7 @@ private fun TemplatesList(
|
|||
TemplateItemContent(item)
|
||||
}
|
||||
|
||||
val showMoreButton =
|
||||
(item is TemplateView.Template && state.isEditing) || (state is TypeTemplatesWidgetUI.Data.DefaultObject && item is TemplateView.Blank && state.isEditing)
|
||||
val showMoreButton = (item is TemplateView.Template && state.isEditing)
|
||||
AnimatedVisibility(
|
||||
visible = showMoreButton,
|
||||
enter = fadeIn(),
|
||||
|
@ -1062,7 +1040,7 @@ fun ComposablePreview() {
|
|||
coverImage = null,
|
||||
),
|
||||
)
|
||||
val state = TypeTemplatesWidgetUI.Data.CreateObject(
|
||||
val state = TypeTemplatesWidgetUI.Data(
|
||||
templates = items,
|
||||
showWidget = true,
|
||||
isEditing = true,
|
||||
|
|
|
@ -52,19 +52,16 @@ import androidx.compose.ui.unit.dp
|
|||
import androidx.constraintlayout.compose.ConstraintLayout
|
||||
import androidx.constraintlayout.compose.Dimension
|
||||
import com.anytypeio.anytype.core_models.DVViewerType
|
||||
import com.anytypeio.anytype.core_models.ObjectWrapper
|
||||
import com.anytypeio.anytype.core_ui.R
|
||||
import com.anytypeio.anytype.core_ui.foundation.Divider
|
||||
import com.anytypeio.anytype.core_ui.foundation.Dragger
|
||||
import com.anytypeio.anytype.core_ui.foundation.noRippleThrottledClickable
|
||||
import com.anytypeio.anytype.core_ui.views.BodyCalloutRegular
|
||||
import com.anytypeio.anytype.core_ui.views.BodyRegular
|
||||
import com.anytypeio.anytype.core_ui.views.Caption1Medium
|
||||
import com.anytypeio.anytype.core_ui.views.Title1
|
||||
import com.anytypeio.anytype.core_ui.views.UXBody
|
||||
import com.anytypeio.anytype.presentation.sets.ViewEditAction
|
||||
import com.anytypeio.anytype.presentation.sets.ViewerEditWidgetUi
|
||||
import com.anytypeio.anytype.presentation.templates.TemplateView.Companion.DEFAULT_TEMPLATE_ID_BLANK
|
||||
|
||||
@OptIn(ExperimentalMaterialApi::class)
|
||||
@Composable
|
||||
|
@ -191,30 +188,6 @@ fun ViewerEditWidgetContent(
|
|||
}
|
||||
NameTextField(state = currentState, action = action)
|
||||
Spacer(modifier = Modifier.height(12.dp))
|
||||
if (state.isDefaultObjectTypeEnabled) {
|
||||
ColumnItem(
|
||||
title = stringResource(id = R.string.default_object),
|
||||
value = state.defaultObjectType?.name.orEmpty(),
|
||||
isEnable = true
|
||||
) {
|
||||
action(ViewEditAction.DefaultObjectType(id = state.id))
|
||||
}
|
||||
Divider(paddingStart = 0.dp, paddingEnd = 0.dp)
|
||||
} else {
|
||||
val templateName = if (state.defaultTemplateId == DEFAULT_TEMPLATE_ID_BLANK) {
|
||||
stringResource(id = R.string.blank)
|
||||
} else {
|
||||
state.defaultTemplateName.orEmpty()
|
||||
}
|
||||
ColumnItem(
|
||||
title = stringResource(id = R.string.default_template),
|
||||
value = templateName,
|
||||
isEnable = true
|
||||
) {
|
||||
action(ViewEditAction.DefaultTemplate(id = state.id))
|
||||
}
|
||||
Divider(paddingStart = 0.dp, paddingEnd = 0.dp)
|
||||
}
|
||||
|
||||
val layoutValue = when (state.layout) {
|
||||
DVViewerType.LIST -> stringResource(id = R.string.view_list)
|
||||
|
@ -393,15 +366,11 @@ fun PreviewViewerEditWidget() {
|
|||
showMore = false,
|
||||
isNewMode = true,
|
||||
name = "Artist",
|
||||
defaultObjectType = ObjectWrapper.Type(buildMap { put("name", "Name") }),
|
||||
filters = listOf(),
|
||||
sorts = emptyList(),
|
||||
layout = DVViewerType.LIST,
|
||||
relations = listOf(),
|
||||
id = "1",
|
||||
defaultTemplateId = "1",
|
||||
isDefaultObjectTypeEnabled = false,
|
||||
defaultTemplateName = null,
|
||||
isActive = false
|
||||
)
|
||||
ViewerEditWidget(state = state, action = {})
|
||||
|
|
|
@ -300,9 +300,6 @@ class ObjectSetViewModel(
|
|||
if (dataView != null && pair != null) {
|
||||
viewerEditWidgetState.value = pair.first.toViewerEditWidgetState(
|
||||
storeOfRelations = storeOfRelations,
|
||||
storeOfObjectTypes = storeOfObjectTypes,
|
||||
isDefaultObjectTypeEnabled = dataView.isChangingDefaultTypeAvailable(),
|
||||
details = dataView.details,
|
||||
index = pair.second,
|
||||
session = session
|
||||
)
|
||||
|
@ -1543,22 +1540,7 @@ class ObjectSetViewModel(
|
|||
showTypeTemplatesWidget(
|
||||
getViewer = { it?.viewerByIdOrFirst(session.currentViewerId.value) },
|
||||
createState = { viewer ->
|
||||
TypeTemplatesWidgetUI.Data.CreateObject(
|
||||
showWidget = true,
|
||||
isEditing = false,
|
||||
viewerId = viewer.id,
|
||||
isPossibleToChangeType = isPossibleToChangeType == true
|
||||
)
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
private fun showTypeTemplatesWidgetForViewerDefaultObject(viewerId: Id) {
|
||||
val isPossibleToChangeType = stateReducer.state.value.dataViewState()?.isChangingDefaultTypeAvailable()
|
||||
showTypeTemplatesWidget(
|
||||
getViewer = { it?.viewerById(viewerId) },
|
||||
createState = { viewer ->
|
||||
TypeTemplatesWidgetUI.Data.DefaultObject(
|
||||
TypeTemplatesWidgetUI.Data(
|
||||
showWidget = true,
|
||||
isEditing = false,
|
||||
viewerId = viewer.id,
|
||||
|
@ -1591,10 +1573,7 @@ class ObjectSetViewModel(
|
|||
when (action) {
|
||||
is TypeTemplatesWidgetUIAction.TypeClick.Item -> {
|
||||
when (uiState) {
|
||||
is TypeTemplatesWidgetUI.Data.CreateObject -> {
|
||||
selectedTypeFlow.value = action.type
|
||||
}
|
||||
is TypeTemplatesWidgetUI.Data.DefaultObject -> {
|
||||
is TypeTemplatesWidgetUI.Data -> {
|
||||
selectedTypeFlow.value = action.type
|
||||
proceedWithUpdateViewer(
|
||||
viewerId = uiState.getWidgetViewerId()
|
||||
|
@ -1617,10 +1596,7 @@ class ObjectSetViewModel(
|
|||
}
|
||||
is TypeTemplatesWidgetUIAction.TemplateClick -> {
|
||||
when (uiState) {
|
||||
is TypeTemplatesWidgetUI.Data.CreateObject ->
|
||||
uiState.onTemplateClick(action.template)
|
||||
is TypeTemplatesWidgetUI.Data.DefaultObject ->
|
||||
uiState.onTemplateClick(action.template)
|
||||
is TypeTemplatesWidgetUI.Data -> uiState.onTemplateClick(action.template)
|
||||
is TypeTemplatesWidgetUI.Init -> Unit
|
||||
}
|
||||
}
|
||||
|
@ -1628,7 +1604,7 @@ class ObjectSetViewModel(
|
|||
}
|
||||
}
|
||||
|
||||
private suspend fun TypeTemplatesWidgetUI.Data.CreateObject.onTemplateClick(
|
||||
private suspend fun TypeTemplatesWidgetUI.Data.onTemplateClick(
|
||||
templateView: TemplateView
|
||||
) {
|
||||
if (moreMenuItem != null) {
|
||||
|
@ -1640,6 +1616,14 @@ class ObjectSetViewModel(
|
|||
when (templateView) {
|
||||
is TemplateView.Blank -> {
|
||||
logEvent(ObjectStateAnalyticsEvent.SELECT_TEMPLATE)
|
||||
proceedWithUpdateViewer(
|
||||
viewerId = getWidgetViewerId()
|
||||
) {
|
||||
it.copy(
|
||||
defaultTemplate = templateView.id,
|
||||
defaultObjectType = templateView.typeId
|
||||
)
|
||||
}
|
||||
proceedWithDataViewObjectCreate(
|
||||
typeChosenBy = templateView.typeId,
|
||||
templateId = templateView.id
|
||||
|
@ -1647,6 +1631,14 @@ class ObjectSetViewModel(
|
|||
}
|
||||
is TemplateView.Template -> {
|
||||
logEvent(ObjectStateAnalyticsEvent.SELECT_TEMPLATE)
|
||||
proceedWithUpdateViewer(
|
||||
viewerId = getWidgetViewerId()
|
||||
) {
|
||||
it.copy(
|
||||
defaultTemplate = templateView.id,
|
||||
defaultObjectType = templateView.typeId
|
||||
)
|
||||
}
|
||||
proceedWithDataViewObjectCreate(
|
||||
typeChosenBy = templateView.typeId,
|
||||
templateId = templateView.id
|
||||
|
@ -1660,42 +1652,6 @@ class ObjectSetViewModel(
|
|||
}
|
||||
}
|
||||
|
||||
private suspend fun TypeTemplatesWidgetUI.Data.DefaultObject.onTemplateClick(
|
||||
templateView: TemplateView
|
||||
) {
|
||||
if (moreMenuItem != null) {
|
||||
typeTemplatesWidgetState.value = hideMoreMenu()
|
||||
return
|
||||
}
|
||||
when (templateView) {
|
||||
is TemplateView.Blank -> {
|
||||
proceedWithUpdateViewer(
|
||||
viewerId = getWidgetViewerId()
|
||||
) {
|
||||
it.copy(
|
||||
defaultTemplate = templateView.id,
|
||||
defaultObjectType = templateView.typeId
|
||||
)
|
||||
}
|
||||
}
|
||||
is TemplateView.Template -> {
|
||||
proceedWithUpdateViewer(
|
||||
viewerId = getWidgetViewerId()
|
||||
) {
|
||||
it.copy(
|
||||
defaultTemplate = templateView.id,
|
||||
defaultObjectType = templateView.typeId
|
||||
)
|
||||
}
|
||||
}
|
||||
is TemplateView.New -> {
|
||||
proceedWithCreatingTemplate(
|
||||
targetObjectType = templateView.targetObjectType
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun logEvent(event: ObjectStateAnalyticsEvent) {
|
||||
viewModelScope.launch {
|
||||
logEvent(
|
||||
|
@ -1727,8 +1683,7 @@ class ObjectSetViewModel(
|
|||
}.collectLatest { types ->
|
||||
typeTemplatesWidgetState.value =
|
||||
when (val uiState = typeTemplatesWidgetState.value) {
|
||||
is TypeTemplatesWidgetUI.Data.CreateObject -> uiState.copy(objectTypes = types)
|
||||
is TypeTemplatesWidgetUI.Data.DefaultObject -> uiState.copy(objectTypes = types)
|
||||
is TypeTemplatesWidgetUI.Data -> uiState.copy(objectTypes = types)
|
||||
is TypeTemplatesWidgetUI.Init -> uiState
|
||||
}
|
||||
}
|
||||
|
@ -1753,22 +1708,7 @@ class ObjectSetViewModel(
|
|||
val viewer = dataView.viewerById(viewerId) ?: return@map emptyList<TemplateView>()
|
||||
val (type, template) = dataView.getActiveViewTypeAndTemplate(context, viewer, storeOfObjectTypes)
|
||||
when (typeTemplatesWidgetState.value) {
|
||||
is TypeTemplatesWidgetUI.Data.DefaultObject-> {
|
||||
if (type?.id == selectedTypeFlow.value?.id) {
|
||||
processTemplates(
|
||||
results = templates,
|
||||
viewerDefObjType = type ?: selectedTypeFlow.value,
|
||||
viewerDefTemplateId = template ?: selectedTypeFlow.value?.defaultTemplateId
|
||||
)
|
||||
} else {
|
||||
processTemplates(
|
||||
results = templates,
|
||||
viewerDefObjType = selectedTypeFlow.value,
|
||||
viewerDefTemplateId = selectedTypeFlow.value?.defaultTemplateId
|
||||
)
|
||||
}
|
||||
}
|
||||
is TypeTemplatesWidgetUI.Data.CreateObject -> {
|
||||
is TypeTemplatesWidgetUI.Data -> {
|
||||
if (type?.id == selectedTypeFlow.value?.id) {
|
||||
processTemplates(
|
||||
results = templates,
|
||||
|
@ -1787,8 +1727,7 @@ class ObjectSetViewModel(
|
|||
}
|
||||
}.collectLatest { templates ->
|
||||
typeTemplatesWidgetState.value = when(val uistate = typeTemplatesWidgetState.value) {
|
||||
is TypeTemplatesWidgetUI.Data.CreateObject -> uistate.copy(templates = templates)
|
||||
is TypeTemplatesWidgetUI.Data.DefaultObject -> uistate.copy(templates = templates)
|
||||
is TypeTemplatesWidgetUI.Data -> uistate.copy(templates = templates)
|
||||
is TypeTemplatesWidgetUI.Init -> uistate
|
||||
}
|
||||
}
|
||||
|
@ -1917,23 +1856,16 @@ class ObjectSetViewModel(
|
|||
|
||||
private fun proceedWithUpdatingViewDefaultTemplate() {
|
||||
when (val uiState = typeTemplatesWidgetState.value) {
|
||||
is TypeTemplatesWidgetUI.Data.CreateObject,
|
||||
is TypeTemplatesWidgetUI.Data.DefaultObject -> {
|
||||
val templateToSetAsDefault = when (uiState) {
|
||||
is TypeTemplatesWidgetUI.Data.CreateObject -> uiState.moreMenuItem
|
||||
is TypeTemplatesWidgetUI.Data.DefaultObject -> uiState.moreMenuItem
|
||||
else -> null
|
||||
}
|
||||
|
||||
when (templateToSetAsDefault) {
|
||||
is TypeTemplatesWidgetUI.Data -> {
|
||||
when (val templateToSetAsDefault = uiState.moreMenuItem) {
|
||||
is TemplateView.Blank -> {
|
||||
typeTemplatesWidgetState.value = (uiState as TypeTemplatesWidgetUI.Data).exitEditing()
|
||||
typeTemplatesWidgetState.value = uiState.exitEditing()
|
||||
proceedWithUpdateViewer(viewerId = uiState.viewerId) {
|
||||
it.copy(defaultTemplate = templateToSetAsDefault.id)
|
||||
}
|
||||
}
|
||||
is TemplateView.Template -> {
|
||||
typeTemplatesWidgetState.value = (uiState as TypeTemplatesWidgetUI.Data).exitEditing()
|
||||
typeTemplatesWidgetState.value = uiState.exitEditing()
|
||||
proceedWithUpdateViewer(viewerId = uiState.viewerId) {
|
||||
it.copy(defaultTemplate = templateToSetAsDefault.id)
|
||||
}
|
||||
|
@ -2185,11 +2117,6 @@ class ObjectSetViewModel(
|
|||
Timber.d("onViewerEditWidgetAction, action:[$action]")
|
||||
when (action) {
|
||||
ViewEditAction.Dismiss -> { hideViewerEditWidget() }
|
||||
is ViewEditAction.DefaultObjectType -> {
|
||||
showTypeTemplatesWidgetForViewerDefaultObject(
|
||||
viewerId = action.id
|
||||
)
|
||||
}
|
||||
is ViewEditAction.Filters -> {
|
||||
viewersWidgetState.value = viewersWidgetState.value.copy(showWidget = false)
|
||||
hideViewerEditWidget()
|
||||
|
@ -2283,12 +2210,6 @@ class ObjectSetViewModel(
|
|||
)
|
||||
}
|
||||
}
|
||||
|
||||
is ViewEditAction.DefaultTemplate -> {
|
||||
showTypeTemplatesWidgetForViewerDefaultObject(
|
||||
viewerId = action.id
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,12 +1,8 @@
|
|||
package com.anytypeio.anytype.presentation.sets
|
||||
|
||||
import com.anytypeio.anytype.core_models.Block
|
||||
import com.anytypeio.anytype.core_models.DVViewer
|
||||
import com.anytypeio.anytype.core_models.DVViewerType
|
||||
import com.anytypeio.anytype.core_models.Id
|
||||
import com.anytypeio.anytype.core_models.ObjectTypeIds
|
||||
import com.anytypeio.anytype.core_models.ObjectWrapper
|
||||
import com.anytypeio.anytype.domain.objects.StoreOfObjectTypes
|
||||
import com.anytypeio.anytype.domain.objects.StoreOfRelations
|
||||
|
||||
|
||||
|
@ -18,14 +14,10 @@ sealed class ViewerEditWidgetUi {
|
|||
val isNewMode: Boolean = false,
|
||||
val id: Id,
|
||||
val name: String,
|
||||
val defaultObjectType: ObjectWrapper.Type?,
|
||||
val isDefaultObjectTypeEnabled: Boolean,
|
||||
val layout: DVViewerType?,
|
||||
val relations: List<Id> = emptyList(),
|
||||
val filters: List<Id> = emptyList(),
|
||||
val sorts: List<Id> = emptyList(),
|
||||
val defaultTemplateId: Id?,
|
||||
val defaultTemplateName: String?,
|
||||
val isActive: Boolean
|
||||
) : ViewerEditWidgetUi()
|
||||
}
|
||||
|
@ -33,8 +25,6 @@ sealed class ViewerEditWidgetUi {
|
|||
sealed class ViewEditAction {
|
||||
object Dismiss : ViewEditAction()
|
||||
data class UpdateName(val id: Id, val name: String) : ViewEditAction()
|
||||
data class DefaultObjectType(val id: Id) : ViewEditAction()
|
||||
data class DefaultTemplate(val id: Id) : ViewEditAction()
|
||||
data class Layout(val id: Id) : ViewEditAction()
|
||||
data class Relations(val id: Id) : ViewEditAction()
|
||||
data class Filters(val id: Id) : ViewEditAction()
|
||||
|
@ -55,18 +45,11 @@ suspend fun <T> List<T>.toView(
|
|||
|
||||
suspend fun DVViewer.toViewerEditWidgetState(
|
||||
storeOfRelations: StoreOfRelations,
|
||||
storeOfObjectTypes: StoreOfObjectTypes,
|
||||
isDefaultObjectTypeEnabled: Boolean,
|
||||
details: Map<Id, Block.Fields>,
|
||||
index: Int,
|
||||
session: ObjectSetSession
|
||||
): ViewerEditWidgetUi {
|
||||
val dvViewer = this
|
||||
val isActive = dvViewer.isActiveViewer(index, session)
|
||||
val viewerDefaultObjectTypeId = dvViewer.defaultObjectType ?: ObjectTypeIds.PAGE
|
||||
val viewerDefaultTemplateId = dvViewer.defaultTemplate
|
||||
val defaultObjectType = storeOfObjectTypes.get(viewerDefaultObjectTypeId)
|
||||
val defaultTemplateName = details[viewerDefaultTemplateId]?.name
|
||||
return ViewerEditWidgetUi.Data(
|
||||
showWidget = true,
|
||||
id = dvViewer.id,
|
||||
|
@ -75,10 +58,6 @@ suspend fun DVViewer.toViewerEditWidgetState(
|
|||
filters = dvViewer.filters.toView(storeOfRelations) { it.relation },
|
||||
relations = dvViewer.viewerRelations.toView(storeOfRelations) { it.key },
|
||||
layout = dvViewer.type,
|
||||
defaultObjectType = defaultObjectType,
|
||||
isDefaultObjectTypeEnabled = isDefaultObjectTypeEnabled,
|
||||
defaultTemplateId = viewerDefaultTemplateId,
|
||||
defaultTemplateName = defaultTemplateName,
|
||||
isActive = isActive
|
||||
)
|
||||
}
|
||||
|
|
|
@ -14,34 +14,15 @@ sealed class TypeTemplatesWidgetUI {
|
|||
override val isEditing: Boolean = false
|
||||
) : TypeTemplatesWidgetUI()
|
||||
|
||||
sealed class Data : TypeTemplatesWidgetUI() {
|
||||
|
||||
abstract val moreMenuItem: TemplateView?
|
||||
abstract val templates: List<TemplateView>
|
||||
abstract val objectTypes: List<TemplateObjectTypeView>
|
||||
abstract val isPossibleToChangeType: Boolean
|
||||
abstract val viewerId: Id
|
||||
|
||||
data class DefaultObject(
|
||||
override val showWidget: Boolean,
|
||||
override val isEditing: Boolean,
|
||||
override val moreMenuItem: TemplateView? = null,
|
||||
override val templates: List<TemplateView> = emptyList(),
|
||||
override val objectTypes: List<TemplateObjectTypeView> = emptyList(),
|
||||
override val viewerId: Id,
|
||||
override val isPossibleToChangeType: Boolean
|
||||
) : Data()
|
||||
|
||||
data class CreateObject(
|
||||
override val showWidget: Boolean,
|
||||
override val isEditing: Boolean,
|
||||
override val moreMenuItem: TemplateView? = null,
|
||||
override val templates: List<TemplateView> = emptyList(),
|
||||
override val objectTypes: List<TemplateObjectTypeView> = emptyList(),
|
||||
override val viewerId: Id,
|
||||
override val isPossibleToChangeType: Boolean
|
||||
) : Data()
|
||||
}
|
||||
data class Data(
|
||||
override val showWidget: Boolean,
|
||||
override val isEditing: Boolean,
|
||||
val moreMenuItem: TemplateView? = null,
|
||||
val templates: List<TemplateView> = emptyList(),
|
||||
val objectTypes: List<TemplateObjectTypeView> = emptyList(),
|
||||
val viewerId: Id,
|
||||
val isPossibleToChangeType: Boolean
|
||||
) : TypeTemplatesWidgetUI()
|
||||
|
||||
fun getWidgetViewerId(): Id? = if (this is Data) viewerId else null
|
||||
}
|
||||
|
@ -57,29 +38,17 @@ sealed class TypeTemplatesWidgetUIAction {
|
|||
}
|
||||
|
||||
fun TypeTemplatesWidgetUI.Data.enterEditing(): TypeTemplatesWidgetUI.Data {
|
||||
return when (this) {
|
||||
is TypeTemplatesWidgetUI.Data.DefaultObject -> copy(isEditing = true)
|
||||
is TypeTemplatesWidgetUI.Data.CreateObject -> copy(isEditing = true)
|
||||
}
|
||||
return this.copy(isEditing = true)
|
||||
}
|
||||
|
||||
fun TypeTemplatesWidgetUI.Data.exitEditing(): TypeTemplatesWidgetUI.Data {
|
||||
return when (this) {
|
||||
is TypeTemplatesWidgetUI.Data.DefaultObject -> copy(isEditing = false, moreMenuItem = null)
|
||||
is TypeTemplatesWidgetUI.Data.CreateObject -> copy(isEditing = false, moreMenuItem = null)
|
||||
}
|
||||
return this.copy(isEditing = false, moreMenuItem = null)
|
||||
}
|
||||
|
||||
fun TypeTemplatesWidgetUI.Data.showMoreMenu(item: TemplateView): TypeTemplatesWidgetUI.Data {
|
||||
return when (this) {
|
||||
is TypeTemplatesWidgetUI.Data.DefaultObject -> copy(moreMenuItem = item)
|
||||
is TypeTemplatesWidgetUI.Data.CreateObject -> copy(moreMenuItem = item)
|
||||
}
|
||||
return this.copy(moreMenuItem = item)
|
||||
}
|
||||
|
||||
fun TypeTemplatesWidgetUI.Data.hideMoreMenu(): TypeTemplatesWidgetUI.Data {
|
||||
return when (this) {
|
||||
is TypeTemplatesWidgetUI.Data.DefaultObject -> copy(moreMenuItem = null)
|
||||
is TypeTemplatesWidgetUI.Data.CreateObject -> copy(moreMenuItem = null)
|
||||
}
|
||||
return this.copy(moreMenuItem = null)
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue