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

View File

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

View File

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

View File

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