DispenserFragment: Show info if no dispensers are available

Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
This commit is contained in:
Aayush Gupta
2024-06-01 10:28:20 +05:30
parent 453f6f24c2
commit 446b8213ee
3 changed files with 39 additions and 18 deletions

View File

@@ -36,7 +36,7 @@ class DispenserFragment : Fragment(R.layout.fragment_dispenser),
findNavController().navigate(R.id.inputDispenserDialog) findNavController().navigate(R.id.inputDispenserDialog)
} }
setupRecyclerView() setupDispensers()
} }
override fun onDestroyView() { override fun onDestroyView() {
@@ -46,26 +46,34 @@ class DispenserFragment : Fragment(R.layout.fragment_dispenser),
} }
override fun onSharedPreferenceChanged(sharedPreferences: SharedPreferences?, key: String?) { override fun onSharedPreferenceChanged(sharedPreferences: SharedPreferences?, key: String?) {
if (key == PREFERENCE_DISPENSER_URLS) setupRecyclerView() if (key == PREFERENCE_DISPENSER_URLS) setupDispensers()
} }
private fun setupRecyclerView() { private fun setupDispensers() {
binding.epoxyRecycler.withModels { if (dispensers.isNotEmpty()) {
setFilterDuplicates(true) binding.noDispensersTextView.visibility = View.GONE
dispensers.forEachIndexed { index, url ->
add( binding.epoxyRecycler.visibility = View.VISIBLE
DispenserViewModel_() binding.epoxyRecycler.withModels {
.id(index) setFilterDuplicates(true)
.url(url) dispensers.forEachIndexed { index, url ->
.copy { _ -> requireContext().copyToClipBoard(url) } add(
.clear { _ -> DispenserViewModel_()
findNavController().navigate( .id(index)
DispenserFragmentDirections .url(url)
.actionDispenserFragmentToRemoveDispenserDialog(url) .copy { _ -> requireContext().copyToClipBoard(url) }
) .clear { _ ->
} findNavController().navigate(
) DispenserFragmentDirections
.actionDispenserFragmentToRemoveDispenserDialog(url)
)
}
)
}
} }
} else {
binding.epoxyRecycler.visibility = View.GONE
binding.noDispensersTextView.visibility = View.VISIBLE
} }
} }
} }

View File

@@ -18,6 +18,18 @@
app:navigationIcon="@drawable/ic_arrow_back" app:navigationIcon="@drawable/ic_arrow_back"
app:title="@string/pref_dispenser_title" /> app:title="@string/pref_dispenser_title" />
<TextView
android:id="@+id/no_dispensers_text_view"
style="@style/AuroraTextStyle.Subtitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/no_dispensers_available"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/toolbar" />
<com.airbnb.epoxy.EpoxyRecyclerView <com.airbnb.epoxy.EpoxyRecyclerView
android:id="@+id/epoxy_recycler" android:id="@+id/epoxy_recycler"
android:layout_width="match_parent" android:layout_width="match_parent"

View File

@@ -442,6 +442,7 @@
<string name="pref_dispenser_summary">View and manage token dispensers for anonymous logins</string> <string name="pref_dispenser_summary">View and manage token dispensers for anonymous logins</string>
<!-- DialogDispenserInput--> <!-- DialogDispenserInput-->
<string name="no_dispensers_available">No dispensers available</string>
<string name="add_dispenser_title">Add dispenser</string> <string name="add_dispenser_title">Add dispenser</string>
<string name="add_dispenser_summary">Add a token dispenser to Aurora Store. Token dispensers provide account credentials to Aurora Store for logging in anonymously.</string> <string name="add_dispenser_summary">Add a token dispenser to Aurora Store. Token dispensers provide account credentials to Aurora Store for logging in anonymously.</string>
<string name="add_dispenser_error">Invalid URL</string> <string name="add_dispenser_error">Invalid URL</string>