refactor: clean up adapter callbacks

This commit is contained in:
Jarne Demeulemeester 2023-09-25 22:05:49 +02:00
parent 256371d17c
commit 0512d89bee
No known key found for this signature in database
GPG key ID: 1E5C6AFBD622E9F5
19 changed files with 60 additions and 131 deletions

View file

@ -10,7 +10,7 @@ import dev.jdtech.jellyfin.databinding.CollectionItemBinding
import dev.jdtech.jellyfin.models.FindroidCollection import dev.jdtech.jellyfin.models.FindroidCollection
class CollectionListAdapter( class CollectionListAdapter(
private val onClickListener: OnClickListener, private val onClickListener: (collection: FindroidCollection) -> Unit,
) : ListAdapter<FindroidCollection, CollectionListAdapter.CollectionViewHolder>(DiffCallback) { ) : ListAdapter<FindroidCollection, CollectionListAdapter.CollectionViewHolder>(DiffCallback) {
class CollectionViewHolder(private var binding: CollectionItemBinding) : class CollectionViewHolder(private var binding: CollectionItemBinding) :
RecyclerView.ViewHolder(binding.root) { RecyclerView.ViewHolder(binding.root) {
@ -43,12 +43,8 @@ class CollectionListAdapter(
override fun onBindViewHolder(holder: CollectionViewHolder, position: Int) { override fun onBindViewHolder(holder: CollectionViewHolder, position: Int) {
val collection = getItem(position) val collection = getItem(position)
holder.itemView.setOnClickListener { holder.itemView.setOnClickListener {
onClickListener.onClick(collection) onClickListener(collection)
} }
holder.bind(collection) holder.bind(collection)
} }
class OnClickListener(val clickListener: (collection: FindroidCollection) -> Unit) {
fun onClick(collection: FindroidCollection) = clickListener(collection)
}
} }

View file

@ -22,7 +22,7 @@ private const val ITEM_VIEW_TYPE_HEADER = 0
private const val ITEM_VIEW_TYPE_EPISODE = 1 private const val ITEM_VIEW_TYPE_EPISODE = 1
class EpisodeListAdapter( class EpisodeListAdapter(
private val onClickListener: OnClickListener, private val onClickListener: (item: FindroidEpisode) -> Unit,
) : ) :
ListAdapter<EpisodeItem, RecyclerView.ViewHolder>(DiffCallback) { ListAdapter<EpisodeItem, RecyclerView.ViewHolder>(DiffCallback) {
@ -109,7 +109,7 @@ class EpisodeListAdapter(
ITEM_VIEW_TYPE_EPISODE -> { ITEM_VIEW_TYPE_EPISODE -> {
val item = getItem(position) as EpisodeItem.Episode val item = getItem(position) as EpisodeItem.Episode
holder.itemView.setOnClickListener { holder.itemView.setOnClickListener {
onClickListener.onClick(item.episode) onClickListener(item.episode)
} }
(holder as EpisodeViewHolder).bind(item.episode) (holder as EpisodeViewHolder).bind(item.episode)
} }
@ -122,8 +122,4 @@ class EpisodeListAdapter(
is EpisodeItem.Episode -> ITEM_VIEW_TYPE_EPISODE is EpisodeItem.Episode -> ITEM_VIEW_TYPE_EPISODE
} }
} }
class OnClickListener(val clickListener: (item: FindroidEpisode) -> Unit) {
fun onClick(item: FindroidEpisode) = clickListener(item)
}
} }

View file

@ -8,25 +8,24 @@ import androidx.recyclerview.widget.RecyclerView
import dev.jdtech.jellyfin.Constants import dev.jdtech.jellyfin.Constants
import dev.jdtech.jellyfin.databinding.FavoriteSectionBinding import dev.jdtech.jellyfin.databinding.FavoriteSectionBinding
import dev.jdtech.jellyfin.models.FavoriteSection import dev.jdtech.jellyfin.models.FavoriteSection
import dev.jdtech.jellyfin.models.FindroidItem
class FavoritesListAdapter( class FavoritesListAdapter(
private val onClickListener: ViewItemListAdapter.OnClickListener, private val onItemClickListener: (item: FindroidItem) -> Unit,
private val onEpisodeClickListener: HomeEpisodeListAdapter.OnClickListener,
) : ListAdapter<FavoriteSection, FavoritesListAdapter.SectionViewHolder>(DiffCallback) { ) : ListAdapter<FavoriteSection, FavoritesListAdapter.SectionViewHolder>(DiffCallback) {
class SectionViewHolder(private var binding: FavoriteSectionBinding) : class SectionViewHolder(private var binding: FavoriteSectionBinding) :
RecyclerView.ViewHolder(binding.root) { RecyclerView.ViewHolder(binding.root) {
fun bind( fun bind(
section: FavoriteSection, section: FavoriteSection,
onClickListener: ViewItemListAdapter.OnClickListener, onItemClickListener: (item: FindroidItem) -> Unit,
onEpisodeClickListener: HomeEpisodeListAdapter.OnClickListener,
) { ) {
if (section.id == Constants.FAVORITE_TYPE_MOVIES || section.id == Constants.FAVORITE_TYPE_SHOWS) { if (section.id == Constants.FAVORITE_TYPE_MOVIES || section.id == Constants.FAVORITE_TYPE_SHOWS) {
binding.itemsRecyclerView.adapter = binding.itemsRecyclerView.adapter =
ViewItemListAdapter(onClickListener, fixedWidth = true) ViewItemListAdapter(onItemClickListener, fixedWidth = true)
(binding.itemsRecyclerView.adapter as ViewItemListAdapter).submitList(section.items) (binding.itemsRecyclerView.adapter as ViewItemListAdapter).submitList(section.items)
} else if (section.id == Constants.FAVORITE_TYPE_EPISODES) { } else if (section.id == Constants.FAVORITE_TYPE_EPISODES) {
binding.itemsRecyclerView.adapter = binding.itemsRecyclerView.adapter =
HomeEpisodeListAdapter(onEpisodeClickListener) HomeEpisodeListAdapter(onItemClickListener)
(binding.itemsRecyclerView.adapter as HomeEpisodeListAdapter).submitList(section.items) (binding.itemsRecyclerView.adapter as HomeEpisodeListAdapter).submitList(section.items)
} }
binding.sectionName.text = section.name.asString(binding.root.resources) binding.sectionName.text = section.name.asString(binding.root.resources)
@ -58,6 +57,6 @@ class FavoritesListAdapter(
override fun onBindViewHolder(holder: SectionViewHolder, position: Int) { override fun onBindViewHolder(holder: SectionViewHolder, position: Int) {
val collection = getItem(position) val collection = getItem(position)
holder.bind(collection, onClickListener, onEpisodeClickListener) holder.bind(collection, onItemClickListener)
} }
} }

View file

@ -16,7 +16,7 @@ import dev.jdtech.jellyfin.models.FindroidMovie
import dev.jdtech.jellyfin.models.isDownloaded import dev.jdtech.jellyfin.models.isDownloaded
import dev.jdtech.jellyfin.core.R as CoreR import dev.jdtech.jellyfin.core.R as CoreR
class HomeEpisodeListAdapter(private val onClickListener: OnClickListener) : ListAdapter<FindroidItem, HomeEpisodeListAdapter.EpisodeViewHolder>(DiffCallback) { class HomeEpisodeListAdapter(private val onClickListener: (item: FindroidItem) -> Unit) : ListAdapter<FindroidItem, HomeEpisodeListAdapter.EpisodeViewHolder>(DiffCallback) {
class EpisodeViewHolder( class EpisodeViewHolder(
private var binding: HomeEpisodeItemBinding, private var binding: HomeEpisodeItemBinding,
private val parent: ViewGroup, private val parent: ViewGroup,
@ -77,12 +77,8 @@ class HomeEpisodeListAdapter(private val onClickListener: OnClickListener) : Lis
override fun onBindViewHolder(holder: EpisodeViewHolder, position: Int) { override fun onBindViewHolder(holder: EpisodeViewHolder, position: Int) {
val item = getItem(position) val item = getItem(position)
holder.itemView.setOnClickListener { holder.itemView.setOnClickListener {
onClickListener.onClick(item) onClickListener(item)
} }
holder.bind(item) holder.bind(item)
} }
class OnClickListener(val clickListener: (item: FindroidItem) -> Unit) {
fun onClick(item: FindroidItem) = clickListener(item)
}
} }

View file

@ -9,8 +9,8 @@ import dev.jdtech.jellyfin.databinding.ServerItemBinding
import dev.jdtech.jellyfin.models.Server import dev.jdtech.jellyfin.models.Server
class ServerGridAdapter( class ServerGridAdapter(
private val onClickListener: OnClickListener, private val onClickListener: (server: Server) -> Unit,
private val onLongClickListener: OnLongClickListener, private val onLongClickListener: (server: Server) -> Boolean,
) : ListAdapter<Server, ServerGridAdapter.ServerViewHolder>(DiffCallback) { ) : ListAdapter<Server, ServerGridAdapter.ServerViewHolder>(DiffCallback) {
class ServerViewHolder(private var binding: ServerItemBinding) : class ServerViewHolder(private var binding: ServerItemBinding) :
RecyclerView.ViewHolder(binding.root) { RecyclerView.ViewHolder(binding.root) {
@ -39,19 +39,11 @@ class ServerGridAdapter(
override fun onBindViewHolder(holder: ServerViewHolder, position: Int) { override fun onBindViewHolder(holder: ServerViewHolder, position: Int) {
val server = getItem(position) val server = getItem(position)
holder.itemView.setOnClickListener { holder.itemView.setOnClickListener {
onClickListener.onClick(server) onClickListener(server)
} }
holder.itemView.setOnLongClickListener { holder.itemView.setOnLongClickListener {
onLongClickListener.onLongClick(server) onLongClickListener(server)
} }
holder.bind(server) holder.bind(server)
} }
class OnClickListener(val clickListener: (server: Server) -> Unit) {
fun onClick(server: Server) = clickListener(server)
}
class OnLongClickListener(val clickListener: (server: Server) -> Boolean) {
fun onLongClick(server: Server) = clickListener(server)
}
} }

View file

@ -15,7 +15,7 @@ import dev.jdtech.jellyfin.models.isDownloaded
import dev.jdtech.jellyfin.core.R as CoreR import dev.jdtech.jellyfin.core.R as CoreR
class ViewItemListAdapter( class ViewItemListAdapter(
private val onClickListener: OnClickListener, private val onClickListener: (item: FindroidItem) -> Unit,
private val fixedWidth: Boolean = false, private val fixedWidth: Boolean = false,
) : ListAdapter<FindroidItem, ViewItemListAdapter.ItemViewHolder>(DiffCallback) { ) : ListAdapter<FindroidItem, ViewItemListAdapter.ItemViewHolder>(DiffCallback) {
@ -63,12 +63,8 @@ class ViewItemListAdapter(
override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
val item = getItem(position) val item = getItem(position)
holder.itemView.setOnClickListener { holder.itemView.setOnClickListener {
onClickListener.onClick(item) onClickListener(item)
} }
holder.bind(item, fixedWidth) holder.bind(item, fixedWidth)
} }
class OnClickListener(val clickListener: (item: FindroidItem) -> Unit) {
fun onClick(item: FindroidItem) = clickListener(item)
}
} }

View file

@ -15,7 +15,7 @@ import dev.jdtech.jellyfin.models.isDownloaded
import dev.jdtech.jellyfin.core.R as CoreR import dev.jdtech.jellyfin.core.R as CoreR
class ViewItemPagingAdapter( class ViewItemPagingAdapter(
private val onClickListener: OnClickListener, private val onClickListener: (item: FindroidItem) -> Unit,
private val fixedWidth: Boolean = false, private val fixedWidth: Boolean = false,
) : PagingDataAdapter<FindroidItem, ViewItemPagingAdapter.ItemViewHolder>(DiffCallback) { ) : PagingDataAdapter<FindroidItem, ViewItemPagingAdapter.ItemViewHolder>(DiffCallback) {
@ -65,13 +65,9 @@ class ViewItemPagingAdapter(
val item = getItem(position) val item = getItem(position)
if (item != null) { if (item != null) {
holder.itemView.setOnClickListener { holder.itemView.setOnClickListener {
onClickListener.onClick(item) onClickListener(item)
} }
holder.bind(item, fixedWidth) holder.bind(item, fixedWidth)
} }
} }
class OnClickListener(val clickListener: (item: FindroidItem) -> Unit) {
fun onClick(item: FindroidItem) = clickListener(item)
}
} }

View file

@ -8,6 +8,7 @@ import androidx.recyclerview.widget.RecyclerView
import dev.jdtech.jellyfin.databinding.CardOfflineBinding import dev.jdtech.jellyfin.databinding.CardOfflineBinding
import dev.jdtech.jellyfin.databinding.NextUpSectionBinding import dev.jdtech.jellyfin.databinding.NextUpSectionBinding
import dev.jdtech.jellyfin.databinding.ViewItemBinding import dev.jdtech.jellyfin.databinding.ViewItemBinding
import dev.jdtech.jellyfin.models.FindroidItem
import dev.jdtech.jellyfin.models.HomeItem import dev.jdtech.jellyfin.models.HomeItem
import dev.jdtech.jellyfin.models.View import dev.jdtech.jellyfin.models.View
import dev.jdtech.jellyfin.core.R as CoreR import dev.jdtech.jellyfin.core.R as CoreR
@ -17,18 +18,17 @@ private const val ITEM_VIEW_TYPE_VIEW = 1
private const val ITEM_VIEW_TYPE_OFFLINE_CARD = 2 private const val ITEM_VIEW_TYPE_OFFLINE_CARD = 2
class ViewListAdapter( class ViewListAdapter(
private val onClickListener: OnClickListener, private val onClickListener: (view: View) -> Unit,
private val onItemClickListener: ViewItemListAdapter.OnClickListener, private val onItemClickListener: (item: FindroidItem) -> Unit,
private val onNextUpClickListener: HomeEpisodeListAdapter.OnClickListener, private val onOnlineClickListener: () -> Unit,
private val onOnlineClickListener: OnClickListenerOfflineCard,
) : ListAdapter<HomeItem, RecyclerView.ViewHolder>(DiffCallback) { ) : ListAdapter<HomeItem, RecyclerView.ViewHolder>(DiffCallback) {
class ViewViewHolder(private var binding: ViewItemBinding) : class ViewViewHolder(private var binding: ViewItemBinding) :
RecyclerView.ViewHolder(binding.root) { RecyclerView.ViewHolder(binding.root) {
fun bind( fun bind(
dataItem: HomeItem.ViewItem, dataItem: HomeItem.ViewItem,
onClickListener: OnClickListener, onClickListener: (view: View) -> Unit,
onItemClickListener: ViewItemListAdapter.OnClickListener, onItemClickListener: (item: FindroidItem) -> Unit,
) { ) {
val view = dataItem.view val view = dataItem.view
binding.viewName.text = binding.viewName.context.resources.getString(CoreR.string.latest_library, view.name) binding.viewName.text = binding.viewName.context.resources.getString(CoreR.string.latest_library, view.name)
@ -36,14 +36,17 @@ class ViewListAdapter(
ViewItemListAdapter(onItemClickListener, fixedWidth = true) ViewItemListAdapter(onItemClickListener, fixedWidth = true)
(binding.itemsRecyclerView.adapter as ViewItemListAdapter).submitList(view.items) (binding.itemsRecyclerView.adapter as ViewItemListAdapter).submitList(view.items)
binding.viewAll.setOnClickListener { binding.viewAll.setOnClickListener {
onClickListener.onClick(view) onClickListener(view)
} }
} }
} }
class NextUpViewHolder(private var binding: NextUpSectionBinding) : class NextUpViewHolder(private var binding: NextUpSectionBinding) :
RecyclerView.ViewHolder(binding.root) { RecyclerView.ViewHolder(binding.root) {
fun bind(section: HomeItem.Section, onClickListener: HomeEpisodeListAdapter.OnClickListener) { fun bind(
section: HomeItem.Section,
onClickListener: (item: FindroidItem) -> Unit,
) {
binding.sectionName.text = section.homeSection.name.asString(binding.sectionName.context.resources) binding.sectionName.text = section.homeSection.name.asString(binding.sectionName.context.resources)
binding.itemsRecyclerView.adapter = HomeEpisodeListAdapter(onClickListener) binding.itemsRecyclerView.adapter = HomeEpisodeListAdapter(onClickListener)
(binding.itemsRecyclerView.adapter as HomeEpisodeListAdapter).submitList(section.homeSection.items) (binding.itemsRecyclerView.adapter as HomeEpisodeListAdapter).submitList(section.homeSection.items)
@ -51,9 +54,9 @@ class ViewListAdapter(
} }
class OfflineCardViewHolder(private var binding: CardOfflineBinding) : RecyclerView.ViewHolder(binding.root) { class OfflineCardViewHolder(private var binding: CardOfflineBinding) : RecyclerView.ViewHolder(binding.root) {
fun bind(onClickListener: OnClickListenerOfflineCard) { fun bind(onClickListener: () -> Unit) {
binding.onlineButton.setOnClickListener { binding.onlineButton.setOnClickListener {
onClickListener.onClick() onClickListener()
} }
} }
} }
@ -103,7 +106,7 @@ class ViewListAdapter(
when (holder.itemViewType) { when (holder.itemViewType) {
ITEM_VIEW_TYPE_NEXT_UP -> { ITEM_VIEW_TYPE_NEXT_UP -> {
val view = getItem(position) as HomeItem.Section val view = getItem(position) as HomeItem.Section
(holder as NextUpViewHolder).bind(view, onNextUpClickListener) (holder as NextUpViewHolder).bind(view, onItemClickListener)
} }
ITEM_VIEW_TYPE_VIEW -> { ITEM_VIEW_TYPE_VIEW -> {
val view = getItem(position) as HomeItem.ViewItem val view = getItem(position) as HomeItem.ViewItem
@ -123,12 +126,4 @@ class ViewListAdapter(
is HomeItem.ViewItem -> ITEM_VIEW_TYPE_VIEW is HomeItem.ViewItem -> ITEM_VIEW_TYPE_VIEW
} }
} }
class OnClickListener(val clickListener: (view: View) -> Unit) {
fun onClick(view: View) = clickListener(view)
}
class OnClickListenerOfflineCard(val clickListener: () -> Unit) {
fun onClick() = clickListener()
}
} }

View file

@ -14,8 +14,6 @@ import androidx.navigation.fragment.findNavController
import androidx.navigation.fragment.navArgs import androidx.navigation.fragment.navArgs
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
import dev.jdtech.jellyfin.adapters.FavoritesListAdapter import dev.jdtech.jellyfin.adapters.FavoritesListAdapter
import dev.jdtech.jellyfin.adapters.HomeEpisodeListAdapter
import dev.jdtech.jellyfin.adapters.ViewItemListAdapter
import dev.jdtech.jellyfin.databinding.FragmentFavoriteBinding import dev.jdtech.jellyfin.databinding.FragmentFavoriteBinding
import dev.jdtech.jellyfin.dialogs.ErrorDialogFragment import dev.jdtech.jellyfin.dialogs.ErrorDialogFragment
import dev.jdtech.jellyfin.models.FindroidEpisode import dev.jdtech.jellyfin.models.FindroidEpisode
@ -42,14 +40,9 @@ class CollectionFragment : Fragment() {
): View { ): View {
binding = FragmentFavoriteBinding.inflate(inflater, container, false) binding = FragmentFavoriteBinding.inflate(inflater, container, false)
binding.favoritesRecyclerView.adapter = FavoritesListAdapter( binding.favoritesRecyclerView.adapter = FavoritesListAdapter { item ->
ViewItemListAdapter.OnClickListener { item -> navigateToMediaItem(item)
navigateToMediaItem(item) }
},
HomeEpisodeListAdapter.OnClickListener { item ->
navigateToMediaItem(item)
},
)
viewLifecycleOwner.lifecycleScope.launch { viewLifecycleOwner.lifecycleScope.launch {
viewLifecycleOwner.repeatOnLifecycle(Lifecycle.State.STARTED) { viewLifecycleOwner.repeatOnLifecycle(Lifecycle.State.STARTED) {

View file

@ -15,8 +15,6 @@ import com.google.android.material.snackbar.Snackbar
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
import dev.jdtech.jellyfin.AppPreferences import dev.jdtech.jellyfin.AppPreferences
import dev.jdtech.jellyfin.adapters.FavoritesListAdapter import dev.jdtech.jellyfin.adapters.FavoritesListAdapter
import dev.jdtech.jellyfin.adapters.HomeEpisodeListAdapter
import dev.jdtech.jellyfin.adapters.ViewItemListAdapter
import dev.jdtech.jellyfin.databinding.FragmentDownloadsBinding import dev.jdtech.jellyfin.databinding.FragmentDownloadsBinding
import dev.jdtech.jellyfin.models.FindroidItem import dev.jdtech.jellyfin.models.FindroidItem
import dev.jdtech.jellyfin.models.FindroidMovie import dev.jdtech.jellyfin.models.FindroidMovie
@ -43,14 +41,9 @@ class DownloadsFragment : Fragment() {
): View { ): View {
binding = FragmentDownloadsBinding.inflate(inflater, container, false) binding = FragmentDownloadsBinding.inflate(inflater, container, false)
binding.downloadsRecyclerView.adapter = FavoritesListAdapter( binding.downloadsRecyclerView.adapter = FavoritesListAdapter { item ->
ViewItemListAdapter.OnClickListener { item -> navigateToMediaItem(item)
navigateToMediaItem(item) }
},
HomeEpisodeListAdapter.OnClickListener { item ->
navigateToMediaItem(item)
},
)
viewLifecycleOwner.lifecycleScope.launch { viewLifecycleOwner.lifecycleScope.launch {
viewLifecycleOwner.repeatOnLifecycle(Lifecycle.State.STARTED) { viewLifecycleOwner.repeatOnLifecycle(Lifecycle.State.STARTED) {

View file

@ -13,8 +13,6 @@ import androidx.lifecycle.repeatOnLifecycle
import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.findNavController
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
import dev.jdtech.jellyfin.adapters.FavoritesListAdapter import dev.jdtech.jellyfin.adapters.FavoritesListAdapter
import dev.jdtech.jellyfin.adapters.HomeEpisodeListAdapter
import dev.jdtech.jellyfin.adapters.ViewItemListAdapter
import dev.jdtech.jellyfin.databinding.FragmentFavoriteBinding import dev.jdtech.jellyfin.databinding.FragmentFavoriteBinding
import dev.jdtech.jellyfin.dialogs.ErrorDialogFragment import dev.jdtech.jellyfin.dialogs.ErrorDialogFragment
import dev.jdtech.jellyfin.models.FindroidEpisode import dev.jdtech.jellyfin.models.FindroidEpisode
@ -41,14 +39,9 @@ class FavoriteFragment : Fragment() {
): View { ): View {
binding = FragmentFavoriteBinding.inflate(inflater, container, false) binding = FragmentFavoriteBinding.inflate(inflater, container, false)
binding.favoritesRecyclerView.adapter = FavoritesListAdapter( binding.favoritesRecyclerView.adapter = FavoritesListAdapter { item ->
ViewItemListAdapter.OnClickListener { item -> navigateToMediaItem(item)
navigateToMediaItem(item) }
},
HomeEpisodeListAdapter.OnClickListener { item ->
navigateToMediaItem(item)
},
)
viewLifecycleOwner.lifecycleScope.launch { viewLifecycleOwner.lifecycleScope.launch {
viewLifecycleOwner.repeatOnLifecycle(Lifecycle.State.STARTED) { viewLifecycleOwner.repeatOnLifecycle(Lifecycle.State.STARTED) {

View file

@ -20,8 +20,6 @@ import androidx.lifecycle.repeatOnLifecycle
import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.findNavController
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
import dev.jdtech.jellyfin.AppPreferences import dev.jdtech.jellyfin.AppPreferences
import dev.jdtech.jellyfin.adapters.HomeEpisodeListAdapter
import dev.jdtech.jellyfin.adapters.ViewItemListAdapter
import dev.jdtech.jellyfin.adapters.ViewListAdapter import dev.jdtech.jellyfin.adapters.ViewListAdapter
import dev.jdtech.jellyfin.databinding.FragmentHomeBinding import dev.jdtech.jellyfin.databinding.FragmentHomeBinding
import dev.jdtech.jellyfin.dialogs.ErrorDialogFragment import dev.jdtech.jellyfin.dialogs.ErrorDialogFragment
@ -146,14 +144,11 @@ class HomeFragment : Fragment() {
} }
binding.viewsRecyclerView.adapter = ViewListAdapter( binding.viewsRecyclerView.adapter = ViewListAdapter(
onClickListener = ViewListAdapter.OnClickListener { navigateToLibraryFragment(it) }, onClickListener = { navigateToLibraryFragment(it) },
onItemClickListener = ViewItemListAdapter.OnClickListener { onItemClickListener = {
navigateToMediaItem(it) navigateToMediaItem(it)
}, },
onNextUpClickListener = HomeEpisodeListAdapter.OnClickListener { item -> onOnlineClickListener = {
navigateToMediaItem(item)
},
onOnlineClickListener = ViewListAdapter.OnClickListenerOfflineCard {
appPreferences.offlineMode = false appPreferences.offlineMode = false
activity?.restart() activity?.restart()
}, },

View file

@ -115,7 +115,7 @@ class LibraryFragment : Fragment() {
binding.itemsRecyclerView.adapter = binding.itemsRecyclerView.adapter =
ViewItemPagingAdapter( ViewItemPagingAdapter(
ViewItemPagingAdapter.OnClickListener { item -> { item ->
navigateToItem(item) navigateToItem(item)
}, },
) )

View file

@ -47,11 +47,9 @@ class MediaFragment : Fragment() {
binding = FragmentMediaBinding.inflate(inflater, container, false) binding = FragmentMediaBinding.inflate(inflater, container, false)
binding.viewsRecyclerView.adapter = binding.viewsRecyclerView.adapter =
CollectionListAdapter( CollectionListAdapter { library ->
CollectionListAdapter.OnClickListener { library -> navigateToLibraryFragment(library)
navigateToLibraryFragment(library) }
},
)
viewLifecycleOwner.lifecycleScope.launch { viewLifecycleOwner.lifecycleScope.launch {
viewLifecycleOwner.repeatOnLifecycle(Lifecycle.State.STARTED) { viewLifecycleOwner.repeatOnLifecycle(Lifecycle.State.STARTED) {

View file

@ -120,7 +120,7 @@ internal class PersonDetailFragment : Fragment() {
private fun adapter() = ViewItemListAdapter( private fun adapter() = ViewItemListAdapter(
fixedWidth = true, fixedWidth = true,
onClickListener = ViewItemListAdapter.OnClickListener { navigateToMediaItem(it) }, onClickListener = { navigateToMediaItem(it) },
) )
private fun setupOverviewExpansion() = binding.overview.post { private fun setupOverviewExpansion() = binding.overview.post {

View file

@ -14,8 +14,6 @@ import androidx.navigation.fragment.findNavController
import androidx.navigation.fragment.navArgs import androidx.navigation.fragment.navArgs
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
import dev.jdtech.jellyfin.adapters.FavoritesListAdapter import dev.jdtech.jellyfin.adapters.FavoritesListAdapter
import dev.jdtech.jellyfin.adapters.HomeEpisodeListAdapter
import dev.jdtech.jellyfin.adapters.ViewItemListAdapter
import dev.jdtech.jellyfin.databinding.FragmentSearchResultBinding import dev.jdtech.jellyfin.databinding.FragmentSearchResultBinding
import dev.jdtech.jellyfin.dialogs.ErrorDialogFragment import dev.jdtech.jellyfin.dialogs.ErrorDialogFragment
import dev.jdtech.jellyfin.models.FindroidEpisode import dev.jdtech.jellyfin.models.FindroidEpisode
@ -43,14 +41,9 @@ class SearchResultFragment : Fragment() {
): View { ): View {
binding = FragmentSearchResultBinding.inflate(inflater, container, false) binding = FragmentSearchResultBinding.inflate(inflater, container, false)
binding.searchResultsRecyclerView.adapter = FavoritesListAdapter( binding.searchResultsRecyclerView.adapter = FavoritesListAdapter { item ->
ViewItemListAdapter.OnClickListener { item -> navigateToMediaItem(item)
navigateToMediaItem(item) }
},
HomeEpisodeListAdapter.OnClickListener { item ->
navigateToMediaItem(item)
},
)
viewLifecycleOwner.lifecycleScope.launch { viewLifecycleOwner.lifecycleScope.launch {
viewLifecycleOwner.repeatOnLifecycle(Lifecycle.State.STARTED) { viewLifecycleOwner.repeatOnLifecycle(Lifecycle.State.STARTED) {

View file

@ -85,11 +85,9 @@ class SeasonFragment : Fragment() {
} }
binding.episodesRecyclerView.adapter = binding.episodesRecyclerView.adapter =
EpisodeListAdapter( EpisodeListAdapter { episode ->
EpisodeListAdapter.OnClickListener { episode -> navigateToEpisodeBottomSheetFragment(episode)
navigateToEpisodeBottomSheetFragment(episode) }
},
)
} }
override fun onResume() { override fun onResume() {

View file

@ -33,10 +33,10 @@ class ServerSelectFragment : Fragment() {
binding.serversRecyclerView.adapter = binding.serversRecyclerView.adapter =
ServerGridAdapter( ServerGridAdapter(
ServerGridAdapter.OnClickListener { server -> onClickListener = { server ->
viewModel.connectToServer(server) viewModel.connectToServer(server)
}, },
ServerGridAdapter.OnLongClickListener { server -> onLongClickListener = { server ->
DeleteServerDialogFragment(viewModel, server).show( DeleteServerDialogFragment(viewModel, server).show(
parentFragmentManager, parentFragmentManager,
"deleteServer", "deleteServer",

View file

@ -120,7 +120,7 @@ class ShowFragment : Fragment() {
binding.seasonsRecyclerView.adapter = binding.seasonsRecyclerView.adapter =
ViewItemListAdapter( ViewItemListAdapter(
ViewItemListAdapter.OnClickListener { season -> { season ->
if (season is FindroidSeason) navigateToSeasonFragment(season) if (season is FindroidSeason) navigateToSeasonFragment(season)
}, },
fixedWidth = true, fixedWidth = true,