Merge pull request #6560 from element-hq/feature/bma/removeSpacesFF
Remove spaces features flags
This commit is contained in:
commit
dc4c1c265b
23 changed files with 44 additions and 252 deletions
|
|
@ -84,7 +84,6 @@ class ConfigureRoomPresenter(
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
override fun present(): ConfigureRoomState {
|
override fun present(): ConfigureRoomState {
|
||||||
val canAddRoomToSpace by featureFlagService.isFeatureEnabledFlow(FeatureFlags.CreateSpaces).collectAsState(false)
|
|
||||||
val cameraPermissionState = cameraPermissionPresenter.present()
|
val cameraPermissionState = cameraPermissionPresenter.present()
|
||||||
val createRoomConfig by dataStore.getCreateRoomConfigFlow().collectAsState()
|
val createRoomConfig by dataStore.getCreateRoomConfigFlow().collectAsState()
|
||||||
val homeserverName = remember { matrixClient.userIdServerName() }
|
val homeserverName = remember { matrixClient.userIdServerName() }
|
||||||
|
|
@ -113,12 +112,8 @@ class ConfigureRoomPresenter(
|
||||||
}
|
}
|
||||||
|
|
||||||
var spaces by remember { mutableStateOf<ImmutableList<SpaceRoom>>(persistentListOf()) }
|
var spaces by remember { mutableStateOf<ImmutableList<SpaceRoom>>(persistentListOf()) }
|
||||||
LaunchedEffect(canAddRoomToSpace) {
|
LaunchedEffect(Unit) {
|
||||||
spaces = if (canAddRoomToSpace) {
|
spaces = matrixClient.spaceService.editableSpaces().getOrElse { emptyList() }.toImmutableList()
|
||||||
matrixClient.spaceService.editableSpaces().getOrElse { emptyList() }.toImmutableList()
|
|
||||||
} else {
|
|
||||||
persistentListOf()
|
|
||||||
}
|
|
||||||
val parentSpace = spaces.find { it.roomId == initialParentSpaceId }
|
val parentSpace = spaces.find { it.roomId == initialParentSpaceId }
|
||||||
parentSpace?.let {
|
parentSpace?.let {
|
||||||
dataStore.setParentSpace(parentSpace = parentSpace, updateVisibility = true)
|
dataStore.setParentSpace(parentSpace = parentSpace, updateVisibility = true)
|
||||||
|
|
|
||||||
|
|
@ -94,12 +94,6 @@ class HomePresenter(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
LaunchedEffect(homeSpacesState.canCreateSpaces, homeSpacesState.spaceRooms.isEmpty()) {
|
|
||||||
// If the flag to create spaces is disabled and the last space is left, ensure that the Chat view is rendered.
|
|
||||||
if (!homeSpacesState.canCreateSpaces && homeSpacesState.spaceRooms.isEmpty()) {
|
|
||||||
currentHomeNavigationBarItemOrdinal = HomeNavigationBarItem.Chats.ordinal
|
|
||||||
}
|
|
||||||
}
|
|
||||||
val snackbarMessage by snackbarDispatcher.collectSnackbarMessageAsState()
|
val snackbarMessage by snackbarDispatcher.collectSnackbarMessageAsState()
|
||||||
return HomeState(
|
return HomeState(
|
||||||
currentUserAndNeighbors = currentUserAndNeighbors,
|
currentUserAndNeighbors = currentUserAndNeighbors,
|
||||||
|
|
|
||||||
|
|
@ -34,5 +34,4 @@ data class HomeState(
|
||||||
) {
|
) {
|
||||||
val isBackHandlerEnabled = currentHomeNavigationBarItem != HomeNavigationBarItem.Chats || roomListState.spaceFiltersState is SpaceFiltersState.Selected
|
val isBackHandlerEnabled = currentHomeNavigationBarItem != HomeNavigationBarItem.Chats || roomListState.spaceFiltersState is SpaceFiltersState.Selected
|
||||||
val displayRoomListFilters = currentHomeNavigationBarItem == HomeNavigationBarItem.Chats && roomListState.displayFilters
|
val displayRoomListFilters = currentHomeNavigationBarItem == HomeNavigationBarItem.Chats && roomListState.displayFilters
|
||||||
val showNavigationBar = homeSpacesState.canCreateSpaces || homeSpacesState.spaceRooms.isNotEmpty()
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -199,7 +199,6 @@ private fun HomeScaffold(
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||
floatingActionButton = {
|
floatingActionButton = {
|
||||||
if (state.showNavigationBar) {
|
|
||||||
val coroutineScope = rememberCoroutineScope()
|
val coroutineScope = rememberCoroutineScope()
|
||||||
HomeBottomBar(
|
HomeBottomBar(
|
||||||
currentHomeNavigationBarItem = state.currentHomeNavigationBarItem,
|
currentHomeNavigationBarItem = state.currentHomeNavigationBarItem,
|
||||||
|
|
@ -222,27 +221,19 @@ private fun HomeScaffold(
|
||||||
state.eventSink(HomeEvent.SelectHomeNavigationBarItem(item))
|
state.eventSink(HomeEvent.SelectHomeNavigationBarItem(item))
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
floatingActionButton = when (state.currentHomeNavigationBarItem) {
|
floatingActionButton = {
|
||||||
|
when (state.currentHomeNavigationBarItem) {
|
||||||
HomeNavigationBarItem.Chats -> {
|
HomeNavigationBarItem.Chats -> {
|
||||||
{
|
|
||||||
HomeFloatingActionButton(onStartChatClick, CommonStrings.action_create_room)
|
HomeFloatingActionButton(onStartChatClick, CommonStrings.action_create_room)
|
||||||
}
|
}
|
||||||
}
|
HomeNavigationBarItem.Spaces -> {
|
||||||
HomeNavigationBarItem.Spaces -> if (state.homeSpacesState.canCreateSpaces) {
|
|
||||||
{
|
|
||||||
HomeFloatingActionButton(onCreateSpaceClick, CommonStrings.action_create_space)
|
HomeFloatingActionButton(onCreateSpaceClick, CommonStrings.action_create_space)
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
// No FAB for spaces if we cannot create spaces
|
|
||||||
null
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
} else {
|
|
||||||
HomeFloatingActionButton(onStartChatClick, CommonStrings.action_create_room)
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
floatingActionButtonPosition = if (state.showNavigationBar) FabPosition.Center else FabPosition.End,
|
floatingActionButtonPosition = FabPosition.Center,
|
||||||
content = { padding ->
|
content = { padding ->
|
||||||
val contentPadding = PaddingValues(
|
val contentPadding = PaddingValues(
|
||||||
bottom = 96.dp,
|
bottom = 96.dp,
|
||||||
|
|
|
||||||
|
|
@ -17,8 +17,6 @@ import androidx.compose.runtime.remember
|
||||||
import androidx.compose.runtime.setValue
|
import androidx.compose.runtime.setValue
|
||||||
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.featureflag.api.FeatureFlagService
|
|
||||||
import io.element.android.libraries.featureflag.api.FeatureFlags
|
|
||||||
import io.element.android.libraries.matrix.api.MatrixClient
|
import io.element.android.libraries.matrix.api.MatrixClient
|
||||||
import io.element.android.libraries.matrix.api.spaces.SpaceServiceFilter
|
import io.element.android.libraries.matrix.api.spaces.SpaceServiceFilter
|
||||||
import kotlinx.collections.immutable.persistentListOf
|
import kotlinx.collections.immutable.persistentListOf
|
||||||
|
|
@ -27,20 +25,15 @@ import kotlinx.coroutines.flow.map
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
class SpaceFiltersPresenter(
|
class SpaceFiltersPresenter(
|
||||||
private val featureFlagService: FeatureFlagService,
|
|
||||||
private val matrixClient: MatrixClient,
|
private val matrixClient: MatrixClient,
|
||||||
) : Presenter<SpaceFiltersState> {
|
) : Presenter<SpaceFiltersState> {
|
||||||
@Composable
|
@Composable
|
||||||
override fun present(): SpaceFiltersState {
|
override fun present(): SpaceFiltersState {
|
||||||
val isFeatureEnabled by featureFlagService
|
|
||||||
.isFeatureEnabledFlow(FeatureFlags.RoomListSpaceFilters)
|
|
||||||
.collectAsState(initial = false)
|
|
||||||
|
|
||||||
val availableFilters by remember {
|
val availableFilters by remember {
|
||||||
matrixClient.spaceService.spaceFiltersFlow.map { it.toImmutableList() }
|
matrixClient.spaceService.spaceFiltersFlow.map { it.toImmutableList() }
|
||||||
}.collectAsState(initial = persistentListOf())
|
}.collectAsState(initial = persistentListOf())
|
||||||
|
|
||||||
if (!isFeatureEnabled || availableFilters.isEmpty()) {
|
if (availableFilters.isEmpty()) {
|
||||||
return SpaceFiltersState.Disabled
|
return SpaceFiltersState.Disabled
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -15,8 +15,6 @@ import androidx.compose.runtime.remember
|
||||||
import dev.zacsweers.metro.Inject
|
import dev.zacsweers.metro.Inject
|
||||||
import io.element.android.features.invite.api.SeenInvitesStore
|
import io.element.android.features.invite.api.SeenInvitesStore
|
||||||
import io.element.android.libraries.architecture.Presenter
|
import io.element.android.libraries.architecture.Presenter
|
||||||
import io.element.android.libraries.featureflag.api.FeatureFlagService
|
|
||||||
import io.element.android.libraries.featureflag.api.FeatureFlags
|
|
||||||
import io.element.android.libraries.matrix.api.MatrixClient
|
import io.element.android.libraries.matrix.api.MatrixClient
|
||||||
import io.element.android.libraries.matrix.ui.safety.rememberHideInvitesAvatar
|
import io.element.android.libraries.matrix.ui.safety.rememberHideInvitesAvatar
|
||||||
import kotlinx.collections.immutable.persistentListOf
|
import kotlinx.collections.immutable.persistentListOf
|
||||||
|
|
@ -29,11 +27,9 @@ import kotlinx.coroutines.flow.map
|
||||||
class HomeSpacesPresenter(
|
class HomeSpacesPresenter(
|
||||||
private val client: MatrixClient,
|
private val client: MatrixClient,
|
||||||
private val seenInvitesStore: SeenInvitesStore,
|
private val seenInvitesStore: SeenInvitesStore,
|
||||||
private val featureFlagsService: FeatureFlagService,
|
|
||||||
) : Presenter<HomeSpacesState> {
|
) : Presenter<HomeSpacesState> {
|
||||||
@Composable
|
@Composable
|
||||||
override fun present(): HomeSpacesState {
|
override fun present(): HomeSpacesState {
|
||||||
val canCreateSpaces by featureFlagsService.isFeatureEnabledFlow(FeatureFlags.CreateSpaces).collectAsState(false)
|
|
||||||
val hideInvitesAvatar by client.rememberHideInvitesAvatar()
|
val hideInvitesAvatar by client.rememberHideInvitesAvatar()
|
||||||
val spaceRooms by remember {
|
val spaceRooms by remember {
|
||||||
client.spaceService.topLevelSpacesFlow.map { it.toImmutableList() }
|
client.spaceService.topLevelSpacesFlow.map { it.toImmutableList() }
|
||||||
|
|
@ -52,7 +48,6 @@ class HomeSpacesPresenter(
|
||||||
spaceRooms = spaceRooms,
|
spaceRooms = spaceRooms,
|
||||||
seenSpaceInvites = seenSpaceInvites,
|
seenSpaceInvites = seenSpaceInvites,
|
||||||
hideInvitesAvatar = hideInvitesAvatar,
|
hideInvitesAvatar = hideInvitesAvatar,
|
||||||
canCreateSpaces = canCreateSpaces,
|
|
||||||
// TODO enable once we can link to the screen to explore public spaces
|
// TODO enable once we can link to the screen to explore public spaces
|
||||||
canExploreSpaces = false,
|
canExploreSpaces = false,
|
||||||
eventSink = ::handleEvent,
|
eventSink = ::handleEvent,
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,6 @@ data class HomeSpacesState(
|
||||||
val spaceRooms: ImmutableList<SpaceRoom>,
|
val spaceRooms: ImmutableList<SpaceRoom>,
|
||||||
val seenSpaceInvites: ImmutableSet<RoomId>,
|
val seenSpaceInvites: ImmutableSet<RoomId>,
|
||||||
val hideInvitesAvatar: Boolean,
|
val hideInvitesAvatar: Boolean,
|
||||||
val canCreateSpaces: Boolean,
|
|
||||||
val canExploreSpaces: Boolean,
|
val canExploreSpaces: Boolean,
|
||||||
val eventSink: (HomeSpacesEvents) -> Unit,
|
val eventSink: (HomeSpacesEvents) -> Unit,
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -30,17 +30,9 @@ open class HomeSpacesStateProvider : PreviewParameterProvider<HomeSpacesState> {
|
||||||
),
|
),
|
||||||
spaceRooms = aListOfSpaceRooms(),
|
spaceRooms = aListOfSpaceRooms(),
|
||||||
),
|
),
|
||||||
aHomeSpacesState(
|
|
||||||
space = CurrentSpace.Space(
|
|
||||||
spaceRoom = aSpaceRoom(roomId = RoomId("!mySpace:example.com"))
|
|
||||||
),
|
|
||||||
spaceRooms = aListOfSpaceRooms(),
|
|
||||||
canCreateSpaces = false,
|
|
||||||
),
|
|
||||||
aHomeSpacesState(
|
aHomeSpacesState(
|
||||||
space = CurrentSpace.Root,
|
space = CurrentSpace.Root,
|
||||||
spaceRooms = emptyList(),
|
spaceRooms = emptyList(),
|
||||||
canCreateSpaces = true,
|
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
@ -50,7 +42,6 @@ internal fun aHomeSpacesState(
|
||||||
spaceRooms: List<SpaceRoom> = aListOfSpaceRooms(),
|
spaceRooms: List<SpaceRoom> = aListOfSpaceRooms(),
|
||||||
seenSpaceInvites: Set<RoomId> = emptySet(),
|
seenSpaceInvites: Set<RoomId> = emptySet(),
|
||||||
hideInvitesAvatar: Boolean = false,
|
hideInvitesAvatar: Boolean = false,
|
||||||
canCreateSpaces: Boolean = true,
|
|
||||||
canExploreSpaces: Boolean = true,
|
canExploreSpaces: Boolean = true,
|
||||||
eventSink: (HomeSpacesEvents) -> Unit = {},
|
eventSink: (HomeSpacesEvents) -> Unit = {},
|
||||||
) = HomeSpacesState(
|
) = HomeSpacesState(
|
||||||
|
|
@ -58,7 +49,6 @@ internal fun aHomeSpacesState(
|
||||||
spaceRooms = spaceRooms.toImmutableList(),
|
spaceRooms = spaceRooms.toImmutableList(),
|
||||||
seenSpaceInvites = seenSpaceInvites.toImmutableSet(),
|
seenSpaceInvites = seenSpaceInvites.toImmutableSet(),
|
||||||
hideInvitesAvatar = hideInvitesAvatar,
|
hideInvitesAvatar = hideInvitesAvatar,
|
||||||
canCreateSpaces = canCreateSpaces,
|
|
||||||
canExploreSpaces = canExploreSpaces,
|
canExploreSpaces = canExploreSpaces,
|
||||||
eventSink = eventSink,
|
eventSink = eventSink,
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -55,7 +55,7 @@ fun HomeSpacesView(
|
||||||
onExploreClick: () -> Unit,
|
onExploreClick: () -> Unit,
|
||||||
modifier: Modifier = Modifier,
|
modifier: Modifier = Modifier,
|
||||||
) {
|
) {
|
||||||
if (state.canCreateSpaces && state.spaceRooms.isEmpty()) {
|
if (state.spaceRooms.isEmpty()) {
|
||||||
EmptySpaceHomeView(
|
EmptySpaceHomeView(
|
||||||
modifier = modifier.padding(contentPadding),
|
modifier = modifier.padding(contentPadding),
|
||||||
onCreateSpaceClick = onCreateSpaceClick,
|
onCreateSpaceClick = onCreateSpaceClick,
|
||||||
|
|
|
||||||
|
|
@ -33,7 +33,6 @@ import io.element.android.libraries.matrix.test.sync.FakeSyncService
|
||||||
import io.element.android.libraries.sessionstorage.api.SessionStore
|
import io.element.android.libraries.sessionstorage.api.SessionStore
|
||||||
import io.element.android.libraries.sessionstorage.test.InMemorySessionStore
|
import io.element.android.libraries.sessionstorage.test.InMemorySessionStore
|
||||||
import io.element.android.libraries.sessionstorage.test.aSessionData
|
import io.element.android.libraries.sessionstorage.test.aSessionData
|
||||||
import io.element.android.tests.testutils.MutablePresenter
|
|
||||||
import io.element.android.tests.testutils.WarmUpRule
|
import io.element.android.tests.testutils.WarmUpRule
|
||||||
import io.element.android.tests.testutils.lambda.lambdaRecorder
|
import io.element.android.tests.testutils.lambda.lambdaRecorder
|
||||||
import io.element.android.tests.testutils.lambda.value
|
import io.element.android.tests.testutils.lambda.value
|
||||||
|
|
@ -79,7 +78,6 @@ class HomePresenterTest {
|
||||||
MatrixUser(A_USER_ID, A_USER_NAME, AN_AVATAR_URL)
|
MatrixUser(A_USER_ID, A_USER_NAME, AN_AVATAR_URL)
|
||||||
)
|
)
|
||||||
assertThat(withUserState.showAvatarIndicator).isFalse()
|
assertThat(withUserState.showAvatarIndicator).isFalse()
|
||||||
assertThat(withUserState.showNavigationBar).isTrue()
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -158,36 +156,6 @@ class HomePresenterTest {
|
||||||
.with(value(Announcement.Space))
|
.with(value(Announcement.Space))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
|
||||||
fun `present - NavigationBar is hidden when the last space is left when the user can't create new spaces`() = runTest {
|
|
||||||
val homeSpacesPresenter = MutablePresenter(aHomeSpacesState())
|
|
||||||
val presenter = createHomePresenter(
|
|
||||||
sessionStore = InMemorySessionStore(
|
|
||||||
updateUserProfileResult = { _, _, _ -> },
|
|
||||||
),
|
|
||||||
homeSpacesPresenter = homeSpacesPresenter,
|
|
||||||
announcementService = FakeAnnouncementService(
|
|
||||||
showAnnouncementResult = {},
|
|
||||||
)
|
|
||||||
)
|
|
||||||
presenter.test {
|
|
||||||
val initialState = awaitItem()
|
|
||||||
assertThat(initialState.currentHomeNavigationBarItem).isEqualTo(HomeNavigationBarItem.Chats)
|
|
||||||
assertThat(initialState.showNavigationBar).isTrue()
|
|
||||||
// User navigate to Spaces
|
|
||||||
initialState.eventSink(HomeEvent.SelectHomeNavigationBarItem(HomeNavigationBarItem.Spaces))
|
|
||||||
val spaceState = awaitItem()
|
|
||||||
assertThat(spaceState.currentHomeNavigationBarItem).isEqualTo(HomeNavigationBarItem.Spaces)
|
|
||||||
// The last space is left
|
|
||||||
homeSpacesPresenter.updateState(aHomeSpacesState(spaceRooms = emptyList(), canCreateSpaces = false))
|
|
||||||
skipItems(1)
|
|
||||||
val finalState = awaitItem()
|
|
||||||
// We are back to Chats
|
|
||||||
assertThat(finalState.currentHomeNavigationBarItem).isEqualTo(HomeNavigationBarItem.Chats)
|
|
||||||
assertThat(finalState.showNavigationBar).isFalse()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
internal fun createHomePresenter(
|
internal fun createHomePresenter(
|
||||||
|
|
|
||||||
|
|
@ -8,8 +8,6 @@
|
||||||
package io.element.android.features.home.impl.spacefilters
|
package io.element.android.features.home.impl.spacefilters
|
||||||
|
|
||||||
import com.google.common.truth.Truth.assertThat
|
import com.google.common.truth.Truth.assertThat
|
||||||
import io.element.android.libraries.featureflag.api.FeatureFlags
|
|
||||||
import io.element.android.libraries.featureflag.test.FakeFeatureFlagService
|
|
||||||
import io.element.android.libraries.matrix.api.core.RoomId
|
import io.element.android.libraries.matrix.api.core.RoomId
|
||||||
import io.element.android.libraries.matrix.test.FakeMatrixClient
|
import io.element.android.libraries.matrix.test.FakeMatrixClient
|
||||||
import io.element.android.libraries.matrix.test.spaces.FakeSpaceService
|
import io.element.android.libraries.matrix.test.spaces.FakeSpaceService
|
||||||
|
|
@ -21,26 +19,9 @@ import org.junit.Test
|
||||||
|
|
||||||
@OptIn(ExperimentalCoroutinesApi::class)
|
@OptIn(ExperimentalCoroutinesApi::class)
|
||||||
class SpaceFiltersPresenterTest {
|
class SpaceFiltersPresenterTest {
|
||||||
@Test
|
|
||||||
fun `present - when feature flag is disabled returns Disabled state`() = runTest {
|
|
||||||
val presenter = createSpaceFiltersPresenter(
|
|
||||||
featureFlagService = FakeFeatureFlagService(
|
|
||||||
initialState = mapOf(FeatureFlags.RoomListSpaceFilters.key to false)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
presenter.test {
|
|
||||||
val state = awaitItem()
|
|
||||||
assertThat(state).isEqualTo(SpaceFiltersState.Disabled)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun `present - when available filters is empty returns Disabled state`() = runTest {
|
fun `present - when available filters is empty returns Disabled state`() = runTest {
|
||||||
val presenter = createSpaceFiltersPresenter(
|
val presenter = createSpaceFiltersPresenter()
|
||||||
featureFlagService = FakeFeatureFlagService(
|
|
||||||
initialState = mapOf(FeatureFlags.RoomListSpaceFilters.key to true)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
presenter.test {
|
presenter.test {
|
||||||
val state = awaitLastSequentialItem()
|
val state = awaitLastSequentialItem()
|
||||||
assertThat(state).isEqualTo(SpaceFiltersState.Disabled)
|
assertThat(state).isEqualTo(SpaceFiltersState.Disabled)
|
||||||
|
|
@ -48,15 +29,12 @@ class SpaceFiltersPresenterTest {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun `present - when feature flag is enabled and filters exist returns Unselected state`() = runTest {
|
fun `present - when filters exist returns Unselected state`() = runTest {
|
||||||
val spaceFilter = aSpaceServiceFilter(displayName = "Test Space")
|
val spaceFilter = aSpaceServiceFilter(displayName = "Test Space")
|
||||||
val spaceService = FakeSpaceService()
|
val spaceService = FakeSpaceService()
|
||||||
val matrixClient = FakeMatrixClient(spaceService = spaceService)
|
val matrixClient = FakeMatrixClient(spaceService = spaceService)
|
||||||
|
|
||||||
val presenter = createSpaceFiltersPresenter(
|
val presenter = createSpaceFiltersPresenter(
|
||||||
featureFlagService = FakeFeatureFlagService(
|
|
||||||
initialState = mapOf(FeatureFlags.RoomListSpaceFilters.key to true)
|
|
||||||
),
|
|
||||||
matrixClient = matrixClient,
|
matrixClient = matrixClient,
|
||||||
)
|
)
|
||||||
presenter.test {
|
presenter.test {
|
||||||
|
|
@ -75,9 +53,6 @@ class SpaceFiltersPresenterTest {
|
||||||
val matrixClient = FakeMatrixClient(spaceService = spaceService)
|
val matrixClient = FakeMatrixClient(spaceService = spaceService)
|
||||||
|
|
||||||
val presenter = createSpaceFiltersPresenter(
|
val presenter = createSpaceFiltersPresenter(
|
||||||
featureFlagService = FakeFeatureFlagService(
|
|
||||||
initialState = mapOf(FeatureFlags.RoomListSpaceFilters.key to true)
|
|
||||||
),
|
|
||||||
matrixClient = matrixClient,
|
matrixClient = matrixClient,
|
||||||
)
|
)
|
||||||
presenter.test {
|
presenter.test {
|
||||||
|
|
@ -99,9 +74,6 @@ class SpaceFiltersPresenterTest {
|
||||||
val matrixClient = FakeMatrixClient(spaceService = spaceService)
|
val matrixClient = FakeMatrixClient(spaceService = spaceService)
|
||||||
|
|
||||||
val presenter = createSpaceFiltersPresenter(
|
val presenter = createSpaceFiltersPresenter(
|
||||||
featureFlagService = FakeFeatureFlagService(
|
|
||||||
initialState = mapOf(FeatureFlags.RoomListSpaceFilters.key to true)
|
|
||||||
),
|
|
||||||
matrixClient = matrixClient,
|
matrixClient = matrixClient,
|
||||||
)
|
)
|
||||||
presenter.test {
|
presenter.test {
|
||||||
|
|
@ -129,9 +101,6 @@ class SpaceFiltersPresenterTest {
|
||||||
val matrixClient = FakeMatrixClient(spaceService = spaceService)
|
val matrixClient = FakeMatrixClient(spaceService = spaceService)
|
||||||
|
|
||||||
val presenter = createSpaceFiltersPresenter(
|
val presenter = createSpaceFiltersPresenter(
|
||||||
featureFlagService = FakeFeatureFlagService(
|
|
||||||
initialState = mapOf(FeatureFlags.RoomListSpaceFilters.key to true)
|
|
||||||
),
|
|
||||||
matrixClient = matrixClient,
|
matrixClient = matrixClient,
|
||||||
)
|
)
|
||||||
presenter.test {
|
presenter.test {
|
||||||
|
|
@ -159,9 +128,6 @@ class SpaceFiltersPresenterTest {
|
||||||
val matrixClient = FakeMatrixClient(spaceService = spaceService)
|
val matrixClient = FakeMatrixClient(spaceService = spaceService)
|
||||||
|
|
||||||
val presenter = createSpaceFiltersPresenter(
|
val presenter = createSpaceFiltersPresenter(
|
||||||
featureFlagService = FakeFeatureFlagService(
|
|
||||||
initialState = mapOf(FeatureFlags.RoomListSpaceFilters.key to true)
|
|
||||||
),
|
|
||||||
matrixClient = matrixClient,
|
matrixClient = matrixClient,
|
||||||
)
|
)
|
||||||
presenter.test {
|
presenter.test {
|
||||||
|
|
@ -196,9 +162,6 @@ class SpaceFiltersPresenterTest {
|
||||||
val matrixClient = FakeMatrixClient(spaceService = spaceService)
|
val matrixClient = FakeMatrixClient(spaceService = spaceService)
|
||||||
|
|
||||||
val presenter = createSpaceFiltersPresenter(
|
val presenter = createSpaceFiltersPresenter(
|
||||||
featureFlagService = FakeFeatureFlagService(
|
|
||||||
initialState = mapOf(FeatureFlags.RoomListSpaceFilters.key to true)
|
|
||||||
),
|
|
||||||
matrixClient = matrixClient,
|
matrixClient = matrixClient,
|
||||||
)
|
)
|
||||||
presenter.test {
|
presenter.test {
|
||||||
|
|
@ -224,9 +187,6 @@ class SpaceFiltersPresenterTest {
|
||||||
val matrixClient = FakeMatrixClient(spaceService = spaceService)
|
val matrixClient = FakeMatrixClient(spaceService = spaceService)
|
||||||
|
|
||||||
val presenter = createSpaceFiltersPresenter(
|
val presenter = createSpaceFiltersPresenter(
|
||||||
featureFlagService = FakeFeatureFlagService(
|
|
||||||
initialState = mapOf(FeatureFlags.RoomListSpaceFilters.key to true)
|
|
||||||
),
|
|
||||||
matrixClient = matrixClient,
|
matrixClient = matrixClient,
|
||||||
)
|
)
|
||||||
presenter.test {
|
presenter.test {
|
||||||
|
|
@ -271,9 +231,6 @@ class SpaceFiltersPresenterTest {
|
||||||
val matrixClient = FakeMatrixClient(spaceService = spaceService)
|
val matrixClient = FakeMatrixClient(spaceService = spaceService)
|
||||||
|
|
||||||
val presenter = createSpaceFiltersPresenter(
|
val presenter = createSpaceFiltersPresenter(
|
||||||
featureFlagService = FakeFeatureFlagService(
|
|
||||||
initialState = mapOf(FeatureFlags.RoomListSpaceFilters.key to true)
|
|
||||||
),
|
|
||||||
matrixClient = matrixClient,
|
matrixClient = matrixClient,
|
||||||
)
|
)
|
||||||
presenter.test {
|
presenter.test {
|
||||||
|
|
@ -302,11 +259,9 @@ class SpaceFiltersPresenterTest {
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun createSpaceFiltersPresenter(
|
private fun createSpaceFiltersPresenter(
|
||||||
featureFlagService: FakeFeatureFlagService = FakeFeatureFlagService(),
|
|
||||||
matrixClient: FakeMatrixClient = FakeMatrixClient(),
|
matrixClient: FakeMatrixClient = FakeMatrixClient(),
|
||||||
): SpaceFiltersPresenter {
|
): SpaceFiltersPresenter {
|
||||||
return SpaceFiltersPresenter(
|
return SpaceFiltersPresenter(
|
||||||
featureFlagService = featureFlagService,
|
|
||||||
matrixClient = matrixClient,
|
matrixClient = matrixClient,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -11,9 +11,6 @@ package io.element.android.features.home.impl.spaces
|
||||||
import com.google.common.truth.Truth.assertThat
|
import com.google.common.truth.Truth.assertThat
|
||||||
import io.element.android.features.invite.api.SeenInvitesStore
|
import io.element.android.features.invite.api.SeenInvitesStore
|
||||||
import io.element.android.features.invite.test.InMemorySeenInvitesStore
|
import io.element.android.features.invite.test.InMemorySeenInvitesStore
|
||||||
import io.element.android.libraries.featureflag.api.FeatureFlagService
|
|
||||||
import io.element.android.libraries.featureflag.api.FeatureFlags
|
|
||||||
import io.element.android.libraries.featureflag.test.FakeFeatureFlagService
|
|
||||||
import io.element.android.libraries.matrix.api.MatrixClient
|
import io.element.android.libraries.matrix.api.MatrixClient
|
||||||
import io.element.android.libraries.matrix.test.FakeMatrixClient
|
import io.element.android.libraries.matrix.test.FakeMatrixClient
|
||||||
import io.element.android.tests.testutils.test
|
import io.element.android.tests.testutils.test
|
||||||
|
|
@ -26,25 +23,18 @@ class HomeSpacesPresenterTest {
|
||||||
val presenter = createPresenter()
|
val presenter = createPresenter()
|
||||||
presenter.test {
|
presenter.test {
|
||||||
val state = awaitItem()
|
val state = awaitItem()
|
||||||
// canCreateSpaces is initially false
|
|
||||||
assertThat(state.canCreateSpaces).isFalse()
|
|
||||||
assertThat(state.space).isEqualTo(CurrentSpace.Root)
|
assertThat(state.space).isEqualTo(CurrentSpace.Root)
|
||||||
assertThat(state.spaceRooms).isEmpty()
|
assertThat(state.spaceRooms).isEmpty()
|
||||||
assertThat(state.hideInvitesAvatar).isFalse()
|
assertThat(state.hideInvitesAvatar).isFalse()
|
||||||
assertThat(state.seenSpaceInvites).isEmpty()
|
assertThat(state.seenSpaceInvites).isEmpty()
|
||||||
|
|
||||||
// It'll eventually be true
|
|
||||||
assertThat(awaitItem().canCreateSpaces).isTrue()
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun createPresenter(
|
private fun createPresenter(
|
||||||
client: MatrixClient = FakeMatrixClient(),
|
client: MatrixClient = FakeMatrixClient(),
|
||||||
seenInvitesStore: SeenInvitesStore = InMemorySeenInvitesStore(),
|
seenInvitesStore: SeenInvitesStore = InMemorySeenInvitesStore(),
|
||||||
featureFlagsService: FeatureFlagService = FakeFeatureFlagService(initialState = mapOf(FeatureFlags.CreateSpaces.key to true)),
|
|
||||||
) = HomeSpacesPresenter(
|
) = HomeSpacesPresenter(
|
||||||
client = client,
|
client = client,
|
||||||
seenInvitesStore = seenInvitesStore,
|
seenInvitesStore = seenInvitesStore,
|
||||||
featureFlagsService = featureFlagsService,
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -78,9 +78,6 @@ class SecurityAndPrivacyPresenter(
|
||||||
val isKnockEnabled by remember {
|
val isKnockEnabled by remember {
|
||||||
featureFlagService.isFeatureEnabledFlow(FeatureFlags.Knock)
|
featureFlagService.isFeatureEnabledFlow(FeatureFlags.Knock)
|
||||||
}.collectAsState(false)
|
}.collectAsState(false)
|
||||||
val isSpaceSettingsEnabled by remember {
|
|
||||||
featureFlagService.isFeatureEnabledFlow(FeatureFlags.SpaceSettings)
|
|
||||||
}.collectAsState(false)
|
|
||||||
|
|
||||||
val saveAction = remember { mutableStateOf<AsyncAction<Unit>>(AsyncAction.Uninitialized) }
|
val saveAction = remember { mutableStateOf<AsyncAction<Unit>>(AsyncAction.Uninitialized) }
|
||||||
val homeserverName = remember { matrixClient.userIdServerName() }
|
val homeserverName = remember { matrixClient.userIdServerName() }
|
||||||
|
|
@ -248,7 +245,6 @@ class SecurityAndPrivacyPresenter(
|
||||||
saveAction = saveAction.value,
|
saveAction = saveAction.value,
|
||||||
permissions = permissions,
|
permissions = permissions,
|
||||||
isSpace = roomInfo.isSpace,
|
isSpace = roomInfo.isSpace,
|
||||||
isSpaceSettingsEnabled = isSpaceSettingsEnabled,
|
|
||||||
selectableJoinedSpaces = selectableJoinedSpaces,
|
selectableJoinedSpaces = selectableJoinedSpaces,
|
||||||
spaceSelectionMode = spaceSelectionMode,
|
spaceSelectionMode = spaceSelectionMode,
|
||||||
eventSink = ::handleEvent,
|
eventSink = ::handleEvent,
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,6 @@ data class SecurityAndPrivacyState(
|
||||||
val homeserverName: String,
|
val homeserverName: String,
|
||||||
val showEnableEncryptionConfirmation: Boolean,
|
val showEnableEncryptionConfirmation: Boolean,
|
||||||
private val isKnockEnabled: Boolean,
|
private val isKnockEnabled: Boolean,
|
||||||
private val isSpaceSettingsEnabled: Boolean,
|
|
||||||
val saveAction: AsyncAction<Unit>,
|
val saveAction: AsyncAction<Unit>,
|
||||||
val isSpace: Boolean,
|
val isSpace: Boolean,
|
||||||
private val permissions: SecurityAndPrivacyPermissions,
|
private val permissions: SecurityAndPrivacyPermissions,
|
||||||
|
|
@ -37,7 +36,7 @@ data class SecurityAndPrivacyState(
|
||||||
private val spaceSelectionMode: SpaceSelectionMode,
|
private val spaceSelectionMode: SpaceSelectionMode,
|
||||||
val eventSink: (SecurityAndPrivacyEvent) -> Unit
|
val eventSink: (SecurityAndPrivacyEvent) -> Unit
|
||||||
) {
|
) {
|
||||||
val isSpaceMemberSelectable = isSpaceSettingsEnabled && spaceSelectionMode != SpaceSelectionMode.None
|
val isSpaceMemberSelectable = spaceSelectionMode != SpaceSelectionMode.None
|
||||||
|
|
||||||
// Show SpaceMember option in two cases:
|
// Show SpaceMember option in two cases:
|
||||||
// - SpaceMember is the current saved value
|
// - SpaceMember is the current saved value
|
||||||
|
|
|
||||||
|
|
@ -138,7 +138,6 @@ fun aSecurityAndPrivacyState(
|
||||||
isSpace: Boolean = false,
|
isSpace: Boolean = false,
|
||||||
selectableJoinedSpaces: Set<SpaceRoom> = emptySet(),
|
selectableJoinedSpaces: Set<SpaceRoom> = emptySet(),
|
||||||
spaceSelectionMode: SpaceSelectionMode = SpaceSelectionMode.None,
|
spaceSelectionMode: SpaceSelectionMode = SpaceSelectionMode.None,
|
||||||
isSpaceSettingsEnabled: Boolean = true,
|
|
||||||
eventSink: (SecurityAndPrivacyEvent) -> Unit = {}
|
eventSink: (SecurityAndPrivacyEvent) -> Unit = {}
|
||||||
) = SecurityAndPrivacyState(
|
) = SecurityAndPrivacyState(
|
||||||
editedSettings = editedSettings,
|
editedSettings = editedSettings,
|
||||||
|
|
@ -151,6 +150,5 @@ fun aSecurityAndPrivacyState(
|
||||||
isSpace = isSpace,
|
isSpace = isSpace,
|
||||||
selectableJoinedSpaces = selectableJoinedSpaces.toImmutableSet(),
|
selectableJoinedSpaces = selectableJoinedSpaces.toImmutableSet(),
|
||||||
spaceSelectionMode = spaceSelectionMode,
|
spaceSelectionMode = spaceSelectionMode,
|
||||||
isSpaceSettingsEnabled = isSpaceSettingsEnabled,
|
|
||||||
eventSink = eventSink,
|
eventSink = eventSink,
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -416,11 +416,6 @@ class SecurityAndPrivacyPresenterTest {
|
||||||
val presenter = createSecurityAndPrivacyPresenter(
|
val presenter = createSecurityAndPrivacyPresenter(
|
||||||
room = room,
|
room = room,
|
||||||
matrixClient = client,
|
matrixClient = client,
|
||||||
featureFlagService = FakeFeatureFlagService(
|
|
||||||
initialState = mapOf(
|
|
||||||
FeatureFlags.SpaceSettings.key to true,
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
presenter.test {
|
presenter.test {
|
||||||
skipItems(1)
|
skipItems(1)
|
||||||
|
|
@ -461,11 +456,6 @@ class SecurityAndPrivacyPresenterTest {
|
||||||
room = room,
|
room = room,
|
||||||
navigator = navigator,
|
navigator = navigator,
|
||||||
matrixClient = client,
|
matrixClient = client,
|
||||||
featureFlagService = FakeFeatureFlagService(
|
|
||||||
initialState = mapOf(
|
|
||||||
FeatureFlags.SpaceSettings.key to true,
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
presenter.test {
|
presenter.test {
|
||||||
skipItems(1)
|
skipItems(1)
|
||||||
|
|
@ -587,7 +577,6 @@ class SecurityAndPrivacyPresenterTest {
|
||||||
featureFlagService = FakeFeatureFlagService(
|
featureFlagService = FakeFeatureFlagService(
|
||||||
initialState = mapOf(
|
initialState = mapOf(
|
||||||
FeatureFlags.Knock.key to true,
|
FeatureFlags.Knock.key to true,
|
||||||
FeatureFlags.SpaceSettings.key to true,
|
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
@ -633,7 +622,6 @@ class SecurityAndPrivacyPresenterTest {
|
||||||
featureFlagService = FakeFeatureFlagService(
|
featureFlagService = FakeFeatureFlagService(
|
||||||
initialState = mapOf(
|
initialState = mapOf(
|
||||||
FeatureFlags.Knock.key to true,
|
FeatureFlags.Knock.key to true,
|
||||||
FeatureFlags.SpaceSettings.key to true,
|
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
@ -859,9 +847,6 @@ class SecurityAndPrivacyPresenterTest {
|
||||||
val presenter = createSecurityAndPrivacyPresenter(
|
val presenter = createSecurityAndPrivacyPresenter(
|
||||||
room = room,
|
room = room,
|
||||||
matrixClient = client,
|
matrixClient = client,
|
||||||
featureFlagService = FakeFeatureFlagService(
|
|
||||||
initialState = mapOf(FeatureFlags.SpaceSettings.key to true)
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
presenter.test {
|
presenter.test {
|
||||||
skipItems(1)
|
skipItems(1)
|
||||||
|
|
@ -901,9 +886,6 @@ class SecurityAndPrivacyPresenterTest {
|
||||||
val presenter = createSecurityAndPrivacyPresenter(
|
val presenter = createSecurityAndPrivacyPresenter(
|
||||||
room = room,
|
room = room,
|
||||||
matrixClient = client,
|
matrixClient = client,
|
||||||
featureFlagService = FakeFeatureFlagService(
|
|
||||||
initialState = mapOf(FeatureFlags.SpaceSettings.key to true)
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
presenter.test {
|
presenter.test {
|
||||||
skipItems(1)
|
skipItems(1)
|
||||||
|
|
@ -975,7 +957,6 @@ class SecurityAndPrivacyPresenterTest {
|
||||||
featureFlagService = FakeFeatureFlagService(
|
featureFlagService = FakeFeatureFlagService(
|
||||||
initialState = mapOf(
|
initialState = mapOf(
|
||||||
FeatureFlags.Knock.key to true,
|
FeatureFlags.Knock.key to true,
|
||||||
FeatureFlags.SpaceSettings.key to true,
|
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -29,8 +29,6 @@ import io.element.android.libraries.architecture.AsyncAction
|
||||||
import io.element.android.libraries.architecture.Presenter
|
import io.element.android.libraries.architecture.Presenter
|
||||||
import io.element.android.libraries.core.coroutine.mapState
|
import io.element.android.libraries.core.coroutine.mapState
|
||||||
import io.element.android.libraries.di.annotations.SessionCoroutineScope
|
import io.element.android.libraries.di.annotations.SessionCoroutineScope
|
||||||
import io.element.android.libraries.featureflag.api.FeatureFlagService
|
|
||||||
import io.element.android.libraries.featureflag.api.FeatureFlags
|
|
||||||
import io.element.android.libraries.matrix.api.MatrixClient
|
import io.element.android.libraries.matrix.api.MatrixClient
|
||||||
import io.element.android.libraries.matrix.api.core.RoomId
|
import io.element.android.libraries.matrix.api.core.RoomId
|
||||||
import io.element.android.libraries.matrix.api.core.toRoomIdOrAlias
|
import io.element.android.libraries.matrix.api.core.toRoomIdOrAlias
|
||||||
|
|
@ -66,7 +64,6 @@ class SpacePresenter(
|
||||||
private val joinRoom: JoinRoom,
|
private val joinRoom: JoinRoom,
|
||||||
private val acceptDeclineInvitePresenter: Presenter<AcceptDeclineInviteState>,
|
private val acceptDeclineInvitePresenter: Presenter<AcceptDeclineInviteState>,
|
||||||
@SessionCoroutineScope private val sessionCoroutineScope: CoroutineScope,
|
@SessionCoroutineScope private val sessionCoroutineScope: CoroutineScope,
|
||||||
private val featureFlagService: FeatureFlagService,
|
|
||||||
private val spaceService: SpaceService,
|
private val spaceService: SpaceService,
|
||||||
) : Presenter<SpaceState> {
|
) : Presenter<SpaceState> {
|
||||||
private var children by mutableStateOf<ImmutableList<SpaceRoom>>(persistentListOf())
|
private var children by mutableStateOf<ImmutableList<SpaceRoom>>(persistentListOf())
|
||||||
|
|
@ -99,16 +96,13 @@ class SpacePresenter(
|
||||||
val permissions by room.permissionsAsState(SpacePermissions.DEFAULT) { perms ->
|
val permissions by room.permissionsAsState(SpacePermissions.DEFAULT) { perms ->
|
||||||
perms.spacePermissions()
|
perms.spacePermissions()
|
||||||
}
|
}
|
||||||
val isSpaceSettingsEnabled by remember {
|
|
||||||
featureFlagService.isFeatureEnabledFlow(FeatureFlags.SpaceSettings)
|
|
||||||
}.collectAsState(false)
|
|
||||||
|
|
||||||
val roomInfo by room.roomInfoFlow.collectAsState()
|
val roomInfo by room.roomInfoFlow.collectAsState()
|
||||||
val canAccessSpaceSettings by remember {
|
val canAccessSpaceSettings by remember {
|
||||||
derivedStateOf { isSpaceSettingsEnabled && permissions.settingsPermissions.hasAny(roomInfo.joinRule) }
|
derivedStateOf { permissions.settingsPermissions.hasAny(roomInfo.joinRule) }
|
||||||
}
|
}
|
||||||
val canEditSpaceGraph by remember {
|
val canEditSpaceGraph by remember {
|
||||||
derivedStateOf { isSpaceSettingsEnabled && permissions.canEditSpaceGraph }
|
derivedStateOf { permissions.canEditSpaceGraph }
|
||||||
}
|
}
|
||||||
val (joinActions, setJoinActions) = remember { mutableStateOf(emptyMap<RoomId, AsyncAction<Unit>>()) }
|
val (joinActions, setJoinActions) = remember { mutableStateOf(emptyMap<RoomId, AsyncAction<Unit>>()) }
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -19,8 +19,6 @@ import io.element.android.features.invite.api.toInviteData
|
||||||
import io.element.android.features.invite.test.InMemorySeenInvitesStore
|
import io.element.android.features.invite.test.InMemorySeenInvitesStore
|
||||||
import io.element.android.libraries.architecture.AsyncAction
|
import io.element.android.libraries.architecture.AsyncAction
|
||||||
import io.element.android.libraries.architecture.Presenter
|
import io.element.android.libraries.architecture.Presenter
|
||||||
import io.element.android.libraries.featureflag.api.FeatureFlags
|
|
||||||
import io.element.android.libraries.featureflag.test.FakeFeatureFlagService
|
|
||||||
import io.element.android.libraries.matrix.api.MatrixClient
|
import io.element.android.libraries.matrix.api.MatrixClient
|
||||||
import io.element.android.libraries.matrix.api.core.RoomId
|
import io.element.android.libraries.matrix.api.core.RoomId
|
||||||
import io.element.android.libraries.matrix.api.core.RoomIdOrAlias
|
import io.element.android.libraries.matrix.api.core.RoomIdOrAlias
|
||||||
|
|
@ -75,16 +73,7 @@ class SpacePresenterTest {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun `present - canAccessSpaceSettings false when space settings ff is enabled but no permissions`() = runTest {
|
fun `present - canAccessSpaceSettings true when has permissions`() = runTest {
|
||||||
val presenter = createSpacePresenter(spaceSettingsEnabled = true)
|
|
||||||
presenter.test {
|
|
||||||
val state = awaitItem()
|
|
||||||
assertThat(state.canAccessSpaceSettings).isFalse()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
fun `present - canAccessSpaceSettings true when space settings ff is enabled and has permissions`() = runTest {
|
|
||||||
val room = FakeBaseRoom(
|
val room = FakeBaseRoom(
|
||||||
roomPermissions = FakeRoomPermissions(
|
roomPermissions = FakeRoomPermissions(
|
||||||
canSendState = { true }
|
canSendState = { true }
|
||||||
|
|
@ -92,7 +81,6 @@ class SpacePresenterTest {
|
||||||
)
|
)
|
||||||
val presenter = createSpacePresenter(
|
val presenter = createSpacePresenter(
|
||||||
room = room,
|
room = room,
|
||||||
spaceSettingsEnabled = true,
|
|
||||||
)
|
)
|
||||||
presenter.test {
|
presenter.test {
|
||||||
skipItems(1)
|
skipItems(1)
|
||||||
|
|
@ -627,7 +615,6 @@ class SpacePresenterTest {
|
||||||
lambda = { _, _, _ -> Result.success(Unit) },
|
lambda = { _, _, _ -> Result.success(Unit) },
|
||||||
),
|
),
|
||||||
acceptDeclineInvitePresenter: Presenter<AcceptDeclineInviteState> = Presenter { anAcceptDeclineInviteState() },
|
acceptDeclineInvitePresenter: Presenter<AcceptDeclineInviteState> = Presenter { anAcceptDeclineInviteState() },
|
||||||
spaceSettingsEnabled: Boolean = false,
|
|
||||||
spaceService: FakeSpaceService = FakeSpaceService(),
|
spaceService: FakeSpaceService = FakeSpaceService(),
|
||||||
): SpacePresenter {
|
): SpacePresenter {
|
||||||
return SpacePresenter(
|
return SpacePresenter(
|
||||||
|
|
@ -638,11 +625,6 @@ class SpacePresenterTest {
|
||||||
joinRoom = joinRoom,
|
joinRoom = joinRoom,
|
||||||
acceptDeclineInvitePresenter = acceptDeclineInvitePresenter,
|
acceptDeclineInvitePresenter = acceptDeclineInvitePresenter,
|
||||||
sessionCoroutineScope = this,
|
sessionCoroutineScope = this,
|
||||||
featureFlagService = FakeFeatureFlagService(
|
|
||||||
initialState = mapOf(
|
|
||||||
FeatureFlags.SpaceSettings.key to spaceSettingsEnabled,
|
|
||||||
)
|
|
||||||
),
|
|
||||||
spaceService = spaceService,
|
spaceService = spaceService,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -70,27 +70,6 @@ enum class FeatureFlags(
|
||||||
defaultValue = { false },
|
defaultValue = { false },
|
||||||
isFinished = false,
|
isFinished = false,
|
||||||
),
|
),
|
||||||
CreateSpaces(
|
|
||||||
key = "feature.createSpaces",
|
|
||||||
title = "Create spaces",
|
|
||||||
description = "Allow creating spaces.",
|
|
||||||
defaultValue = { true },
|
|
||||||
isFinished = false,
|
|
||||||
),
|
|
||||||
SpaceSettings(
|
|
||||||
key = "feature.spaceSettings",
|
|
||||||
title = "Space settings",
|
|
||||||
description = "Allow managing space settings such as details, permissions and privacy.",
|
|
||||||
defaultValue = { true },
|
|
||||||
isFinished = false,
|
|
||||||
),
|
|
||||||
RoomListSpaceFilters(
|
|
||||||
key = "feature.roomListSpaceFilters",
|
|
||||||
title = "Room list space filters",
|
|
||||||
description = "Allow filtering the room list by space.",
|
|
||||||
defaultValue = { true },
|
|
||||||
isFinished = false,
|
|
||||||
),
|
|
||||||
PrintLogsToLogcat(
|
PrintLogsToLogcat(
|
||||||
key = "feature.print_logs_to_logcat",
|
key = "feature.print_logs_to_logcat",
|
||||||
title = "Print logs to logcat",
|
title = "Print logs to logcat",
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,3 @@
|
||||||
version https://git-lfs.github.com/spec/v1
|
version https://git-lfs.github.com/spec/v1
|
||||||
oid sha256:2d69d687090971ab7e9b87f959521109fbed48413ef217e1be3da8d7d985038b
|
oid sha256:ecd79d3f8c4efbb54efa6a5b8dee79274ae9957b01146025dab42a45fc328fc0
|
||||||
size 38751
|
size 24740
|
||||||
|
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
version https://git-lfs.github.com/spec/v1
|
|
||||||
oid sha256:ecd79d3f8c4efbb54efa6a5b8dee79274ae9957b01146025dab42a45fc328fc0
|
|
||||||
size 24740
|
|
||||||
|
|
@ -1,3 +1,3 @@
|
||||||
version https://git-lfs.github.com/spec/v1
|
version https://git-lfs.github.com/spec/v1
|
||||||
oid sha256:d2a6a7f3188eb9635ade7c0bbc2239257cfbe3166f4a6fb7917a1e5578f51d9e
|
oid sha256:0fd37517b8913e2bac3275f717aa15bed18055a7525e0404b25b43cb8bd8422d
|
||||||
size 37436
|
size 23840
|
||||||
|
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
version https://git-lfs.github.com/spec/v1
|
|
||||||
oid sha256:0fd37517b8913e2bac3275f717aa15bed18055a7525e0404b25b43cb8bd8422d
|
|
||||||
size 23840
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue