Skip to content
Snippets Groups Projects
Commit 41687038 authored by Jonas Broeckmann's avatar Jonas Broeckmann
Browse files

Fix nullable value in hiwi tracker api + Add additional error details

parent 5f68b0e7
No related branches found
No related tags found
No related merge requests found
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="KotlinJpsPluginSettings">
<option name="version" value="2.0.0" />
<option name="version" value="2.0.10" />
</component>
</project>
\ No newline at end of file
......@@ -124,7 +124,7 @@ data class MonthDataResponse(
val secondsWorked: Int,
val holidays: Int,
@SerialName("last_reset")
val lastReset: String,
val lastReset: String?,
@SerialName("vacation_days")
val vacationDays: Int?,
@SerialName("hours_worked")
......
......@@ -43,6 +43,7 @@ import net.novagamestudios.kaffeekasse.api.portal.model.PortalAPIResponse
import net.novagamestudios.kaffeekasse.model.credentials.Login
import net.novagamestudios.kaffeekasse.model.credentials.isValid
import net.novagamestudios.kaffeekasse.util.MutableCookiesStorage
import net.novagamestudios.kaffeekasse.util.WrappedJsonSerializationException
class PortalClient(
coroutineScope: CoroutineScope
......@@ -72,7 +73,11 @@ class PortalClient(
}
}
internal inline fun <reified T> JsonElement.decodeAs() = jsonFormat.decodeFromJsonElement<T>(this)
internal inline fun <reified T> JsonElement.decodeAs() = try {
jsonFormat.decodeFromJsonElement<T>(this)
} catch (e: Exception) {
throw WrappedJsonSerializationException(e, this)
}
private val portal = object : Module(this, "portal") {
......
......@@ -112,6 +112,7 @@ import net.novagamestudios.kaffeekasse.ui.util.HorizontalPagedLayout
import net.novagamestudios.kaffeekasse.ui.util.KeyedPagerState
import net.novagamestudios.kaffeekasse.ui.util.onClickComingSoon
import net.novagamestudios.kaffeekasse.ui.util.synchronizePagerState
import net.novagamestudios.kaffeekasse.util.WrappedJsonSerializationException
import net.novagamestudios.kaffeekasse.util.richdata.RichData
import net.novagamestudios.kaffeekasse.util.richdata.RichDataState
import net.novagamestudios.kaffeekasse.util.richdata.collectAsRichStateHere
......@@ -297,6 +298,12 @@ fun Overview(
message = "Failed to fetch data",
Modifier.fillMaxSize(),
exceptions = data.exceptions,
additionalDetails = data.exceptions.mapNotNull { exception ->
when (exception) {
is WrappedJsonSerializationException -> exception.json
else -> null
}
},
onRetry = { model.refreshMonth(model.currentMonth) }
)
......
package net.novagamestudios.kaffeekasse.util
import kotlinx.serialization.json.JsonElement
open class WrappedJsonSerializationException(
message: String?,
cause: Throwable?,
val json: JsonElement
) : IllegalArgumentException(message, cause) {
constructor(e: Exception, json: JsonElement) : this(e.message, e, json)
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment