BatteryOptimizationEvents -> BatteryOptimizationEvent

This commit is contained in:
Benoit Marty
2026-08-25 10:32:34 +02:00
parent cb8c462bad
commit 217ccb75ed
6 changed files with 16 additions and 16 deletions
@@ -16,7 +16,7 @@ import io.element.android.libraries.designsystem.components.Announcement
import io.element.android.libraries.designsystem.components.AnnouncementType import io.element.android.libraries.designsystem.components.AnnouncementType
import io.element.android.libraries.designsystem.preview.ElementPreview import io.element.android.libraries.designsystem.preview.ElementPreview
import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.preview.PreviewsDayNight
import io.element.android.libraries.push.api.battery.BatteryOptimizationEvents import io.element.android.libraries.push.api.battery.BatteryOptimizationEvent
import io.element.android.libraries.push.api.battery.BatteryOptimizationState import io.element.android.libraries.push.api.battery.BatteryOptimizationState
import io.element.android.libraries.push.api.battery.aBatteryOptimizationState import io.element.android.libraries.push.api.battery.aBatteryOptimizationState
@@ -31,8 +31,8 @@ internal fun BatteryOptimizationBanner(
description = stringResource(R.string.banner_battery_optimization_content_android), description = stringResource(R.string.banner_battery_optimization_content_android),
type = AnnouncementType.Actionable( type = AnnouncementType.Actionable(
actionText = stringResource(R.string.banner_battery_optimization_submit_android), actionText = stringResource(R.string.banner_battery_optimization_submit_android),
onActionClick = { state.eventSink(BatteryOptimizationEvents.RequestDisableOptimizations) }, onActionClick = { state.eventSink(BatteryOptimizationEvent.RequestDisableOptimizations) },
onDismissClick = { state.eventSink(BatteryOptimizationEvents.Dismiss) }, onDismissClick = { state.eventSink(BatteryOptimizationEvent.Dismiss) },
), ),
) )
} }
@@ -8,7 +8,7 @@
package io.element.android.libraries.push.api.battery package io.element.android.libraries.push.api.battery
sealed interface BatteryOptimizationEvents { sealed interface BatteryOptimizationEvent {
data object Dismiss : BatteryOptimizationEvents data object Dismiss : BatteryOptimizationEvent
data object RequestDisableOptimizations : BatteryOptimizationEvents data object RequestDisableOptimizations : BatteryOptimizationEvent
} }
@@ -10,5 +10,5 @@ package io.element.android.libraries.push.api.battery
data class BatteryOptimizationState( data class BatteryOptimizationState(
val shouldDisplayBanner: Boolean, val shouldDisplayBanner: Boolean,
val eventSink: (BatteryOptimizationEvents) -> Unit, val eventSink: (BatteryOptimizationEvent) -> Unit,
) )
@@ -10,7 +10,7 @@ package io.element.android.libraries.push.api.battery
fun aBatteryOptimizationState( fun aBatteryOptimizationState(
shouldDisplayBanner: Boolean = false, shouldDisplayBanner: Boolean = false,
eventSink: (BatteryOptimizationEvents) -> Unit = {}, eventSink: (BatteryOptimizationEvent) -> Unit = {},
) = BatteryOptimizationState( ) = BatteryOptimizationState(
shouldDisplayBanner = shouldDisplayBanner, shouldDisplayBanner = shouldDisplayBanner,
eventSink = eventSink, eventSink = eventSink,
@@ -18,7 +18,7 @@ import androidx.compose.runtime.setValue
import androidx.lifecycle.compose.LifecycleResumeEffect import androidx.lifecycle.compose.LifecycleResumeEffect
import dev.zacsweers.metro.Inject import dev.zacsweers.metro.Inject
import io.element.android.libraries.architecture.Presenter import io.element.android.libraries.architecture.Presenter
import io.element.android.libraries.push.api.battery.BatteryOptimizationEvents import io.element.android.libraries.push.api.battery.BatteryOptimizationEvent
import io.element.android.libraries.push.api.battery.BatteryOptimizationState import io.element.android.libraries.push.api.battery.BatteryOptimizationState
import io.element.android.libraries.push.impl.push.MutableBatteryOptimizationStore import io.element.android.libraries.push.impl.push.MutableBatteryOptimizationStore
import io.element.android.libraries.push.impl.store.PushDataStore import io.element.android.libraries.push.impl.store.PushDataStore
@@ -48,12 +48,12 @@ class BatteryOptimizationPresenter(
onPauseOrDispose {} onPauseOrDispose {}
} }
fun handleEvent(event: BatteryOptimizationEvents) { fun handleEvent(event: BatteryOptimizationEvent) {
when (event) { when (event) {
BatteryOptimizationEvents.Dismiss -> coroutineScope.launch { BatteryOptimizationEvent.Dismiss -> coroutineScope.launch {
mutableBatteryOptimizationStore.onOptimizationBannerDismissed() mutableBatteryOptimizationStore.onOptimizationBannerDismissed()
} }
BatteryOptimizationEvents.RequestDisableOptimizations -> { BatteryOptimizationEvent.RequestDisableOptimizations -> {
isRequestSent = true isRequestSent = true
if (batteryOptimization.requestDisablingBatteryOptimization().not()) { if (batteryOptimization.requestDisablingBatteryOptimization().not()) {
// If not able to perform the request, ensure that we do not display the banner again // If not able to perform the request, ensure that we do not display the banner again
@@ -10,7 +10,7 @@ package io.element.android.libraries.push.impl.battery
import androidx.lifecycle.Lifecycle import androidx.lifecycle.Lifecycle
import com.google.common.truth.Truth.assertThat import com.google.common.truth.Truth.assertThat
import io.element.android.libraries.push.api.battery.BatteryOptimizationEvents import io.element.android.libraries.push.api.battery.BatteryOptimizationEvent
import io.element.android.libraries.push.impl.push.FakeMutableBatteryOptimizationStore import io.element.android.libraries.push.impl.push.FakeMutableBatteryOptimizationStore
import io.element.android.libraries.push.impl.push.MutableBatteryOptimizationStore import io.element.android.libraries.push.impl.push.MutableBatteryOptimizationStore
import io.element.android.libraries.push.impl.store.InMemoryPushDataStore import io.element.android.libraries.push.impl.store.InMemoryPushDataStore
@@ -98,7 +98,7 @@ class BatteryOptimizationPresenterTest {
assertThat(initialState.shouldDisplayBanner).isFalse() assertThat(initialState.shouldDisplayBanner).isFalse()
val displayedItem = awaitItem() val displayedItem = awaitItem()
assertThat(displayedItem.shouldDisplayBanner).isTrue() assertThat(displayedItem.shouldDisplayBanner).isTrue()
displayedItem.eventSink(BatteryOptimizationEvents.Dismiss) displayedItem.eventSink(BatteryOptimizationEvent.Dismiss)
onOptimizationBannerDismissedResult.assertions().isCalledOnce() onOptimizationBannerDismissedResult.assertions().isCalledOnce()
} }
} }
@@ -124,7 +124,7 @@ class BatteryOptimizationPresenterTest {
assertThat(initialState.shouldDisplayBanner).isFalse() assertThat(initialState.shouldDisplayBanner).isFalse()
val displayedItem = awaitItem() val displayedItem = awaitItem()
assertThat(displayedItem.shouldDisplayBanner).isTrue() assertThat(displayedItem.shouldDisplayBanner).isTrue()
displayedItem.eventSink(BatteryOptimizationEvents.RequestDisableOptimizations) displayedItem.eventSink(BatteryOptimizationEvent.RequestDisableOptimizations)
requestDisablingBatteryOptimizationResult.assertions().isCalledOnce() requestDisablingBatteryOptimizationResult.assertions().isCalledOnce()
onOptimizationBannerDismissedResult.assertions().isCalledOnce() onOptimizationBannerDismissedResult.assertions().isCalledOnce()
} }
@@ -150,7 +150,7 @@ class BatteryOptimizationPresenterTest {
assertThat(initialState.shouldDisplayBanner).isFalse() assertThat(initialState.shouldDisplayBanner).isFalse()
val displayedItem = awaitItem() val displayedItem = awaitItem()
assertThat(displayedItem.shouldDisplayBanner).isTrue() assertThat(displayedItem.shouldDisplayBanner).isTrue()
displayedItem.eventSink(BatteryOptimizationEvents.RequestDisableOptimizations) displayedItem.eventSink(BatteryOptimizationEvent.RequestDisableOptimizations)
requestDisablingBatteryOptimizationResult.assertions().isCalledOnce() requestDisablingBatteryOptimizationResult.assertions().isCalledOnce()
batteryOptimization.isIgnoringBatteryOptimizationsResult = true batteryOptimization.isIgnoringBatteryOptimizationsResult = true
lifeCycleOwner.givenState(Lifecycle.State.RESUMED) lifeCycleOwner.givenState(Lifecycle.State.RESUMED)