Coverage Summary for Class: PlayableContentProvider (com.vsevolodganin.clicktrack.player)

Class Method, % Branch, % Line, % Instruction, %
PlayableContentProvider 0% (0/3) 0% (0/4) 0% (0/14) 0% (0/57)
PlayableContentProvider$clickTrackFlow$$inlined$map$1 0% (0/2)
PlayableContentProvider$clickTrackFlow$$inlined$map$1$2 0% (0/1)
PlayableContentProvider$clickTrackFlow$$inlined$map$1$2$1
PlayableContentProvider$clickTrackFlow$2 0% (0/1) 0% (0/4) 0% (0/11)
Total 0% (0/7) 0% (0/4) 0% (0/18) 0% (0/68)


 package com.vsevolodganin.clicktrack.player
 
 import android.app.Application
 import com.vsevolodganin.clicktrack.di.component.PlayerServiceScope
 import com.vsevolodganin.clicktrack.metronome.metronomeClickTrack
 import com.vsevolodganin.clicktrack.model.ClickTrack
 import com.vsevolodganin.clicktrack.model.ClickTrackId
 import com.vsevolodganin.clicktrack.model.TwoLayerPolyrhythm
 import com.vsevolodganin.clicktrack.soundlibrary.soundTestClickTrack
 import com.vsevolodganin.clicktrack.storage.ClickTrackRepository
 import com.vsevolodganin.clicktrack.storage.UserPreferencesRepository
 import kotlinx.coroutines.flow.Flow
 import kotlinx.coroutines.flow.combine
 import kotlinx.coroutines.flow.flowOf
 import kotlinx.coroutines.flow.map
 import me.tatarka.inject.annotations.Inject
 import com.vsevolodganin.clicktrack.multiplatform.R as MR
 
 @PlayerServiceScope
 @Inject
 class PlayableContentProvider(
     private val application: Application,
     private val clickTrackRepository: ClickTrackRepository,
     private val userPreferences: UserPreferencesRepository,
 ) {
     fun clickTrackFlow(id: ClickTrackId): Flow<ClickTrack?> {
         return when (id) {
             is ClickTrackId.Database -> {
                 clickTrackRepository.getById(id).map { it?.value }
             }
             is ClickTrackId.Builtin.ClickSoundsTest -> {
                 flowOf(soundTestClickTrack())
             }
             is ClickTrackId.Builtin.Metronome -> {
                 combine(
                     userPreferences.metronomeBpm.flow,
                     userPreferences.metronomePattern.flow,
                 ) { bpm, pattern ->
                     metronomeClickTrack(
                         name = application.getString(MR.string.general_metronome_click_track_title),
                         bpm = bpm,
                         pattern = pattern,
                     )
                 }
             }
         }
     }
 
     fun twoLayerPolyrhythmFlow(): Flow<TwoLayerPolyrhythm> = userPreferences.polyrhythm.flow
 }