Skip to content

Commit

Permalink
Fix an IllegalStateException crash (#1171)
Browse files Browse the repository at this point in the history
  • Loading branch information
Luna712 authored Jul 4, 2024
1 parent 5f64e40 commit 29ec554
Showing 1 changed file with 19 additions and 1 deletion.
20 changes: 19 additions & 1 deletion app/src/main/java/com/lagradost/cloudstream3/utils/UIHelper.kt
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@ import android.graphics.Color
import android.graphics.drawable.Drawable
import android.os.Build
import android.os.Bundle
import android.os.Handler
import android.os.Looper
import android.os.TransactionTooLargeException
import android.util.Log
import android.view.*
Expand Down Expand Up @@ -475,7 +477,23 @@ object UIHelper {
}

fun FragmentActivity.popCurrentPage() {
this.onBackPressedDispatcher.onBackPressed()
// Post the back press action to the main thread handler to ensure it executes
// after any currently pending UI updates or fragment transactions.
Handler(Looper.getMainLooper()).post {
// Check if the FragmentManager state is saved. If it is, we cannot perform
// fragment transactions safely because the state may be inconsistent.
if (!supportFragmentManager.isStateSaved) {
// If the state is not saved, it's safe to perform the back press action.
this.onBackPressedDispatcher.onBackPressed()
} else {
// If the state is saved, retry the back press action after a slight delay.
// This gives the FragmentManager time to complete any ongoing state-saving
// operations or transactions, ensuring that we do not encounter an IllegalStateException.
Handler(Looper.getMainLooper()).postDelayed({
this.onBackPressedDispatcher.onBackPressed()
}, 100)
}
}
}

fun Context.getStatusBarHeight(): Int {
Expand Down

0 comments on commit 29ec554

Please sign in to comment.