-
Notifications
You must be signed in to change notification settings - Fork 0
Add parameter for collections to beste.schule/api/grades #492
Copy link
Copy link
Open
Description
The app crashes sometimes when the getAll() function in GradeApiImpl,kt is called:
app/core/network/src/commonMain/kotlin/plus/vplan/app/network/besteschule/GradesApiImpl.kt
Line 41 in 199725a
| response.body<ResponseDataWrapper<List<ApiGradeResponse>>>().data |
Failed to sync grades: plus.vplan.app.core.model.application.network.ApiException: An API call failed. (Fix with AI)
at plus.vplan.app.network.besteschule.GradesApiImpl.getAll(GradesApiImpl.kt:48)
at plus.vplan.app.network.besteschule.GradesApiImpl$getAll$1.invokeSuspend(Unknown Source:13)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:34)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:100)
at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:586)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:829)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:717)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:704)
Caused by: kotlinx.serialization.MissingFieldException: Field 'collection' is required for type with serial name 'plus.vplan.app.network.besteschule.ApiGradeResponse', but it was missing at path: $.data[0]
at kotlinx.serialization.internal.JsonInternalDependenciesKt.missingFieldExceptionWithNewMessage(JsonInternalDependencies.kt:21)
at kotlinx.serialization.json.internal.StreamingJsonDecoder.decodeSerializableValue(StreamingJsonDecoder.kt:95)
at kotlinx.serialization.encoding.AbstractDecoder.decodeSerializableValue(AbstractDecoder.kt:43)
at kotlinx.serialization.encoding.AbstractDecoder.decodeSerializableElement(AbstractDecoder.kt:70)
at kotlinx.serialization.json.internal.StreamingJsonDecoder.decodeSerializableElement(StreamingJsonDecoder.kt:168)
at kotlinx.serialization.encoding.CompositeDecoder.decodeSerializableElement$default(Decoding.kt:539)
at kotlinx.serialization.internal.CollectionLikeSerializer.readElement(CollectionSerializers.kt:80)
at kotlinx.serialization.internal.AbstractCollectionSerializer.readElement$default(CollectionSerializers.kt:51)
at kotlinx.serialization.internal.AbstractCollectionSerializer.merge(CollectionSerializers.kt:36)
at kotlinx.serialization.internal.AbstractCollectionSerializer.deserialize(CollectionSerializers.kt:43)
at kotlinx.serialization.json.internal.StreamingJsonDecoder.decodeSerializableValue(StreamingJsonDecoder.kt:69)
at kotlinx.serialization.encoding.AbstractDecoder.decodeSerializableValue(AbstractDecoder.kt:43)
at kotlinx.serialization.encoding.AbstractDecoder.decodeSerializableElement(AbstractDecoder.kt:70)
at kotlinx.serialization.json.internal.StreamingJsonDecoder.decodeSerializableElement(StreamingJsonDecoder.kt:168)
at plus.vplan.app.network.besteschule.ResponseDataWrapper$$serializer.deserialize(ResponseDataWrapper.kt:6)
at plus.vplan.app.network.besteschule.ResponseDataWrapper$$serializer.deserialize(ResponseDataWrapper.kt:6)
at kotlinx.serialization.json.internal.StreamingJsonDecoder.decodeSerializableValue(StreamingJsonDecoder.kt:69)
at kotlinx.serialization.json.Json.decodeFromString(Json.kt:149)
at plus.vplan.app.di.UndefinedStrippingConverter.deserialize(appModule.kt:187)
at io.ktor.serialization.ContentConverterKt$deserialize$$inlined$map$1$2.emit(Emitters.kt:51)
at kotlinx.coroutines.flow.FlowKt__BuildersKt$asFlow$$inlined$unsafeFlow$3.collect(SafeCollector.common.kt:111)
at io.ktor.serialization.ContentConverterKt$deserialize$$inlined$map$1.collect(SafeCollector.common.kt:109)
at kotlinx.coroutines.flow.FlowKt__ReduceKt.firstOrNull(Reduce.kt:247)
at kotlinx.coroutines.flow.FlowKt.firstOrNull(Unknown Source:1)
at io.ktor.serialization.ContentConverterKt.deserialize(ContentConverter.kt:113)
at io.ktor.client.plugins.contentnegotiation.ContentNegotiationKt.ContentNegotiation$lambda$0$convertResponse(ContentNegotiation.kt:284)
at io.ktor.client.plugins.contentnegotiation.ContentNegotiationKt.access$ContentNegotiation$lambda$0$convertResponse(ContentNegotiation.kt:1)
at io.ktor.client.plugins.contentnegotiation.ContentNegotiationKt$ContentNegotiation$2$2.invokeSuspend(ContentNegotiation.kt:299)
2026-03-27 16:23:39.928 18724-18909 <no-tag> plus.vplan.app.debug E at io.ktor.client.plugins.contentnegotiation.ContentNegotiationKt$ContentNegotiation$2$2.invoke(Unknown Source:19) (Fix with AI)
at io.ktor.client.plugins.contentnegotiation.ContentNegotiationKt$ContentNegotiation$2$2.invoke(Unknown Source:10)
at io.ktor.client.plugins.api.TransformResponseBodyHook$install$1.invokeSuspend(KtorCallContexts.kt:113)
at io.ktor.client.plugins.api.TransformResponseBodyHook$install$1.invoke(Unknown Source:11)
at io.ktor.client.plugins.api.TransformResponseBodyHook$install$1.invoke(Unknown Source:6)
at io.ktor.util.pipeline.DebugPipelineContext.proceedLoop(DebugPipelineContext.kt:79)
at io.ktor.util.pipeline.DebugPipelineContext.proceed(DebugPipelineContext.kt:57)
at io.ktor.client.HttpClient$4.invokeSuspend(HttpClient.kt:1401)
at io.ktor.client.HttpClient$4.invoke(Unknown Source:11)
at io.ktor.client.HttpClient$4.invoke(Unknown Source:6)
at io.ktor.util.pipeline.DebugPipelineContext.proceedLoop(DebugPipelineContext.kt:79)
at io.ktor.util.pipeline.DebugPipelineContext.proceed(DebugPipelineContext.kt:57)
at io.ktor.client.plugins.logging.ReceiveHook$Context.proceed(Logging.kt:751)
at io.ktor.client.plugins.logging.LoggingKt$Logging$2$4.invokeSuspend(Logging.kt:624)
at io.ktor.client.plugins.logging.LoggingKt$Logging$2$4.invoke(Unknown Source:15)
at io.ktor.client.plugins.logging.LoggingKt$Logging$2$4.invoke(Unknown Source:6)
at io.ktor.client.plugins.logging.ReceiveHook$install$1.invokeSuspend(Logging.kt:759)
at io.ktor.client.plugins.logging.ReceiveHook$install$1.invoke(Unknown Source:11)
at io.ktor.client.plugins.logging.ReceiveHook$install$1.invoke(Unknown Source:6)
at io.ktor.util.pipeline.DebugPipelineContext.proceedLoop(DebugPipelineContext.kt:79)
at io.ktor.util.pipeline.DebugPipelineContext.proceed(DebugPipelineContext.kt:57)
at io.ktor.client.plugins.ReceiveError$install$1.invokeSuspend(HttpCallValidator.kt:180)
at io.ktor.client.plugins.ReceiveError$install$1.invoke(Unknown Source:11)
at io.ktor.client.plugins.ReceiveError$install$1.invoke(Unknown Source:6)
at io.ktor.util.pipeline.DebugPipelineContext.proceedLoop(DebugPipelineContext.kt:79)
at io.ktor.util.pipeline.DebugPipelineContext.proceed(DebugPipelineContext.kt:57)
at io.ktor.util.pipeline.DebugPipelineContext.execute$ktor_utils(DebugPipelineContext.kt:63)
at io.ktor.util.pipeline.Pipeline.execute(Pipeline.kt:92)
at io.ktor.client.call.HttpClientCall.bodyNullable(HttpClientCall.kt:99)
at plus.vplan.app.network.besteschule.GradesApiImpl.getAll(GradesApiImpl.kt:188)
... 7 more
Caused by: kotlinx.serialization.MissingFieldException: Field 'collection' is required for type with serial name 'plus.vplan.app.network.besteschule.ApiGradeResponse', but it was missing
at kotlinx.serialization.internal.PluginExceptionsKt.throwMissingFieldException(PluginExceptions.kt:20)
at plus.vplan.app.network.besteschule.ApiGradeResponse.<init>(GradesApiImpl.kt:112)
at plus.vplan.app.network.besteschule.ApiGradeResponse$$serializer.deserialize(GradesApiImpl.kt:112)
at plus.vplan.app.network.besteschule.ApiGradeResponse$$serializer.deserialize(GradesApiImpl.kt:112)
at kotlinx.serialization.json.internal.StreamingJsonDecoder.decodeSerializableValue(StreamingJsonDecoder.kt:69)
... 63 more
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels