Create noop version for the minimal sample and test.

This commit is contained in:
Benoit Marty
2023-03-22 11:38:46 +01:00
committed by Benoit Marty
parent dfc759685d
commit b911229f53
6 changed files with 82 additions and 0 deletions

View File

@@ -63,6 +63,7 @@ dependencies {
testImplementation(libs.test.robolectric)
testImplementation(projects.libraries.matrix.test)
testImplementation(projects.libraries.dateformatter.test)
testImplementation(projects.libraries.permissions.noop)
androidTestImplementation(libs.test.junitext)
}

View File

@@ -37,6 +37,7 @@ import io.element.android.libraries.matrix.test.FakeMatrixClient
import io.element.android.libraries.matrix.test.room.FakeRoomSummaryDataSource
import io.element.android.libraries.matrix.test.room.aRoomSummaryFilled
import io.element.android.libraries.matrix.test.verification.FakeSessionVerificationService
import io.element.android.libraries.permissions.noop.NoopPermissionsPresenter
import kotlinx.coroutines.test.runTest
import org.junit.Test
@@ -50,6 +51,7 @@ class RoomListPresenterTests {
FakeRoomLastMessageFormatter(),
FakeSessionVerificationService(),
SnackbarDispatcher(),
NoopPermissionsPresenter(),
)
moleculeFlow(RecompositionClock.Immediate) {
presenter.present()
@@ -77,6 +79,7 @@ class RoomListPresenterTests {
FakeRoomLastMessageFormatter(),
FakeSessionVerificationService(),
SnackbarDispatcher(),
NoopPermissionsPresenter(),
)
moleculeFlow(RecompositionClock.Immediate) {
presenter.present()
@@ -98,6 +101,7 @@ class RoomListPresenterTests {
FakeRoomLastMessageFormatter(),
FakeSessionVerificationService(),
SnackbarDispatcher(),
NoopPermissionsPresenter(),
)
moleculeFlow(RecompositionClock.Immediate) {
presenter.present()
@@ -123,6 +127,7 @@ class RoomListPresenterTests {
FakeRoomLastMessageFormatter(),
FakeSessionVerificationService(),
SnackbarDispatcher(),
NoopPermissionsPresenter(),
)
moleculeFlow(RecompositionClock.Immediate) {
presenter.present()
@@ -153,6 +158,7 @@ class RoomListPresenterTests {
FakeRoomLastMessageFormatter(),
FakeSessionVerificationService(),
SnackbarDispatcher(),
NoopPermissionsPresenter(),
)
moleculeFlow(RecompositionClock.Immediate) {
presenter.present()
@@ -188,6 +194,7 @@ class RoomListPresenterTests {
FakeRoomLastMessageFormatter(),
FakeSessionVerificationService(),
SnackbarDispatcher(),
NoopPermissionsPresenter(),
)
moleculeFlow(RecompositionClock.Immediate) {
presenter.present()
@@ -237,6 +244,7 @@ class RoomListPresenterTests {
givenVerifiedStatus(SessionVerifiedStatus.NotVerified)
},
SnackbarDispatcher(),
NoopPermissionsPresenter(),
)
moleculeFlow(RecompositionClock.Immediate) {
presenter.present()

View File

@@ -0,0 +1,30 @@
/*
* Copyright (c) 2023 New Vector Ltd
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// TODO: Remove once https://youtrack.jetbrains.com/issue/KTIJ-19369 is fixed
@Suppress("DSL_SCOPE_VIOLATION")
plugins {
id("io.element.android-compose-library")
}
android {
namespace = "io.element.android.libraries.permissions.noop"
}
dependencies {
implementation(projects.libraries.architecture)
api(projects.libraries.permissions.api)
}

View File

@@ -0,0 +1,39 @@
/*
* Copyright (c) 2023 New Vector Ltd
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.element.android.libraries.permissions.noop
import androidx.compose.runtime.Composable
import io.element.android.libraries.permissions.api.PermissionsPresenter
import io.element.android.libraries.permissions.api.PermissionsState
class NoopPermissionsPresenter: PermissionsPresenter {
override fun setParameter(permission: String) = Unit
@Composable
override fun present(): PermissionsState {
return PermissionsState(
permission = "",
permissionGranted = false,
shouldShowRationale = false,
showDialog = false,
permissionAlreadyAsked = false,
permissionAlreadyDenied = false,
eventSink = {},
)
}
}

View File

@@ -49,6 +49,7 @@ dependencies {
implementation(libs.androidx.activity.compose)
implementation(projects.libraries.matrix.api)
implementation(projects.libraries.matrix.impl)
implementation(projects.libraries.permissions.noop)
implementation(projects.libraries.sessionStorage.implMemory)
implementation(projects.libraries.designsystem)
implementation(projects.libraries.architecture)

View File

@@ -29,6 +29,7 @@ import io.element.android.libraries.dateformatter.impl.LocalDateTimeProvider
import io.element.android.libraries.designsystem.utils.SnackbarDispatcher
import io.element.android.libraries.matrix.api.MatrixClient
import io.element.android.libraries.matrix.api.core.RoomId
import io.element.android.libraries.permissions.noop.NoopPermissionsPresenter
import kotlinx.coroutines.launch
import kotlinx.datetime.Clock
import kotlinx.datetime.TimeZone
@@ -44,12 +45,14 @@ class RoomListScreen(
private val dateTimeProvider = LocalDateTimeProvider(clock, timeZone)
private val dateFormatters = DateFormatters(locale, clock, timeZone)
private val sessionVerificationService = matrixClient.sessionVerificationService()
private val permissionsPresenter = NoopPermissionsPresenter()
private val presenter = RoomListPresenter(
matrixClient,
DefaultLastMessageTimestampFormatter(dateTimeProvider, dateFormatters),
DefaultRoomLastMessageFormatter(context, matrixClient),
sessionVerificationService,
SnackbarDispatcher(),
permissionsPresenter,
)
@Composable