Code refactor
This commit is contained in:
parent
b54c561070
commit
f013cf296d
6 changed files with 44 additions and 39 deletions
|
@ -129,7 +129,8 @@ dependencies {
|
||||||
implementation "com.afollestad.material-dialogs:core:$material_dialog_version"
|
implementation "com.afollestad.material-dialogs:core:$material_dialog_version"
|
||||||
implementation "com.afollestad.material-dialogs:commons:$material_dialog_version"
|
implementation "com.afollestad.material-dialogs:commons:$material_dialog_version"
|
||||||
implementation 'com.afollestad:material-cab:0.1.12'
|
implementation 'com.afollestad:material-cab:0.1.12'
|
||||||
|
implementation 'com.afollestad:recyclical:1.1.1'
|
||||||
|
|
||||||
implementation 'com.github.bumptech.glide:glide:3.8.0'
|
implementation 'com.github.bumptech.glide:glide:3.8.0'
|
||||||
implementation 'com.github.bumptech.glide:okhttp3-integration:1.5.0'
|
implementation 'com.github.bumptech.glide:okhttp3-integration:1.5.0'
|
||||||
implementation 'com.squareup.okhttp3:logging-interceptor:3.6.0'
|
implementation 'com.squareup.okhttp3:logging-interceptor:3.6.0'
|
||||||
|
@ -180,5 +181,8 @@ dependencies {
|
||||||
implementation "androidx.room:room-runtime:$room_version"
|
implementation "androidx.room:room-runtime:$room_version"
|
||||||
kapt "androidx.room:room-compiler:$room_version"
|
kapt "androidx.room:room-compiler:$room_version"
|
||||||
implementation "androidx.room:room-ktx:$room_version"
|
implementation "androidx.room:room-ktx:$room_version"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
debugImplementation 'com.amitshekhar.android:debug-db:1.0.6'
|
debugImplementation 'com.amitshekhar.android:debug-db:1.0.6'
|
||||||
}
|
}
|
|
@ -64,7 +64,7 @@ class HomeAdapter(
|
||||||
when (getItemViewType(position)) {
|
when (getItemViewType(position)) {
|
||||||
RECENT_ALBUMS -> {
|
RECENT_ALBUMS -> {
|
||||||
val viewHolder = holder as AlbumViewHolder
|
val viewHolder = holder as AlbumViewHolder
|
||||||
viewHolder.bindView(home.arrayList as List<Album>, R.string.recent_albums)
|
viewHolder.bindView(home)
|
||||||
viewHolder.clickableArea.setOnClickListener {
|
viewHolder.clickableArea.setOnClickListener {
|
||||||
activity.findNavController(R.id.fragment_container).navigate(
|
activity.findNavController(R.id.fragment_container).navigate(
|
||||||
R.id.detailListFragment,
|
R.id.detailListFragment,
|
||||||
|
@ -74,7 +74,7 @@ class HomeAdapter(
|
||||||
}
|
}
|
||||||
TOP_ALBUMS -> {
|
TOP_ALBUMS -> {
|
||||||
val viewHolder = holder as AlbumViewHolder
|
val viewHolder = holder as AlbumViewHolder
|
||||||
viewHolder.bindView(home.arrayList as List<Album>, R.string.top_albums)
|
viewHolder.bindView(home)
|
||||||
viewHolder.clickableArea.setOnClickListener {
|
viewHolder.clickableArea.setOnClickListener {
|
||||||
activity.findNavController(R.id.fragment_container).navigate(
|
activity.findNavController(R.id.fragment_container).navigate(
|
||||||
R.id.detailListFragment,
|
R.id.detailListFragment,
|
||||||
|
@ -84,7 +84,7 @@ class HomeAdapter(
|
||||||
}
|
}
|
||||||
RECENT_ARTISTS -> {
|
RECENT_ARTISTS -> {
|
||||||
val viewHolder = holder as ArtistViewHolder
|
val viewHolder = holder as ArtistViewHolder
|
||||||
viewHolder.bindView(home.arrayList, R.string.recent_artists)
|
viewHolder.bindView(home)
|
||||||
viewHolder.clickableArea.setOnClickListener {
|
viewHolder.clickableArea.setOnClickListener {
|
||||||
activity.findNavController(R.id.fragment_container).navigate(
|
activity.findNavController(R.id.fragment_container).navigate(
|
||||||
R.id.detailListFragment,
|
R.id.detailListFragment,
|
||||||
|
@ -94,7 +94,7 @@ class HomeAdapter(
|
||||||
}
|
}
|
||||||
TOP_ARTISTS -> {
|
TOP_ARTISTS -> {
|
||||||
val viewHolder = holder as ArtistViewHolder
|
val viewHolder = holder as ArtistViewHolder
|
||||||
viewHolder.bindView(home.arrayList, R.string.top_artists)
|
viewHolder.bindView(home)
|
||||||
viewHolder.clickableArea.setOnClickListener {
|
viewHolder.clickableArea.setOnClickListener {
|
||||||
activity.findNavController(R.id.fragment_container).navigate(
|
activity.findNavController(R.id.fragment_container).navigate(
|
||||||
R.id.detailListFragment,
|
R.id.detailListFragment,
|
||||||
|
@ -104,11 +104,11 @@ class HomeAdapter(
|
||||||
}
|
}
|
||||||
SUGGESTIONS -> {
|
SUGGESTIONS -> {
|
||||||
val viewHolder = holder as SuggestionsViewHolder
|
val viewHolder = holder as SuggestionsViewHolder
|
||||||
viewHolder.bindView(home.arrayList)
|
viewHolder.bindView(home)
|
||||||
}
|
}
|
||||||
FAVOURITES -> {
|
FAVOURITES -> {
|
||||||
val viewHolder = holder as PlaylistViewHolder
|
val viewHolder = holder as PlaylistViewHolder
|
||||||
viewHolder.bindView(home.arrayList, R.string.favorites)
|
viewHolder.bindView(home)
|
||||||
viewHolder.clickableArea.setOnClickListener {
|
viewHolder.clickableArea.setOnClickListener {
|
||||||
activity.findNavController(R.id.fragment_container).navigate(
|
activity.findNavController(R.id.fragment_container).navigate(
|
||||||
R.id.detailListFragment,
|
R.id.detailListFragment,
|
||||||
|
@ -118,7 +118,7 @@ class HomeAdapter(
|
||||||
}
|
}
|
||||||
GENRES -> {
|
GENRES -> {
|
||||||
val viewHolder = holder as GenreViewHolder
|
val viewHolder = holder as GenreViewHolder
|
||||||
viewHolder.bind(home.arrayList, R.string.genres)
|
viewHolder.bind(home)
|
||||||
}
|
}
|
||||||
PLAYLISTS -> {
|
PLAYLISTS -> {
|
||||||
|
|
||||||
|
@ -136,22 +136,22 @@ class HomeAdapter(
|
||||||
}
|
}
|
||||||
|
|
||||||
private inner class AlbumViewHolder(view: View) : AbsHomeViewItem(view) {
|
private inner class AlbumViewHolder(view: View) : AbsHomeViewItem(view) {
|
||||||
fun bindView(albums: List<Album>, titleRes: Int) {
|
fun bindView(home: Home) {
|
||||||
title.text = activity.getString(titleRes)
|
title.setText(home.titleRes)
|
||||||
recyclerView.apply {
|
recyclerView.apply {
|
||||||
adapter = albumAdapter(albums)
|
adapter = albumAdapter(home.arrayList as List<Album>)
|
||||||
layoutManager = gridLayoutManager()
|
layoutManager = gridLayoutManager()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private inner class ArtistViewHolder(view: View) : AbsHomeViewItem(view) {
|
private inner class ArtistViewHolder(view: View) : AbsHomeViewItem(view) {
|
||||||
fun bindView(artists: List<Any>, titleRes: Int) {
|
fun bindView(home: Home) {
|
||||||
|
title.setText(home.titleRes)
|
||||||
recyclerView.apply {
|
recyclerView.apply {
|
||||||
layoutManager = linearLayoutManager()
|
layoutManager = linearLayoutManager()
|
||||||
adapter = artistsAdapter(artists as List<Artist>)
|
adapter = artistsAdapter(home.arrayList as List<Artist>)
|
||||||
}
|
}
|
||||||
title.text = activity.getString(titleRes)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -167,8 +167,7 @@ class HomeAdapter(
|
||||||
R.id.image8
|
R.id.image8
|
||||||
)
|
)
|
||||||
|
|
||||||
fun bindView(songs: List<Any>) {
|
fun bindView(home: Home) {
|
||||||
songs as List<Song>
|
|
||||||
val color = ThemeStore.accentColor(activity)
|
val color = ThemeStore.accentColor(activity)
|
||||||
itemView.findViewById<TextView>(R.id.message).setTextColor(color)
|
itemView.findViewById<TextView>(R.id.message).setTextColor(color)
|
||||||
itemView.findViewById<MaterialCardView>(R.id.card6).apply {
|
itemView.findViewById<MaterialCardView>(R.id.card6).apply {
|
||||||
|
@ -176,9 +175,9 @@ class HomeAdapter(
|
||||||
}
|
}
|
||||||
images.forEachIndexed { index, id ->
|
images.forEachIndexed { index, id ->
|
||||||
itemView.findViewById<View>(id).setOnClickListener {
|
itemView.findViewById<View>(id).setOnClickListener {
|
||||||
MusicPlayerRemote.playNext(songs[index])
|
MusicPlayerRemote.playNext(home.arrayList[index] as Song)
|
||||||
}
|
}
|
||||||
SongGlideRequest.Builder.from(Glide.with(activity), songs[index])
|
SongGlideRequest.Builder.from(Glide.with(activity), home.arrayList[index] as Song)
|
||||||
.asBitmap()
|
.asBitmap()
|
||||||
.build()
|
.build()
|
||||||
.into(itemView.findViewById(id))
|
.into(itemView.findViewById(id))
|
||||||
|
@ -188,28 +187,28 @@ class HomeAdapter(
|
||||||
}
|
}
|
||||||
|
|
||||||
private inner class PlaylistViewHolder(view: View) : AbsHomeViewItem(view) {
|
private inner class PlaylistViewHolder(view: View) : AbsHomeViewItem(view) {
|
||||||
fun bindView(songs: List<Any>, titleRes: Int) {
|
fun bindView(home: Home) {
|
||||||
|
title.setText(home.titleRes)
|
||||||
recyclerView.apply {
|
recyclerView.apply {
|
||||||
val songAdapter = SongAdapter(
|
val songAdapter = SongAdapter(
|
||||||
activity,
|
activity,
|
||||||
songs as MutableList<Song>,
|
home.arrayList as MutableList<Song>,
|
||||||
R.layout.item_album_card, null
|
R.layout.item_album_card, null
|
||||||
)
|
)
|
||||||
layoutManager = linearLayoutManager()
|
layoutManager = linearLayoutManager()
|
||||||
adapter = songAdapter
|
adapter = songAdapter
|
||||||
}
|
}
|
||||||
title.text = activity.getString(titleRes)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private inner class GenreViewHolder(itemView: View) : AbsHomeViewItem(itemView) {
|
private inner class GenreViewHolder(itemView: View) : AbsHomeViewItem(itemView) {
|
||||||
fun bind(genres: List<Any>, titleRes: Int) {
|
fun bind(home: Home) {
|
||||||
arrow.hide()
|
arrow.hide()
|
||||||
title.text = activity.getString(titleRes)
|
title.setText(home.titleRes)
|
||||||
recyclerView.apply {
|
recyclerView.apply {
|
||||||
layoutManager = GridLayoutManager(activity, 3, GridLayoutManager.HORIZONTAL, false)
|
layoutManager = GridLayoutManager(activity, 3, GridLayoutManager.HORIZONTAL, false)
|
||||||
val genreAdapter =
|
val genreAdapter =
|
||||||
GenreAdapter(activity, genres as List<Genre>, R.layout.item_grid_genre)
|
GenreAdapter(activity, home.arrayList as List<Genre>, R.layout.item_grid_genre)
|
||||||
adapter = genreAdapter
|
adapter = genreAdapter
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -43,5 +43,5 @@ interface PlaylistDao {
|
||||||
|
|
||||||
@Delete
|
@Delete
|
||||||
suspend fun removeSongsFromPlaylist(songs: List<SongEntity>)
|
suspend fun removeSongsFromPlaylist(songs: List<SongEntity>)
|
||||||
|
|
||||||
}
|
}
|
|
@ -14,10 +14,13 @@
|
||||||
|
|
||||||
package code.name.monkey.retromusic.model
|
package code.name.monkey.retromusic.model
|
||||||
|
|
||||||
|
import androidx.annotation.StringRes
|
||||||
import code.name.monkey.retromusic.HomeSection
|
import code.name.monkey.retromusic.HomeSection
|
||||||
|
|
||||||
class Home(
|
class Home(
|
||||||
val arrayList: List<Any>,
|
val arrayList: List<Any>,
|
||||||
@HomeSection
|
@HomeSection
|
||||||
val homeSection: Int
|
val homeSection: Int,
|
||||||
|
@StringRes
|
||||||
|
val titleRes: Int
|
||||||
)
|
)
|
|
@ -236,10 +236,6 @@ class RealRepository(
|
||||||
return homeSections
|
return homeSections
|
||||||
}
|
}
|
||||||
|
|
||||||
override suspend fun playlists(): Home {
|
|
||||||
val playlist = playlistRepository.playlists()
|
|
||||||
return Home(playlist, TOP_ALBUMS)
|
|
||||||
}
|
|
||||||
|
|
||||||
override suspend fun playlist(playlistId: Int) =
|
override suspend fun playlist(playlistId: Int) =
|
||||||
playlistRepository.playlist(playlistId)
|
playlistRepository.playlist(playlistId)
|
||||||
|
@ -291,33 +287,37 @@ class RealRepository(
|
||||||
NotPlayedPlaylist().songs().shuffled().takeIf {
|
NotPlayedPlaylist().songs().shuffled().takeIf {
|
||||||
it.size > 9
|
it.size > 9
|
||||||
} ?: emptyList()
|
} ?: emptyList()
|
||||||
return Home(songs, SUGGESTIONS)
|
return Home(songs, SUGGESTIONS, R.string.suggestion_songs)
|
||||||
}
|
}
|
||||||
|
|
||||||
override suspend fun genresHome(): Home {
|
override suspend fun genresHome(): Home {
|
||||||
val genres = genreRepository.genres().shuffled()
|
val genres = genreRepository.genres().shuffled()
|
||||||
return Home(genres, GENRES)
|
return Home(genres, GENRES, R.string.genres)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override suspend fun playlists(): Home {
|
||||||
|
val playlist = playlistRepository.playlists()
|
||||||
|
return Home(playlist, PLAYLISTS, R.string.playlists)
|
||||||
|
}
|
||||||
|
|
||||||
override suspend fun recentArtistsHome(): Home {
|
override suspend fun recentArtistsHome(): Home {
|
||||||
val artists = lastAddedRepository.recentArtists().take(5)
|
val artists = lastAddedRepository.recentArtists().take(5)
|
||||||
return Home(artists, RECENT_ARTISTS)
|
return Home(artists, RECENT_ARTISTS, R.string.recent_artists)
|
||||||
}
|
}
|
||||||
|
|
||||||
override suspend fun recentAlbumsHome(): Home {
|
override suspend fun recentAlbumsHome(): Home {
|
||||||
val albums = lastAddedRepository.recentAlbums().take(5)
|
val albums = lastAddedRepository.recentAlbums().take(5)
|
||||||
return Home(albums, RECENT_ALBUMS)
|
return Home(albums, RECENT_ALBUMS, R.string.recent_albums)
|
||||||
}
|
}
|
||||||
|
|
||||||
override suspend fun topAlbumsHome(): Home {
|
override suspend fun topAlbumsHome(): Home {
|
||||||
val albums = playedTracksRepository.topAlbums().take(5)
|
val albums = playedTracksRepository.topAlbums().take(5)
|
||||||
return Home(albums, TOP_ALBUMS)
|
return Home(albums, TOP_ALBUMS, R.string.top_albums)
|
||||||
}
|
}
|
||||||
|
|
||||||
override suspend fun topArtistsHome(): Home {
|
override suspend fun topArtistsHome(): Home {
|
||||||
val artists = playedTracksRepository.topArtists().take(5)
|
val artists = playedTracksRepository.topArtists().take(5)
|
||||||
return Home(artists, TOP_ARTISTS)
|
return Home(artists, TOP_ARTISTS, R.string.top_artists)
|
||||||
}
|
}
|
||||||
|
|
||||||
override suspend fun favoritePlaylistHome(): Home {
|
override suspend fun favoritePlaylistHome(): Home {
|
||||||
|
@ -327,7 +327,7 @@ class RealRepository(
|
||||||
PlaylistSongsLoader.getPlaylistSongList(context, playlists[0])
|
PlaylistSongsLoader.getPlaylistSongList(context, playlists[0])
|
||||||
else emptyList()
|
else emptyList()
|
||||||
|
|
||||||
return Home(songs, FAVOURITES)
|
return Home(songs, FAVOURITES, R.string.favorites)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun songsFlow(): Flow<Result<List<Song>>> = flow {
|
override fun songsFlow(): Flow<Result<List<Song>>> = flow {
|
||||||
|
|
|
@ -39,9 +39,8 @@
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:nestedScrollingEnabled="false"
|
android:nestedScrollingEnabled="false"
|
||||||
android:overScrollMode="never"
|
android:overScrollMode="never"
|
||||||
app:layoutManager="androidx.recyclerview.widget.GridLayoutManager"
|
|
||||||
app:spanCount="3"
|
|
||||||
tools:itemCount="3"
|
tools:itemCount="3"
|
||||||
|
tools:layoutManager="androidx.recyclerview.widget.GridLayoutManager"
|
||||||
tools:listitem="@layout/item_album_card" />
|
tools:listitem="@layout/item_album_card" />
|
||||||
|
|
||||||
<Space
|
<Space
|
||||||
|
|
Loading…
Reference in a new issue