Coverage Summary for Class: InjectPlayerServiceComponentKt (com.vsevolodganin.clicktrack.di.component)

Class Class, % Method, % Branch, % Line, % Instruction, %
InjectPlayerServiceComponentKt 0% (0/1) 0% (0/1) 0% (0/1) 0% (0/5)


 package com.vsevolodganin.clicktrack.di.component
 
 import android.media.AudioManager
 import androidx.core.app.NotificationManagerCompat
 import com.vsevolodganin.clicktrack.Database
 import com.vsevolodganin.clicktrack.IntentFactory
 import com.vsevolodganin.clicktrack.notification.NotificationChannels
 import com.vsevolodganin.clicktrack.player.AudioFocusManager
 import com.vsevolodganin.clicktrack.player.LatencyTracker
 import com.vsevolodganin.clicktrack.player.PlayableContentProvider
 import com.vsevolodganin.clicktrack.player.Player
 import com.vsevolodganin.clicktrack.primitiveaudio.PrimitiveAudioExtractor
 import com.vsevolodganin.clicktrack.primitiveaudio.PrimitiveAudioMonoRenderer
 import com.vsevolodganin.clicktrack.primitiveaudio.PrimitiveAudioPlayer
 import com.vsevolodganin.clicktrack.primitiveaudio.PrimitiveAudioProvider
 import com.vsevolodganin.clicktrack.soundlibrary.UserSelectedSounds
 import com.vsevolodganin.clicktrack.storage.ClickSoundsRepository
 import com.vsevolodganin.clicktrack.storage.ClickTrackRepository
 import com.vsevolodganin.clicktrack.storage.UserPreferencesRepository
 import com.vsevolodganin.clicktrack.utils.log.Logger
 import com.vsevolodganin.clicktrack.utils.log.LoggerImpl
 import kotlin.reflect.KClass
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.serialization.json.Json
 import me.tatarka.inject.`internal`.LazyMap
 import me.tatarka.inject.`internal`.ScopedComponent
 
 public fun KClass<PlayerServiceComponent>.create(applicationComponent: ApplicationComponent):
     PlayerServiceComponent = InjectPlayerServiceComponent(applicationComponent)
 
 public class InjectPlayerServiceComponent(
   applicationComponent: ApplicationComponent,
 ) : PlayerServiceComponent(applicationComponent), ScopedComponent {
   override val _scoped: LazyMap = LazyMap()
 
   private val primitiveAudioPlayer: PrimitiveAudioPlayer
     get() {
       require(applicationComponent is ScopedComponent)
       return _scoped.get("com.vsevolodganin.clicktrack.primitiveaudio.PrimitiveAudioPlayer") {
         PrimitiveAudioPlayer(
           primitiveAudioMonoRendererFactory = { arg0 ->
             PrimitiveAudioMonoRenderer(
               targetSampleRate = arg0,
               primitiveAudioProvider =
                   applicationComponent._scoped.get("com.vsevolodganin.clicktrack.primitiveaudio.PrimitiveAudioProvider") {
                 PrimitiveAudioProvider(
                   application = applicationComponent.application,
                   primitiveAudioExtractor =
                       applicationComponent._scoped.get("com.vsevolodganin.clicktrack.primitiveaudio.PrimitiveAudioExtractor") {
                     PrimitiveAudioExtractor(
                       logger = logger
                     )
                   },
                   contentResolver =
                       applicationComponent._scoped.get("android.content.ContentResolver") {
                     applicationComponent.provideContentResolver(
                       application = applicationComponent.application
                     )
                   },
                   logger = logger
                 )
               }
             )
           },
           audioManager = audioManager,
           logger = logger
         )
       }
     }
 
   private val audioManager: AudioManager
     get() {
       require(applicationComponent is ScopedComponent)
       return applicationComponent._scoped.get("android.media.AudioManager") {
         applicationComponent.provideAudioManager(
           application = applicationComponent.application
         )
       }
     }
 
   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 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()
       }
     }
 
   override val scope: CoroutineScope
     get() = _scoped.get("kotlinx.coroutines.CoroutineScope") {
       providePlayerServiceCoroutineScope()
     }
 
   override val player: Player
     get() {
       require(applicationComponent is ScopedComponent)
       return _scoped.get("com.vsevolodganin.clicktrack.player.Player") {
         Player(
           playerDispatcher =
               _scoped.get("com.vsevolodganin.clicktrack.di.module.PlayerDispatcher") {
             providePlayerCoroutineDispatcher()
           },
           primitiveAudioPlayer = primitiveAudioPlayer,
           clickSoundsRepository = clickSoundsRepository,
           playableContentProvider = playableContentProvider,
           userSelectedSounds =
               applicationComponent._scoped.get("com.vsevolodganin.clicktrack.soundlibrary.UserSelectedSounds") {
             UserSelectedSounds(
               userPreferencesRepository = applicationComponent.userPreferences,
               clickSoundsRepository = clickSoundsRepository
             )
           },
           latencyTracker = latencyTracker,
           logger = logger
         )
       }
     }
 
   override val playableContentProvider: PlayableContentProvider
     get() {
       require(applicationComponent is ScopedComponent)
       return _scoped.get("com.vsevolodganin.clicktrack.player.PlayableContentProvider") {
         PlayableContentProvider(
           application = applicationComponent.application,
           clickTrackRepository =
               applicationComponent._scoped.get("com.vsevolodganin.clicktrack.storage.ClickTrackRepository") {
             ClickTrackRepository(
               database = database,
               json = json
             )
           },
           userPreferences = applicationComponent.userPreferences
         )
       }
     }
 
   override val userPreferences: UserPreferencesRepository
     get() = applicationComponent.userPreferences
 
   override val intentFactory: IntentFactory
     get() = IntentFactory(
       application = applicationComponent.application
     )
 
   override val notificationManager: NotificationManagerCompat
     get() {
       require(applicationComponent is ScopedComponent)
       return applicationComponent._scoped.get("androidx.core.app.NotificationManagerCompat") {
         applicationComponent.provideNotificationManager(
           application = applicationComponent.application
         )
       }
     }
 
   override val notificationChannels: NotificationChannels
     get() {
       require(applicationComponent is ScopedComponent)
       return applicationComponent._scoped.get("com.vsevolodganin.clicktrack.notification.NotificationChannels") {
         NotificationChannels(
           application = applicationComponent.application,
           notificationManager = notificationManager
         )
       }
     }
 
   override val audioFocusManager: AudioFocusManager
     get() = _scoped.get("com.vsevolodganin.clicktrack.player.AudioFocusManager") {
       AudioFocusManager(
         audioManager = audioManager
       )
     }
 
   override val latencyTracker: LatencyTracker
     get() = _scoped.get("com.vsevolodganin.clicktrack.player.LatencyTracker") {
       LatencyTracker(
         primitiveAudioPlayer = primitiveAudioPlayer
       )
     }
 
   override 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
       }
     }
 }