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:
parent
f8b964e795
commit
edbdaeb8ff
19 changed files with 245 additions and 71 deletions
|
@ -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
|
||||
)
|
||||
)
|
||||
|
||||
|
|
|
@ -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()
|
||||
}
|
||||
|
||||
|
|
|
@ -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
|
||||
)
|
||||
)
|
||||
}
|
|
@ -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
|
||||
)
|
||||
}
|
|
@ -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,
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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()
|
||||
}
|
||||
|
|
|
@ -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
|
||||
}
|
||||
)
|
||||
)
|
||||
}
|
||||
|
|
|
@ -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"
|
||||
}
|
||||
}
|
|
@ -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 {
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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>()
|
||||
|
|
|
@ -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"
|
||||
}
|
||||
}
|
|
@ -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(
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue