anytype-kotlin-wild/app/src/main/java/com/anytypeio/anytype/di/feature/SplashDi.kt
Evgenii Kozlov 36fe52e5ad
DROID-607 Relations & types and options | Refactoring | Everything-is-an-object refactoring (#2720)
* DROID-439 App | Relations refactoring, use SearchObjects for object types (#2592)
* DROID-446 Objects | Enhancement | Store relation links and process its updates (#2597)
* DROID-456 Tech | Remove deprecated API for creating object types (#2601)
* DROID-455 Object types | Enhancement Get object type list from ObjectSearch on Global search screen (#2602)
* DROID-459 Sets | Refactoring | Use relations links instead of relations for building search params to get data view data (#2603)
* DROID-458 Objects | Refactoring | Integrate new api for creating objets (#2604)
* DROID-464 Relations | Refactoring | New API for creating a relation from scratch - for data view or for an object (#2605)
* DROID-467 Relations | Refactoring | New API for creating options - for tags and statuses (#2607)
* DROID-470 Relations | Refactoring | New API for removing any relation from an object or from a data view (#2608)
* DROID-460 Tech | Object relations list (#2610)
* DROID-486 Sets | Refactoring | Displaying and controlling visibility of data view relations (#2611)
* DROID-500 Relations | Refactoring | Extend API of ObjectStore to be able to get a relation by its id (#2619)
* DROID-459 Sets | Fix | Get relations from store by id and not by key (#2618)
* DROID-489 Tech | Relations as object, add relationKey to relation connected screens (#2622)
* DROID-490 Sets | Refactoring | Displaying relation values for current object in bottom sheet cells (#2629)
* DROID-505 Relations | Refactoring | New interface for relations store (#2633)
* DROID-509 Relations | Refactoring | Bind new relations store with subscription container (#2635)
* DROID-507 Tech | MW , migration + relation links (#2636)
* DROID-507 Tech | MW , migration + relation links, fixes (#2637)
* DROID-517 Sets | Fix | Provide correct keys for data view search-and-subscribe query (#2641)
* DROID-409 Relations | Refactoring | Use relation key instead of id when creating new relation (#2642)
* DROID-521 Sets & Objects | Refactoring | Add relation to a data view or to an object from existing relations (#2644)
* DROID-522 Relations | Refactoring | Add objects to relations with object format (#2645)
* DROID-523 Object types | Refactoring | Implement global store for object types (#2646)
* DROID-527 Object types | Refactoring | Integrate global store for object types (#2647)
* DROID-531 Relations | Refactoring | Parse tag and status relations values (#2649)
* DROID-535 Tech | Integrate new MW lib with migration fixes (#2653)
* DROID-535 Tech | MW integration fixes (#2660)
* DROID-559 Relations | Refactoring | Parse tag and status values in editor (#2662)
* DROID-560 Relations | Refactoring | Integrate new lib with fixes (#2663)
* DROID-561 Relations | Refactoring | Parsing tag and status values in dv (#2665)
* DROID-562 Dashboard | Refactoring | Use store of object types as object type provider for favorites tab on dashboard (#2667)
* DROID-567 Relations | Refactoring | Suggest available options to populate a relation (#2671)
* DROID-604 Relations | Refactoring | Use details from Object.CreateRelation.Response to populate relation store (#2705)
* DROID-603 Relations | Refactoring | Creating relation options + Deleting relation from object (#2706)
* DROID-619 Relations | Refactoring | Migrate data view sorts and filters to the new relation-as-object paradigm (#2711)
* DROID-622 Relations | Tech | Update MW to 0.24.0-rc1 (#2714)
* DROID-598 Sets | Refactoring | Provide relation format for date filters (#2715)
* DROID-625 Protocol | Enhancement | Integrate v0.24.0-rc2 (#2718)
2022-11-24 18:11:19 +03:00

145 lines
4.9 KiB
Kotlin

package com.anytypeio.anytype.di.feature
import com.anytypeio.anytype.analytics.base.Analytics
import com.anytypeio.anytype.core_utils.di.scope.PerScreen
import com.anytypeio.anytype.domain.`object`.ObjectTypesProvider
import com.anytypeio.anytype.domain.auth.interactor.CheckAuthorizationStatus
import com.anytypeio.anytype.domain.auth.interactor.GetLastOpenedObject
import com.anytypeio.anytype.domain.auth.interactor.LaunchAccount
import com.anytypeio.anytype.domain.auth.interactor.LaunchWallet
import com.anytypeio.anytype.domain.auth.repo.AuthRepository
import com.anytypeio.anytype.domain.block.interactor.sets.StoreObjectTypes
import com.anytypeio.anytype.domain.block.repo.BlockRepository
import com.anytypeio.anytype.domain.config.ConfigStorage
import com.anytypeio.anytype.domain.config.FeaturesConfigProvider
import com.anytypeio.anytype.domain.config.UserSettingsRepository
import com.anytypeio.anytype.domain.device.PathProvider
import com.anytypeio.anytype.domain.launch.GetDefaultEditorType
import com.anytypeio.anytype.domain.launch.SetDefaultEditorType
import com.anytypeio.anytype.domain.misc.AppActionManager
import com.anytypeio.anytype.domain.page.CreatePage
import com.anytypeio.anytype.domain.search.ObjectTypesSubscriptionManager
import com.anytypeio.anytype.domain.search.RelationsSubscriptionManager
import com.anytypeio.anytype.presentation.splash.SplashViewModelFactory
import com.anytypeio.anytype.ui.splash.SplashFragment
import dagger.Module
import dagger.Provides
import dagger.Subcomponent
@PerScreen
@Subcomponent(modules = [SplashModule::class])
interface SplashSubComponent {
@Subcomponent.Builder
interface Builder {
fun build(): SplashSubComponent
fun module(module: SplashModule): Builder
}
fun inject(fragment: SplashFragment)
}
@Module
object SplashModule {
@JvmStatic
@PerScreen
@Provides
fun provideSplashViewModelFactory(
checkAuthorizationStatus: CheckAuthorizationStatus,
launchAccount: LaunchAccount,
launchWallet: LaunchWallet,
analytics: Analytics,
getLastOpenedObject: GetLastOpenedObject,
getDefaultEditorType: GetDefaultEditorType,
setDefaultEditorType: SetDefaultEditorType,
createPage: CreatePage,
appActionManager: AppActionManager,
relationsSubscriptionManager: RelationsSubscriptionManager,
objectTypesSubscriptionManager: ObjectTypesSubscriptionManager
): SplashViewModelFactory = SplashViewModelFactory(
checkAuthorizationStatus = checkAuthorizationStatus,
launchAccount = launchAccount,
launchWallet = launchWallet,
analytics = analytics,
getLastOpenedObject = getLastOpenedObject,
setDefaultEditorType = setDefaultEditorType,
getDefaultEditorType = getDefaultEditorType,
createPage = createPage,
appActionManager = appActionManager,
relationsSubscriptionManager = relationsSubscriptionManager,
objectTypesSubscriptionManager = objectTypesSubscriptionManager
)
@JvmStatic
@PerScreen
@Provides
fun provideCheckAuthorizationStatusUseCase(
authRepository: AuthRepository
): CheckAuthorizationStatus = CheckAuthorizationStatus(
repository = authRepository
)
@JvmStatic
@PerScreen
@Provides
fun provideLaunchAccountUseCase(
authRepository: AuthRepository,
pathProvider: PathProvider,
featuresConfigProvider: FeaturesConfigProvider,
configStorage: ConfigStorage
): LaunchAccount = LaunchAccount(
repository = authRepository,
pathProvider = pathProvider,
featuresConfigProvider = featuresConfigProvider,
configStorage = configStorage
)
@JvmStatic
@PerScreen
@Provides
fun provideLaunchWalletUseCase(
authRepository: AuthRepository,
pathProvider: PathProvider
): LaunchWallet =
LaunchWallet(
repository = authRepository,
pathProvider = pathProvider
)
@JvmStatic
@Provides
@PerScreen
fun provideStoreObjectTypesUseCase(
repo: BlockRepository,
objectTypesProvider: ObjectTypesProvider
) : StoreObjectTypes = StoreObjectTypes(repo, objectTypesProvider)
@JvmStatic
@Provides
@PerScreen
fun getLastOpenedObject(
repo: BlockRepository,
auth: AuthRepository
) : GetLastOpenedObject = GetLastOpenedObject(
authRepo = auth,
blockRepo = repo
)
@JvmStatic
@PerScreen
@Provides
fun provideGetDefaultPageType(repo: UserSettingsRepository): GetDefaultEditorType =
GetDefaultEditorType(repo)
@JvmStatic
@PerScreen
@Provides
fun provideSetDefaultPageType(repo: UserSettingsRepository): SetDefaultEditorType =
SetDefaultEditorType(repo)
@JvmStatic
@PerScreen
@Provides
fun provideCreatePage(repo: BlockRepository): CreatePage = CreatePage(repo = repo)
}