mirror of
https://github.com/anyproto/anytype-kotlin.git
synced 2025-06-08 05:47:05 +09:00
DROID-3013 Primitives | Type as set screen, fixes (#2220)
This commit is contained in:
parent
7334e4dc91
commit
e77d630218
6 changed files with 85 additions and 52 deletions
|
@ -54,7 +54,8 @@ sealed class UiFieldsListItem {
|
|||
override val format: RelationFormat,
|
||||
override val limitObjectTypes: List<Id>,
|
||||
override val isPossibleToUnlinkFromType: Boolean,
|
||||
override val isEditableField: Boolean
|
||||
override val isEditableField: Boolean,
|
||||
val isPossibleToDrag: Boolean
|
||||
) : Item()
|
||||
|
||||
data class Local(
|
||||
|
|
|
@ -704,21 +704,23 @@ private fun LazyItemScope.FieldItemDraggable(
|
|||
)
|
||||
}
|
||||
|
||||
Image(
|
||||
modifier = Modifier
|
||||
.padding(end = 14.dp)
|
||||
.size(24.dp)
|
||||
.draggableHandle(
|
||||
onDragStarted = {
|
||||
hapticFeedback.performHapticFeedback(ReorderHapticFeedbackType.START)
|
||||
},
|
||||
onDragStopped = {
|
||||
hapticFeedback.performHapticFeedback(ReorderHapticFeedbackType.END)
|
||||
}
|
||||
),
|
||||
painter = painterResource(R.drawable.ic_dnd),
|
||||
contentDescription = "Icon drag"
|
||||
)
|
||||
if (item.isPossibleToDrag) {
|
||||
Image(
|
||||
modifier = Modifier
|
||||
.padding(end = 14.dp)
|
||||
.size(24.dp)
|
||||
.draggableHandle(
|
||||
onDragStarted = {
|
||||
hapticFeedback.performHapticFeedback(ReorderHapticFeedbackType.START)
|
||||
},
|
||||
onDragStopped = {
|
||||
hapticFeedback.performHapticFeedback(ReorderHapticFeedbackType.END)
|
||||
}
|
||||
),
|
||||
painter = painterResource(R.drawable.ic_dnd),
|
||||
contentDescription = "Icon drag"
|
||||
)
|
||||
}
|
||||
|
||||
ItemDropDownMenu(
|
||||
item = item,
|
||||
|
@ -815,7 +817,8 @@ fun PreviewTypeFieldsMainScreen() {
|
|||
format = RelationFormat.STATUS,
|
||||
isPossibleToUnlinkFromType = true,
|
||||
isEditableField = true,
|
||||
limitObjectTypes = listOf()
|
||||
limitObjectTypes = listOf(),
|
||||
isPossibleToDrag = false
|
||||
),
|
||||
UiFieldsListItem.Item.Draggable(
|
||||
id = "id2",
|
||||
|
@ -824,7 +827,8 @@ fun PreviewTypeFieldsMainScreen() {
|
|||
format = RelationFormat.LONG_TEXT,
|
||||
isPossibleToUnlinkFromType = true,
|
||||
isEditableField = true,
|
||||
limitObjectTypes = listOf()
|
||||
limitObjectTypes = listOf(),
|
||||
isPossibleToDrag = true
|
||||
),
|
||||
UiFieldsListItem.Section.SideBar(
|
||||
canAdd = true
|
||||
|
@ -836,7 +840,8 @@ fun PreviewTypeFieldsMainScreen() {
|
|||
format = RelationFormat.URL,
|
||||
isEditableField = true,
|
||||
isPossibleToUnlinkFromType = true,
|
||||
limitObjectTypes = listOf()
|
||||
limitObjectTypes = listOf(),
|
||||
isPossibleToDrag = true
|
||||
),
|
||||
UiFieldsListItem.Item.Draggable(
|
||||
id = "id4",
|
||||
|
@ -845,7 +850,8 @@ fun PreviewTypeFieldsMainScreen() {
|
|||
format = RelationFormat.DATE,
|
||||
isEditableField = true,
|
||||
isPossibleToUnlinkFromType = true,
|
||||
limitObjectTypes = listOf()
|
||||
limitObjectTypes = listOf(),
|
||||
isPossibleToDrag = false
|
||||
),
|
||||
UiFieldsListItem.Section.Hidden(),
|
||||
UiFieldsListItem.Item.Draggable(
|
||||
|
@ -855,7 +861,8 @@ fun PreviewTypeFieldsMainScreen() {
|
|||
format = RelationFormat.LONG_TEXT,
|
||||
isEditableField = true,
|
||||
isPossibleToUnlinkFromType = true,
|
||||
limitObjectTypes = listOf()
|
||||
limitObjectTypes = listOf(),
|
||||
isPossibleToDrag = true
|
||||
),
|
||||
UiFieldsListItem.Section.Local(),
|
||||
UiFieldsListItem.Item.Local(
|
||||
|
|
|
@ -6,6 +6,7 @@ import com.anytypeio.anytype.core_models.ObjectType
|
|||
import com.anytypeio.anytype.core_models.ObjectWrapper
|
||||
import com.anytypeio.anytype.core_models.RelationFormat
|
||||
import com.anytypeio.anytype.core_models.Relations
|
||||
import com.anytypeio.anytype.core_models.permissions.ObjectPermissions
|
||||
import com.anytypeio.anytype.core_models.primitives.TypeId
|
||||
import com.anytypeio.anytype.core_models.primitives.TypeKey
|
||||
import com.anytypeio.anytype.domain.misc.UrlBuilder
|
||||
|
@ -67,7 +68,8 @@ suspend fun buildUiPropertiesList(
|
|||
storeOfObjectTypes: StoreOfObjectTypes,
|
||||
storeOfRelations: StoreOfRelations,
|
||||
objectTypeConflictingPropertiesIds: List<Id>,
|
||||
showHiddenProperty: Boolean
|
||||
showHiddenProperty: Boolean,
|
||||
objectPermissions: ObjectPermissions
|
||||
): List<UiFieldsListItem> {
|
||||
|
||||
val parsedProperties = fieldParser.getObjectTypeParsedProperties(
|
||||
|
@ -82,7 +84,8 @@ suspend fun buildUiPropertiesList(
|
|||
property = it,
|
||||
stringResourceProvider = stringResourceProvider,
|
||||
fieldParser = fieldParser,
|
||||
storeOfObjectTypes = storeOfObjectTypes
|
||||
storeOfObjectTypes = storeOfObjectTypes,
|
||||
objectPermissions = objectPermissions
|
||||
)
|
||||
}
|
||||
val sidebarItems = parsedProperties.sidebar.mapNotNull {
|
||||
|
@ -90,7 +93,8 @@ suspend fun buildUiPropertiesList(
|
|||
property = it,
|
||||
stringResourceProvider = stringResourceProvider,
|
||||
fieldParser = fieldParser,
|
||||
storeOfObjectTypes = storeOfObjectTypes
|
||||
storeOfObjectTypes = storeOfObjectTypes,
|
||||
objectPermissions = objectPermissions
|
||||
)
|
||||
}
|
||||
val hiddenItems = parsedProperties.hidden.mapNotNull {
|
||||
|
@ -98,7 +102,8 @@ suspend fun buildUiPropertiesList(
|
|||
property = it,
|
||||
stringResourceProvider = stringResourceProvider,
|
||||
fieldParser = fieldParser,
|
||||
storeOfObjectTypes = storeOfObjectTypes
|
||||
storeOfObjectTypes = storeOfObjectTypes,
|
||||
objectPermissions = objectPermissions
|
||||
)
|
||||
}
|
||||
val conflictedItems = parsedProperties.localWithoutSystem.mapNotNull {
|
||||
|
@ -116,7 +121,8 @@ suspend fun buildUiPropertiesList(
|
|||
property = it,
|
||||
stringResourceProvider = stringResourceProvider,
|
||||
fieldParser = fieldParser,
|
||||
storeOfObjectTypes = storeOfObjectTypes
|
||||
storeOfObjectTypes = storeOfObjectTypes,
|
||||
objectPermissions = objectPermissions
|
||||
)
|
||||
}
|
||||
|
||||
|
@ -125,7 +131,8 @@ suspend fun buildUiPropertiesList(
|
|||
property = it,
|
||||
stringResourceProvider = stringResourceProvider,
|
||||
fieldParser = fieldParser,
|
||||
storeOfObjectTypes = storeOfObjectTypes
|
||||
storeOfObjectTypes = storeOfObjectTypes,
|
||||
objectPermissions = objectPermissions
|
||||
)
|
||||
}
|
||||
|
||||
|
@ -133,7 +140,7 @@ suspend fun buildUiPropertiesList(
|
|||
add(Section.Header(canAdd = false))
|
||||
addAll(headerItems)
|
||||
|
||||
add(Section.SideBar(canAdd = true))
|
||||
add(Section.SideBar(canAdd = objectPermissions.canEditRelationsList))
|
||||
addAll(sidebarItems)
|
||||
|
||||
//todo file fields are off for now
|
||||
|
@ -185,7 +192,8 @@ private suspend fun mapToUiPropertiesDraggableListItem(
|
|||
property: ObjectWrapper.Relation,
|
||||
stringResourceProvider: StringResourceProvider,
|
||||
storeOfObjectTypes: StoreOfObjectTypes,
|
||||
fieldParser: FieldParser
|
||||
fieldParser: FieldParser,
|
||||
objectPermissions: ObjectPermissions
|
||||
): UiFieldsListItem? {
|
||||
if (property.key == Relations.DESCRIPTION) return null
|
||||
|
||||
|
@ -199,7 +207,10 @@ private suspend fun mapToUiPropertiesDraggableListItem(
|
|||
storeOfObjectTypes = storeOfObjectTypes
|
||||
),
|
||||
isEditableField = fieldParser.isPropertyEditable(property),
|
||||
isPossibleToUnlinkFromType = fieldParser.isPropertyCanBeDeletedFromType(property)
|
||||
isPossibleToUnlinkFromType =
|
||||
objectPermissions.canUnlinkPropertyFromType &&
|
||||
fieldParser.isPropertyCanBeDeletedFromType(property),
|
||||
isPossibleToDrag = objectPermissions.canEditRelationsList
|
||||
)
|
||||
}
|
||||
|
||||
|
|
|
@ -336,7 +336,8 @@ class ObjectTypeViewModel(
|
|||
storeOfObjectTypes = storeOfObjectTypes,
|
||||
storeOfRelations = storeOfRelations,
|
||||
objectTypeConflictingPropertiesIds = conflictingFields,
|
||||
showHiddenProperty = vmParams.showHiddenFields
|
||||
showHiddenProperty = vmParams.showHiddenFields,
|
||||
objectPermissions = objectPermissions
|
||||
)
|
||||
uiFieldsListState.value = UiFieldsListState(items = items)
|
||||
uiFieldsButtonState.value = UiFieldsButtonState.Visible(
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue