Purchasely / Purchasely-Android

Purchasely SDK for Android
Other
16 stars 2 forks source link

Jetpack Compose version crashes when accessed with no internet #6

Closed ianngumi closed 1 year ago

ianngumi commented 1 year ago

Steps to reproduce:

  1. Turn off internet
  2. Open app
  3. Open Jetpack Compose Paywall
  4. Close dialog
  5. Crash

Crash log received:

FATAL EXCEPTION: main
    Process: com.purchasely.demo, PID: 14057
    java.lang.NullPointerException: Attempt to invoke virtual method 'void android.view.View.setMinimumWidth(int)' on a null object reference
        at androidx.compose.ui.viewinterop.AndroidViewHolder$layoutNode$1$5.measure-3p2s80s(AndroidViewHolder.android.kt:311)
        at androidx.compose.ui.node.InnerNodeCoordinator.measure-BRTryo0(InnerNodeCoordinator.kt:103)
        at androidx.compose.foundation.layout.PaddingModifier.measure-3p2s80s(Padding.kt:364)
        at androidx.compose.ui.node.BackwardsCompatNode.measure-3p2s80s(BackwardsCompatNode.kt:343)
        at androidx.compose.ui.node.LayoutModifierNodeCoordinator.measure-BRTryo0(LayoutModifierNodeCoordinator.kt:155)
        at androidx.compose.foundation.layout.FillModifier.measure-3p2s80s(Size.kt:658)
        at androidx.compose.ui.node.BackwardsCompatNode.measure-3p2s80s(BackwardsCompatNode.kt:343)
        at androidx.compose.ui.node.LayoutModifierNodeCoordinator.measure-BRTryo0(LayoutModifierNodeCoordinator.kt:155)
        at androidx.compose.ui.node.LayoutNodeLayoutDelegate$performMeasure$2.invoke(LayoutNodeLayoutDelegate.kt:1090)
        at androidx.compose.ui.node.LayoutNodeLayoutDelegate$performMeasure$2.invoke(LayoutNodeLayoutDelegate.kt:1086)
        at androidx.compose.runtime.snapshots.Snapshot$Companion.observe(Snapshot.kt:2139)
        at androidx.compose.runtime.snapshots.SnapshotStateObserver$observeReads$1$1.invoke(SnapshotStateObserver.kt:130)
        at androidx.compose.runtime.snapshots.SnapshotStateObserver$observeReads$1$1.invoke(SnapshotStateObserver.kt:126)
        at androidx.compose.runtime.SnapshotStateKt__DerivedStateKt.observeDerivedStateRecalculations(DerivedState.kt:341)
        at androidx.compose.runtime.SnapshotStateKt.observeDerivedStateRecalculations(Unknown Source:1)
        at androidx.compose.runtime.snapshots.SnapshotStateObserver.observeReads(SnapshotStateObserver.kt:126)
        at androidx.compose.ui.node.OwnerSnapshotObserver.observeReads$ui_release(OwnerSnapshotObserver.kt:120)
        at androidx.compose.ui.node.OwnerSnapshotObserver.observeMeasureSnapshotReads$ui_release(OwnerSnapshotObserver.kt:107)
        at androidx.compose.ui.node.LayoutNodeLayoutDelegate.performMeasure-BRTryo0(LayoutNodeLayoutDelegate.kt:1086)
        at androidx.compose.ui.node.LayoutNodeLayoutDelegate.access$performMeasure-BRTryo0(LayoutNodeLayoutDelegate.kt:36)
        at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate.remeasure-BRTryo0(LayoutNodeLayoutDelegate.kt:342)
        at androidx.compose.ui.node.LayoutNode.remeasure-_Sx5XlM$ui_release(LayoutNode.kt:1118)
        at androidx.compose.ui.node.LayoutNode.remeasure-_Sx5XlM$ui_release$default(LayoutNode.kt:1109)
        at androidx.compose.ui.node.MeasureAndLayoutDelegate.doRemeasure-sdFAvZA(MeasureAndLayoutDelegate.kt:309)
        at androidx.compose.ui.node.MeasureAndLayoutDelegate.remeasureAndRelayoutIfNeeded(MeasureAndLayoutDelegate.kt:434)
        at androidx.compose.ui.node.MeasureAndLayoutDelegate.access$remeasureAndRelayoutIfNeeded(MeasureAndLayoutDelegate.kt:39)
        at androidx.compose.ui.node.MeasureAndLayoutDelegate.measureAndLayout(MeasureAndLayoutDelegate.kt:330)
        at androidx.compose.ui.platform.AndroidComposeView.measureAndLayout(AndroidComposeView.android.kt:774)
        at androidx.compose.ui.node.Owner.measureAndLayout$default(Owner.kt:216)
        at androidx.compose.ui.platform.AndroidComposeView.dispatchDraw(AndroidComposeView.android.kt:999)
        at android.view.View.draw(View.java:23198)
        at android.view.View.updateDisplayListIfDirty(View.java:22062)
        at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4513)
        at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4486)
        at android.view.View.updateDisplayListIfDirty(View.java:22018)
        at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4513)
        at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4486)
        at android.view.View.updateDisplayListIfDirty(View.java:22018)
        at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4513)
        at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4486)
kherembourg commented 1 year ago

Hello @ianngumi Do you still have that issue? Your logs does not contain anything related to Purchasely SDK and I have looked at the setMinimumWidth() calls in the SDK and none of them can be called when the View attached is null