syt0r / Kanji-Dojo

A multi-platform application for memorizing Japanese language
GNU General Public License v3.0
232 stars 6 forks source link

Crash when confirming exit multiple times #144

Closed Anti-Apple4life closed 4 months ago

Anti-Apple4life commented 4 months ago

When exiting a practice, if the confirm button is hit multiple times, a crash occurs.

https://github.com/syt0r/Kanji-Dojo/assets/59315931/9c471642-536d-4208-9f18-5894ae685761

Here is the crash log:

FATAL EXCEPTION: main
Process: ua.syt0r.kanji.fdroid, PID: 24726
java.util.NoSuchElementException: Sequence is empty.
    at kotlin.sequences.SequencesKt.last(Unknown Source:26)
    at androidx.room.AutoCloser$Companion.findStartDestination(Unknown Source:18)
    at io.ktor.client.engine.UtilsKt$mergeHeaders$1.invoke(SourceFile:181)
    at androidx.lifecycle.ViewModelKt.navOptions(Unknown Source:5)
    at androidx.lifecycle.ViewModelKt.NavHost(SourceFile:56)
    at androidx.lifecycle.ViewModelKt.NavHost(SourceFile:140)
    at ua.syt0r.kanji.presentation.screen.main.MainNavigationAndroidKt.MainNavigation(Unknown Source:92)
    at io.ktor.util.NIOKt.MainScreen(Unknown Source:69)
    at ua.syt0r.kanji.core.appdata.db.AppDataQueries$getRadicals$2.invoke(SourceFile:110)
    at ua.syt0r.kanji.core.appdata.db.AppDataQueries$getRadicals$2.invoke(SourceFile:14)
    at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(SourceFile:8)
    at androidx.compose.material.SurfaceKt$Surface$1.invoke(SourceFile:46)
    at androidx.compose.material.SurfaceKt$Surface$1.invoke(SourceFile:2)
    at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(SourceFile:8)
    at io.ktor.http.UrlKt.CompositionLocalProvider(SourceFile:40)
    at androidx.compose.material3.SurfaceKt.Surface-T9BRK9s(Unknown Source:136)
    at ua.syt0r.kanji.core.appdata.db.AppDataQueries$getRadicals$2.invoke(SourceFile:109)
    at ua.syt0r.kanji.core.appdata.db.AppDataQueries$getRadicals$2.invoke(SourceFile:13)
    at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(SourceFile:8)
    at androidx.compose.material.SnackbarKt$TextOnlySnackbar$3.invoke(SourceFile:8)
    at androidx.compose.material.SnackbarKt$TextOnlySnackbar$3.invoke(SourceFile:2)
    at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(SourceFile:8)
    at io.ktor.http.UrlKt.CompositionLocalProvider(SourceFile:40)
    at androidx.compose.foundation.CanvasKt$Canvas$1.invoke(SourceFile:135)
    at androidx.compose.foundation.CanvasKt$Canvas$1.invoke(SourceFile:21)
    at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(SourceFile:8)
    at io.ktor.http.UrlKt.CompositionLocalProvider(SourceFile:21)
    at androidx.compose.material3.TextKt.ProvideTextStyle(Unknown Source:77)
    at androidx.compose.material3.ButtonKt$Button$3$1.invoke(SourceFile:81)
    at androidx.compose.material3.ButtonKt$Button$3$1.invoke(SourceFile:5)
    at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(SourceFile:8)
    at io.ktor.http.UrlKt.CompositionLocalProvider(SourceFile:40)
    at kotlin.LazyKt__LazyKt.MaterialTheme(Unknown Source:314)
    at ua.syt0r.kanji.presentation.common.theme.ThemeKt.AppTheme(Unknown Source:289)
    at ua.syt0r.kanji.core.appdata.db.AppDataQueries$getRadicals$2.invoke(SourceFile:111)
    at ua.syt0r.kanji.core.appdata.db.AppDataQueries$getRadicals$2.invoke(SourceFile:12)
    at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(SourceFile:8)
    at io.ktor.http.UrlKt.CompositionLocalProvider(SourceFile:21)
    at io.ktor.http.UrlKt.KanjiDojoApp(Unknown Source:104)
    at ua.syt0r.kanji.presentation.common.ui.CustomRippleTheme$1.invoke(SourceFile:111)
    at ua.syt0r.kanji.presentation.common.ui.CustomRippleTheme$1.invoke(SourceFile:25)
    at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(SourceFile:8)
    at androidx.compose.ui.platform.ComposeView.Content(Unknown Source:24)
    at io.ktor.http.URLParserKt$parseQuery$1.invoke(SourceFile:87)
    at io.ktor.http.URLParserKt$parseQuery$1.invoke(SourceFile:25)
    at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(SourceFile:8)
    at io.ktor.http.UrlKt.CompositionLocalProvider(SourceFile:40)
    at androidx.compose.ui.platform.CompositionLocalsKt.ProvideCommonCompositionLocals(Unknown Source:284)
    at androidx.compose.material.ButtonKt$Button$3.invoke(SourceFile:87)
    at androidx.compose.material.ButtonKt$Button$3.invoke(SourceFile:14)
    at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(SourceFile:8)
    at io.ktor.http.UrlKt.CompositionLocalProvider(SourceFile:40)
    at androidx.compose.ui.platform.AndroidCompositionLocals_androidKt.ProvideAndroidCompositionLocals(Unknown Source:448)
    at androidx.compose.ui.platform.WrappedComposition$setContent$1$1.invoke(SourceFile:18)
    at androidx.compose.ui.platform.WrappedComposition$setContent$1$1.invoke(SourceFile:2)
    at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(SourceFile:8)
    at io.ktor.http.UrlKt.CompositionLocalProvider(SourceFile:21)
    at androidx.compose.ui.platform.WrappedComposition$setContent$1$1.invoke(SourceFile:15)
    at androidx.compose.ui.platform.WrappedComposition$setContent$1$1.invoke(SourceFile:1)
    at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(SourceFile:8)
    at kotlin.LazyKt__LazyKt.invokeComposable(Unknown Source:14)
    at androidx.compose.runtime.ComposerImpl.doCompose(Unknown Source:111)
    at androidx.compose.runtime.CompositionImpl.composeContent(Unknown Source:41)
    at androidx.compose.runtime.Recomposer.composeInitial$runtime_release(Unknown Source:50)
    at androidx.compose.runtime.CompositionImpl.composeInitial(Unknown Source:8)
    at androidx.compose.runtime.CompositionImpl.setContent(Unknown Source:2)
    at androidx.compose.runtime.Latch$await$2$2.invoke(SourceFile:76)
    at androidx.compose.ui.platform.AndroidComposeView.setOnViewTreeOwnersAvailable(Unknown Source:6)
    at androidx.compose.ui.platform.WrappedComposition.setContent(Unknown Source:9)
    at androidx.compose.ui.platform.WrappedComposition.onStateChanged(Unknown Source:18)
    at androidx.lifecycle.LifecycleRegistry$ObserverWithState.dispatchEvent(Unknown Source:22)
    at androidx.lifecycle.LifecycleRegistry.addObserver(Unknown Source:106)
    at androidx.compose.runtime.Latch$await$2$2.invoke(SourceFile:70)
    at androidx.compose.ui.platform.AndroidComposeView.onAttachedToWindow(Unknown Source:104)
    at android.view.View.dispatchAttachedToWindow(View.java:23227)
    at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3698)
    at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3705)
    at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3705)
    at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3705)
    at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3705)
    at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3705)
    at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3705)
    at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:3901)
    at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:3288)
    at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:11344)
    at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1689)
    at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1698)
    at android.view.Choreographer.doCallbacks(Choreographer.java:1153)
    at android.view.Choreographer.doFrame(Choreographer.java:1079)
    at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1646)
    at android.os.Handler.handleCallback(Handler.java:958)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loopOnce(Looper.java:230)
    at android.os.Looper.loop(Looper.java:319)
    at android.app.ActivityThread.main(ActivityThread.java:8919)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:578)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1103)
syt0r commented 4 months ago

Omg, thanks for letting me know, I've got many crash reports about it but I couldn't understand how to reproduce it

syt0r commented 4 months ago

Should be fixed in new version 2.0.7