Cleanup FetchPushForegroundService (#6577)
* Rename `PushHandlingWakeLock` to `FetchPushForegroundServiceManager`. Move the start/stop logic from `FetchPushForegroundService.Companion` to it. * Add more tests using Robolectric. * Remove `FeatureFlags.SyncNotificationsWithWorkManager` and associated code: this should have been removed in one of the previous refactors, since we don't have the 2 ways to sync notifications anymore, everything uses the `WorkManager` --------- Co-authored-by: Benoit Marty <benoit@matrix.org>
This commit is contained in:
parent
8853f160e2
commit
f80a140cf9
17 changed files with 329 additions and 215 deletions
|
|
@ -0,0 +1,27 @@
|
|||
/*
|
||||
* Copyright (c) 2026 Element Creations Ltd.
|
||||
*
|
||||
* SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial.
|
||||
* Please see LICENSE files in the repository root for full details.
|
||||
*/
|
||||
|
||||
package io.element.android.libraries.push.api.push
|
||||
|
||||
/**
|
||||
* A helper to manage the foreground service used to keep the device awake while we schedule and wait for the work to fetch the notification content to run.
|
||||
*/
|
||||
interface FetchPushForegroundServiceManager {
|
||||
/**
|
||||
* Start the foreground service to acquire the wakelock. If the device is already awake, this method does nothing.
|
||||
*
|
||||
* @return true if the service was started, false otherwise (e.g. if the device was already awake or if starting the service failed).
|
||||
*/
|
||||
fun start(): Boolean
|
||||
|
||||
/**
|
||||
* Stop the foreground service to release the wakelock. If the service is not running, this method does nothing.
|
||||
*
|
||||
* @return true if the service was stopped, false otherwise (e.g. if the service was not running or if stopping the service failed).
|
||||
*/
|
||||
suspend fun stop(): Boolean
|
||||
}
|
||||
|
|
@ -1,26 +0,0 @@
|
|||
/*
|
||||
* Copyright (c) 2026 Element Creations Ltd.
|
||||
*
|
||||
* SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial.
|
||||
* Please see LICENSE files in the repository root for full details.
|
||||
*/
|
||||
|
||||
package io.element.android.libraries.push.api.push
|
||||
|
||||
import kotlin.time.Duration
|
||||
import kotlin.time.Duration.Companion.minutes
|
||||
|
||||
/**
|
||||
* Abstraction over wakelocks used for push handling to ensure the device stays awake while we handle the push and schedule and run the work.
|
||||
*/
|
||||
interface PushHandlingWakeLock {
|
||||
/**
|
||||
* Acquire a wakelock. The wakelock will be held for the given [time] or until [unlock] is called, whichever happens first.
|
||||
*/
|
||||
fun lock(time: Duration = 1.minutes)
|
||||
|
||||
/**
|
||||
* Release the wakelock. If no wakelock is associated with the key, this method does nothing.
|
||||
*/
|
||||
suspend fun unlock()
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue