Skip to content
Original file line number Diff line number Diff line change
Expand Up @@ -230,14 +230,14 @@ object ObjectMenuModule {
@JvmStatic
@Provides
@PerDialog
fun addToFeaturedRelations(repo: BlockRepository): AddToFeaturedRelations =
AddToFeaturedRelations(repo)
fun addToFeaturedRelations(repo: BlockRepository, dispatchers: AppCoroutineDispatchers): AddToFeaturedRelations =
AddToFeaturedRelations(repo, dispatchers)

@JvmStatic
@Provides
@PerDialog
fun removeFromFeaturedRelations(repo: BlockRepository): RemoveFromFeaturedRelations =
RemoveFromFeaturedRelations(repo)
fun removeFromFeaturedRelations(repo: BlockRepository, dispatchers: AppCoroutineDispatchers): RemoveFromFeaturedRelations =
RemoveFromFeaturedRelations(repo, dispatchers)
}

@Module
Expand Down Expand Up @@ -404,12 +404,12 @@ object ObjectSetMenuModule {
@JvmStatic
@Provides
@PerDialog
fun addToFeaturedRelations(repo: BlockRepository): AddToFeaturedRelations =
AddToFeaturedRelations(repo)
fun addToFeaturedRelations(repo: BlockRepository, dispatchers: AppCoroutineDispatchers): AddToFeaturedRelations =
AddToFeaturedRelations(repo, dispatchers)

@JvmStatic
@Provides
@PerDialog
fun removeFromFeaturedRelations(repo: BlockRepository): RemoveFromFeaturedRelations =
RemoveFromFeaturedRelations(repo)
fun removeFromFeaturedRelations(repo: BlockRepository, dispatchers: AppCoroutineDispatchers): RemoveFromFeaturedRelations =
RemoveFromFeaturedRelations(repo, dispatchers)
}
Original file line number Diff line number Diff line change
Expand Up @@ -94,14 +94,14 @@ object ObjectRelationListModule {
@JvmStatic
@Provides
@PerModal
fun addToFeaturedRelations(repo: BlockRepository): AddToFeaturedRelations =
AddToFeaturedRelations(repo)
fun addToFeaturedRelations(repo: BlockRepository, dispatchers: AppCoroutineDispatchers): AddToFeaturedRelations =
AddToFeaturedRelations(repo, dispatchers)

@JvmStatic
@Provides
@PerModal
fun removeFromFeaturedRelations(repo: BlockRepository): RemoveFromFeaturedRelations =
RemoveFromFeaturedRelations(repo)
fun removeFromFeaturedRelations(repo: BlockRepository, dispatchers: AppCoroutineDispatchers): RemoveFromFeaturedRelations =
RemoveFromFeaturedRelations(repo = repo, dispatchers = dispatchers)

@JvmStatic
@Provides
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import com.anytypeio.anytype.core_utils.di.scope.CreateFromScratch
import com.anytypeio.anytype.core_utils.di.scope.PerScreen
import com.anytypeio.anytype.di.common.ComponentDependencies
import com.anytypeio.anytype.domain.base.AppCoroutineDispatchers
import com.anytypeio.anytype.domain.block.interactor.UpdateText
import com.anytypeio.anytype.domain.block.repo.BlockRepository
import com.anytypeio.anytype.domain.config.ConfigStorage
import com.anytypeio.anytype.domain.config.UserSettingsRepository
Expand All @@ -28,7 +29,9 @@ import com.anytypeio.anytype.domain.primitives.FieldParser
import com.anytypeio.anytype.domain.primitives.GetObjectTypeConflictingFields
import com.anytypeio.anytype.domain.primitives.SetObjectTypeHeaderRecommendedFields
import com.anytypeio.anytype.domain.primitives.SetObjectTypeRecommendedFields
import com.anytypeio.anytype.domain.relations.AddToFeaturedRelations
import com.anytypeio.anytype.domain.relations.CreateRelation
import com.anytypeio.anytype.domain.relations.RemoveFromFeaturedRelations
import com.anytypeio.anytype.domain.resources.StringResourceProvider
import com.anytypeio.anytype.domain.search.SubscriptionEventChannel
import com.anytypeio.anytype.domain.types.CreateObjectType
Expand Down Expand Up @@ -168,6 +171,31 @@ object ObjectTypeModule {
dispatchers: AppCoroutineDispatchers
): SetObjectListIsArchived = SetObjectListIsArchived(repo, dispatchers)

@JvmStatic
@Provides
@PerScreen
fun provideAddToFeaturedRelations(
repo: BlockRepository,
dispatchers: AppCoroutineDispatchers
): AddToFeaturedRelations = AddToFeaturedRelations(repo, dispatchers)

@JvmStatic
@Provides
@PerScreen
fun provideRemoveFromFeaturedRelations(
repo: BlockRepository,
dispatchers: AppCoroutineDispatchers
): RemoveFromFeaturedRelations = RemoveFromFeaturedRelations(repo, dispatchers)

@JvmStatic
@Provides
@PerScreen
fun provideUpdateBlockUseCase(
repo: BlockRepository
): UpdateText = UpdateText(
repo = repo
)

@Module
interface Declarations {
@PerScreen
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@ import com.anytypeio.anytype.core_models.Id
import com.anytypeio.anytype.core_models.primitives.SpaceId
import com.anytypeio.anytype.core_ui.views.BaseAlertDialog
import com.anytypeio.anytype.core_utils.ext.argString
import com.anytypeio.anytype.core_utils.ext.safeNavigate
import com.anytypeio.anytype.core_utils.ext.subscribe
import com.anytypeio.anytype.core_utils.ext.toast
import com.anytypeio.anytype.core_utils.ui.BaseComposeFragment
Expand All @@ -41,7 +40,6 @@ import com.anytypeio.anytype.feature_object_type.ui.menu.ObjectTypeMenu
import com.anytypeio.anytype.feature_object_type.viewmodel.ObjectTypeVMFactory
import com.anytypeio.anytype.feature_object_type.viewmodel.ObjectTypeViewModel
import com.anytypeio.anytype.ui.editor.EditorModalFragment
import com.anytypeio.anytype.ui.editor.sheets.ObjectMenuBaseFragment
import com.anytypeio.anytype.ui.templates.EditorTemplateFragment.Companion.TYPE_TEMPLATE_EDIT
import com.google.accompanist.navigation.material.ExperimentalMaterialNavigationApi
import com.google.accompanist.navigation.material.rememberBottomSheetNavigator
Expand Down Expand Up @@ -143,6 +141,7 @@ class ObjectTypeFragment : BaseComposeFragment() {
uiSyncStatusBadgeState = vm.uiSyncStatusBadgeState.collectAsStateWithLifecycle().value,
uiIconState = vm.uiIconState.collectAsStateWithLifecycle().value,
uiTitleState = vm.uiTitleState.collectAsStateWithLifecycle().value,
uiDescriptionState = vm.uiDescriptionState.collectAsStateWithLifecycle().value,
uiHorizontalButtonsState = vm.uiHorizontalButtonsState.collectAsStateWithLifecycle().value,
uiTemplatesModalListState = vm.uiTemplatesModalListState.collectAsStateWithLifecycle().value,
uiLayoutTypeState = vm.uiTypeLayoutsState.collectAsStateWithLifecycle().value,
Expand All @@ -167,6 +166,8 @@ class ObjectTypeFragment : BaseComposeFragment() {
if (menuState.isVisible) {
ObjectTypeMenu(
isPinned = menuState.isPinned,
canDelete = menuState.canDelete,
isDescriptionFeatured = menuState.isDescriptionFeatured,
onEvent = vm::onMenuEvent
)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,9 @@ import com.anytypeio.anytype.feature_object_type.ui.UiLayoutTypeState
import com.anytypeio.anytype.feature_object_type.ui.UiSyncStatusBadgeState
import com.anytypeio.anytype.feature_object_type.ui.UiTemplatesModalListState
import com.anytypeio.anytype.feature_object_type.ui.UiTitleState
import com.anytypeio.anytype.feature_object_type.ui.UiDescriptionState
import com.anytypeio.anytype.feature_object_type.ui.alerts.DeleteAlertScreen
import com.anytypeio.anytype.feature_object_type.ui.header.DescriptionWidget
import com.anytypeio.anytype.feature_object_type.ui.header.HorizontalButtons
import com.anytypeio.anytype.feature_object_type.ui.header.IconAndTitleWidget
import com.anytypeio.anytype.feature_object_type.ui.layouts.TypeLayoutsScreen
Expand All @@ -57,6 +59,7 @@ fun WithSetScreen(
//header
uiIconState: UiIconState,
uiTitleState: UiTitleState,
uiDescriptionState: UiDescriptionState,
//layout, properties and templates buttons
uiHorizontalButtonsState: UiHorizontalButtonsState,
uiLayoutTypeState: UiLayoutTypeState,
Expand Down Expand Up @@ -99,6 +102,7 @@ fun WithSetScreen(
paddingValues = paddingValues,
uiIconState = uiIconState,
uiTitleState = uiTitleState,
uiDescriptionState = uiDescriptionState,
uiHorizontalButtonsState = uiHorizontalButtonsState,
objectId = objectId,
space = space,
Expand Down Expand Up @@ -142,6 +146,7 @@ private fun MainContentSet(
paddingValues: PaddingValues,
uiIconState: UiIconState,
uiTitleState: UiTitleState,
uiDescriptionState: UiDescriptionState,
uiHorizontalButtonsState: UiHorizontalButtonsState,
objectId: String,
space: String,
Expand Down Expand Up @@ -170,6 +175,21 @@ private fun MainContentSet(
uiTitleState = uiTitleState,
onTypeEvent = onTypeEvent
)

if (uiDescriptionState.isVisible) {
Spacer(modifier = Modifier.height(8.dp))
DescriptionWidget(
modifier = Modifier
.fillMaxWidth()
.wrapContentHeight()
.padding(horizontal = 20.dp),
uiDescriptionState = uiDescriptionState,
onDescriptionChanged = { text ->
onTypeEvent(TypeEvent.OnDescriptionChanged(text))
}
)
}

if (uiHorizontalButtonsState.isVisible) {
Spacer(modifier = Modifier.height(20.dp))
HorizontalButtons(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -234,6 +234,8 @@ sealed class ObjectWrapper {

val orderId: String? get() = getSingleValue(Relations.ORDER_ID)

val featuredRelations: List<Key> get() = getValues(Relations.FEATURED_RELATIONS)

val allRecommendedRelations: List<Id>
get() = recommendedFeaturedRelations + recommendedRelations + recommendedFileRelations + recommendedHiddenRelations

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,20 @@ package com.anytypeio.anytype.domain.relations

import com.anytypeio.anytype.core_models.Id
import com.anytypeio.anytype.core_models.Payload
import com.anytypeio.anytype.domain.base.BaseUseCase
import com.anytypeio.anytype.domain.base.AppCoroutineDispatchers
import com.anytypeio.anytype.domain.base.ResultInteractor
import com.anytypeio.anytype.domain.block.repo.BlockRepository

/**
* Use-case for adding one or more relations to featured relations list.
*/
class AddToFeaturedRelations(
private val repo: BlockRepository
) : BaseUseCase<Payload, AddToFeaturedRelations.Params>() {
private val repo: BlockRepository,
dispatchers: AppCoroutineDispatchers
) : ResultInteractor<AddToFeaturedRelations.Params, Payload>(dispatchers.io) {

override suspend fun run(params: Params) = safe {
repo.addToFeaturedRelations(
override suspend fun doWork(params: Params): Payload {
return repo.addToFeaturedRelations(
ctx = params.ctx,
relations = params.relations
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,20 @@ package com.anytypeio.anytype.domain.relations

import com.anytypeio.anytype.core_models.Id
import com.anytypeio.anytype.core_models.Payload
import com.anytypeio.anytype.domain.base.BaseUseCase
import com.anytypeio.anytype.domain.base.AppCoroutineDispatchers
import com.anytypeio.anytype.domain.base.ResultInteractor
import com.anytypeio.anytype.domain.block.repo.BlockRepository

/**
* Use-case for removing one or more relations from featured relations list.
*/
class RemoveFromFeaturedRelations(
private val repo: BlockRepository
) : BaseUseCase<Payload, RemoveFromFeaturedRelations.Params>() {
private val repo: BlockRepository,
dispatchers: AppCoroutineDispatchers
) : ResultInteractor<RemoveFromFeaturedRelations.Params, Payload>(dispatchers.io) {

override suspend fun run(params: Params) = safe {
repo.removeFromFeaturedRelations(
override suspend fun doWork(params: Params): Payload {
return repo.removeFromFeaturedRelations(
ctx = params.ctx,
relations = params.relations
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,8 @@ class ObjectTypesSubscriptionManager (
Relations.WIDGET_LAYOUT,
Relations.WIDGET_LIMIT,
Relations.WIDGET_VIEW_ID,
Relations.ORDER_ID
Relations.ORDER_ID,
Relations.FEATURED_RELATIONS
),
ignoreWorkspace = true
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ sealed class TypeEvent {
data object OnObjectTypeIconClick : TypeEvent()
data class OnObjectTypeTitleUpdate(val title: String) : TypeEvent()
data object OnObjectTypeTitleClick : TypeEvent()
data class OnDescriptionChanged(val text: String) : TypeEvent()
//endregion

//region Templates
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,20 @@ data class UiIconState(val icon: ObjectIcon.TypeIcon, val isEditable: Boolean) {
val EMPTY = UiIconState(icon = ObjectIcon.TypeIcon.Default.DEFAULT, isEditable = false)
}
}

data class UiDescriptionState(
val description: String,
val isVisible: Boolean,
val isEditable: Boolean
) {
companion object {
val EMPTY = UiDescriptionState(
description = "",
isVisible = false,
isEditable = false
)
}
}
//endregion

//region LAYOUTS
Expand Down
Loading