mirror of
https://github.com/anyproto/anytype-kotlin.git
synced 2025-06-08 05:47:05 +09:00
DROID-1617 Templates | Fix | Edit-view-menu fixes (#436)
This commit is contained in:
parent
60fb62b608
commit
8ba930bccf
5 changed files with 45 additions and 48 deletions
|
@ -63,19 +63,21 @@ fun ViewerEditMoreMenu(
|
|||
action(ViewEditAction.Duplicate(currentState.id))
|
||||
}
|
||||
)
|
||||
Divider(paddingEnd = 0.dp, paddingStart = 0.dp)
|
||||
Text(
|
||||
text = stringResource(R.string.delete_view),
|
||||
style = BodyCallout,
|
||||
color = colorResource(id = R.color.palette_system_red),
|
||||
modifier = Modifier
|
||||
.height(44.dp)
|
||||
.fillMaxWidth()
|
||||
.padding(start = 16.dp, top = 11.dp)
|
||||
.noRippleThrottledClickable {
|
||||
action(ViewEditAction.Delete(currentState.id))
|
||||
}
|
||||
)
|
||||
if (!currentState.isActive) {
|
||||
Divider(paddingEnd = 0.dp, paddingStart = 0.dp)
|
||||
Text(
|
||||
text = stringResource(R.string.delete_view),
|
||||
style = BodyCallout,
|
||||
color = colorResource(id = R.color.palette_system_red),
|
||||
modifier = Modifier
|
||||
.height(44.dp)
|
||||
.fillMaxWidth()
|
||||
.padding(start = 16.dp, top = 11.dp)
|
||||
.noRippleThrottledClickable {
|
||||
action(ViewEditAction.Delete(currentState.id))
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -393,7 +393,8 @@ fun PreviewViewerEditWidget() {
|
|||
id = "1",
|
||||
defaultTemplateId = "1",
|
||||
isDefaultObjectTypeEnabled = false,
|
||||
defaultTemplateName = null
|
||||
defaultTemplateName = null,
|
||||
isActive = false
|
||||
)
|
||||
ViewerEditWidget(state = state, action = {})
|
||||
}
|
|
@ -30,7 +30,6 @@ import com.anytypeio.anytype.presentation.editor.cover.CoverImageHashProvider
|
|||
import com.anytypeio.anytype.presentation.editor.editor.model.BlockView
|
||||
import com.anytypeio.anytype.presentation.objects.ObjectIcon
|
||||
import com.anytypeio.anytype.presentation.objects.getProperName
|
||||
import com.anytypeio.anytype.presentation.objects.isTemplatesAllowed
|
||||
import com.anytypeio.anytype.presentation.relations.BasicObjectCoverWrapper
|
||||
import com.anytypeio.anytype.presentation.relations.ObjectRelationView
|
||||
import com.anytypeio.anytype.presentation.relations.ObjectSetConfig.ID_KEY
|
||||
|
@ -249,6 +248,16 @@ fun ObjectState.DataView.viewerById(currentViewerId: String?): DVViewer? {
|
|||
return dataViewContent.viewers.find { it.id == currentViewerId }
|
||||
}
|
||||
|
||||
fun ObjectState.DataView.viewerAndIndexById(currentViewerId: String?): Pair<DVViewer, Int>? {
|
||||
if (!isInitialized) return null
|
||||
val index = dataViewContent.viewers.indexOfFirst { it.id == currentViewerId }
|
||||
return if (index != -1) {
|
||||
Pair(dataViewContent.viewers[index], index)
|
||||
} else {
|
||||
null
|
||||
}
|
||||
}
|
||||
|
||||
fun ObjectState.DataView.Collection.getObjectOrderIds(currentViewerId: String): List<Id> {
|
||||
return dataViewContent.objectOrders.find { it.view == currentViewerId }?.ids ?: emptyList()
|
||||
}
|
||||
|
@ -510,7 +519,7 @@ private suspend fun mapViewers(
|
|||
name = viewer.name,
|
||||
type = viewer.type,
|
||||
isUnsupported = viewer.type == VIEW_TYPE_UNSUPPORTED,
|
||||
isActive = isActiveViewer(index, viewer, session),
|
||||
isActive = viewer.isActiveViewer(index, session),
|
||||
defaultObjectType = defaultObjectType.invoke(viewer),
|
||||
relations = viewer.viewerRelations.toView(storeOfRelations) { it.key },
|
||||
sorts = viewer.sorts.toView(storeOfRelations) { it.relationKey },
|
||||
|
@ -520,36 +529,14 @@ private suspend fun mapViewers(
|
|||
}
|
||||
}
|
||||
|
||||
private fun isActiveViewer(index: Int, viewer: DVViewer, session: ObjectSetSession): Boolean {
|
||||
fun DVViewer.isActiveViewer(index: Int, session: ObjectSetSession): Boolean {
|
||||
return if (session.currentViewerId.value != null) {
|
||||
viewer.id == session.currentViewerId.value
|
||||
id == session.currentViewerId.value
|
||||
} else {
|
||||
index == 0
|
||||
}
|
||||
}
|
||||
|
||||
suspend fun List<ViewerView>.isActiveWithTemplates(storeOfObjectTypes: StoreOfObjectTypes): Boolean {
|
||||
val activeViewer = firstOrNull { it.isActive }
|
||||
val viewerDefaultObjectTypeId = activeViewer?.defaultObjectType ?: return false
|
||||
val viewerDefaultObjectType = storeOfObjectTypes.get(viewerDefaultObjectTypeId) ?: return false
|
||||
return viewerDefaultObjectType.isTemplatesAllowed()
|
||||
}
|
||||
|
||||
suspend fun DVViewer.getProperTemplateId(
|
||||
storeOfObjectTypes: StoreOfObjectTypes
|
||||
): Id? {
|
||||
val defaultObjectTypeId = defaultObjectType
|
||||
return if (defaultObjectTypeId != null) {
|
||||
if (defaultTemplate != null) {
|
||||
defaultTemplate
|
||||
} else {
|
||||
storeOfObjectTypes.get(defaultObjectTypeId)?.defaultTemplateId
|
||||
}
|
||||
} else {
|
||||
null
|
||||
}
|
||||
}
|
||||
|
||||
suspend fun ObjectState.DataView.getActiveViewTypeAndTemplate(
|
||||
ctx: Id,
|
||||
activeView: DVViewer?,
|
||||
|
|
|
@ -296,16 +296,18 @@ class ObjectSetViewModel(
|
|||
) { viewId, state ->
|
||||
if (viewId != null) {
|
||||
val dataView = state.dataViewState()
|
||||
val viewer = dataView?.viewerById(viewId)
|
||||
if (dataView != null && viewer != null) {
|
||||
viewerEditWidgetState.value = viewer.toViewerEditWidgetState(
|
||||
val pair = dataView?.viewerAndIndexById(viewId)
|
||||
if (dataView != null && pair != null) {
|
||||
viewerEditWidgetState.value = pair.first.toViewerEditWidgetState(
|
||||
storeOfRelations = storeOfRelations,
|
||||
storeOfObjectTypes = storeOfObjectTypes,
|
||||
isDefaultObjectTypeEnabled = dataView.isChangingDefaultTypeAvailable(),
|
||||
details = dataView.details
|
||||
details = dataView.details,
|
||||
index = pair.second,
|
||||
session = session
|
||||
)
|
||||
viewerLayoutWidgetState.value = viewerLayoutWidgetState.value.updateState(
|
||||
viewer = viewer,
|
||||
viewer = pair.first,
|
||||
storeOfRelations = storeOfRelations
|
||||
)
|
||||
} else {
|
||||
|
|
|
@ -25,7 +25,8 @@ sealed class ViewerEditWidgetUi {
|
|||
val filters: List<Id> = emptyList(),
|
||||
val sorts: List<Id> = emptyList(),
|
||||
val defaultTemplateId: Id?,
|
||||
val defaultTemplateName: String?
|
||||
val defaultTemplateName: String?,
|
||||
val isActive: Boolean
|
||||
) : ViewerEditWidgetUi()
|
||||
}
|
||||
|
||||
|
@ -56,9 +57,12 @@ suspend fun DVViewer.toViewerEditWidgetState(
|
|||
storeOfRelations: StoreOfRelations,
|
||||
storeOfObjectTypes: StoreOfObjectTypes,
|
||||
isDefaultObjectTypeEnabled: Boolean,
|
||||
details: Map<Id, Block.Fields>
|
||||
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)
|
||||
|
@ -74,7 +78,8 @@ suspend fun DVViewer.toViewerEditWidgetState(
|
|||
defaultObjectType = defaultObjectType,
|
||||
isDefaultObjectTypeEnabled = isDefaultObjectTypeEnabled,
|
||||
defaultTemplateId = viewerDefaultTemplateId,
|
||||
defaultTemplateName = defaultTemplateName
|
||||
defaultTemplateName = defaultTemplateName,
|
||||
isActive = isActive
|
||||
)
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue