Skip to content

Conversation

@cketti
Copy link
Collaborator

@cketti cketti commented Nov 5, 2024

This fixes a crash reported via Google Play.

Exception java.lang.NullPointerException:
  at app.k9mail.feature.account.setup.ui.specialfolders.SpecialFoldersContentKt$SpecialFoldersContent$1$1$1.invoke (SpecialFoldersContent.kt:53)
  at app.k9mail.feature.account.setup.ui.specialfolders.SpecialFoldersContentKt$SpecialFoldersContent$1$1$1.invoke (SpecialFoldersContent.kt:51)
  at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke (ComposableLambda.jvm.kt:109)
  at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke (ComposableLambda.jvm.kt:35)
  at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke (ComposableLambda.jvm.kt:35)
  at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke (ComposableLambda.jvm.kt:35)
  at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke (ComposableLambda.jvm.kt:35)
  at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke (ComposableLambda.jvm.kt:35)
  at app.k9mail.core.ui.compose.designsystem.molecule.ContentLoadingErrorViewKt$ContentLoadingErrorView$1$1.invoke (ContentLoadingErrorView.kt:29)
  at app.k9mail.core.ui.compose.designsystem.molecule.ContentLoadingErrorViewKt$ContentLoadingErrorView$1$1.invoke (ContentLoadingErrorView.kt:25)
  at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke (ComposableLambda.jvm.kt:139)
  at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke (ComposableLambda.jvm.kt:35)
  at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke (ComposableLambda.jvm.kt:35)
  at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke (ComposableLambda.jvm.kt:35)
  at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke (ComposableLambda.jvm.kt:35)
  at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke (ComposableLambda.jvm.kt:35)
  at androidx.compose.animation.AnimatedContentKt$AnimatedContent$6$1$5.invoke (AnimatedContent.kt:803)
  at androidx.compose.animation.AnimatedContentKt$AnimatedContent$6$1$5.invoke (AnimatedContent.kt:792)
  at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke (ComposableLambda.jvm.kt:118)
  at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke (ComposableLambda.jvm.kt:35)
  at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke (ComposableLambda.jvm.kt:35)
  at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke (ComposableLambda.jvm.kt:35)
  at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke (ComposableLambda.jvm.kt:35)
  at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke (ComposableLambda.jvm.kt:35)
  at androidx.compose.animation.AnimatedVisibilityKt.AnimatedEnterExitImpl (AnimatedVisibility.kt:771)
  at androidx.compose.animation.AnimatedContentKt$AnimatedContent$6$1.invoke (AnimatedContent.kt:774)
  at androidx.compose.animation.AnimatedContentKt$AnimatedContent$6$1.invoke (AnimatedContent.kt:757)
  at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke (ComposableLambda.jvm.kt:109)
  at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke (ComposableLambda.jvm.kt:35)
  at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke (ComposableLambda.jvm.kt:35)
  at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke (ComposableLambda.jvm.kt:35)
  at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke (ComposableLambda.jvm.kt:35)
  at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke (ComposableLambda.jvm.kt:35)
  at androidx.compose.animation.AnimatedContentKt.AnimatedContent (AnimatedContent.kt:816)
  at androidx.compose.animation.AnimatedContentKt.AnimatedContent (AnimatedContent.kt:143)
  at app.k9mail.core.ui.compose.designsystem.molecule.ContentLoadingErrorViewKt.ContentLoadingErrorView (ContentLoadingErrorView.kt:22)
  at app.k9mail.feature.account.setup.ui.specialfolders.SpecialFoldersContentKt$SpecialFoldersContent$1.invoke (SpecialFoldersContent.kt:43)
  at app.k9mail.feature.account.setup.ui.specialfolders.SpecialFoldersContentKt$SpecialFoldersContent$1.invoke (SpecialFoldersContent.kt:37)
  at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke (ComposableLambda.jvm.kt:109)
  at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke (ComposableLambda.jvm.kt:35)
  at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke (ComposableLambda.jvm.kt:35)
  at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke (ComposableLambda.jvm.kt:35)
  at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke (ComposableLambda.jvm.kt:35)
  at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke (ComposableLambda.jvm.kt:35)
  at androidx.compose.runtime.RecomposeScopeImpl.compose (RecomposeScopeImpl.kt:192)
  at androidx.compose.runtime.ComposerImpl.recomposeToGroupEnd (Composer.kt:2825)
  at androidx.compose.runtime.ComposerImpl.skipToGroupEnd (Composer.kt:3139)
  at app.k9mail.core.ui.compose.designsystem.template.ResponsiveWidthContainerKt.ResponsiveWidthContainer (ResponsiveWidthContainer.kt:62)
  at app.k9mail.feature.account.setup.ui.specialfolders.SpecialFoldersContentKt.SpecialFoldersContent (SpecialFoldersContent.kt:32)
  at app.k9mail.feature.account.setup.ui.specialfolders.SpecialFoldersScreenKt$SpecialFoldersScreen$5.invoke (SpecialFoldersScreen.kt:51)
  at app.k9mail.feature.account.setup.ui.specialfolders.SpecialFoldersScreenKt$SpecialFoldersScreen$5.invoke (SpecialFoldersScreen.kt:50)
  at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke (ComposableLambda.jvm.kt:118)
  at androidx.compose.runtime.internal.ComposableLambdaImpl$invoke$1.invoke (ComposableLambda.jvm.kt:130)
  at androidx.compose.runtime.internal.ComposableLambdaImpl$invoke$1.invoke (ComposableLambda.jvm.kt:129)
  at androidx.compose.runtime.RecomposeScopeImpl.compose (RecomposeScopeImpl.kt:192)
  at androidx.compose.runtime.ComposerImpl.recomposeToGroupEnd (Composer.kt:2825)
  at androidx.compose.runtime.ComposerImpl.skipCurrentGroup (Composer.kt:3116)
  at androidx.compose.runtime.ComposerImpl.doCompose (Composer.kt:3607)
  at androidx.compose.runtime.ComposerImpl.recompose$runtime_release (Composer.kt:3552)
  at androidx.compose.runtime.CompositionImpl.recompose (Composition.kt:948)
  at androidx.compose.runtime.Recomposer.performRecompose (Recomposer.kt:1206)
  at androidx.compose.runtime.Recomposer.access$setCloseCause$p (Recomposer.kt:132)
  at androidx.compose.runtime.Recomposer.access$performRecompose (Recomposer.kt:132)
  at androidx.compose.runtime.Recomposer$runRecomposeAndApplyChanges$2$1.invoke (Recomposer.kt:616)
  at androidx.compose.runtime.Recomposer$runRecomposeAndApplyChanges$2$1.invoke (Recomposer.kt:585)
  at androidx.compose.ui.platform.AndroidUiFrameClock$withFrameNanos$2$callback$1.doFrame (AndroidUiFrameClock.android.kt:41)
  at androidx.compose.ui.platform.AndroidUiDispatcher.performFrameDispatch (AndroidUiDispatcher.android.kt:109)
  at androidx.compose.ui.platform.AndroidUiDispatcher.access$setScheduledFrameDispatch$p (AndroidUiDispatcher.android.kt:41)
  at androidx.compose.ui.platform.AndroidUiDispatcher.access$performFrameDispatch (AndroidUiDispatcher.android.kt:41)
  at androidx.compose.ui.platform.AndroidUiDispatcher$dispatchCallback$1.doFrame (AndroidUiDispatcher.android.kt:69)
  at android.view.Choreographer$CallbackRecord.run (Choreographer.java:1592)
  at android.view.Choreographer$CallbackRecord.run (Choreographer.java:1603)
  at android.view.Choreographer.doCallbacks (Choreographer.java:1125)
  at android.view.Choreographer.doFrame (Choreographer.java:1026)
  at android.view.Choreographer$FrameDisplayEventReceiver.run (Choreographer.java:1567)
  at android.os.Handler.handleCallback (Handler.java:958)
  at android.os.Handler.dispatchMessage (Handler.java:99)
  at android.os.Looper.loopOnce (Looper.java:224)
  at android.os.Looper.loop (Looper.java:318)
  at android.app.ActivityThread.main (ActivityThread.java:8763)
  at java.lang.reflect.Method.invoke
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:561)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1013)

For more details, see #8500.

This supersedes #8500.

@cketti cketti requested a review from wmontwe as a code owner November 5, 2024 19:40
@wmontwe
Copy link
Member

wmontwe commented Nov 7, 2024

I think the last two commit could be combined

@cketti cketti force-pushed the fix-SpecialFoldersScreen-crash branch from 7a58d7d to a36e7ef Compare November 12, 2024 11:31
@cketti
Copy link
Collaborator Author

cketti commented Nov 12, 2024

I removed the test because it's only really useful for verifying this API change fixes the crash. Afterwards it's more confusing than helpful.

I added some KDoc to ContentLoadingErrorView with instructions on how to properly use it and a warning about the dangers.

@cketti cketti requested a review from wmontwe November 12, 2024 11:34
Copy link
Member

@wmontwe wmontwe left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍

@cketti cketti merged commit a226a3b into thunderbird:main Nov 12, 2024
@cketti cketti deleted the fix-SpecialFoldersScreen-crash branch November 12, 2024 12:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants