1
0
Fork 0
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:
Konstantin Ivanov 2023-10-16 12:52:01 +02:00 committed by GitHub
parent 60fb62b608
commit 8ba930bccf
Signed by: github
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 45 additions and 48 deletions

View file

@ -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))
}
)
}
}
}
}

View file

@ -393,7 +393,8 @@ fun PreviewViewerEditWidget() {
id = "1",
defaultTemplateId = "1",
isDefaultObjectTypeEnabled = false,
defaultTemplateName = null
defaultTemplateName = null,
isActive = false
)
ViewerEditWidget(state = state, action = {})
}

View file

@ -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?,

View file

@ -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 {

View file

@ -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
)
}