diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/LibraryViewModel.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/LibraryViewModel.kt index 2ca92ef72..dfcbbf4d9 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/LibraryViewModel.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/LibraryViewModel.kt @@ -69,41 +69,23 @@ class LibraryViewModel( fun getSearchResult(): LiveData> = searchResults - fun getSongs(): LiveData> { - return songs - } + fun getSongs(): LiveData> = songs - fun getAlbums(): LiveData> { - return albums - } + fun getAlbums(): LiveData> = albums - fun getArtists(): LiveData> { - return artists - } + fun getArtists(): LiveData> = artists - fun getPlaylists(): LiveData> { - return playlists - } + fun getPlaylists(): LiveData> = playlists - fun getLegacyPlaylist(): LiveData> { - return legacyPlaylists - } + fun getLegacyPlaylist(): LiveData> = legacyPlaylists - fun getGenre(): LiveData> { - return genres - } + fun getGenre(): LiveData> = genres - fun getHome(): LiveData> { - return home - } + fun getHome(): LiveData> = home - fun getSuggestions(): LiveData> { - return suggestions - } + fun getSuggestions(): LiveData> = suggestions - fun getFabMargin(): LiveData { - return fabMargin - } + fun getFabMargin(): LiveData = fabMargin private suspend fun fetchSongs() { songs.postValue(repository.allSongs()) @@ -111,7 +93,6 @@ class LibraryViewModel( private suspend fun fetchAlbums() { albums.postValue(repository.fetchAlbums()) - } private suspend fun fetchArtists() { @@ -146,7 +127,7 @@ class LibraryViewModel( fun search(query: String?, filter: Filter) = viewModelScope.launch(IO) { - val result =repository.search(query, filter) + val result = repository.search(query, filter) searchResults.postValue(result) } @@ -273,29 +254,22 @@ class LibraryViewModel( loadLibraryContent() } - fun recentSongs(): LiveData> = liveData { + fun recentSongs(): LiveData> = liveData(IO) { emit(repository.recentSongs()) } - fun playCountSongs(): LiveData> = liveData { - val songs = repository.playCountSongs().map { - it.toSong() - } - emit(songs) - // Cleaning up deleted or moved songs - withContext(IO) { - songs.forEach { song -> - if (!File(song.data).exists() || song.id == -1L) { - repository.deleteSongInPlayCount(song.toPlayCount()) - } + fun playCountSongs(): LiveData> = liveData(IO) { + repository.playCountSongs().forEach { song -> + if (!File(song.data).exists() || song.id == -1L) { + repository.deleteSongInPlayCount(song) } - emit(repository.playCountSongs().map { - it.toSong() - }) } + emit(repository.playCountSongs().map { + it.toSong() + }) } - fun artists(type: Int): LiveData> = liveData { + fun artists(type: Int): LiveData> = liveData(IO) { when (type) { TOP_ARTISTS -> emit(repository.topArtists()) RECENT_ARTISTS -> { @@ -304,7 +278,7 @@ class LibraryViewModel( } } - fun albums(type: Int): LiveData> = liveData { + fun albums(type: Int): LiveData> = liveData(IO) { when (type) { TOP_ALBUMS -> emit(repository.topAlbums()) RECENT_ALBUMS -> { @@ -313,29 +287,25 @@ class LibraryViewModel( } } - fun artist(artistId: Long): LiveData = liveData { + fun artist(artistId: Long): LiveData = liveData(IO) { emit(repository.artistById(artistId)) } - fun fetchContributors(): LiveData> = liveData { + fun fetchContributors(): LiveData> = liveData(IO) { emit(repository.contributor()) } fun observableHistorySongs(): LiveData> { - val songs = repository.historySong().map { - it.toSong() - } - songHistory.value = songs - // Cleaning up deleted or moved songs - viewModelScope.launch { - songs.forEach { song -> + viewModelScope.launch(IO) { + repository.historySong().forEach { song -> if (!File(song.data).exists() || song.id == -1L) { repository.deleteSongInHistory(song.id) } } - } - songHistory.value = repository.historySong().map { - it.toSong() + + songHistory.postValue(repository.historySong().map { + it.toSong() + }) } return songHistory } @@ -366,9 +336,7 @@ class LibraryViewModel( fun favorites() = repository.favorites() fun clearSearchResult() { - viewModelScope.launch { - searchResults.postValue(emptyList()) - } + searchResults.value = emptyList() } fun addToPlaylist(playlistName: String, songs: List) { @@ -396,11 +364,13 @@ class LibraryViewModel( } forceReload(Playlists) withContext(Main) { - Toast.makeText(App.getContext(), App.getContext().getString( - R.string.added_song_count_to_playlist, - songs.size, - playlistName - ), Toast.LENGTH_SHORT).show() + Toast.makeText( + App.getContext(), App.getContext().getString( + R.string.added_song_count_to_playlist, + songs.size, + playlistName + ), Toast.LENGTH_SHORT + ).show() } } } diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/albums/AlbumDetailsViewModel.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/albums/AlbumDetailsViewModel.kt index 4ac3fb663..22d084c4a 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/albums/AlbumDetailsViewModel.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/albums/AlbumDetailsViewModel.kt @@ -52,7 +52,7 @@ class AlbumDetailsViewModel( emit(artist) } - fun getAlbumInfo(album: Album): LiveData> = liveData { + fun getAlbumInfo(album: Album): LiveData> = liveData(IO) { emit(Result.Loading) emit(repository.albumInfo(album.artistName, album.title)) } diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/backup/BackupFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/backup/BackupFragment.kt index 6f137bcfb..d4b5d2c54 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/backup/BackupFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/backup/BackupFragment.kt @@ -47,7 +47,7 @@ class BackupFragment : Fragment(R.layout.fragment_backup), BackupAdapter.BackupC else backupAdapter?.swapDataset(listOf()) } - backupViewModel.loadBackups(requireContext()) + backupViewModel.loadBackups() val openFilePicker = registerForActivityResult(ActivityResultContracts.OpenDocument()) { lifecycleScope.launch(Dispatchers.IO) { it?.let { @@ -98,7 +98,7 @@ class BackupFragment : Fragment(R.layout.fragment_backup), BackupAdapter.BackupC // Text submitted with the action button lifecycleScope.launch { BackupHelper.createBackup(requireContext(), text.sanitize()) - backupViewModel.loadBackups(requireContext()) + backupViewModel.loadBackups() } } positiveButton(android.R.string.ok) @@ -128,7 +128,7 @@ class BackupFragment : Fragment(R.layout.fragment_backup), BackupAdapter.BackupC Toast.LENGTH_SHORT ).show() } - backupViewModel.loadBackups(requireContext()) + backupViewModel.loadBackups() return true } R.id.action_share -> { @@ -149,7 +149,7 @@ class BackupFragment : Fragment(R.layout.fragment_backup), BackupAdapter.BackupC File(file.parent, "$text${BackupHelper.APPEND_EXTENSION}") if (!renamedFile.exists()) { file.renameTo(renamedFile) - backupViewModel.loadBackups(requireContext()) + backupViewModel.loadBackups() } else { Toast.makeText( requireContext(), diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/backup/BackupViewModel.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/backup/BackupViewModel.kt index e506a3b4d..fa6b299a9 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/backup/BackupViewModel.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/backup/BackupViewModel.kt @@ -20,7 +20,7 @@ class BackupViewModel : ViewModel() { private val backupsMutableLiveData = MutableLiveData>() val backupsLiveData: LiveData> = backupsMutableLiveData - fun loadBackups(context: Context) { + fun loadBackups() { BackupHelper.getBackupRoot().listFiles { _, name -> return@listFiles name.endsWith(BackupHelper.BACKUP_EXTENSION) }?.toList()?.let { diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/genres/GenreDetailsViewModel.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/genres/GenreDetailsViewModel.kt index 113ec34cf..cc6918b2c 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/genres/GenreDetailsViewModel.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/genres/GenreDetailsViewModel.kt @@ -22,6 +22,7 @@ import code.name.monkey.retromusic.interfaces.IMusicServiceEventListener import code.name.monkey.retromusic.model.Genre import code.name.monkey.retromusic.model.Song import code.name.monkey.retromusic.repository.RealRepository +import kotlinx.coroutines.Dispatchers.IO import kotlinx.coroutines.Dispatchers.Main import kotlinx.coroutines.launch import kotlinx.coroutines.withContext @@ -44,7 +45,7 @@ class GenreDetailsViewModel( loadGenreSongs(genre) } - private fun loadGenreSongs(genre: Genre) = viewModelScope.launch { + private fun loadGenreSongs(genre: Genre) = viewModelScope.launch(IO) { val songs = realRepository.getGenre(genre.id) withContext(Main) { _playListSongs.postValue(songs) } } diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/home/HomeFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/home/HomeFragment.kt index 292784dff..c8794f149 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/home/HomeFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/home/HomeFragment.kt @@ -21,6 +21,7 @@ import android.view.MenuItem import android.view.MenuItem.SHOW_AS_ACTION_IF_ROOM import android.view.View import androidx.activity.addCallback +import androidx.coordinatorlayout.widget.CoordinatorLayout import androidx.core.os.bundleOf import androidx.core.text.parseAsHtml import androidx.core.view.doOnLayout @@ -29,7 +30,6 @@ import androidx.core.view.isVisible import androidx.navigation.fragment.FragmentNavigatorExtras import androidx.navigation.fragment.findNavController import androidx.recyclerview.widget.LinearLayoutManager -import code.name.monkey.appthemehelper.ThemeStore import code.name.monkey.appthemehelper.common.ATHToolbarActivity import code.name.monkey.appthemehelper.util.ColorUtil import code.name.monkey.appthemehelper.util.ToolbarContentTintHelper @@ -77,12 +77,12 @@ class HomeFragment : layoutManager = LinearLayoutManager(mainActivity) adapter = homeAdapter } - libraryViewModel.getHome().observe(viewLifecycleOwner) { - homeAdapter.swapData(it) - } libraryViewModel.getSuggestions().observe(viewLifecycleOwner) { loadSuggestions(it) } + libraryViewModel.getHome().observe(viewLifecycleOwner) { + homeAdapter.swapData(it) + } loadProfile() setupTitle() @@ -110,7 +110,6 @@ class HomeFragment : button.setLines(maxLineCount) } } - } private fun setupListeners() { @@ -218,16 +217,12 @@ class HomeFragment : } fun setSharedAxisXTransitions() { - exitTransition = MaterialSharedAxis(MaterialSharedAxis.X, true).apply { - addTarget(binding.root) - } + exitTransition = MaterialSharedAxis(MaterialSharedAxis.X, true).addTarget(CoordinatorLayout::class.java) reenterTransition = MaterialSharedAxis(MaterialSharedAxis.X, false) } private fun setSharedAxisYTransitions() { - exitTransition = MaterialSharedAxis(MaterialSharedAxis.Y, true).apply { - addTarget(binding.root) - } + exitTransition = MaterialSharedAxis(MaterialSharedAxis.Y, true).addTarget(CoordinatorLayout::class.java) reenterTransition = MaterialSharedAxis(MaterialSharedAxis.Y, false) } @@ -246,7 +241,7 @@ class HomeFragment : binding.suggestions.image7, binding.suggestions.image8 ) - val color = ThemeStore.accentColor(requireContext()) + val color = accentColor() binding.suggestions.message.apply { setTextColor(color) setOnClickListener { diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/PlayerAlbumCoverFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/PlayerAlbumCoverFragment.kt index d14b0cc03..0eb420560 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/PlayerAlbumCoverFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/PlayerAlbumCoverFragment.kt @@ -80,7 +80,7 @@ class PlayerAlbumCoverFragment : AbsMusicServiceFragment(R.layout.fragment_playe lifecycleScope.launchWhenStarted { viewPager.setPageTransformer(false, transformer) } -} + } private fun updateLyrics() { binding.lyricsView.setLabel(context?.getString(R.string.no_lyrics_found)) @@ -286,7 +286,7 @@ class PlayerAlbumCoverFragment : AbsMusicServiceFragment(R.layout.fragment_playe } else { surfaceColor() } - Color ,Classic -> color.backgroundColor + Color, Classic -> color.backgroundColor Blur -> Color.BLACK else -> surfaceColor() } diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/playlists/PlaylistDetailsViewModel.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/playlists/PlaylistDetailsViewModel.kt index fad139742..0d15a279d 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/playlists/PlaylistDetailsViewModel.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/playlists/PlaylistDetailsViewModel.kt @@ -15,14 +15,10 @@ package code.name.monkey.retromusic.fragments.playlists import androidx.lifecycle.LiveData -import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel import code.name.monkey.retromusic.db.PlaylistWithSongs import code.name.monkey.retromusic.db.SongEntity -import code.name.monkey.retromusic.interfaces.IMusicServiceEventListener -import code.name.monkey.retromusic.model.Song import code.name.monkey.retromusic.repository.RealRepository -import code.name.monkey.retromusic.repository.RealRoomRepository class PlaylistDetailsViewModel( private val realRepository: RealRepository, diff --git a/app/src/main/java/code/name/monkey/retromusic/util/PreferenceUtil.kt b/app/src/main/java/code/name/monkey/retromusic/util/PreferenceUtil.kt index cb46ec2da..e71d3f683 100644 --- a/app/src/main/java/code/name/monkey/retromusic/util/PreferenceUtil.kt +++ b/app/src/main/java/code/name/monkey/retromusic/util/PreferenceUtil.kt @@ -585,7 +585,7 @@ object PreferenceUtil { 4 -> VerticalFlipTransformation() 5 -> HingeTransformation() 6 -> VerticalStackTransformer() - else -> NormalPageTransformer() + else -> ViewPager.PageTransformer { _, _ -> } } } diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml index a1122eb94..3ce1437ca 100755 --- a/app/src/main/res/values/arrays.xml +++ b/app/src/main/res/values/arrays.xml @@ -8,7 +8,7 @@ @string/horizontal_flip @string/hinge @string/stack - @string/classic + @string/simple