mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-05-14 20:20:38 +01:00
Fix PictureInPictureUiState not found crashes.
This commit is contained in:
+22
-11
@@ -122,6 +122,7 @@ class WebRtcCallActivity : BaseActivity(), SafetyNumberChangeDialog.Callback, Re
|
||||
private var answeredFromNotification: Boolean = false
|
||||
private var ephemeralStateDisposable = Disposable.empty()
|
||||
private val callPermissionsDialogController = CallPermissionsDialogController()
|
||||
private val eventBusSubscriber = EventBusSubscriber()
|
||||
|
||||
override fun attachBaseContext(newBase: Context) {
|
||||
delegate.localNightMode = AppCompatDelegate.MODE_NIGHT_YES
|
||||
@@ -240,8 +241,8 @@ class WebRtcCallActivity : BaseActivity(), SafetyNumberChangeDialog.Callback, Re
|
||||
|
||||
initializeScreenshotSecurity()
|
||||
|
||||
if (!EventBus.getDefault().isRegistered(this)) {
|
||||
EventBus.getDefault().register(this)
|
||||
if (!EventBus.getDefault().isRegistered(eventBusSubscriber)) {
|
||||
EventBus.getDefault().register(eventBusSubscriber)
|
||||
}
|
||||
|
||||
val rtcViewModel = EventBus.getDefault().getStickyEvent(WebRtcViewModel::class.java)
|
||||
@@ -285,7 +286,7 @@ class WebRtcCallActivity : BaseActivity(), SafetyNumberChangeDialog.Callback, Re
|
||||
disableIncomingRingingVanity()
|
||||
|
||||
if (!isInPipMode() || isFinishing) {
|
||||
EventBus.getDefault().unregister(this)
|
||||
EventBus.getDefault().unregister(eventBusSubscriber)
|
||||
}
|
||||
|
||||
if (!callPermissionsDialogController.isAskingForPermission && !viewModel.isCallStarting && !isChangingConfigurations) {
|
||||
@@ -307,7 +308,7 @@ class WebRtcCallActivity : BaseActivity(), SafetyNumberChangeDialog.Callback, Re
|
||||
ephemeralStateDisposable.dispose()
|
||||
|
||||
if (!isInPipMode() || isFinishing) {
|
||||
EventBus.getDefault().unregister(this)
|
||||
EventBus.getDefault().unregister(eventBusSubscriber)
|
||||
requestNewSizesThrottle.clear()
|
||||
}
|
||||
|
||||
@@ -329,7 +330,7 @@ class WebRtcCallActivity : BaseActivity(), SafetyNumberChangeDialog.Callback, Re
|
||||
Log.d(TAG, "onDestroy")
|
||||
super.onDestroy()
|
||||
windowInfoTrackerCallbackAdapter.removeWindowLayoutInfoListener(windowLayoutInfoConsumer)
|
||||
EventBus.getDefault().unregister(this)
|
||||
EventBus.getDefault().unregister(eventBusSubscriber)
|
||||
}
|
||||
|
||||
@SuppressLint("MissingSuperCall")
|
||||
@@ -387,13 +388,11 @@ class WebRtcCallActivity : BaseActivity(), SafetyNumberChangeDialog.Callback, Re
|
||||
AppDependencies.signalCallManager.resendMediaKeys()
|
||||
}
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
fun onRecaptchaRequiredEvent(recaptchaRequiredEvent: RecaptchaRequiredEvent) {
|
||||
private fun onRecaptchaRequiredEvent(recaptchaRequiredEvent: RecaptchaRequiredEvent) {
|
||||
RecaptchaProofBottomSheetFragment.show(supportFragmentManager)
|
||||
}
|
||||
|
||||
@Subscribe(sticky = true, threadMode = ThreadMode.MAIN)
|
||||
fun onEventMainThread(event: WebRtcViewModel) {
|
||||
private fun onEventMainThread(event: WebRtcViewModel) {
|
||||
Log.i(TAG, "Got message from service: ${event.describeDifference(previousEvent)}")
|
||||
|
||||
val previousCallState: WebRtcViewModel.State? = previousEvent?.state
|
||||
@@ -582,8 +581,8 @@ class WebRtcCallActivity : BaseActivity(), SafetyNumberChangeDialog.Callback, Re
|
||||
if (info.isInPictureInPictureMode) {
|
||||
callScreen.maybeDismissAudioPicker()
|
||||
|
||||
if (!EventBus.getDefault().isRegistered(this)) {
|
||||
EventBus.getDefault().register(this)
|
||||
if (!EventBus.getDefault().isRegistered(eventBusSubscriber)) {
|
||||
EventBus.getDefault().register(eventBusSubscriber)
|
||||
}
|
||||
}
|
||||
viewModel.setIsLandscapeEnabled(info.isInPictureInPictureMode)
|
||||
@@ -1410,4 +1409,16 @@ class WebRtcCallActivity : BaseActivity(), SafetyNumberChangeDialog.Callback, Re
|
||||
PendingParticipantsBottomSheet().show(supportFragmentManager, BottomSheetUtil.STANDARD_BOTTOM_SHEET_FRAGMENT_TAG)
|
||||
}
|
||||
}
|
||||
|
||||
private inner class EventBusSubscriber {
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
fun onRecaptchaRequiredEvent(recaptchaRequiredEvent: RecaptchaRequiredEvent) {
|
||||
this@WebRtcCallActivity.onRecaptchaRequiredEvent(recaptchaRequiredEvent)
|
||||
}
|
||||
|
||||
@Subscribe(sticky = true, threadMode = ThreadMode.MAIN)
|
||||
fun onEventMainThread(event: WebRtcViewModel) {
|
||||
this@WebRtcCallActivity.onEventMainThread(event)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+8
-4
@@ -113,6 +113,8 @@ class RemoteRestoreActivity : BaseActivity() {
|
||||
|
||||
private lateinit var wakeLock: RemoteRestoreWakeLock
|
||||
|
||||
private val eventBusSubscriber = EventBusSubscriber()
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
|
||||
@@ -235,12 +237,14 @@ class RemoteRestoreActivity : BaseActivity() {
|
||||
}
|
||||
}
|
||||
|
||||
EventBus.getDefault().registerForLifecycle(subscriber = this, lifecycleOwner = this)
|
||||
EventBus.getDefault().registerForLifecycle(subscriber = eventBusSubscriber, lifecycleOwner = this)
|
||||
}
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
fun onEvent(restoreEvent: RestoreV2Event) {
|
||||
viewModel.updateRestoreProgress(restoreEvent)
|
||||
private inner class EventBusSubscriber {
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
fun onEvent(restoreEvent: RestoreV2Event) {
|
||||
viewModel.updateRestoreProgress(restoreEvent)
|
||||
}
|
||||
}
|
||||
|
||||
private fun showUnregisteredDialog() {
|
||||
|
||||
@@ -75,6 +75,8 @@ class QuickstartRestoreActivity : BaseActivity() {
|
||||
|
||||
private var restoreStatus by mutableStateOf("Restoring data...")
|
||||
|
||||
private val eventBusSubscriber = EventBusSubscriber()
|
||||
|
||||
private val manageStorageLauncher = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) {
|
||||
if (hasStorageAccess()) {
|
||||
startRestore()
|
||||
@@ -110,7 +112,7 @@ class QuickstartRestoreActivity : BaseActivity() {
|
||||
}
|
||||
}
|
||||
|
||||
org.greenrobot.eventbus.EventBus.getDefault().registerForLifecycle(subscriber = this, lifecycleOwner = this)
|
||||
org.greenrobot.eventbus.EventBus.getDefault().registerForLifecycle(subscriber = eventBusSubscriber, lifecycleOwner = this)
|
||||
|
||||
if (hasStorageAccess()) {
|
||||
startRestore()
|
||||
@@ -195,8 +197,10 @@ class QuickstartRestoreActivity : BaseActivity() {
|
||||
}
|
||||
}
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
fun onEvent(restoreEvent: RestoreV2Event) {
|
||||
restoreStatus = "${restoreEvent.type}: ${restoreEvent.count} / ${restoreEvent.estimatedTotalCount}"
|
||||
private inner class EventBusSubscriber {
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
fun onEvent(restoreEvent: RestoreV2Event) {
|
||||
restoreStatus = "${restoreEvent.type}: ${restoreEvent.count} / ${restoreEvent.estimatedTotalCount}"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user