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
       )
     }
 }