Use presenter factory

This commit is contained in:
Benoit Marty 2023-03-22 12:04:22 +01:00 committed by Benoit Marty
parent 9c6bc8d872
commit 08fa22069b
9 changed files with 67 additions and 38 deletions

View file

@ -46,7 +46,7 @@ import io.element.android.libraries.matrix.api.verification.SessionVerificationS
import io.element.android.libraries.matrix.api.verification.SessionVerifiedStatus
import io.element.android.libraries.matrix.ui.model.MatrixUser
import io.element.android.libraries.permissions.api.PermissionsPresenter
import io.element.android.libraries.permissions.api.createDummyPostNotificationPermissionsState
import io.element.android.libraries.permissions.noop.NoopPermissionsPresenter
import kotlinx.collections.immutable.ImmutableList
import kotlinx.collections.immutable.persistentListOf
import kotlinx.collections.immutable.toImmutableList
@ -63,11 +63,20 @@ class RoomListPresenter @Inject constructor(
private val roomLastMessageFormatter: RoomLastMessageFormatter,
private val sessionVerificationService: SessionVerificationService,
private val snackbarDispatcher: SnackbarDispatcher,
private val permissionsPresenter: PermissionsPresenter,
private val permissionsPresenterFactory: PermissionsPresenter.Factory,
) : Presenter<RoomListState> {
private val roomMembershipObserver: RoomMembershipObserver = client.roomMembershipObserver()
private val postNotificationPermissionsPresenter by lazy {
// Ask for POST_NOTIFICATION PERMISSION on Android 13+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
permissionsPresenterFactory.create(Manifest.permission.POST_NOTIFICATIONS)
} else {
NoopPermissionsPresenter()
}
}
@Composable
override fun present(): RoomListState {
val matrixUser: MutableState<MatrixUser?> = remember {
@ -110,13 +119,7 @@ class RoomListPresenter @Inject constructor(
val snackbarMessage = handleSnackbarMessage(snackbarDispatcher)
// Ask for POST_NOTIFICATION PERMISSION on Android 13+
val permissionsState = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
permissionsPresenter.setParameter(Manifest.permission.POST_NOTIFICATIONS)
permissionsPresenter.present()
} else {
createDummyPostNotificationPermissionsState()
}
val permissionsState = postNotificationPermissionsPresenter.present()
return RoomListState(
matrixUser = matrixUser.value,