Load data in parallel to improve startup time

This commit is contained in:
Thomas Moeller 2024-10-15 22:16:40 +02:00 committed by tomaThomas
parent f41a8002c6
commit 7e50f29d54
No known key found for this signature in database
GPG key ID: DEE963DC84059108

View file

@ -32,6 +32,8 @@ import code.name.monkey.retromusic.util.PreferenceUtil
import code.name.monkey.retromusic.util.logD
import kotlinx.coroutines.Dispatchers.IO
import kotlinx.coroutines.Dispatchers.Main
import kotlinx.coroutines.async
import kotlinx.coroutines.awaitAll
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import java.io.File
@ -58,14 +60,18 @@ class LibraryViewModel(
loadLibraryContent()
}
private fun loadLibraryContent() = viewModelScope.launch(IO) {
private fun loadLibraryContent() {
viewModelScope.launch(IO) {
fetchHomeSections()
fetchSuggestions()
fetchSongs()
fetchAlbums()
fetchArtists()
fetchGenres()
fetchPlaylists()
awaitAll(
async { fetchSuggestions() },
async { fetchSongs() },
async { fetchAlbums() },
async { fetchArtists() },
async { fetchGenres() },
async { fetchPlaylists() },
)
}
}
fun getSearchResult(): LiveData<List<Any>> = searchResults
@ -333,8 +339,12 @@ class LibraryViewModel(
createPlaylist(PlaylistEntity(playlistName = playlistName))
insertSongs(songs.map { it.toSongEntity(playlistId) })
withContext(Main) {
context.showToast(context.getString(R.string.playlist_created_sucessfully,
playlistName))
context.showToast(
context.getString(
R.string.playlist_created_sucessfully,
playlistName
)
)
}
} else {
val playlist = playlists.firstOrNull()
@ -350,7 +360,9 @@ class LibraryViewModel(
context.getString(
R.string.added_song_count_to_playlist,
songs.size,
playlistName))
playlistName
)
)
}
}
}