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