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
}