diff --git a/app/src/main/java/net/vonforst/evmap/fragment/ChargepriceFragment.kt b/app/src/main/java/net/vonforst/evmap/fragment/ChargepriceFragment.kt
index 28937a0f..aebc26d0 100644
--- a/app/src/main/java/net/vonforst/evmap/fragment/ChargepriceFragment.kt
+++ b/app/src/main/java/net/vonforst/evmap/fragment/ChargepriceFragment.kt
@@ -13,6 +13,7 @@ import androidx.navigation.fragment.findNavController
import androidx.navigation.ui.setupWithNavController
import androidx.recyclerview.widget.DividerItemDecoration
import androidx.recyclerview.widget.LinearLayoutManager
+import com.google.android.material.snackbar.Snackbar
import net.vonforst.evmap.MapsActivity
import net.vonforst.evmap.R
import net.vonforst.evmap.adapter.ChargepriceAdapter
@@ -22,11 +23,13 @@ import net.vonforst.evmap.api.goingelectric.Chargepoint
import net.vonforst.evmap.api.goingelectric.GoingElectricApi
import net.vonforst.evmap.databinding.FragmentChargepriceBinding
import net.vonforst.evmap.viewmodel.ChargepriceViewModel
+import net.vonforst.evmap.viewmodel.Status
import net.vonforst.evmap.viewmodel.viewModelFactory
import java.text.NumberFormat
class ChargepriceFragment : DialogFragment() {
private lateinit var binding: FragmentChargepriceBinding
+ private var connectionErrorSnackbar: Snackbar? = null
private val vm: ChargepriceViewModel by viewModels(factoryProducer = {
viewModelFactory {
@@ -146,6 +149,30 @@ class ChargepriceFragment : DialogFragment() {
else -> false
}
}
+
+ vm.chargePricesForChargepoint.observe(viewLifecycleOwner, Observer { res ->
+ when (res.status) {
+ Status.ERROR -> {
+ connectionErrorSnackbar?.dismiss()
+ connectionErrorSnackbar = Snackbar
+ .make(
+ view,
+ R.string.chargeprice_connection_error,
+ Snackbar.LENGTH_INDEFINITE
+ )
+ .setAction(R.string.retry) {
+ connectionErrorSnackbar?.dismiss()
+ vm.loadPrices()
+ }
+ connectionErrorSnackbar!!.show()
+ }
+ Status.SUCCESS -> {
+ connectionErrorSnackbar?.dismiss()
+ }
+ Status.LOADING -> {
+ }
+ }
+ })
}
companion object {
diff --git a/app/src/main/java/net/vonforst/evmap/viewmodel/ChargepriceViewModel.kt b/app/src/main/java/net/vonforst/evmap/viewmodel/ChargepriceViewModel.kt
index e3d423bb..84fa0c72 100644
--- a/app/src/main/java/net/vonforst/evmap/viewmodel/ChargepriceViewModel.kt
+++ b/app/src/main/java/net/vonforst/evmap/viewmodel/ChargepriceViewModel.kt
@@ -107,7 +107,7 @@ class ChargepriceViewModel(application: Application, chargepriceApiKey: String)
}
private var loadPricesJob: Job? = null
- private fun loadPrices() {
+ fun loadPrices() {
chargePrices.value = Resource.loading(null)
val geCharger = charger.value
val car = vehicle.value
diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml
index 16269f2a..80fd1248 100644
--- a/app/src/main/res/values-de/strings.xml
+++ b/app/src/main/res/values-de/strings.xml
@@ -186,4 +186,5 @@
Falls hier nur eine leere Seite erscheint, logge dich bitte zuerst bei GoingElectric.de ein.
schließen
Preisvergleich
+ Could not load prices
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index bab5c9df..c2e58464 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -185,4 +185,5 @@
Some providers offer cheaper plans exclusively to their customers (e.g., household electricity, gas)
close
Prices
+ Could not load prices