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)
}
setupRecyclerView()
setupDispensers()
}
override fun onDestroyView() {
@@ -46,26 +46,34 @@ class DispenserFragment : Fragment(R.layout.fragment_dispenser),
}
override fun onSharedPreferenceChanged(sharedPreferences: SharedPreferences?, key: String?) {
if (key == PREFERENCE_DISPENSER_URLS) setupRecyclerView()
if (key == PREFERENCE_DISPENSER_URLS) setupDispensers()
}
private fun setupRecyclerView() {
binding.epoxyRecycler.withModels {
setFilterDuplicates(true)
dispensers.forEachIndexed { index, url ->
add(
DispenserViewModel_()
.id(index)
.url(url)
.copy { _ -> requireContext().copyToClipBoard(url) }
.clear { _ ->
findNavController().navigate(
DispenserFragmentDirections
.actionDispenserFragmentToRemoveDispenserDialog(url)
)
}
)
private fun setupDispensers() {
if (dispensers.isNotEmpty()) {
binding.noDispensersTextView.visibility = View.GONE
binding.epoxyRecycler.visibility = View.VISIBLE
binding.epoxyRecycler.withModels {
setFilterDuplicates(true)
dispensers.forEachIndexed { index, url ->
add(
DispenserViewModel_()
.id(index)
.url(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: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
android:id="@+id/epoxy_recycler"
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>
<!-- DialogDispenserInput-->
<string name="no_dispensers_available">No dispensers available</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_error">Invalid URL</string>