mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-04-17 23:43:34 +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
|
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(
|
class RemoteRestoreWakeLock(
|
||||||
private val activity: ComponentActivity
|
private val activity: ComponentActivity,
|
||||||
|
private val tag: String = "remoteRestore"
|
||||||
) : DefaultLifecycleObserver {
|
) : DefaultLifecycleObserver {
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
@@ -30,7 +31,7 @@ class RemoteRestoreWakeLock(
|
|||||||
return
|
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.Context
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
|
import android.view.WindowManager
|
||||||
import android.widget.Toast
|
import android.widget.Toast
|
||||||
import androidx.activity.compose.setContent
|
import androidx.activity.compose.setContent
|
||||||
import androidx.activity.viewModels
|
import androidx.activity.viewModels
|
||||||
@@ -38,7 +39,12 @@ import androidx.compose.ui.platform.LocalDensity
|
|||||||
import androidx.compose.ui.res.stringResource
|
import androidx.compose.ui.res.stringResource
|
||||||
import androidx.compose.ui.text.style.TextAlign
|
import androidx.compose.ui.text.style.TextAlign
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
|
import androidx.lifecycle.Lifecycle
|
||||||
import androidx.lifecycle.compose.collectAsStateWithLifecycle
|
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.DayNightPreviews
|
||||||
import org.signal.core.ui.compose.Dialogs
|
import org.signal.core.ui.compose.Dialogs
|
||||||
import org.signal.core.ui.compose.Previews
|
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.ContactSupportDialog
|
||||||
import org.thoughtcrime.securesms.components.contactsupport.ContactSupportViewModel
|
import org.thoughtcrime.securesms.components.contactsupport.ContactSupportViewModel
|
||||||
import org.thoughtcrime.securesms.components.settings.app.AppSettingsActivity
|
import org.thoughtcrime.securesms.components.settings.app.AppSettingsActivity
|
||||||
|
import org.thoughtcrime.securesms.registration.ui.restore.RemoteRestoreWakeLock
|
||||||
import org.thoughtcrime.securesms.restore.RestoreActivity
|
import org.thoughtcrime.securesms.restore.RestoreActivity
|
||||||
import kotlin.math.max
|
import kotlin.math.max
|
||||||
|
|
||||||
@@ -76,9 +83,32 @@ class RestoreLocalBackupActivity : BaseActivity() {
|
|||||||
intent.getBooleanExtra(KEY_FINISH, false)
|
intent.getBooleanExtra(KEY_FINISH, false)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private lateinit var wakeLock: RemoteRestoreWakeLock
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
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 {
|
setContent {
|
||||||
val state by viewModel.state.collectAsStateWithLifecycle()
|
val state by viewModel.state.collectAsStateWithLifecycle()
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user