mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-04-02 00:17:41 +01:00
Wake lock during restore.
This commit is contained in:
committed by
Cody Henthorne
parent
2b9126d74b
commit
b605148ac4
@@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user