1
0
Fork 0
mirror of https://github.com/anyproto/anytype-kotlin.git synced 2025-06-08 13:57:10 +09:00

DROID-326 Relations | Fix | Component configuration fixes (#3054)

This commit is contained in:
Evgenii Kozlov 2023-03-28 18:34:40 +02:00 committed by GitHub
parent f8b964e795
commit edbdaeb8ff
Signed by: github
GPG key ID: 4AEE18F83AFDEB23
19 changed files with 245 additions and 71 deletions

View file

@ -114,7 +114,7 @@ class ObjectRelationDateValueTest {
RelationDateValueFragment.CONTEXT_ID to root,
RelationDateValueFragment.RELATION_KEY to relation.key,
RelationDateValueFragment.OBJECT_ID to target,
RelationDateValueFragment.FLOW_KEY to RelationDateValueFragment.FLOW_DATAVIEW
RelationDateValueFragment.FLOW_KEY to RelationDateValueFragment.FLOW_DV
)
)
@ -177,7 +177,7 @@ class ObjectRelationDateValueTest {
RelationDateValueFragment.CONTEXT_ID to root,
RelationDateValueFragment.RELATION_KEY to relation.key,
RelationDateValueFragment.OBJECT_ID to target,
RelationDateValueFragment.FLOW_KEY to RelationDateValueFragment.FLOW_DATAVIEW
RelationDateValueFragment.FLOW_KEY to RelationDateValueFragment.FLOW_DV
)
)
@ -236,7 +236,7 @@ class ObjectRelationDateValueTest {
RelationDateValueFragment.CONTEXT_ID to root,
RelationDateValueFragment.RELATION_KEY to relation.key,
RelationDateValueFragment.OBJECT_ID to target,
RelationDateValueFragment.FLOW_KEY to RelationDateValueFragment.FLOW_DATAVIEW
RelationDateValueFragment.FLOW_KEY to RelationDateValueFragment.FLOW_DV
)
)
@ -300,7 +300,7 @@ class ObjectRelationDateValueTest {
RelationDateValueFragment.CONTEXT_ID to root,
RelationDateValueFragment.RELATION_KEY to relation.key,
RelationDateValueFragment.OBJECT_ID to target,
RelationDateValueFragment.FLOW_KEY to RelationDateValueFragment.FLOW_DATAVIEW
RelationDateValueFragment.FLOW_KEY to RelationDateValueFragment.FLOW_DV
)
)
@ -359,7 +359,7 @@ class ObjectRelationDateValueTest {
RelationDateValueFragment.CONTEXT_ID to root,
RelationDateValueFragment.RELATION_KEY to relation.key,
RelationDateValueFragment.OBJECT_ID to target,
RelationDateValueFragment.FLOW_KEY to RelationDateValueFragment.FLOW_DATAVIEW
RelationDateValueFragment.FLOW_KEY to RelationDateValueFragment.FLOW_DV
)
)
@ -419,7 +419,7 @@ class ObjectRelationDateValueTest {
RelationDateValueFragment.CONTEXT_ID to root,
RelationDateValueFragment.RELATION_KEY to relation.key,
RelationDateValueFragment.OBJECT_ID to target,
RelationDateValueFragment.FLOW_KEY to RelationDateValueFragment.FLOW_DATAVIEW
RelationDateValueFragment.FLOW_KEY to RelationDateValueFragment.FLOW_DV
)
)
@ -492,7 +492,7 @@ class ObjectRelationDateValueTest {
RelationDateValueFragment.CONTEXT_ID to root,
RelationDateValueFragment.RELATION_KEY to relation.key,
RelationDateValueFragment.OBJECT_ID to target,
RelationDateValueFragment.FLOW_KEY to RelationDateValueFragment.FLOW_DATAVIEW
RelationDateValueFragment.FLOW_KEY to RelationDateValueFragment.FLOW_DV
)
)

View file

@ -46,6 +46,7 @@ import com.anytypeio.anytype.di.feature.ObjectSetSettingsModule
import com.anytypeio.anytype.di.feature.ObjectTypeChangeModule
import com.anytypeio.anytype.di.feature.OtherSettingsModule
import com.anytypeio.anytype.di.feature.PageNavigationModule
import com.anytypeio.anytype.di.feature.RelationDataViewDateValueModule
import com.anytypeio.anytype.di.feature.RelationDateValueModule
import com.anytypeio.anytype.di.feature.RelationTextValueModule
import com.anytypeio.anytype.di.feature.SelectAccountModule
@ -400,7 +401,15 @@ class ComponentManager(
.build()
}
val objectSetObjectRelationDataValueComponent = DependentComponentMap { ctx ->
val dataViewRelationDateValueComponent = DependentComponentMap { ctx ->
objectSetComponent
.get(ctx)
.dataViewRelationDateValueComponent()
.module(RelationDataViewDateValueModule)
.build()
}
val setOrCollectionRelationDateValueComponent = DependentComponentMap { ctx ->
objectSetComponent
.get(ctx)
.relationDateValueComponent()
@ -408,7 +417,7 @@ class ComponentManager(
.build()
}
val objectObjectRelationDateValueComponet = DependentComponentMap { ctx ->
val objectRelationDateValueComponent = DependentComponentMap { ctx ->
editorComponent
.get(ctx)
.editRelationDateComponent()
@ -706,6 +715,22 @@ class ComponentManager(
.build()
}
val relationCreateFromScratchForObjectBlockComponent = DependentComponentMap { ctx ->
editorComponent
.get(ctx)
.relationCreateFromScratchForObjectBlockComponent()
.module(RelationCreateFromScratchForObjectBlockModule)
.build()
}
val relationCreateFromScratchForDataViewComponent = DependentComponentMap { ctx ->
objectSetComponent
.get(ctx)
.relationCreateFromScratchForDataViewComponent()
.module(RelationCreateFromScratchForDataViewModule)
.build()
}
val relationFormatPickerObjectComponent = DependentComponentMap { ctx ->
relationCreateFromScratchForObjectComponent
.get(ctx)
@ -726,14 +751,21 @@ class ComponentManager(
.build()
}
val relationFormatPickerObjectSetComponent = DependentComponentMap { ctx ->
val relationFormatPickerDataViewComponent = DependentComponentMap { ctx ->
relationCreateFromScratchForDataViewComponent
.get(ctx)
.relationFormatPickerComponent()
.build()
}
val limitObjectTypeComponent = DependentComponentMap { ctx ->
val relationFormatPickerSetOrCollectionComponent = DependentComponentMap { ctx ->
relationCreateFromScratchForObjectSetComponent
.get(ctx)
.relationFormatPickerComponent()
.build()
}
val limitObjectTypeObjectComponent = DependentComponentMap { ctx ->
relationCreateFromScratchForObjectComponent.get(ctx)
.limitObjectTypeComponent()
.module(LimitObjectTypeModule)
@ -754,26 +786,17 @@ class ComponentManager(
.build()
}
val limitObjectTypeLibraryComponent = DependentComponentMap { ctx ->
relationCreationFromLibraryComponent.get()
val limitObjectTypeSetOrCollectionComponent = DependentComponentMap { ctx ->
relationCreateFromScratchForObjectSetComponent.get(ctx)
.limitObjectTypeComponent()
.module(LimitObjectTypeModule)
.build()
}
val relationCreateFromScratchForObjectBlockComponent = DependentComponentMap { ctx ->
editorComponent
.get(ctx)
.relationCreateFromScratchForObjectBlockComponent()
.module(RelationCreateFromScratchForObjectBlockModule)
.build()
}
val relationCreateFromScratchForDataViewComponent = DependentComponentMap { ctx ->
objectSetComponent
.get(ctx)
.relationCreateFromScratchForDataViewComponent()
.module(RelationCreateFromScratchForDataViewModule)
val limitObjectTypeLibraryComponent = DependentComponentMap { ctx ->
relationCreationFromLibraryComponent.get()
.limitObjectTypeComponent()
.module(LimitObjectTypeModule)
.build()
}

View file

@ -1,15 +1,17 @@
package com.anytypeio.anytype.di.feature
import com.anytypeio.anytype.core_utils.di.scope.PerDialog
import com.anytypeio.anytype.domain.search.SearchObjects
import com.anytypeio.anytype.domain.misc.UrlBuilder
import com.anytypeio.anytype.domain.search.SearchObjects
import com.anytypeio.anytype.presentation.relations.add.AddFileRelationViewModel
import com.anytypeio.anytype.presentation.relations.providers.ObjectRelationProvider
import com.anytypeio.anytype.presentation.relations.providers.ObjectRelationProvider.Companion.INTRINSIC_PROVIDER_TYPE
import com.anytypeio.anytype.presentation.relations.providers.ObjectValueProvider
import com.anytypeio.anytype.ui.relations.add.AddFileRelationFragment
import dagger.Module
import dagger.Provides
import dagger.Subcomponent
import javax.inject.Named
@Subcomponent(modules = [AddFileRelationModule::class])
@PerDialog
@ -31,12 +33,11 @@ object AddFileRelationModule {
@Provides
@PerDialog
fun provideViewModelFactory(
relations: ObjectRelationProvider,
@Named(INTRINSIC_PROVIDER_TYPE) relations: ObjectRelationProvider,
values: ObjectValueProvider,
searchObjects: SearchObjects,
urlBuilder: UrlBuilder
): AddFileRelationViewModel.Factory =
AddFileRelationViewModel.Factory(
): AddFileRelationViewModel.Factory = AddFileRelationViewModel.Factory(
relations, values, searchObjects, urlBuilder
)
)
}

View file

@ -12,6 +12,7 @@ import com.anytypeio.anytype.ui.relations.add.AddObjectRelationFragment
import dagger.Module
import dagger.Provides
import dagger.Subcomponent
import javax.inject.Named
@Subcomponent(modules = [AddObjectRelationModule::class])
@PerDialog
@ -33,14 +34,13 @@ object AddObjectRelationModule {
@Provides
@PerDialog
fun provideViewModelFactory(
relations: ObjectRelationProvider,
@Named(ObjectRelationProvider.INTRINSIC_PROVIDER_TYPE) relations: ObjectRelationProvider,
values: ObjectValueProvider,
storeOfObjectTypes: StoreOfObjectTypes,
searchObjects: SearchObjects,
urlBuilder: UrlBuilder,
workspaceManager: WorkspaceManager
): AddObjectRelationViewModel.Factory =
AddObjectRelationViewModel.Factory(
relations, values, searchObjects, urlBuilder, storeOfObjectTypes, workspaceManager
)
): AddObjectRelationViewModel.Factory = AddObjectRelationViewModel.Factory(
relations, values, searchObjects, urlBuilder, storeOfObjectTypes, workspaceManager
)
}

View file

@ -3,8 +3,8 @@ package com.anytypeio.anytype.di.feature
import com.anytypeio.anytype.analytics.base.Analytics
import com.anytypeio.anytype.core_models.Payload
import com.anytypeio.anytype.core_utils.di.scope.PerDialog
import com.anytypeio.anytype.domain.`object`.UpdateDetail
import com.anytypeio.anytype.domain.block.repo.BlockRepository
import com.anytypeio.anytype.domain.`object`.UpdateDetail
import com.anytypeio.anytype.domain.objects.options.GetOptions
import com.anytypeio.anytype.domain.relations.CreateRelationOption
import com.anytypeio.anytype.presentation.relations.add.AddOptionsRelationDVViewModel
@ -12,6 +12,7 @@ import com.anytypeio.anytype.presentation.relations.add.AddOptionsRelationProvid
import com.anytypeio.anytype.presentation.relations.add.AddOptionsRelationViewModel
import com.anytypeio.anytype.presentation.relations.providers.ObjectDetailProvider
import com.anytypeio.anytype.presentation.relations.providers.ObjectRelationProvider
import com.anytypeio.anytype.presentation.relations.providers.ObjectRelationProvider.Companion.INTRINSIC_PROVIDER_TYPE
import com.anytypeio.anytype.presentation.relations.providers.ObjectValueProvider
import com.anytypeio.anytype.presentation.util.Dispatcher
import com.anytypeio.anytype.ui.relations.add.AddOptionsRelationDVFragment
@ -19,6 +20,7 @@ import com.anytypeio.anytype.ui.relations.add.AddOptionsRelationFragment
import dagger.Module
import dagger.Provides
import dagger.Subcomponent
import javax.inject.Named
@Subcomponent(modules = [AddObjectRelationValueModule::class])
@PerDialog
@ -40,7 +42,7 @@ object AddObjectRelationValueModule {
@Provides
@PerDialog
fun provideViewModelFactoryForSets(
relations: ObjectRelationProvider,
@Named(INTRINSIC_PROVIDER_TYPE) relations: ObjectRelationProvider,
values: ObjectValueProvider,
dispatcher: Dispatcher<Payload>,
createRelationOption: CreateRelationOption,
@ -64,7 +66,7 @@ object AddObjectRelationValueModule {
@Provides
@PerDialog
fun provideViewModelFactoryForObjects(
relations: ObjectRelationProvider,
@Named(INTRINSIC_PROVIDER_TYPE) relations: ObjectRelationProvider,
values: ObjectValueProvider,
dispatcher: Dispatcher<Payload>,
createRelationOption: CreateRelationOption,

View file

@ -2,9 +2,11 @@ package com.anytypeio.anytype.di.feature;
import com.anytypeio.anytype.analytics.base.Analytics
import com.anytypeio.anytype.core_utils.di.scope.PerModal
import com.anytypeio.anytype.domain.`object`.ReloadObject
import com.anytypeio.anytype.domain.block.repo.BlockRepository
import com.anytypeio.anytype.domain.`object`.ReloadObject
import com.anytypeio.anytype.presentation.relations.providers.ObjectRelationProvider
import com.anytypeio.anytype.presentation.relations.providers.ObjectRelationProvider.Companion.DATA_VIEW_PROVIDER_TYPE
import com.anytypeio.anytype.presentation.relations.providers.ObjectRelationProvider.Companion.INTRINSIC_PROVIDER_TYPE
import com.anytypeio.anytype.presentation.relations.providers.ObjectValueProvider
import com.anytypeio.anytype.presentation.sets.RelationDateValueViewModel
import com.anytypeio.anytype.presentation.sets.RelationTextValueViewModel
@ -13,6 +15,7 @@ import com.anytypeio.anytype.ui.relations.RelationTextValueFragment
import dagger.Module
import dagger.Provides
import dagger.Subcomponent
import javax.inject.Named
@Subcomponent(modules = [RelationTextValueModule::class])
@PerModal
@ -33,7 +36,7 @@ object RelationTextValueModule {
@Provides
@PerModal
fun provideRelationTextValueViewModelFactory(
relations: ObjectRelationProvider,
@Named(INTRINSIC_PROVIDER_TYPE) relations: ObjectRelationProvider,
values: ObjectValueProvider,
reloadObject: ReloadObject,
analytics: Analytics
@ -54,12 +57,12 @@ object RelationTextValueModule {
@Subcomponent(modules = [RelationDateValueModule::class])
@PerModal
interface RelationDataValueSubComponent {
interface DefaultRelationDataValueSubComponent {
@Subcomponent.Builder
interface Builder {
fun module(module: RelationDateValueModule): Builder
fun build(): RelationDataValueSubComponent
fun build(): DefaultRelationDataValueSubComponent
}
fun inject(fragment: RelationDateValueFragment)
@ -67,12 +70,35 @@ interface RelationDataValueSubComponent {
@Module
object RelationDateValueModule {
@JvmStatic
@Provides
@PerModal
fun provideEditGridCellViewModelFactory(
relations: ObjectRelationProvider,
@Named(INTRINSIC_PROVIDER_TYPE) relations: ObjectRelationProvider,
values: ObjectValueProvider
) = RelationDateValueViewModel.Factory(relations, values)
}
@Subcomponent(modules = [RelationDataViewDateValueModule::class])
@PerModal
interface DataViewRelationDataValueSubComponent {
@Subcomponent.Builder
interface Builder {
fun module(module: RelationDataViewDateValueModule): Builder
fun build(): DataViewRelationDataValueSubComponent
}
fun inject(fragment: RelationDateValueFragment)
}
@Module
object RelationDataViewDateValueModule {
@JvmStatic
@Provides
@PerModal
fun provideEditGridCellViewModelFactory(
@Named(DATA_VIEW_PROVIDER_TYPE) relations: ObjectRelationProvider,
values: ObjectValueProvider
) = RelationDateValueViewModel.Factory(relations, values)
}

View file

@ -116,6 +116,7 @@ import com.anytypeio.anytype.presentation.relations.providers.DefaultObjectRelat
import com.anytypeio.anytype.presentation.relations.providers.DefaultObjectValueProvider
import com.anytypeio.anytype.presentation.relations.providers.ObjectDetailProvider
import com.anytypeio.anytype.presentation.relations.providers.ObjectRelationProvider
import com.anytypeio.anytype.presentation.relations.providers.ObjectRelationProvider.Companion.INTRINSIC_PROVIDER_TYPE
import com.anytypeio.anytype.presentation.relations.providers.ObjectValueProvider
import com.anytypeio.anytype.presentation.relations.providers.RelationListProvider
import com.anytypeio.anytype.presentation.util.CopyFileToCacheDirectory
@ -131,6 +132,7 @@ import dagger.Binds
import dagger.Module
import dagger.Provides
import dagger.Subcomponent
import javax.inject.Named
import kotlinx.coroutines.Dispatchers
@Subcomponent(
@ -163,7 +165,7 @@ interface EditorSubComponent {
fun relationCreateFromScratchForObjectBlockComponent(): RelationCreateFromScratchForObjectBlockSubComponent.Builder
fun relationTextValueComponent(): RelationTextValueSubComponent.Builder
fun editDocRelationComponent(): ObjectObjectRelationValueSubComponent.Builder
fun editRelationDateComponent(): RelationDataValueSubComponent.Builder
fun editRelationDateComponent(): DefaultRelationDataValueSubComponent.Builder
fun objectCoverComponent(): SelectCoverObjectSubComponent.Builder
fun objectUnsplashComponent(): UnsplashSubComponent.Builder
@ -872,6 +874,7 @@ object EditorUseCaseModule {
@JvmStatic
@Provides
@PerScreen
@Named(INTRINSIC_PROVIDER_TYPE)
fun provideDefaultObjectRelationProvider(
storage: Editor.Storage,
storeOfRelations: StoreOfRelations

View file

@ -4,12 +4,14 @@ import android.content.Context
import com.anytypeio.anytype.analytics.base.Analytics
import com.anytypeio.anytype.core_models.Payload
import com.anytypeio.anytype.core_utils.di.scope.PerModal
import com.anytypeio.anytype.domain.`object`.UpdateDetail
import com.anytypeio.anytype.domain.misc.UrlBuilder
import com.anytypeio.anytype.domain.`object`.UpdateDetail
import com.anytypeio.anytype.domain.objects.StoreOfObjectTypes
import com.anytypeio.anytype.domain.relations.AddFileToObject
import com.anytypeio.anytype.presentation.relations.providers.ObjectDetailProvider
import com.anytypeio.anytype.presentation.relations.providers.ObjectRelationProvider
import com.anytypeio.anytype.presentation.relations.providers.ObjectRelationProvider.Companion.DATA_VIEW_PROVIDER_TYPE
import com.anytypeio.anytype.presentation.relations.providers.ObjectRelationProvider.Companion.INTRINSIC_PROVIDER_TYPE
import com.anytypeio.anytype.presentation.relations.providers.ObjectValueProvider
import com.anytypeio.anytype.presentation.sets.RelationValueDVViewModel
import com.anytypeio.anytype.presentation.sets.RelationValueViewModel
@ -22,6 +24,7 @@ import com.anytypeio.anytype.ui.relations.RelationValueFragment
import dagger.Module
import dagger.Provides
import dagger.Subcomponent
import javax.inject.Named
@Subcomponent(modules = [ObjectSetObjectRelationValueModule::class])
@PerModal
@ -70,7 +73,7 @@ object ObjectSetObjectRelationValueModule {
@Provides
@PerModal
fun provideViewModelFactoryForDataView(
relations: ObjectRelationProvider,
@Named(DATA_VIEW_PROVIDER_TYPE) relations: ObjectRelationProvider,
values: ObjectValueProvider,
details: ObjectDetailProvider,
storeOfObjectTypes: StoreOfObjectTypes,
@ -101,7 +104,7 @@ object ObjectObjectRelationValueModule {
@Provides
@PerModal
fun provideViewModelFactoryForObject(
relations: ObjectRelationProvider,
@Named(INTRINSIC_PROVIDER_TYPE) relations: ObjectRelationProvider,
values: ObjectValueProvider,
details: ObjectDetailProvider,
storeOfObjectTypes: StoreOfObjectTypes,

View file

@ -62,8 +62,11 @@ import com.anytypeio.anytype.presentation.relations.providers.DataViewObjectRela
import com.anytypeio.anytype.presentation.relations.providers.DataViewObjectValueProvider
import com.anytypeio.anytype.presentation.relations.providers.ObjectDetailProvider
import com.anytypeio.anytype.presentation.relations.providers.ObjectRelationProvider
import com.anytypeio.anytype.presentation.relations.providers.ObjectRelationProvider.Companion.DATA_VIEW_PROVIDER_TYPE
import com.anytypeio.anytype.presentation.relations.providers.ObjectRelationProvider.Companion.INTRINSIC_PROVIDER_TYPE
import com.anytypeio.anytype.presentation.relations.providers.ObjectValueProvider
import com.anytypeio.anytype.presentation.relations.providers.RelationListProvider
import com.anytypeio.anytype.presentation.relations.providers.SetOrCollectionRelationProvider
import com.anytypeio.anytype.presentation.sets.ObjectSetDatabase
import com.anytypeio.anytype.presentation.sets.ObjectSetPaginator
import com.anytypeio.anytype.presentation.sets.ObjectSetSession
@ -115,7 +118,9 @@ interface ObjectSetSubComponent {
fun viewerSortComponent(): ViewerSortSubComponent.Builder
fun modifyViewerSortComponent(): ModifyViewerSortSubComponent.Builder
fun relationTextValueComponent(): RelationTextValueSubComponent.Builder
fun relationDateValueComponent(): RelationDataValueSubComponent.Builder
fun relationDateValueComponent(): DefaultRelationDataValueSubComponent.Builder
fun dataViewRelationDateValueComponent(): DataViewRelationDataValueSubComponent.Builder
fun objectSetMenuComponent(): ObjectSetMenuComponent.Builder
fun objectSetIconPickerComponent(): ObjectSetIconPickerComponent.Builder
@ -354,6 +359,7 @@ object ObjectSetModule {
@JvmStatic
@Provides
@PerScreen
@Named(DATA_VIEW_PROVIDER_TYPE)
fun provideDataViewObjectRelationProvider(
state: MutableStateFlow<ObjectState>,
storeOfRelations: StoreOfRelations
@ -362,6 +368,18 @@ object ObjectSetModule {
storeOfRelations = storeOfRelations
)
@JvmStatic
@Provides
@PerScreen
@Named(INTRINSIC_PROVIDER_TYPE)
fun provideObjectRelationProvider(
state: MutableStateFlow<ObjectState>,
storeOfRelations: StoreOfRelations
): ObjectRelationProvider = SetOrCollectionRelationProvider(
objectState = state,
storeOfRelations = storeOfRelations
)
@JvmStatic
@Provides
@PerScreen

View file

@ -15,6 +15,7 @@ import com.anytypeio.anytype.domain.workspace.WorkspaceManager
import com.anytypeio.anytype.presentation.relations.RelationAddToDataViewViewModel
import com.anytypeio.anytype.presentation.relations.RelationAddToObjectViewModel
import com.anytypeio.anytype.presentation.relations.providers.ObjectRelationProvider
import com.anytypeio.anytype.presentation.relations.providers.ObjectRelationProvider.Companion.INTRINSIC_PROVIDER_TYPE
import com.anytypeio.anytype.presentation.sets.ObjectSetSession
import com.anytypeio.anytype.presentation.sets.state.ObjectState
import com.anytypeio.anytype.presentation.util.Dispatcher
@ -24,6 +25,7 @@ import com.anytypeio.anytype.ui.relations.RelationAddToObjectFragment
import dagger.Module
import dagger.Provides
import dagger.Subcomponent
import javax.inject.Named
import kotlinx.coroutines.flow.MutableStateFlow
@Subcomponent(modules = [RelationAddToObjectModule::class])
@ -50,7 +52,7 @@ object RelationAddToObjectModule {
storeOfRelations: StoreOfRelations,
dispatcher: Dispatcher<Payload>,
analytics: Analytics,
relationsProvider: ObjectRelationProvider,
@Named(INTRINSIC_PROVIDER_TYPE) relationsProvider: ObjectRelationProvider,
getRelations: GetRelations,
appCoroutineDispatchers: AppCoroutineDispatchers,
addObjectToWorkspace: AddObjectToWorkspace,
@ -110,7 +112,7 @@ object RelationAddToDataViewModule {
session: ObjectSetSession,
updateDataViewViewer: UpdateDataViewViewer,
analytics: Analytics,
relationsProvider: ObjectRelationProvider,
@Named(INTRINSIC_PROVIDER_TYPE) relationsProvider: ObjectRelationProvider,
appCoroutineDispatchers: AppCoroutineDispatchers,
getRelations: GetRelations,
addObjectToWorkspace: AddObjectToWorkspace,

View file

@ -17,9 +17,9 @@ import com.anytypeio.anytype.core_utils.ui.BaseBottomSheetFragment
import com.anytypeio.anytype.databinding.FragmentObjectTypeChangeBinding
import com.anytypeio.anytype.di.common.componentManager
import com.anytypeio.anytype.presentation.relations.LimitObjectTypeViewModel
import javax.inject.Inject
import kotlinx.coroutines.flow.collectLatest
import kotlinx.coroutines.launch
import javax.inject.Inject
class LimitObjectTypeFragment : BaseBottomSheetFragment<FragmentObjectTypeChangeBinding>() {
@ -70,7 +70,7 @@ class LimitObjectTypeFragment : BaseBottomSheetFragment<FragmentObjectTypeChange
override fun injectDependencies() {
when(flow) {
FLOW_OBJECT -> {
componentManager().limitObjectTypeComponent.get(ctx).inject(this)
componentManager().limitObjectTypeObjectComponent.get(ctx).inject(this)
}
FLOW_DV -> {
componentManager().limitObjectTypeDataViewComponent.get(ctx).inject(this)
@ -81,13 +81,16 @@ class LimitObjectTypeFragment : BaseBottomSheetFragment<FragmentObjectTypeChange
FLOW_LIBRARY -> {
componentManager().limitObjectTypeLibraryComponent.get(ctx).inject(this)
}
FLOW_SET_OR_COLLECTION -> {
componentManager().limitObjectTypeSetOrCollectionComponent.get(ctx).inject(this)
}
}
}
override fun releaseDependencies() {
when(flow) {
FLOW_OBJECT -> {
componentManager().limitObjectTypeComponent.release(ctx)
componentManager().limitObjectTypeObjectComponent.release(ctx)
}
FLOW_DV -> {
componentManager().limitObjectTypeDataViewComponent.release(ctx)
@ -98,6 +101,9 @@ class LimitObjectTypeFragment : BaseBottomSheetFragment<FragmentObjectTypeChange
FLOW_LIBRARY -> {
componentManager().limitObjectTypeLibraryComponent.release(ctx)
}
FLOW_SET_OR_COLLECTION -> {
componentManager().limitObjectTypeSetOrCollectionComponent.release(ctx)
}
}
}
@ -112,6 +118,7 @@ class LimitObjectTypeFragment : BaseBottomSheetFragment<FragmentObjectTypeChange
const val CTX_KEY = "arg.limit-object-type.ctx"
const val FLOW_TYPE = "arg.limit-object-type.flow"
const val FLOW_OBJECT = "arg.limit-object-type.flow-object"
const val FLOW_SET_OR_COLLECTION = "arg.limit-object-type.flow-set-or-collection"
const val FLOW_LIBRARY = "arg.limit-object-type.flow-library"
const val FLOW_DV = "arg.limit-object-type.flow-dv"
const val FLOW_BLOCK = "arg.limit-object-type.flow-block"

View file

@ -132,7 +132,12 @@ open class ObjectRelationListFragment : BaseBottomSheetFragment<FragmentRelation
val fr = RelationDateValueFragment.new(
ctx = ctx,
relationKey = command.relationKey,
objectId = command.target
objectId = command.target,
flow = if (isDataViewFLow) {
RelationDateValueFragment.FLOW_SET_OR_COLLECTION
} else {
RelationDateValueFragment.FLOW_DEFAULT
}
)
fr.showChildFragment()
}

View file

@ -34,6 +34,7 @@ import com.anytypeio.anytype.presentation.relations.RelationCreateFromScratchFor
import com.anytypeio.anytype.ui.relations.RelationCreateFromScratchFormatPickerFragment.Companion.FLOW_BLOCK
import com.anytypeio.anytype.ui.relations.RelationCreateFromScratchFormatPickerFragment.Companion.FLOW_DV
import com.anytypeio.anytype.ui.relations.RelationCreateFromScratchFormatPickerFragment.Companion.FLOW_OBJECT
import com.anytypeio.anytype.ui.relations.RelationCreateFromScratchFormatPickerFragment.Companion.FLOW_SET_OR_COLLECTION
import com.anytypeio.anytype.ui.relations.RelationCreateFromScratchFormatPickerFragment.Companion.FLOW_TYPE
import com.google.android.material.bottomsheet.BottomSheetBehavior
import com.google.android.material.bottomsheet.BottomSheetDialog
@ -161,7 +162,11 @@ class RelationCreateFromScratchForObjectFragment : RelationCreateFromScratchBase
R.id.limitObjectTypeScreen,
bundleOf(
LimitObjectTypeFragment.CTX_KEY to ctx,
LimitObjectTypeFragment.FLOW_TYPE to LimitObjectTypeFragment.FLOW_OBJECT
if (isSetOrCollection) {
LimitObjectTypeFragment.FLOW_TYPE to LimitObjectTypeFragment.FLOW_SET_OR_COLLECTION
} else {
LimitObjectTypeFragment.FLOW_TYPE to LimitObjectTypeFragment.FLOW_OBJECT
}
)
)
}
@ -171,7 +176,11 @@ class RelationCreateFromScratchForObjectFragment : RelationCreateFromScratchBase
R.id.relationFormatPickerScreen,
bundleOf(
RelationCreateFromScratchFormatPickerFragment.CTX_KEY to ctx,
FLOW_TYPE to FLOW_OBJECT
if (isSetOrCollection) {
FLOW_TYPE to FLOW_SET_OR_COLLECTION
} else {
FLOW_TYPE to FLOW_OBJECT
}
)
)
}

View file

@ -71,11 +71,14 @@ class RelationCreateFromScratchFormatPickerFragment :
componentManager().relationFormatPickerBlockComponent.get(ctx).inject(this)
}
FLOW_DV -> {
componentManager().relationFormatPickerObjectSetComponent.get(ctx).inject(this)
componentManager().relationFormatPickerDataViewComponent.get(ctx).inject(this)
}
FLOW_LIBRARY -> {
componentManager().relationFormatPickerLibraryComponent.get(ctx).inject(this)
}
FLOW_SET_OR_COLLECTION -> {
componentManager().relationFormatPickerSetOrCollectionComponent.get(ctx).inject(this)
}
}
}
@ -88,11 +91,14 @@ class RelationCreateFromScratchFormatPickerFragment :
componentManager().relationFormatPickerBlockComponent.release(ctx)
}
FLOW_DV -> {
componentManager().relationFormatPickerObjectSetComponent.release(ctx)
componentManager().relationFormatPickerDataViewComponent.release(ctx)
}
FLOW_LIBRARY -> {
componentManager().relationFormatPickerLibraryComponent.release(ctx)
}
FLOW_SET_OR_COLLECTION -> {
componentManager().relationFormatPickerSetOrCollectionComponent.release(ctx)
}
}
}
@ -116,5 +122,6 @@ class RelationCreateFromScratchFormatPickerFragment :
const val FLOW_DV = "arg.relation-format-picker.flow-dv"
const val FLOW_BLOCK = "arg.relation-format-picker.flow-block"
const val FLOW_LIBRARY = "arg.relation-format-picker.flow-library"
const val FLOW_SET_OR_COLLECTION = "arg.relation-format-picker.flow-set-or-collection"
}
}

View file

@ -127,18 +127,30 @@ open class RelationDateValueFragment : BaseBottomSheetFragment<FragmentRelationD
}
override fun injectDependencies() {
if (flow == FLOW_DATAVIEW) {
componentManager().objectSetObjectRelationDataValueComponent.get(ctx).inject(this)
} else {
componentManager().objectObjectRelationDateValueComponet.get(ctx).inject(this)
when (flow) {
FLOW_DV -> {
componentManager().dataViewRelationDateValueComponent.get(ctx).inject(this)
}
FLOW_SET_OR_COLLECTION -> {
componentManager().setOrCollectionRelationDateValueComponent.get(ctx).inject(this)
}
else -> {
componentManager().objectRelationDateValueComponent.get(ctx).inject(this)
}
}
}
override fun releaseDependencies() {
if (flow == FLOW_DATAVIEW) {
componentManager().objectSetObjectRelationDataValueComponent.release(ctx)
} else {
componentManager().objectObjectRelationDateValueComponet.release(ctx)
when (flow) {
FLOW_DV -> {
componentManager().dataViewRelationDateValueComponent.release(ctx)
}
FLOW_SET_OR_COLLECTION -> {
componentManager().setOrCollectionRelationDateValueComponent.release(ctx)
}
else -> {
componentManager().objectRelationDateValueComponent.release(ctx)
}
}
}
@ -171,7 +183,8 @@ open class RelationDateValueFragment : BaseBottomSheetFragment<FragmentRelationD
const val FLOW_KEY = "arg.relation.date.flow"
const val FLOW_DEFAULT = 0
const val FLOW_DATAVIEW = 1
const val FLOW_DV = 1
const val FLOW_SET_OR_COLLECTION = 2
}
interface DateValueEditReceiver {

View file

@ -712,7 +712,7 @@ open class ObjectSetFragment :
val fr = RelationDateValueFragment.new(
ctx = ctx,
objectId = command.objectId,
flow = RelationDateValueFragment.FLOW_DATAVIEW,
flow = RelationDateValueFragment.FLOW_DV,
relationKey = command.relationKey
)
fr.showChildFragment(EMPTY_TAG)

View file

@ -35,6 +35,48 @@ class DataViewObjectRelationProvider(
}
}
override fun observe(relation: Key): Flow<ObjectWrapper.Relation> {
return objectState
.filterIsInstance<ObjectState.DataView>()
.map { it.dataViewContent.relationLinks }
.distinctUntilChanged()
.mapNotNull { storeOfRelations.getByKey(relation) }
}
}
class SetOrCollectionRelationProvider(
private val objectState: StateFlow<ObjectState>,
private val storeOfRelations: StoreOfRelations
) : ObjectRelationProvider {
override suspend fun get(relation: Key): ObjectWrapper.Relation {
return storeOfRelations.getByKey(relation)
?: throw IllegalStateException("Could not found relation by key: $relation")
}
override suspend fun getById(relation: Id): ObjectWrapper.Relation {
return storeOfRelations.getById(relation)
?: throw IllegalStateException("Could not find relation by id: $relation")
}
override fun observeAll(): Flow<List<ObjectWrapper.Relation>> {
return objectState.map { set ->
when (set) {
is ObjectState.DataView.Collection -> {
set.objectRelationLinks.mapNotNull {
storeOfRelations.getByKey(it.key)
}
}
is ObjectState.DataView.Set ->
set.objectRelationLinks.mapNotNull {
storeOfRelations.getByKey(it.key)
}
ObjectState.ErrorLayout -> emptyList()
ObjectState.Init -> emptyList()
}
}
}
override fun observe(relation: Key): Flow<ObjectWrapper.Relation> {
return objectState
.filterIsInstance<ObjectState.DataView>()

View file

@ -10,4 +10,15 @@ interface ObjectRelationProvider {
suspend fun getById(relation: Id) : ObjectWrapper.Relation
fun observe(relation: Key): Flow<ObjectWrapper.Relation>
fun observeAll(): Flow<List<ObjectWrapper.Relation>>
companion object {
/**
* Provider which should provide intrinsic relations of given object, be it a page, a collection or a set
*/
const val INTRINSIC_PROVIDER_TYPE = "object-intrinsic-relations-provider"
/**
* Provider which should provide relations for a data view from an object, a collection or a set.
*/
const val DATA_VIEW_PROVIDER_TYPE = "data-view-relations-provider"
}
}

View file

@ -243,7 +243,9 @@ class DefaultObjectStateReducer : ObjectStateReducer {
event: Command.DataView.SetRelation
): ObjectState {
val updateBlockContent = { content: Block.Content.DataView ->
content.copy(relationLinks = content.relationLinks + event.links)
content.copy(
relationLinks = content.relationLinks + event.links
)
}
return when (state) {
is ObjectState.DataView.Collection -> state.updateBlockContent(