hopefully fixes an unreproducible serialization crash

realmasync
Laurent 3 years ago
parent 602cd11849
commit d46d9597d2
  1. 24
      app/proguard-rules.pro
  2. 9
      app/src/main/java/net/pokeranalytics/android/api/CurrencyConverterApi.kt
  3. 13
      app/src/main/java/net/pokeranalytics/android/ui/fragment/SettingsFragment.kt

@ -64,4 +64,26 @@
-keep class com.google.j2objc.annotations.** { *; } -keep class com.google.j2objc.annotations.** { *; }
# Enum # Enum
-optimizations !class/unboxing/enum -optimizations !class/unboxing/enum
# Serialization
-keepattributes *Annotation*, InnerClasses
-dontnote kotlinx.serialization.AnnotationsKt # core serialization annotations
# kotlinx-serialization-json specific. Add this if you have java.lang.NoClassDefFoundError kotlinx.serialization.json.JsonObjectSerializer
-keepclassmembers class kotlinx.serialization.json.** {
*** Companion;
}
-keepclasseswithmembers class kotlinx.serialization.json.** {
kotlinx.serialization.KSerializer serializer(...);
}
-keep,includedescriptorclasses class net.pokeranalytics.android.**$$serializer { *; }
-keepclassmembers class net.pokeranalytics.android.** {
*** Companion;
}
-keepclasseswithmembers class net.pokeranalytics.android.** {
kotlinx.serialization.KSerializer serializer(...);
}

@ -1,6 +1,7 @@
package net.pokeranalytics.android.api package net.pokeranalytics.android.api
import android.content.Context import android.content.Context
import androidx.annotation.Keep
import com.android.volley.VolleyError import com.android.volley.VolleyError
import com.android.volley.toolbox.StringRequest import com.android.volley.toolbox.StringRequest
import com.android.volley.toolbox.Volley import com.android.volley.toolbox.Volley
@ -9,8 +10,11 @@ import kotlinx.serialization.decodeFromString
import kotlinx.serialization.json.Json import kotlinx.serialization.json.Json
import timber.log.Timber import timber.log.Timber
@Keep
@Serializable @Serializable
data class RateResponse(var info: RateInfo) data class RateResponse(var info: RateInfo)
@Keep
@Serializable @Serializable
data class RateInfo(var rate: Double) data class RateInfo(var rate: Double)
@ -23,13 +27,8 @@ class CurrencyConverterApi {
fun currencyRate(fromCurrency: String, toCurrency: String, context: Context, callback: (Double?, VolleyError?) -> (Unit)) { fun currencyRate(fromCurrency: String, toCurrency: String, context: Context, callback: (Double?, VolleyError?) -> (Unit)) {
val queue = Volley.newRequestQueue(context) val queue = Volley.newRequestQueue(context)
// val url = "https://free.currconv.com/api/v7/convert?q=${pair}&compact=ultra&apiKey=9b56e742a75392c8aeb7"
val url = "https://api.apilayer.com/exchangerates_data/convert?to=$toCurrency&from=$fromCurrency&amount=1" val url = "https://api.apilayer.com/exchangerates_data/convert?to=$toCurrency&from=$fromCurrency&amount=1"
// https://free.currconv.com/api/v7/convert?q=GBP_USD&compact=ultra&apiKey=5ba8d38995282fe8b1c8
// { "USD_PHP": 44.1105, "PHP_USD": 0.0227 }
Timber.d("Api call = $url") Timber.d("Api call = $url")
val stringRequest = object : StringRequest( val stringRequest = object : StringRequest(

@ -168,14 +168,15 @@ class SettingsFragment : RealmFragment(), RowRepresentableDelegate, StaticRowRep
val message = requireContext().getString(R.string.currency_rate_confirmation, mainCurrencyCode, currencyCode) val message = requireContext().getString(R.string.currency_rate_confirmation, mainCurrencyCode, currencyCode)
context?.let { context ->
// val message = "Please enter the $mainCurrencyCode to $currencyCode rate to apply to all your bankrolls" showEditTextAlertDialog(context, InputType.TYPE_CLASS_NUMBER or InputType.TYPE_NUMBER_FLAG_DECIMAL,
showEditTextAlertDialog(requireContext(), InputType.TYPE_CLASS_NUMBER or InputType.TYPE_NUMBER_FLAG_DECIMAL, message = message, editTextText = apiRate?.toString()) { value ->
message = message, editTextText = apiRate?.toString()) { value -> value.toDoubleOrNull()?.let { rate ->
value.toDoubleOrNull()?.let { rate -> updateMainCurrency(currencyCode, rate)
updateMainCurrency(currencyCode, rate) }
} }
} }
} }
} }

Loading…
Cancel
Save