Fix crash when prompting for debuglogs.

This commit is contained in:
Cody Henthorne 2023-09-24 21:29:01 -04:00
parent d7314ec2a4
commit 3bb2131375
2 changed files with 11 additions and 7 deletions

View file

@ -117,9 +117,9 @@ public class MainActivity extends PassphraseRequiredActivity implements VoiceNot
PromptBatterySaverDialogFragment.show(getSupportFragmentManager()); PromptBatterySaverDialogFragment.show(getSupportFragmentManager());
break; break;
case PROMPT_DEBUGLOGS_FOR_NOTIFICATIONS: case PROMPT_DEBUGLOGS_FOR_NOTIFICATIONS:
DebugLogsPromptDialogFragment.show(this, getSupportFragmentManager(), DebugLogsPromptDialogFragment.Purpose.NOTIFICATIONS); DebugLogsPromptDialogFragment.show(this, DebugLogsPromptDialogFragment.Purpose.NOTIFICATIONS);
case PROMPT_DEBUGLOGS_FOR_CRASH: case PROMPT_DEBUGLOGS_FOR_CRASH:
DebugLogsPromptDialogFragment.show(this, getSupportFragmentManager(), DebugLogsPromptDialogFragment.Purpose.CRASH); DebugLogsPromptDialogFragment.show(this, DebugLogsPromptDialogFragment.Purpose.CRASH);
break; break;
} }
} }

View file

@ -5,15 +5,15 @@
package org.thoughtcrime.securesms.components package org.thoughtcrime.securesms.components
import android.content.Context
import android.os.Bundle import android.os.Bundle
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import android.widget.Toast import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import androidx.core.os.bundleOf import androidx.core.os.bundleOf
import androidx.fragment.app.FragmentManager
import androidx.fragment.app.viewModels import androidx.fragment.app.viewModels
import androidx.lifecycle.Lifecycle
import org.signal.core.util.ResourceUtil import org.signal.core.util.ResourceUtil
import org.signal.core.util.concurrent.LifecycleDisposable import org.signal.core.util.concurrent.LifecycleDisposable
import org.thoughtcrime.securesms.R import org.thoughtcrime.securesms.R
@ -31,13 +31,17 @@ class DebugLogsPromptDialogFragment : FixedRoundedCornerBottomSheetDialogFragmen
private const val KEY_PURPOSE = "purpose" private const val KEY_PURPOSE = "purpose"
@JvmStatic @JvmStatic
fun show(context: Context, fragmentManager: FragmentManager, purpose: Purpose) { fun show(activity: AppCompatActivity, purpose: Purpose) {
if (NetworkUtil.isConnected(context) && fragmentManager.findFragmentByTag(BottomSheetUtil.STANDARD_BOTTOM_SHEET_FRAGMENT_TAG) == null) { if (!activity.lifecycle.currentState.isAtLeast(Lifecycle.State.RESUMED)) {
return
}
if (NetworkUtil.isConnected(activity) && activity.supportFragmentManager.findFragmentByTag(BottomSheetUtil.STANDARD_BOTTOM_SHEET_FRAGMENT_TAG) == null) {
DebugLogsPromptDialogFragment().apply { DebugLogsPromptDialogFragment().apply {
arguments = bundleOf( arguments = bundleOf(
KEY_PURPOSE to purpose.serialized KEY_PURPOSE to purpose.serialized
) )
}.show(fragmentManager, BottomSheetUtil.STANDARD_BOTTOM_SHEET_FRAGMENT_TAG) }.show(activity.supportFragmentManager, BottomSheetUtil.STANDARD_BOTTOM_SHEET_FRAGMENT_TAG)
when (purpose) { when (purpose) {
Purpose.NOTIFICATIONS -> SignalStore.uiHints().lastNotificationLogsPrompt = System.currentTimeMillis() Purpose.NOTIFICATIONS -> SignalStore.uiHints().lastNotificationLogsPrompt = System.currentTimeMillis()