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