From d853df658a0cc64f25135275fc81f97b879d75ea Mon Sep 17 00:00:00 2001 From: Duc Le Tran Date: Mon, 1 Apr 2019 00:07:50 +0200 Subject: [PATCH] Summary Change: Add no internet view on TicketsFragment Detail: Add no internet card on Ticket Fragment and show it when there is no internet and no tickets retained in view model Fixes: #1491 --- .../general/ticket/TicketsFragment.kt | 28 +++++++++++++++++-- app/src/main/res/layout/fragment_tickets.xml | 1 + 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/org/fossasia/openevent/general/ticket/TicketsFragment.kt b/app/src/main/java/org/fossasia/openevent/general/ticket/TicketsFragment.kt index 0c18e615c2..b3242fe801 100644 --- a/app/src/main/java/org/fossasia/openevent/general/ticket/TicketsFragment.kt +++ b/app/src/main/java/org/fossasia/openevent/general/ticket/TicketsFragment.kt @@ -16,6 +16,8 @@ import androidx.recyclerview.widget.RecyclerView import androidx.navigation.Navigation.findNavController import androidx.navigation.fragment.navArgs import com.google.android.material.snackbar.Snackbar +import kotlinx.android.synthetic.main.content_no_internet.view.retry +import kotlinx.android.synthetic.main.content_no_internet.view.noInternetCard import kotlinx.android.synthetic.main.fragment_tickets.ticketsCoordinatorLayout import kotlinx.android.synthetic.main.fragment_tickets.view.eventName import kotlinx.android.synthetic.main.fragment_tickets.view.organizerName @@ -32,6 +34,7 @@ import org.fossasia.openevent.general.event.Event import org.fossasia.openevent.general.event.EventUtils import org.fossasia.openevent.general.utils.Utils.getAnimFade import org.fossasia.openevent.general.utils.Utils.getAnimSlide +import org.fossasia.openevent.general.utils.Utils.isNetworkConnected import org.fossasia.openevent.general.utils.extensions.nonNull import org.fossasia.openevent.general.utils.nullToEmpty import org.koin.androidx.viewmodel.ext.android.viewModel @@ -120,8 +123,11 @@ class TicketsFragment : Fragment() { Snackbar.make(ticketsCoordinatorLayout, it, Snackbar.LENGTH_LONG).show() }) - ticketsViewModel.loadEvent(safeArgs.eventId) - ticketsViewModel.loadTickets(safeArgs.eventId) + rootView.retry.setOnClickListener { + loadTickets() + } + + loadTickets() return rootView } @@ -194,4 +200,22 @@ class TicketsFragment : Fragment() { val alert = builder.create() alert.show() } + + private fun loadTickets() { + if (!isNetworkConnected(context) && ticketsViewModel.tickets.value.isNullOrEmpty()) + showNoInternetScreen(true) + else { + showNoInternetScreen(false) + ticketsViewModel.loadEvent(safeArgs.eventId) + ticketsViewModel.loadTickets(safeArgs.eventId) + } + } + + private fun showNoInternetScreen(show: Boolean) { + rootView.noInternetCard.isVisible = show + rootView.ticketTableHeader.isVisible = !show + rootView.ticketsRecycler.isVisible = !show + rootView.progressBarTicket.isVisible = !show + rootView.register.isVisible = !show + } } diff --git a/app/src/main/res/layout/fragment_tickets.xml b/app/src/main/res/layout/fragment_tickets.xml index 0d116223da..ad059ffe07 100644 --- a/app/src/main/res/layout/fragment_tickets.xml +++ b/app/src/main/res/layout/fragment_tickets.xml @@ -132,6 +132,7 @@ android:layout_marginTop="@dimen/layout_margin_large" android:layout_marginBottom="@dimen/layout_margin_large" android:text="@string/register" /> +