Rename MusicRepository -> MusicService
This commit is contained in:
parent
fc2e239dfa
commit
dbdce7bcab
@ -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
|
||||
|
||||
@ -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) {
|
||||
|
||||
@ -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()
|
||||
}
|
||||
|
||||
}
|
||||
@ -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()) }
|
||||
}
|
||||
@ -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()
|
||||
Loading…
x
Reference in New Issue
Block a user