diff --git a/app/phone/src/main/java/dev/jdtech/jellyfin/BindingAdapters.kt b/app/phone/src/main/java/dev/jdtech/jellyfin/BindingAdapters.kt index 1e29edbf..b47711db 100644 --- a/app/phone/src/main/java/dev/jdtech/jellyfin/BindingAdapters.kt +++ b/app/phone/src/main/java/dev/jdtech/jellyfin/BindingAdapters.kt @@ -7,13 +7,11 @@ import androidx.databinding.BindingAdapter import androidx.recyclerview.widget.RecyclerView import coil.load import dev.jdtech.jellyfin.adapters.HomeEpisodeListAdapter -import dev.jdtech.jellyfin.adapters.ServerGridAdapter import dev.jdtech.jellyfin.adapters.ViewItemListAdapter import dev.jdtech.jellyfin.api.JellyfinApi import dev.jdtech.jellyfin.models.FindroidEpisode import dev.jdtech.jellyfin.models.FindroidItem import dev.jdtech.jellyfin.models.FindroidMovie -import dev.jdtech.jellyfin.models.Server import dev.jdtech.jellyfin.models.User import org.jellyfin.sdk.model.api.BaseItemDto import org.jellyfin.sdk.model.api.BaseItemKind @@ -22,12 +20,6 @@ import org.jellyfin.sdk.model.api.ImageType import java.util.UUID import dev.jdtech.jellyfin.core.R as CoreR -@BindingAdapter("servers") -fun bindServers(recyclerView: RecyclerView, data: List?) { - val adapter = recyclerView.adapter as ServerGridAdapter - adapter.submitList(data) -} - @BindingAdapter("items") fun bindItems(recyclerView: RecyclerView, data: List?) { val adapter = recyclerView.adapter as ViewItemListAdapter diff --git a/app/phone/src/main/java/dev/jdtech/jellyfin/fragments/ServerSelectFragment.kt b/app/phone/src/main/java/dev/jdtech/jellyfin/fragments/ServerSelectFragment.kt index 0323c75e..ae50710a 100644 --- a/app/phone/src/main/java/dev/jdtech/jellyfin/fragments/ServerSelectFragment.kt +++ b/app/phone/src/main/java/dev/jdtech/jellyfin/fragments/ServerSelectFragment.kt @@ -16,6 +16,7 @@ import dev.jdtech.jellyfin.databinding.FragmentServerSelectBinding import dev.jdtech.jellyfin.dialogs.DeleteServerDialogFragment import dev.jdtech.jellyfin.viewmodels.ServerSelectViewModel import kotlinx.coroutines.launch +import timber.log.Timber @AndroidEntryPoint class ServerSelectFragment : Fragment() { @@ -30,10 +31,6 @@ class ServerSelectFragment : Fragment() { ): View { binding = FragmentServerSelectBinding.inflate(inflater) - binding.lifecycleOwner = viewLifecycleOwner - - binding.viewModel = viewModel - binding.serversRecyclerView.adapter = ServerGridAdapter( ServerGridAdapter.OnClickListener { server -> @@ -54,9 +51,19 @@ class ServerSelectFragment : Fragment() { viewLifecycleOwner.lifecycleScope.launch { viewLifecycleOwner.repeatOnLifecycle(Lifecycle.State.STARTED) { - viewModel.navigateToMain.collect { - if (it) { - navigateToMainActivity() + launch { + viewModel.uiState.collect { uiState -> + Timber.d("$uiState") + when (uiState) { + is ServerSelectViewModel.UiState.Normal -> bindUiStateNormal(uiState) + is ServerSelectViewModel.UiState.Loading -> Unit + is ServerSelectViewModel.UiState.Error -> Unit + } + } + } + launch { + viewModel.navigateToMain.collect { + if (it) navigateToMainActivity() } } } @@ -65,6 +72,12 @@ class ServerSelectFragment : Fragment() { return binding.root } + private fun bindUiStateNormal(uiState: ServerSelectViewModel.UiState.Normal) { + uiState.apply { + (binding.serversRecyclerView.adapter as ServerGridAdapter).submitList(servers) + } + } + private fun navigateToAddServerFragment() { findNavController().navigate( ServerSelectFragmentDirections.actionServerSelectFragmentToAddServerFragment(), diff --git a/app/phone/src/main/res/layout/fragment_server_select.xml b/app/phone/src/main/res/layout/fragment_server_select.xml index de0d07b2..3b2d5386 100644 --- a/app/phone/src/main/res/layout/fragment_server_select.xml +++ b/app/phone/src/main/res/layout/fragment_server_select.xml @@ -1,75 +1,64 @@ - + xmlns:tools="http://schemas.android.com/tools" + android:layout_width="match_parent" + android:layout_height="match_parent" + tools:context=".fragments.AddServerFragment"> - - - + - + android:layout_height="wrap_content" + android:layout_marginHorizontal="12dp" + android:orientation="vertical" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/image_banner" + app:layout_constraintVertical_bias="0.36"> - - - - + android:layout_marginBottom="32dp" + android:text="@string/select_server" + android:textAppearance="@style/TextAppearance.Material3.HeadlineMedium" + android:textColor="?android:textColorPrimary" /> - - - - - -