Coverage Summary for Class: InjectMainActivityComponentKt (com.vsevolodganin.clicktrack.di.component)
Class |
Class, %
|
Method, %
|
Branch, %
|
Line, %
|
Instruction, %
|
InjectMainActivityComponentKt |
0%
(0/1)
|
0%
(0/1)
|
|
0%
(0/2)
|
0%
(0/7)
|
package com.vsevolodganin.clicktrack.di.component
import android.app.Activity
import androidx.appcompat.app.AppCompatActivity
import com.arkivanov.decompose.ComponentContext
import com.arkivanov.essenty.lifecycle.LifecycleOwner
import com.vsevolodganin.clicktrack.Database
import com.vsevolodganin.clicktrack.IntentProcessor
import com.vsevolodganin.clicktrack.MainActivity
import com.vsevolodganin.clicktrack.RootViewModel
import com.vsevolodganin.clicktrack.RootViewModelImpl
import com.vsevolodganin.clicktrack.ScreenStackNavigation
import com.vsevolodganin.clicktrack.ScreenStackState
import com.vsevolodganin.clicktrack.ScreenViewModelFactory
import com.vsevolodganin.clicktrack.about.AboutViewModelImpl
import com.vsevolodganin.clicktrack.analytics.AnalyticsLogger
import com.vsevolodganin.clicktrack.common.BpmValidator
import com.vsevolodganin.clicktrack.common.BuildConfig
import com.vsevolodganin.clicktrack.common.BuildConfigImpl
import com.vsevolodganin.clicktrack.common.ClickTrackValidator
import com.vsevolodganin.clicktrack.common.InAppReview
import com.vsevolodganin.clicktrack.common.LinkOpener
import com.vsevolodganin.clicktrack.common.NewClickTrackNameSuggester
import com.vsevolodganin.clicktrack.drawer.DrawerNavigation
import com.vsevolodganin.clicktrack.drawer.DrawerNavigationImpl
import com.vsevolodganin.clicktrack.drawer.DrawerViewModelImpl
import com.vsevolodganin.clicktrack.edit.EditClickTrackViewModelImpl
import com.vsevolodganin.clicktrack.export.ExportWorkLauncherImpl
import com.vsevolodganin.clicktrack.language.LanguageStoreImpl
import com.vsevolodganin.clicktrack.list.ClickTrackListViewModelImpl
import com.vsevolodganin.clicktrack.metronome.BpmMeter
import com.vsevolodganin.clicktrack.metronome.MetronomeViewModelImpl
import com.vsevolodganin.clicktrack.migration.MigrationManager
import com.vsevolodganin.clicktrack.play.PlayClickTrackViewModelImpl
import com.vsevolodganin.clicktrack.player.PlayerServiceAccess
import com.vsevolodganin.clicktrack.player.PlayerServiceAccessImpl
import com.vsevolodganin.clicktrack.polyrhythm.PolyrhythmsViewModelImpl
import com.vsevolodganin.clicktrack.settings.SettingsViewModelImpl
import com.vsevolodganin.clicktrack.settings.debug.KotlinCrash
import com.vsevolodganin.clicktrack.settings.debug.NativeCrashImpl
import com.vsevolodganin.clicktrack.soundlibrary.DocumentMetadataHelperImpl
import com.vsevolodganin.clicktrack.soundlibrary.SoundChooserImpl
import com.vsevolodganin.clicktrack.soundlibrary.SoundLibraryViewModelImpl
import com.vsevolodganin.clicktrack.storage.ClickSoundsRepository
import com.vsevolodganin.clicktrack.storage.ClickTrackRepository
import com.vsevolodganin.clicktrack.training.TrainingClickTrackGenerator
import com.vsevolodganin.clicktrack.training.TrainingStateValidator
import com.vsevolodganin.clicktrack.training.TrainingViewModelImpl
import com.vsevolodganin.clicktrack.utils.android.PermissionsHelper
import com.vsevolodganin.clicktrack.utils.log.Logger
import com.vsevolodganin.clicktrack.utils.log.LoggerImpl
import com.vsevolodganin.clicktrack.utils.resources.StringResolver
import kotlin.reflect.KClass
import kotlinx.serialization.json.Json
import me.tatarka.inject.`internal`.LazyMap
import me.tatarka.inject.`internal`.ScopedComponent
public fun KClass<MainActivityComponent>.create(
applicationComponent: ApplicationComponent,
activity: MainActivity,
componentContext: ComponentContext,
): MainActivityComponent = InjectMainActivityComponent(applicationComponent, activity,
componentContext)
public class InjectMainActivityComponent(
applicationComponent: ApplicationComponent,
activity: MainActivity,
componentContext: ComponentContext,
) : MainActivityComponent(applicationComponent, activity, componentContext), ScopedComponent {
override val _scoped: LazyMap = LazyMap()
private val screenStackNavigation: ScreenStackNavigation
get() = _scoped.get("com.vsevolodganin.clicktrack.ScreenStackNavigation") {
provideScreenStackNavigation()
}
private val screenStackState: ScreenStackState
get() {
require(applicationComponent is ScopedComponent)
return _scoped.get("com.vsevolodganin.clicktrack.ScreenStackState") {
provideScreenStackState(
componentContext = componentContext,
stackNavigation = screenStackNavigation,
screenViewModelFactory = ScreenViewModelFactory(
clickTrackListViewModelFactory = { arg0 ->
ClickTrackListViewModelImpl(
componentContext = arg0,
stringResolver = stringResolver,
navigation = screenStackNavigation,
drawerNavigation = drawerNavigation,
clickTrackRepository = clickTrackRepository,
newClickTrackNameSuggester = newClickTrackNameSuggester
)
},
playClickTrackViewModelFactory = { arg0, arg1 ->
PlayClickTrackViewModelImpl(
componentContext = arg0,
config = arg1,
navigation = screenStackNavigation,
clickTrackRepository = clickTrackRepository,
playerServiceAccess = playerServiceAccess,
userPreferences = applicationComponent.userPreferences,
exportWorkLauncher = ExportWorkLauncherImpl(
workManager = applicationComponent._scoped.get("androidx.work.WorkManager") {
applicationComponent.provideWorkManager(
application = applicationComponent.application
)
},
permissionsHelper = permissionsHelper
).binding
)
},
editClickTrackViewModelFactory = { arg0, arg1 ->
EditClickTrackViewModelImpl(
componentContext = arg0,
config = arg1,
navigation = screenStackNavigation,
clickTrackRepository = clickTrackRepository,
clickTrackValidator = ClickTrackValidator(
bpmValidator = BpmValidator()
)
)
},
metronomeViewModelFactory = { arg0 ->
MetronomeViewModelImpl(
componentContext = arg0,
navigation = screenStackNavigation,
userPreferences = applicationComponent.userPreferences,
playerServiceAccess = playerServiceAccess,
bpmMeter = BpmMeter()
)
},
settingsViewModelFactory = { arg0 ->
SettingsViewModelImpl(
componentContext = arg0,
navigation = screenStackNavigation,
userPreferences = applicationComponent.userPreferences,
languageStore =
_scoped.get("com.vsevolodganin.clicktrack.language.LanguageStoreImpl") {
LanguageStoreImpl(
lifecycleOwner = lifecycleOwner
)
}.binding,
kotlinCrashProvider = {
KotlinCrash()
},
nativeCrashProvider = lazy {
NativeCrashImpl().binding
},
logger = logger
)
},
soundLibraryViewModelFactory = { arg0 ->
SoundLibraryViewModelImpl(
componentContext = arg0,
navigation = screenStackNavigation,
userPreferences = applicationComponent.userPreferences,
clickSoundsRepository = clickSoundsRepository,
documentMetadataHelper = DocumentMetadataHelperImpl(
contentResolver =
applicationComponent._scoped.get("android.content.ContentResolver") {
applicationComponent.provideContentResolver(
application = applicationComponent.application
)
},
logger = logger
).binding,
playerServiceAccess = playerServiceAccess,
soundChooser = soundChooser.binding
)
},
trainingViewModelFactory = { arg0 ->
TrainingViewModelImpl(
componentContext = arg0,
stringResolver = stringResolver,
navigation = screenStackNavigation,
clickTrackRepository = clickTrackRepository,
userPreferences = applicationComponent.userPreferences,
stateValidator = TrainingStateValidator(
bpmValidator = BpmValidator()
),
newClickTrackNameSuggester = newClickTrackNameSuggester,
trainingClickTrackGenerator = TrainingClickTrackGenerator()
)
},
aboutViewModelFactory = { arg0 ->
AboutViewModelImpl(
componentContext = arg0,
navigation = screenStackNavigation,
linkOpener = _scoped.get("com.vsevolodganin.clicktrack.common.LinkOpener") {
LinkOpener(
context = activity_
)
},
buildConfig = buildConfig
)
},
polyrhythmsViewModelFactory = { arg0 ->
PolyrhythmsViewModelImpl(
componentContext = arg0,
navigation = screenStackNavigation,
userPreferences = applicationComponent.userPreferences,
playerServiceAccess = playerServiceAccess
)
}
)
)
}
}
private val stringResolver: StringResolver
get() = _scoped.get("com.vsevolodganin.clicktrack.utils.resources.StringResolver") {
StringResolver(
context = activity_
)
}
private val activity_: Activity
get() = _scoped.get("android.app.Activity") {
provideBaseActivity(
activity = activity
)
}
private val drawerNavigation: DrawerNavigation
get() = _scoped.get("com.vsevolodganin.clicktrack.drawer.DrawerNavigation") {
provideDrawerNavigation(
drawerNavigationImpl = drawerNavigationImpl
)
}
private val drawerNavigationImpl: DrawerNavigationImpl
get() = _scoped.get("com.vsevolodganin.clicktrack.drawer.DrawerNavigationImpl") {
provideDrawerNavigationImpl()
}
private val clickTrackRepository: ClickTrackRepository
get() {
require(applicationComponent is ScopedComponent)
return applicationComponent._scoped.get("com.vsevolodganin.clicktrack.storage.ClickTrackRepository") {
ClickTrackRepository(
database = database,
json = json
)
}
}
private val database: Database
get() {
require(applicationComponent is ScopedComponent)
return applicationComponent._scoped.get("com.vsevolodganin.clicktrack.Database") {
applicationComponent.provideDatabase(
application = applicationComponent.application
)
}
}
private val json: Json
get() {
require(applicationComponent is ScopedComponent)
return applicationComponent._scoped.get("kotlinx.serialization.json.Json") {
applicationComponent.provideJson()
}
}
private val newClickTrackNameSuggester: NewClickTrackNameSuggester
get() = NewClickTrackNameSuggester(
storage = clickTrackRepository
)
private val playerServiceAccess: PlayerServiceAccess
get() = _scoped.get("com.vsevolodganin.clicktrack.player.PlayerServiceAccessImpl") {
PlayerServiceAccessImpl(
activity = activity_,
lifecycleOwner = lifecycleOwner
)
}.binding
private val lifecycleOwner: LifecycleOwner
get() = _scoped.get("com.arkivanov.essenty.lifecycle.LifecycleOwner") {
provideLifecycleOwner(
componentContext = componentContext
)
}
private val appCompatActivity: AppCompatActivity
get() = _scoped.get("androidx.appcompat.app.AppCompatActivity") {
provideAppCompatActivity(
activity = activity
)
}
private val logger: Logger
get() {
require(applicationComponent is ScopedComponent)
return with(applicationComponent) {
_scoped.get("com.vsevolodganin.clicktrack.utils.log.LoggerImpl") {
LoggerImpl(
firebaseCrashlytics =
_scoped.get("com.google.firebase.crashlytics.FirebaseCrashlytics") {
provideCrashlytics()
}
)
}.binding
}
}
private val clickSoundsRepository: ClickSoundsRepository
get() {
require(applicationComponent is ScopedComponent)
return applicationComponent._scoped.get("com.vsevolodganin.clicktrack.storage.ClickSoundsRepository") {
ClickSoundsRepository(
database = database,
json = json
)
}
}
private val buildConfig: BuildConfig
get() {
require(applicationComponent is ScopedComponent)
return with(applicationComponent) {
_scoped.get("com.vsevolodganin.clicktrack.common.BuildConfigImpl") {
BuildConfigImpl()
}.binding
}
}
override val intentProcessor: IntentProcessor
get() = _scoped.get("com.vsevolodganin.clicktrack.IntentProcessor") {
IntentProcessor(
navigation = screenStackNavigation,
stackState = screenStackState
)
}
override val migrationManager: MigrationManager
get() = _scoped.get("com.vsevolodganin.clicktrack.migration.MigrationManager") {
MigrationManager(
userPreferencesRepository = applicationComponent.userPreferences,
canMigrate = setOf(
provideCanMigrate(
clickTrackRepository = clickTrackRepository
)
),
buildConfig = buildConfig
)
}
override val rootViewModel: RootViewModel
get() = _scoped.get("com.vsevolodganin.clicktrack.RootViewModel") {
provideRootViewModel(
rootViewModelImpl = _scoped.get("com.vsevolodganin.clicktrack.RootViewModelImpl") {
RootViewModelImpl(
componentContext = componentContext,
drawerViewModel = _scoped.get("com.vsevolodganin.clicktrack.drawer.DrawerViewModel") {
provideDrawerViewModel(
componentContext = componentContext,
drawerViewModelFactory = { arg0 ->
DrawerViewModelImpl(
componentContext = arg0,
stackNavigation = screenStackNavigation,
drawerNavigationSource =
_scoped.get("com.vsevolodganin.clicktrack.drawer.DrawerNavigationSource") {
provideDrawerNavigationSource(
drawerNavigationImpl = drawerNavigationImpl
)
},
screenStackState = screenStackState
)
}
)
},
drawerNavigation = drawerNavigation,
screenStackNavigation = screenStackNavigation,
screenStackState = screenStackState
)
}
)
}
override val inAppReview: InAppReview
get() {
require(applicationComponent is ScopedComponent)
return _scoped.get("com.vsevolodganin.clicktrack.common.InAppReview") {
InAppReview(
reviewManagerProvider = {
provideReviewManager(
application = applicationComponent.application
)
},
activity = activity_,
userPreferencesRepository = applicationComponent.userPreferences,
analyticsLogger =
applicationComponent._scoped.get("com.vsevolodganin.clicktrack.analytics.AnalyticsLogger") {
AnalyticsLogger(
firebaseAnalytics =
applicationComponent._scoped.get("com.google.firebase.analytics.FirebaseAnalytics") {
applicationComponent.provideFirebase(
application = applicationComponent.application
)
}
)
},
logger = logger
)
}
}
override val soundChooser: SoundChooserImpl
get() = _scoped.get("com.vsevolodganin.clicktrack.soundlibrary.SoundChooserImpl") {
SoundChooserImpl(
activity = appCompatActivity,
clickSoundsRepository = clickSoundsRepository,
stateKeeperOwner = _scoped.get("com.arkivanov.essenty.statekeeper.StateKeeperOwner") {
provideStateKeeperOwner(
componentContext = componentContext
)
}
)
}
override val permissionsHelper: PermissionsHelper
get() = _scoped.get("com.vsevolodganin.clicktrack.utils.android.PermissionsHelper") {
PermissionsHelper(
activity = appCompatActivity
)
}
}