From 7c74976d1a9eca22bbee67daeb27123ea30e4966 Mon Sep 17 00:00:00 2001 From: Konstantin Ivanov <54908981+konstantiniiv@users.noreply.github.com> Date: Wed, 2 Apr 2025 17:54:50 +0200 Subject: [PATCH] DROID-3484 Primitives | Plural names, part 1 (#2228) --- .../anytype/core_models/ObjectWrapper.kt | 2 ++ .../anytype/core_models/Relations.kt | 1 + .../domain/launch/GetDefaultObjectType.kt | 2 ++ .../ActiveSpaceMemberSubscriptionContainer.kt | 1 + .../multiplayer/CheckIsUserSpaceMember.kt | 1 + .../multiplayer/GetSpaceMemberByIdentity.kt | 1 + .../SpaceViewSubscriptionContainer.kt | 1 + .../anytype/domain/primitives/FieldParser.kt | 29 +++++++++++++++++++ .../search/ObjectTypesSubscriptionManager.kt | 1 + .../anytype/domain/templates/GetTemplates.kt | 1 + .../viewmodel/ObjectTypeViewModel.kt | 8 +++-- .../editor/DocumentExternalEventReducer.kt | 1 + .../editor/render/DefaultBlockViewRenderer.kt | 2 +- .../presentation/home/HomeScreenViewModel.kt | 1 + .../linking/LinkToObjectViewModel.kt | 5 ++++ .../objects/ObjectWrapperMapper.kt | 10 +++---- .../relations/LimitObjectTypeViewModel.kt | 1 + .../search/ObjectSearchConstants.kt | 5 ++++ .../templates/ObjectTypeTemplatesContainer.kt | 1 + .../widgets/DataViewListWidgetContainer.kt | 20 ++++++------- .../widgets/SelectWidgetSourceViewModel.kt | 5 ++-- 21 files changed, 77 insertions(+), 22 deletions(-) diff --git a/core-models/src/main/java/com/anytypeio/anytype/core_models/ObjectWrapper.kt b/core-models/src/main/java/com/anytypeio/anytype/core_models/ObjectWrapper.kt index 3745f78cfe..2802e0ba42 100644 --- a/core-models/src/main/java/com/anytypeio/anytype/core_models/ObjectWrapper.kt +++ b/core-models/src/main/java/com/anytypeio/anytype/core_models/ObjectWrapper.kt @@ -26,6 +26,7 @@ sealed class ObjectWrapper { val lastOpenedDate: Any? by default val name: String? by default + val pluralName: String? by default val iconEmoji: String? by default val iconImage: String? = getSingleValue(Relations.ICON_IMAGE) @@ -163,6 +164,7 @@ sealed class ObjectWrapper { val id: Id by default val uniqueKey: String by default val name: String? by default + val pluralName: String? by default val sourceObject: Id? get() = getSingleValue(Relations.SOURCE_OBJECT) val description: String? = getSingleValue(Relations.DESCRIPTION) val isArchived: Boolean? by default diff --git a/core-models/src/main/java/com/anytypeio/anytype/core_models/Relations.kt b/core-models/src/main/java/com/anytypeio/anytype/core_models/Relations.kt index fd7bb16e50..172c14bcca 100644 --- a/core-models/src/main/java/com/anytypeio/anytype/core_models/Relations.kt +++ b/core-models/src/main/java/com/anytypeio/anytype/core_models/Relations.kt @@ -15,6 +15,7 @@ object Relations { const val LAYOUT = "resolvedLayout" const val LEGACY_LAYOUT = "layout" const val NAME = "name" + const val PLURAL_NAME = "pluralName" const val ICON_EMOJI = "iconEmoji" const val ICON_OPTION = "iconOption" const val ICON_NAME = "iconName" diff --git a/domain/src/main/java/com/anytypeio/anytype/domain/launch/GetDefaultObjectType.kt b/domain/src/main/java/com/anytypeio/anytype/domain/launch/GetDefaultObjectType.kt index cde4eeace0..b6a7d2714f 100644 --- a/domain/src/main/java/com/anytypeio/anytype/domain/launch/GetDefaultObjectType.kt +++ b/domain/src/main/java/com/anytypeio/anytype/domain/launch/GetDefaultObjectType.kt @@ -70,6 +70,7 @@ class GetDefaultObjectType @Inject constructor( keys = listOf( Relations.ID, Relations.NAME, + Relations.PLURAL_NAME, Relations.UNIQUE_KEY, Relations.SPACE_ID, Relations.DEFAULT_TEMPLATE_ID @@ -113,6 +114,7 @@ class GetDefaultObjectType @Inject constructor( keys = listOf( Relations.ID, Relations.NAME, + Relations.PLURAL_NAME, Relations.UNIQUE_KEY, Relations.SPACE_ID, Relations.DEFAULT_TEMPLATE_ID diff --git a/domain/src/main/java/com/anytypeio/anytype/domain/multiplayer/ActiveSpaceMemberSubscriptionContainer.kt b/domain/src/main/java/com/anytypeio/anytype/domain/multiplayer/ActiveSpaceMemberSubscriptionContainer.kt index 0cb3000976..0c8c5c3b28 100644 --- a/domain/src/main/java/com/anytypeio/anytype/domain/multiplayer/ActiveSpaceMemberSubscriptionContainer.kt +++ b/domain/src/main/java/com/anytypeio/anytype/domain/multiplayer/ActiveSpaceMemberSubscriptionContainer.kt @@ -114,6 +114,7 @@ interface ActiveSpaceMemberSubscriptionContainer { Relations.PARTICIPANT_STATUS, Relations.LAYOUT, Relations.NAME, + Relations.PLURAL_NAME, Relations.ICON_IMAGE, Relations.GLOBAL_NAME ) diff --git a/domain/src/main/java/com/anytypeio/anytype/domain/multiplayer/CheckIsUserSpaceMember.kt b/domain/src/main/java/com/anytypeio/anytype/domain/multiplayer/CheckIsUserSpaceMember.kt index d275d53e3d..8c9668d8e7 100644 --- a/domain/src/main/java/com/anytypeio/anytype/domain/multiplayer/CheckIsUserSpaceMember.kt +++ b/domain/src/main/java/com/anytypeio/anytype/domain/multiplayer/CheckIsUserSpaceMember.kt @@ -45,6 +45,7 @@ class CheckIsUserSpaceMember @Inject constructor( keys = listOf( Relations.ID, Relations.NAME, + Relations.PLURAL_NAME, Relations.SPACE_ID, Relations.PARTICIPANT_PERMISSIONS, Relations.PARTICIPANT_STATUS, diff --git a/domain/src/main/java/com/anytypeio/anytype/domain/multiplayer/GetSpaceMemberByIdentity.kt b/domain/src/main/java/com/anytypeio/anytype/domain/multiplayer/GetSpaceMemberByIdentity.kt index 94629d0b35..8509329319 100644 --- a/domain/src/main/java/com/anytypeio/anytype/domain/multiplayer/GetSpaceMemberByIdentity.kt +++ b/domain/src/main/java/com/anytypeio/anytype/domain/multiplayer/GetSpaceMemberByIdentity.kt @@ -44,6 +44,7 @@ class GetSpaceMemberByIdentity @Inject constructor( Relations.PARTICIPANT_PERMISSIONS, Relations.PARTICIPANT_STATUS, Relations.NAME, + Relations.PLURAL_NAME, Relations.ICON_IMAGE, Relations.LAYOUT ) diff --git a/domain/src/main/java/com/anytypeio/anytype/domain/multiplayer/SpaceViewSubscriptionContainer.kt b/domain/src/main/java/com/anytypeio/anytype/domain/multiplayer/SpaceViewSubscriptionContainer.kt index 339a226321..a94ff6035f 100644 --- a/domain/src/main/java/com/anytypeio/anytype/domain/multiplayer/SpaceViewSubscriptionContainer.kt +++ b/domain/src/main/java/com/anytypeio/anytype/domain/multiplayer/SpaceViewSubscriptionContainer.kt @@ -117,6 +117,7 @@ interface SpaceViewSubscriptionContainer { Relations.READERS_LIMIT, Relations.WRITERS_LIMIT, Relations.NAME, + Relations.PLURAL_NAME, Relations.CREATED_DATE, Relations.CREATOR, Relations.ICON_IMAGE, diff --git a/domain/src/main/java/com/anytypeio/anytype/domain/primitives/FieldParser.kt b/domain/src/main/java/com/anytypeio/anytype/domain/primitives/FieldParser.kt index 47e35e05ea..decb53c35a 100644 --- a/domain/src/main/java/com/anytypeio/anytype/domain/primitives/FieldParser.kt +++ b/domain/src/main/java/com/anytypeio/anytype/domain/primitives/FieldParser.kt @@ -38,6 +38,9 @@ interface FieldParser { fun getObjectName(objectWrapper: ObjectWrapper.Basic): String fun getObjectName(objectWrapper: ObjectWrapper.Type): String + fun getObjectPluralName(objectWrapper: ObjectWrapper.Type): String + fun getObjectPluralName(objectWrapper: ObjectWrapper.Basic): String + fun getObjectNameOrPluralsForTypes(objectWrapper: ObjectWrapper.Basic, ): String fun getObjectTypeIdAndName( objectWrapper: ObjectWrapper.Basic, types: List @@ -183,6 +186,32 @@ class FieldParserImpl @Inject constructor( } } + override fun getObjectPluralName(objectWrapper: ObjectWrapper.Type): String { + val name = objectWrapper.pluralName?.takeIf { it.isNotEmpty() } ?: objectWrapper.name + return if (name.isNullOrBlank()) { + stringResourceProvider.getUntitledObjectTitle() + } else { + name + } + } + + override fun getObjectPluralName(objectWrapper: ObjectWrapper.Basic): String { + val name = objectWrapper.pluralName?.takeIf { it.isNotEmpty() } ?: objectWrapper.name + return if (name.isNullOrBlank()) { + stringResourceProvider.getUntitledObjectTitle() + } else { + name + } + } + + override fun getObjectNameOrPluralsForTypes(objectWrapper: ObjectWrapper.Basic): String { + return if (objectWrapper.layout == ObjectType.Layout.OBJECT_TYPE) { + objectWrapper.pluralName?.takeIf { it.isNotEmpty() } ?: getObjectName(objectWrapper) + } else { + getObjectName(objectWrapper) + } + } + override fun getObjectTypeIdAndName( objectWrapper: ObjectWrapper.Basic, types: List diff --git a/domain/src/main/java/com/anytypeio/anytype/domain/search/ObjectTypesSubscriptionManager.kt b/domain/src/main/java/com/anytypeio/anytype/domain/search/ObjectTypesSubscriptionManager.kt index f1c784d7f9..9daeeff769 100644 --- a/domain/src/main/java/com/anytypeio/anytype/domain/search/ObjectTypesSubscriptionManager.kt +++ b/domain/src/main/java/com/anytypeio/anytype/domain/search/ObjectTypesSubscriptionManager.kt @@ -101,6 +101,7 @@ class ObjectTypesSubscriptionManager ( keys = listOf( Relations.ID, Relations.NAME, + Relations.PLURAL_NAME, Relations.IS_HIDDEN, Relations.IS_DELETED, Relations.IS_ARCHIVED, diff --git a/domain/src/main/java/com/anytypeio/anytype/domain/templates/GetTemplates.kt b/domain/src/main/java/com/anytypeio/anytype/domain/templates/GetTemplates.kt index 944780766e..3bbef8157a 100644 --- a/domain/src/main/java/com/anytypeio/anytype/domain/templates/GetTemplates.kt +++ b/domain/src/main/java/com/anytypeio/anytype/domain/templates/GetTemplates.kt @@ -72,6 +72,7 @@ class GetTemplates( Relations.ID, Relations.SPACE_ID, Relations.NAME, + Relations.PLURAL_NAME, Relations.LAYOUT, Relations.ICON_EMOJI, Relations.ICON_NAME, diff --git a/feature-object-type/src/main/java/com/anytypeio/anytype/feature_object_type/viewmodel/ObjectTypeViewModel.kt b/feature-object-type/src/main/java/com/anytypeio/anytype/feature_object_type/viewmodel/ObjectTypeViewModel.kt index 52ab0a3261..0177d6967a 100644 --- a/feature-object-type/src/main/java/com/anytypeio/anytype/feature_object_type/viewmodel/ObjectTypeViewModel.kt +++ b/feature-object-type/src/main/java/com/anytypeio/anytype/feature_object_type/viewmodel/ObjectTypeViewModel.kt @@ -205,7 +205,8 @@ class ObjectTypeViewModel( mapObjectTypeToUi( objType = objType, objectPermissions = objectPermissions, - conflictingFields = conflictingFields + conflictingFields = conflictingFields, + fieldParser = fieldParser ) } else { Timber.w( @@ -307,13 +308,14 @@ class ObjectTypeViewModel( private suspend fun mapObjectTypeToUi( objType: ObjectWrapper.Type, objectPermissions: ObjectPermissions, - conflictingFields: List + conflictingFields: List, + fieldParser: FieldParser ) { _objTypeState.value = objType _objectTypePermissionsState.value = objectPermissions uiTitleState.value = UiTitleState( - title = objType.name.orEmpty(), + title = fieldParser.getObjectPluralName(objectWrapper = objType), isEditable = objectPermissions.canEditDetails ) uiIconState.value = UiIconState( diff --git a/presentation/src/main/java/com/anytypeio/anytype/presentation/editor/DocumentExternalEventReducer.kt b/presentation/src/main/java/com/anytypeio/anytype/presentation/editor/DocumentExternalEventReducer.kt index 7457531a8d..5936566e9a 100644 --- a/presentation/src/main/java/com/anytypeio/anytype/presentation/editor/DocumentExternalEventReducer.kt +++ b/presentation/src/main/java/com/anytypeio/anytype/presentation/editor/DocumentExternalEventReducer.kt @@ -167,6 +167,7 @@ object Flags { const val FLAG_REFRESH: Flag = 0 val skipRefreshKeys = listOf( Relations.NAME, + Relations.PLURAL_NAME, Relations.LAST_MODIFIED_DATE, Relations.SNIPPET, Relations.SYNC_DATE, diff --git a/presentation/src/main/java/com/anytypeio/anytype/presentation/editor/render/DefaultBlockViewRenderer.kt b/presentation/src/main/java/com/anytypeio/anytype/presentation/editor/render/DefaultBlockViewRenderer.kt index 62e9094ad1..07e0013912 100644 --- a/presentation/src/main/java/com/anytypeio/anytype/presentation/editor/render/DefaultBlockViewRenderer.kt +++ b/presentation/src/main/java/com/anytypeio/anytype/presentation/editor/render/DefaultBlockViewRenderer.kt @@ -1641,7 +1641,7 @@ class DefaultBlockViewRenderer @Inject constructor( ObjectIcon.None } - val name = fieldParser.getObjectName(obj) + val name = fieldParser.getObjectNameOrPluralsForTypes(obj) val description = when (inEditorAppearance.description) { InEditor.Description.NONE -> null diff --git a/presentation/src/main/java/com/anytypeio/anytype/presentation/home/HomeScreenViewModel.kt b/presentation/src/main/java/com/anytypeio/anytype/presentation/home/HomeScreenViewModel.kt index bdcb2df31d..5f2627db5e 100644 --- a/presentation/src/main/java/com/anytypeio/anytype/presentation/home/HomeScreenViewModel.kt +++ b/presentation/src/main/java/com/anytypeio/anytype/presentation/home/HomeScreenViewModel.kt @@ -1653,6 +1653,7 @@ class HomeScreenViewModel( add(Relations.ID) add(Relations.UNIQUE_KEY) add(Relations.NAME) + add(Relations.PLURAL_NAME) }, filters = buildList { add( diff --git a/presentation/src/main/java/com/anytypeio/anytype/presentation/linking/LinkToObjectViewModel.kt b/presentation/src/main/java/com/anytypeio/anytype/presentation/linking/LinkToObjectViewModel.kt index cca45f2ff7..5e2707d96d 100644 --- a/presentation/src/main/java/com/anytypeio/anytype/presentation/linking/LinkToObjectViewModel.kt +++ b/presentation/src/main/java/com/anytypeio/anytype/presentation/linking/LinkToObjectViewModel.kt @@ -18,6 +18,7 @@ import com.anytypeio.anytype.presentation.search.ObjectSearchConstants import com.anytypeio.anytype.presentation.search.ObjectSearchViewModel import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.launch +import timber.log.Timber class LinkToObjectViewModel( private val vmParams: VmParams, @@ -41,6 +42,10 @@ class LinkToObjectViewModel( val commands = MutableSharedFlow(replay = 0) + init { + Timber.d("LinkToObjectViewModel init") + } + override suspend fun getSearchObjectsParams(ignore: Id?) = SearchObjects.Params( space = vmParams.space, limit = SEARCH_LIMIT, diff --git a/presentation/src/main/java/com/anytypeio/anytype/presentation/objects/ObjectWrapperMapper.kt b/presentation/src/main/java/com/anytypeio/anytype/presentation/objects/ObjectWrapperMapper.kt index 7661dac50b..62d96470eb 100644 --- a/presentation/src/main/java/com/anytypeio/anytype/presentation/objects/ObjectWrapperMapper.kt +++ b/presentation/src/main/java/com/anytypeio/anytype/presentation/objects/ObjectWrapperMapper.kt @@ -22,8 +22,8 @@ suspend fun List.toViews( storeOfObjectTypes: StoreOfObjectTypes ): List = map { obj -> obj.toView( - urlBuilder, - objectTypes, + urlBuilder = urlBuilder, + objectTypes = objectTypes, fieldParser = fieldParser, storeOfObjectTypes = storeOfObjectTypes ) @@ -43,7 +43,7 @@ suspend fun ObjectWrapper.Basic.toView( val layout = obj.getProperLayout() return DefaultObjectView( id = obj.id, - name = fieldParser.getObjectName(obj), + name = fieldParser.getObjectNameOrPluralsForTypes(obj), description = obj.description, type = objTypeId, typeName = objTypeName, @@ -70,7 +70,7 @@ suspend fun List.toLinkToView( val layout = obj.getProperLayout() LinkToItemView.Object( id = obj.id, - title = fieldParser.getObjectName(obj), + title = fieldParser.getObjectNameOrPluralsForTypes(obj), subtitle = getProperTypeName(id = typeUrl, types = objectTypes), type = typeUrl, layout = layout, @@ -92,7 +92,7 @@ suspend fun ObjectWrapper.Basic.toLinkToObjectView( val layout = this.getProperLayout() return LinkToItemView.LinkedTo.Object( id = this.id, - title = fieldParser.getObjectName(this), + title = fieldParser.getObjectNameOrPluralsForTypes(this), subtitle = getProperTypeName(id = typeUrl, types = objectTypes), type = typeUrl, layout = layout, diff --git a/presentation/src/main/java/com/anytypeio/anytype/presentation/relations/LimitObjectTypeViewModel.kt b/presentation/src/main/java/com/anytypeio/anytype/presentation/relations/LimitObjectTypeViewModel.kt index 0c5a6e8d93..d1519f65d7 100644 --- a/presentation/src/main/java/com/anytypeio/anytype/presentation/relations/LimitObjectTypeViewModel.kt +++ b/presentation/src/main/java/com/anytypeio/anytype/presentation/relations/LimitObjectTypeViewModel.kt @@ -102,6 +102,7 @@ class LimitObjectTypeViewModel( keys = listOf( Relations.ID, Relations.NAME, + Relations.PLURAL_NAME, Relations.SNIPPET, Relations.DESCRIPTION, Relations.ICON_EMOJI, diff --git a/presentation/src/main/java/com/anytypeio/anytype/presentation/search/ObjectSearchConstants.kt b/presentation/src/main/java/com/anytypeio/anytype/presentation/search/ObjectSearchConstants.kt index 08c4ac6fa7..5567c979bc 100644 --- a/presentation/src/main/java/com/anytypeio/anytype/presentation/search/ObjectSearchConstants.kt +++ b/presentation/src/main/java/com/anytypeio/anytype/presentation/search/ObjectSearchConstants.kt @@ -661,6 +661,7 @@ object ObjectSearchConstants { Relations.TARGET_SPACE_ID, Relations.UNIQUE_KEY, Relations.NAME, + Relations.PLURAL_NAME, Relations.ICON_IMAGE, Relations.ICON_EMOJI, Relations.ICON_NAME, @@ -707,6 +708,7 @@ object ObjectSearchConstants { Relations.TARGET_SPACE_ID, Relations.IDENTITY_PROFILE_LINK, Relations.NAME, + Relations.PLURAL_NAME, Relations.ICON_IMAGE, Relations.ICON_EMOJI, Relations.ICON_NAME, @@ -734,6 +736,7 @@ object ObjectSearchConstants { Relations.TARGET_SPACE_ID, Relations.UNIQUE_KEY, Relations.NAME, + Relations.PLURAL_NAME, Relations.DESCRIPTION, Relations.ICON_EMOJI, Relations.ICON_NAME, @@ -977,6 +980,7 @@ object ObjectSearchConstants { Relations.ID, Relations.UNIQUE_KEY, Relations.NAME, + Relations.PLURAL_NAME, Relations.DESCRIPTION, Relations.ICON_IMAGE, Relations.ICON_EMOJI, @@ -1288,6 +1292,7 @@ object ObjectSearchConstants { Relations.IDENTITY, Relations.IDENTITY_PROFILE_LINK, Relations.NAME, + Relations.PLURAL_NAME, Relations.DESCRIPTION, Relations.ICON_IMAGE, Relations.PARTICIPANT_STATUS, diff --git a/presentation/src/main/java/com/anytypeio/anytype/presentation/templates/ObjectTypeTemplatesContainer.kt b/presentation/src/main/java/com/anytypeio/anytype/presentation/templates/ObjectTypeTemplatesContainer.kt index e2f56e5e27..4f079c97be 100644 --- a/presentation/src/main/java/com/anytypeio/anytype/presentation/templates/ObjectTypeTemplatesContainer.kt +++ b/presentation/src/main/java/com/anytypeio/anytype/presentation/templates/ObjectTypeTemplatesContainer.kt @@ -77,6 +77,7 @@ class DefaultObjectTypeTemplatesContainer( Relations.SPACE_ID, Relations.TYPE_UNIQUE_KEY, Relations.NAME, + Relations.PLURAL_NAME, Relations.ICON_EMOJI, Relations.ICON_NAME, Relations.ICON_IMAGE, diff --git a/presentation/src/main/java/com/anytypeio/anytype/presentation/widgets/DataViewListWidgetContainer.kt b/presentation/src/main/java/com/anytypeio/anytype/presentation/widgets/DataViewListWidgetContainer.kt index 088d3606e5..9ab55807a9 100644 --- a/presentation/src/main/java/com/anytypeio/anytype/presentation/widgets/DataViewListWidgetContainer.kt +++ b/presentation/src/main/java/com/anytypeio/anytype/presentation/widgets/DataViewListWidgetContainer.kt @@ -75,7 +75,7 @@ class DataViewListWidgetContainer( name = when(val source = widget.source) { is Widget.Source.Bundled -> WidgetView.Name.Bundled(source = source) is Widget.Source.Default -> WidgetView.Name.Default( - prettyPrintName = fieldParser.getObjectName(source.obj) + prettyPrintName = fieldParser.getObjectPluralName(source.obj) ) } ) @@ -89,7 +89,7 @@ class DataViewListWidgetContainer( isExpanded = !isCollapsed, isLoading = true, name = WidgetView.Name.Default( - prettyPrintName = fieldParser.getObjectName(widget.source.obj) + prettyPrintName = fieldParser.getObjectPluralName(widget.source.obj) ) ) } @@ -130,7 +130,7 @@ class DataViewListWidgetContainer( name = when(val source = widget.source) { is Widget.Source.Bundled -> WidgetView.Name.Bundled(source = source) is Widget.Source.Default -> WidgetView.Name.Default( - prettyPrintName = fieldParser.getObjectName(source.obj) + prettyPrintName = fieldParser.getObjectPluralName(source.obj) ) } ) @@ -145,7 +145,7 @@ class DataViewListWidgetContainer( elements = emptyList(), isExpanded = false, name = WidgetView.Name.Default( - prettyPrintName = fieldParser.getObjectName(source.obj) + prettyPrintName = fieldParser.getObjectPluralName(source.obj) ) ) ) @@ -270,7 +270,7 @@ class DataViewListWidgetContainer( null }, name = WidgetView.Name.Default( - prettyPrintName = fieldParser.getObjectName(obj) + prettyPrintName = fieldParser.getObjectPluralName(obj) ) ) }, @@ -280,7 +280,7 @@ class DataViewListWidgetContainer( name = when(val source = widget.source) { is Widget.Source.Bundled -> WidgetView.Name.Bundled(source = source) is Widget.Source.Default -> WidgetView.Name.Default( - prettyPrintName = fieldParser.getObjectName(source.obj) + prettyPrintName = fieldParser.getObjectPluralName(source.obj) ) } ) @@ -312,7 +312,7 @@ class DataViewListWidgetContainer( objType = storeOfObjectTypes.getTypeOfObject(obj) ), name = WidgetView.Name.Default( - prettyPrintName = fieldParser.getObjectName(obj) + prettyPrintName = fieldParser.getObjectPluralName(obj) ) ) }, @@ -321,7 +321,7 @@ class DataViewListWidgetContainer( name = when(val source = widget.source) { is Widget.Source.Bundled -> WidgetView.Name.Bundled(source = source) is Widget.Source.Default -> WidgetView.Name.Default( - prettyPrintName = fieldParser.getObjectName(source.obj) + prettyPrintName = fieldParser.getObjectPluralName(source.obj) ) } ) @@ -340,7 +340,7 @@ class DataViewListWidgetContainer( name = when(val source = widget.source) { is Widget.Source.Bundled -> WidgetView.Name.Bundled(source = source) is Widget.Source.Default -> WidgetView.Name.Default( - prettyPrintName = fieldParser.getObjectName(source.obj) + prettyPrintName = fieldParser.getObjectPluralName(source.obj) ) } ) @@ -352,7 +352,7 @@ class DataViewListWidgetContainer( isExpanded = true, view = null, name = WidgetView.Name.Default( - prettyPrintName = fieldParser.getObjectName(widget.source.obj) + prettyPrintName = fieldParser.getObjectPluralName(widget.source.obj) ) ) is Widget.Link, is Widget.Tree -> { diff --git a/presentation/src/main/java/com/anytypeio/anytype/presentation/widgets/SelectWidgetSourceViewModel.kt b/presentation/src/main/java/com/anytypeio/anytype/presentation/widgets/SelectWidgetSourceViewModel.kt index 459b90d3ba..4e8ebb53c2 100644 --- a/presentation/src/main/java/com/anytypeio/anytype/presentation/widgets/SelectWidgetSourceViewModel.kt +++ b/presentation/src/main/java/com/anytypeio/anytype/presentation/widgets/SelectWidgetSourceViewModel.kt @@ -5,7 +5,6 @@ import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.asFlow import androidx.lifecycle.viewModelScope import com.anytypeio.anytype.analytics.base.Analytics -import com.anytypeio.anytype.core_models.Block.Content.DataView.Filter import com.anytypeio.anytype.core_models.DVFilter import com.anytypeio.anytype.core_models.DVFilterCondition import com.anytypeio.anytype.core_models.Id @@ -50,7 +49,7 @@ class SelectWidgetSourceViewModel( private val analyticSpaceHelperDelegate: AnalyticSpaceHelperDelegate, private val storeOfObjectTypes: StoreOfObjectTypes, private val getSuggestedWidgetTypes: GetSuggestedWidgetTypes, - fieldParser: FieldParser + private val fieldParser: FieldParser ) : ObjectSearchViewModel( vmParams = vmParams, urlBuilder = urlBuilder, @@ -189,7 +188,7 @@ class SelectWidgetSourceViewModel( suggested.value = types.map { type -> SuggestWidgetObjectType( id = type.id, - name = type.name.orEmpty(), + name = fieldParser.getObjectPluralName(type), objectIcon = type.objectIcon() ) }