78 lines
No EOL
2.5 KiB
Kotlin
78 lines
No EOL
2.5 KiB
Kotlin
package dev.jdtech.jellyfin.fragments
|
|
|
|
import android.os.Bundle
|
|
import androidx.fragment.app.Fragment
|
|
import android.view.LayoutInflater
|
|
import android.view.View
|
|
import android.view.ViewGroup
|
|
import androidx.fragment.app.viewModels
|
|
import androidx.navigation.fragment.findNavController
|
|
import androidx.navigation.fragment.navArgs
|
|
import com.google.android.material.snackbar.Snackbar
|
|
import dagger.hilt.android.AndroidEntryPoint
|
|
import dev.jdtech.jellyfin.R
|
|
import dev.jdtech.jellyfin.viewmodels.LibraryViewModel
|
|
import dev.jdtech.jellyfin.adapters.ViewItemListAdapter
|
|
import dev.jdtech.jellyfin.databinding.FragmentLibraryBinding
|
|
import org.jellyfin.sdk.model.api.BaseItemDto
|
|
|
|
@AndroidEntryPoint
|
|
class LibraryFragment : Fragment() {
|
|
|
|
private lateinit var binding: FragmentLibraryBinding
|
|
private val viewModel: LibraryViewModel by viewModels()
|
|
|
|
private val args: LibraryFragmentArgs by navArgs()
|
|
|
|
override fun onCreateView(
|
|
inflater: LayoutInflater, container: ViewGroup?,
|
|
savedInstanceState: Bundle?
|
|
): View {
|
|
binding = FragmentLibraryBinding.inflate(inflater, container, false)
|
|
|
|
binding.lifecycleOwner = viewLifecycleOwner
|
|
|
|
return binding.root
|
|
}
|
|
|
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
|
super.onViewCreated(view, savedInstanceState)
|
|
binding.viewModel = viewModel
|
|
|
|
val snackbar =
|
|
Snackbar.make(
|
|
binding.mainLayout,
|
|
getString(R.string.error_loading_data),
|
|
Snackbar.LENGTH_INDEFINITE
|
|
)
|
|
snackbar.setAction(getString(R.string.retry)) {
|
|
viewModel.loadItems(args.libraryId)
|
|
}
|
|
|
|
viewModel.error.observe(viewLifecycleOwner, { error ->
|
|
if (error) {
|
|
snackbar.show()
|
|
}
|
|
})
|
|
|
|
viewModel.finishedLoading.observe(viewLifecycleOwner, {
|
|
binding.loadingIndicator.visibility = if (it) View.GONE else View.VISIBLE
|
|
})
|
|
|
|
binding.itemsRecyclerView.adapter =
|
|
ViewItemListAdapter(ViewItemListAdapter.OnClickListener { item ->
|
|
navigateToMediaInfoFragment(item)
|
|
})
|
|
viewModel.loadItems(args.libraryId)
|
|
}
|
|
|
|
private fun navigateToMediaInfoFragment(item: BaseItemDto) {
|
|
findNavController().navigate(
|
|
LibraryFragmentDirections.actionLibraryFragmentToMediaInfoFragment(
|
|
item.id,
|
|
item.name,
|
|
item.type ?: "Unknown"
|
|
)
|
|
)
|
|
}
|
|
} |