Rename MusicRepository -> MusicService

This commit is contained in:
MM20 2023-02-12 22:41:48 +01:00
parent fc2e239dfa
commit dbdce7bcab
No known key found for this signature in database
GPG Key ID: 0B61A8F2DEAFA389
5 changed files with 35 additions and 35 deletions

View File

@ -27,7 +27,7 @@ import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.dp
import de.mm20.launcher2.music.MusicRepository
import de.mm20.launcher2.music.MusicService
import de.mm20.launcher2.music.PlaybackState
import de.mm20.launcher2.preferences.Settings.ClockWidgetSettings.ClockWidgetLayout
import de.mm20.launcher2.ui.R
@ -39,10 +39,10 @@ import org.koin.core.component.inject
class MusicPartProvider : PartProvider, KoinComponent {
private val musicRepository: MusicRepository by inject()
private val musicService: MusicService by inject()
override fun getRanking(context: Context): Flow<Int> = channelFlow {
musicRepository.playbackState.collectLatest {
musicService.playbackState.collectLatest {
if (it == PlaybackState.Stopped) send(0)
else send(50)
}
@ -52,9 +52,9 @@ class MusicPartProvider : PartProvider, KoinComponent {
override fun Component(layout: ClockWidgetLayout) {
val context = LocalContext.current
val title by musicRepository.title.collectAsState(null)
val artist by musicRepository.artist.collectAsState(null)
val state by musicRepository.playbackState.collectAsState(PlaybackState.Stopped)
val title by musicService.title.collectAsState(null)
val artist by musicService.artist.collectAsState(null)
val state by musicService.playbackState.collectAsState(PlaybackState.Stopped)
val playIcon = AnimatedImageVector.animatedVectorResource(R.drawable.anim_ic_play_pause)
@ -69,12 +69,12 @@ class MusicPartProvider : PartProvider, KoinComponent {
.combinedClickable(
onClick = {
try {
musicRepository.openPlayer()?.send()
musicService.openPlayer()?.send()
} catch (e: PendingIntent.CanceledException) {
}
},
onLongClick = {
musicRepository.openPlayerChooser(context)
musicService.openPlayerChooser(context)
}
)
) {
@ -95,7 +95,7 @@ class MusicPartProvider : PartProvider, KoinComponent {
)
}
}
IconButton(onClick = { musicRepository.togglePause() }) {
IconButton(onClick = { musicService.togglePause() }) {
Icon(
painter = rememberAnimatedVectorPainter(
animatedImageVector = playIcon,
@ -103,7 +103,7 @@ class MusicPartProvider : PartProvider, KoinComponent {
), contentDescription = null
)
}
IconButton(onClick = { musicRepository.next() }) {
IconButton(onClick = { musicService.next() }) {
Icon(
imageVector = Icons.Rounded.SkipNext,
contentDescription = null
@ -121,12 +121,12 @@ class MusicPartProvider : PartProvider, KoinComponent {
.combinedClickable(
onClick = {
try {
musicRepository.openPlayer()?.send()
musicService.openPlayer()?.send()
} catch (e: PendingIntent.CanceledException) {
}
},
onLongClick = {
musicRepository.openPlayerChooser(context)
musicService.openPlayerChooser(context)
}
),
horizontalAlignment = Alignment.CenterHorizontally
@ -151,13 +151,13 @@ class MusicPartProvider : PartProvider, KoinComponent {
}
}
Row {
IconButton(onClick = { musicRepository.previous() }) {
IconButton(onClick = { musicService.previous() }) {
Icon(
imageVector = Icons.Rounded.SkipPrevious,
contentDescription = null
)
}
IconButton(onClick = { musicRepository.togglePause() }) {
IconButton(onClick = { musicService.togglePause() }) {
Icon(
painter = rememberAnimatedVectorPainter(
animatedImageVector = playIcon,
@ -165,7 +165,7 @@ class MusicPartProvider : PartProvider, KoinComponent {
), contentDescription = null
)
}
IconButton(onClick = { musicRepository.next() }) {
IconButton(onClick = { musicService.next() }) {
Icon(
imageVector = Icons.Rounded.SkipNext,
contentDescription = null

View File

@ -8,7 +8,7 @@ import androidx.lifecycle.LiveData
import androidx.lifecycle.ViewModel
import androidx.lifecycle.asLiveData
import de.mm20.launcher2.crashreporter.CrashReporter
import de.mm20.launcher2.music.MusicRepository
import de.mm20.launcher2.music.MusicService
import de.mm20.launcher2.music.PlaybackState
import de.mm20.launcher2.permissions.PermissionGroup
import de.mm20.launcher2.permissions.PermissionsManager
@ -16,42 +16,42 @@ import org.koin.core.component.KoinComponent
import org.koin.core.component.inject
class MusicWidgetVM: ViewModel(), KoinComponent {
private val musicRepository: MusicRepository by inject()
private val musicService: MusicService by inject()
private val permissionsManager: PermissionsManager by inject()
val title: LiveData<String?> = musicRepository.title.asLiveData()
val artist: LiveData<String?> = musicRepository.artist.asLiveData()
val album: LiveData<String?> = musicRepository.album.asLiveData()
val albumArt: LiveData<Bitmap?> = musicRepository.albumArt.asLiveData()
val playbackState: LiveData<PlaybackState> = musicRepository.playbackState.asLiveData()
val title: LiveData<String?> = musicService.title.asLiveData()
val artist: LiveData<String?> = musicService.artist.asLiveData()
val album: LiveData<String?> = musicService.album.asLiveData()
val albumArt: LiveData<Bitmap?> = musicService.albumArt.asLiveData()
val playbackState: LiveData<PlaybackState> = musicService.playbackState.asLiveData()
val hasPermission = permissionsManager.hasPermission(PermissionGroup.Notifications).asLiveData()
val currentPlayerPackage
get() = musicRepository.lastPlayerPackage
get() = musicService.lastPlayerPackage
fun skipPrevious() {
musicRepository.previous()
musicService.previous()
}
fun skipNext() {
musicRepository.next()
musicService.next()
}
fun togglePause() {
musicRepository.togglePause()
musicService.togglePause()
}
fun openPlayer() {
try {
musicRepository.openPlayer()?.send()
musicService.openPlayer()?.send()
} catch (e: PendingIntent.CanceledException) {
CrashReporter.logException(e)
}
}
fun openPlayerSelector(context: Context) {
musicRepository.openPlayerChooser(context)
musicService.openPlayerChooser(context)
}
fun requestPermission(context: AppCompatActivity) {

View File

@ -4,7 +4,7 @@ import androidx.appcompat.app.AppCompatActivity
import androidx.lifecycle.ViewModel
import androidx.lifecycle.asLiveData
import androidx.lifecycle.viewModelScope
import de.mm20.launcher2.music.MusicRepository
import de.mm20.launcher2.music.MusicService
import de.mm20.launcher2.permissions.PermissionGroup
import de.mm20.launcher2.permissions.PermissionsManager
import de.mm20.launcher2.preferences.LauncherDataStore
@ -15,7 +15,7 @@ import org.koin.core.component.inject
class MusicWidgetSettingsScreenVM : ViewModel(), KoinComponent {
private val permissionsManager: PermissionsManager by inject()
private val musicRepository: MusicRepository by inject()
private val musicService: MusicService by inject()
private val dataStore: LauncherDataStore by inject()
val hasPermission =
permissionsManager.hasPermission(PermissionGroup.Notifications).asLiveData()
@ -40,7 +40,7 @@ class MusicWidgetSettingsScreenVM : ViewModel(), KoinComponent {
}
fun resetWidget() {
musicRepository.resetPlayer()
musicService.resetPlayer()
}
}

View File

@ -4,5 +4,5 @@ import org.koin.android.ext.koin.androidContext
import org.koin.dsl.module
val musicModule = module {
single<MusicRepository> { MusicRepositoryImpl(androidContext(), get()) }
single<MusicService> { MusicServiceImpl(androidContext(), get()) }
}

View File

@ -44,7 +44,7 @@ import org.koin.core.component.KoinComponent
import org.koin.core.component.inject
import java.io.IOException
interface MusicRepository {
interface MusicService {
val playbackState: Flow<PlaybackState>
val title: Flow<String?>
val artist: Flow<String?>
@ -65,10 +65,10 @@ interface MusicRepository {
fun resetPlayer()
}
internal class MusicRepositoryImpl(
internal class MusicServiceImpl(
private val context: Context,
notificationRepository: NotificationRepository
) : MusicRepository, KoinComponent {
) : MusicService, KoinComponent {
private val scope = CoroutineScope(Job() + Dispatchers.Default)
private val dataStore: LauncherDataStore by inject()