Wake lock during restore.

This commit is contained in:
Alex Hart
2026-03-25 16:35:00 -03:00
committed by Cody Henthorne
parent 2b9126d74b
commit b605148ac4
2 changed files with 34 additions and 3 deletions

View File

@@ -8,10 +8,11 @@ import org.thoughtcrime.securesms.util.WakeLockUtil
import kotlin.time.Duration.Companion.minutes
/**
* Holds on to and manages a wake-lock when restoring a remote backup.
* Holds on to and manages a wake-lock when restoring a backup.
*/
class RemoteRestoreWakeLock(
private val activity: ComponentActivity
private val activity: ComponentActivity,
private val tag: String = "remoteRestore"
) : DefaultLifecycleObserver {
companion object {
@@ -30,7 +31,7 @@ class RemoteRestoreWakeLock(
return
}
wakeLock = WakeLockUtil.acquire(activity, PowerManager.PARTIAL_WAKE_LOCK, TIMEOUT, "remoteRestore")
wakeLock = WakeLockUtil.acquire(activity, PowerManager.PARTIAL_WAKE_LOCK, TIMEOUT, tag)
}
}

View File

@@ -8,6 +8,7 @@ package org.thoughtcrime.securesms.registration.ui.restore.local
import android.content.Context
import android.content.Intent
import android.os.Bundle
import android.view.WindowManager
import android.widget.Toast
import androidx.activity.compose.setContent
import androidx.activity.viewModels
@@ -38,7 +39,12 @@ import androidx.compose.ui.platform.LocalDensity
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.unit.dp
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import androidx.lifecycle.lifecycleScope
import androidx.lifecycle.repeatOnLifecycle
import kotlinx.coroutines.flow.map
import kotlinx.coroutines.launch
import org.signal.core.ui.compose.DayNightPreviews
import org.signal.core.ui.compose.Dialogs
import org.signal.core.ui.compose.Previews
@@ -51,6 +57,7 @@ import org.thoughtcrime.securesms.components.contactsupport.ContactSupportCallba
import org.thoughtcrime.securesms.components.contactsupport.ContactSupportDialog
import org.thoughtcrime.securesms.components.contactsupport.ContactSupportViewModel
import org.thoughtcrime.securesms.components.settings.app.AppSettingsActivity
import org.thoughtcrime.securesms.registration.ui.restore.RemoteRestoreWakeLock
import org.thoughtcrime.securesms.restore.RestoreActivity
import kotlin.math.max
@@ -76,9 +83,32 @@ class RestoreLocalBackupActivity : BaseActivity() {
intent.getBooleanExtra(KEY_FINISH, false)
}
private lateinit var wakeLock: RemoteRestoreWakeLock
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
wakeLock = RemoteRestoreWakeLock(this, "localRestore")
lifecycleScope.launch {
lifecycle.repeatOnLifecycle(Lifecycle.State.RESUMED) {
viewModel.state
.map { it.restorePhase }
.collect { phase ->
when (phase) {
RestorePhase.RESTORING, RestorePhase.FINALIZING -> {
wakeLock.acquire()
window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
}
else -> {
wakeLock.release()
window.clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
}
}
}
}
}
setContent {
val state by viewModel.state.collectAsStateWithLifecycle()