Skip to content

Commit 5814de1

Browse files
committed
It's not possible to join room from the RoomDirectory screen anymore.
Cleanup after #2827
1 parent f063268 commit 5814de1

File tree

10 files changed

+16
-149
lines changed

10 files changed

+16
-149
lines changed

appnav/src/main/kotlin/io/element/android/appnav/LoggedInFlowNode.kt

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -370,10 +370,6 @@ class LoggedInFlowNode @AssistedInject constructor(
370370
NavTarget.RoomDirectorySearch -> {
371371
roomDirectoryEntryPoint.nodeBuilder(this, buildContext)
372372
.callback(object : RoomDirectoryEntryPoint.Callback {
373-
override fun onRoomJoined(roomId: RoomId) {
374-
backstack.push(NavTarget.Room(roomId.toRoomIdOrAlias()))
375-
}
376-
377373
override fun onResultClicked(roomDescription: RoomDescription) {
378374
backstack.push(NavTarget.Room(roomDescription.roomId.toRoomIdOrAlias(), roomDescription))
379375
}

features/roomdirectory/api/src/main/kotlin/io/element/android/features/roomdirectory/api/RoomDirectoryEntryPoint.kt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ import com.bumble.appyx.core.modality.BuildContext
2020
import com.bumble.appyx.core.node.Node
2121
import com.bumble.appyx.core.plugin.Plugin
2222
import io.element.android.libraries.architecture.FeatureEntryPoint
23-
import io.element.android.libraries.matrix.api.core.RoomId
2423

2524
interface RoomDirectoryEntryPoint : FeatureEntryPoint {
2625
fun nodeBuilder(parentNode: Node, buildContext: BuildContext): NodeBuilder
@@ -31,7 +30,6 @@ interface RoomDirectoryEntryPoint : FeatureEntryPoint {
3130
}
3231

3332
interface Callback : Plugin {
34-
fun onRoomJoined(roomId: RoomId)
3533
fun onResultClicked(roomDescription: RoomDescription)
3634
}
3735
}

features/roomdirectory/impl/src/main/kotlin/io/element/android/features/roomdirectory/impl/root/RoomDirectoryEvents.kt

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,7 @@
1616

1717
package io.element.android.features.roomdirectory.impl.root
1818

19-
import io.element.android.libraries.matrix.api.core.RoomId
20-
2119
sealed interface RoomDirectoryEvents {
22-
data class JoinRoom(val roomId: RoomId) : RoomDirectoryEvents
2320
data class Search(val query: String) : RoomDirectoryEvents
2421
data object LoadMore : RoomDirectoryEvents
25-
data object JoinRoomDismissError : RoomDirectoryEvents
2622
}

features/roomdirectory/impl/src/main/kotlin/io/element/android/features/roomdirectory/impl/root/RoomDirectoryNode.kt

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ import io.element.android.anvilannotations.ContributesNode
2828
import io.element.android.features.roomdirectory.api.RoomDescription
2929
import io.element.android.features.roomdirectory.api.RoomDirectoryEntryPoint
3030
import io.element.android.libraries.di.SessionScope
31-
import io.element.android.libraries.matrix.api.core.RoomId
3231

3332
@ContributesNode(SessionScope::class)
3433
class RoomDirectoryNode @AssistedInject constructor(
@@ -42,18 +41,11 @@ class RoomDirectoryNode @AssistedInject constructor(
4241
}
4342
}
4443

45-
private fun onRoomJoined(roomId: RoomId) {
46-
plugins<RoomDirectoryEntryPoint.Callback>().forEach {
47-
it.onRoomJoined(roomId)
48-
}
49-
}
50-
5144
@Composable
5245
override fun View(modifier: Modifier) {
5346
val state = presenter.present()
5447
RoomDirectoryView(
5548
state = state,
56-
onRoomJoined = ::onRoomJoined,
5749
onResultClicked = ::onResultClicked,
5850
onBackPressed = ::navigateUp,
5951
modifier = modifier

features/roomdirectory/impl/src/main/kotlin/io/element/android/features/roomdirectory/impl/root/RoomDirectoryPresenter.kt

Lines changed: 0 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -18,35 +18,27 @@ package io.element.android.features.roomdirectory.impl.root
1818

1919
import androidx.compose.runtime.Composable
2020
import androidx.compose.runtime.LaunchedEffect
21-
import androidx.compose.runtime.MutableState
2221
import androidx.compose.runtime.collectAsState
2322
import androidx.compose.runtime.getValue
2423
import androidx.compose.runtime.mutableStateOf
2524
import androidx.compose.runtime.remember
2625
import androidx.compose.runtime.rememberCoroutineScope
2726
import androidx.compose.runtime.saveable.rememberSaveable
2827
import androidx.compose.runtime.setValue
29-
import io.element.android.features.roomdirectory.impl.root.di.JoinRoom
3028
import io.element.android.features.roomdirectory.impl.root.model.RoomDirectoryListState
3129
import io.element.android.features.roomdirectory.impl.root.model.toFeatureModel
32-
import io.element.android.libraries.architecture.AsyncAction
3330
import io.element.android.libraries.architecture.Presenter
34-
import io.element.android.libraries.architecture.runUpdatingState
3531
import io.element.android.libraries.core.coroutine.CoroutineDispatchers
36-
import io.element.android.libraries.matrix.api.core.RoomId
3732
import io.element.android.libraries.matrix.api.roomdirectory.RoomDirectoryList
3833
import io.element.android.libraries.matrix.api.roomdirectory.RoomDirectoryService
3934
import kotlinx.collections.immutable.toImmutableList
40-
import kotlinx.coroutines.CoroutineScope
4135
import kotlinx.coroutines.delay
4236
import kotlinx.coroutines.flow.flowOn
4337
import kotlinx.coroutines.flow.map
44-
import kotlinx.coroutines.launch
4538
import javax.inject.Inject
4639

4740
class RoomDirectoryPresenter @Inject constructor(
4841
private val dispatchers: CoroutineDispatchers,
49-
private val joinRoom: JoinRoom,
5042
private val roomDirectoryService: RoomDirectoryService,
5143
) : Presenter<RoomDirectoryState> {
5244
@Composable
@@ -62,9 +54,6 @@ class RoomDirectoryPresenter @Inject constructor(
6254
roomDirectoryService.createRoomDirectoryList(coroutineScope)
6355
}
6456
val listState by roomDirectoryList.collectState()
65-
val joinRoomAction: MutableState<AsyncAction<RoomId>> = remember {
66-
mutableStateOf(AsyncAction.Uninitialized)
67-
}
6857
LaunchedEffect(searchQuery) {
6958
if (searchQuery == null) return@LaunchedEffect
7059
// cancel load more right away
@@ -87,31 +76,17 @@ class RoomDirectoryPresenter @Inject constructor(
8776
is RoomDirectoryEvents.Search -> {
8877
searchQuery = event.query
8978
}
90-
is RoomDirectoryEvents.JoinRoom -> {
91-
coroutineScope.joinRoom(joinRoomAction, event.roomId)
92-
}
93-
RoomDirectoryEvents.JoinRoomDismissError -> {
94-
joinRoomAction.value = AsyncAction.Uninitialized
95-
}
9679
}
9780
}
9881

9982
return RoomDirectoryState(
10083
query = searchQuery.orEmpty(),
10184
roomDescriptions = listState.items,
10285
displayLoadMoreIndicator = listState.hasMoreToLoad,
103-
joinRoomAction = joinRoomAction.value,
10486
eventSink = ::handleEvents
10587
)
10688
}
10789

108-
private fun CoroutineScope.joinRoom(state: MutableState<AsyncAction<RoomId>>, roomId: RoomId) = launch {
109-
state.runUpdatingState {
110-
joinRoom(roomId)
111-
.map { roomId }
112-
}
113-
}
114-
11590
@Composable
11691
private fun RoomDirectoryList.collectState() = remember {
11792
state.map {

features/roomdirectory/impl/src/main/kotlin/io/element/android/features/roomdirectory/impl/root/RoomDirectoryState.kt

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,12 @@
1717
package io.element.android.features.roomdirectory.impl.root
1818

1919
import io.element.android.features.roomdirectory.api.RoomDescription
20-
import io.element.android.libraries.architecture.AsyncAction
21-
import io.element.android.libraries.matrix.api.core.RoomId
2220
import kotlinx.collections.immutable.ImmutableList
2321

2422
data class RoomDirectoryState(
2523
val query: String,
2624
val roomDescriptions: ImmutableList<RoomDescription>,
2725
val displayLoadMoreIndicator: Boolean,
28-
val joinRoomAction: AsyncAction<RoomId>,
2926
val eventSink: (RoomDirectoryEvents) -> Unit
3027
) {
3128
val displayEmptyState = roomDescriptions.isEmpty() && !displayLoadMoreIndicator

features/roomdirectory/impl/src/main/kotlin/io/element/android/features/roomdirectory/impl/root/RoomDirectoryStateProvider.kt

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ package io.element.android.features.roomdirectory.impl.root
1818

1919
import androidx.compose.ui.tooling.preview.PreviewParameterProvider
2020
import io.element.android.features.roomdirectory.api.RoomDescription
21-
import io.element.android.libraries.architecture.AsyncAction
2221
import io.element.android.libraries.matrix.api.core.RoomAlias
2322
import io.element.android.libraries.matrix.api.core.RoomId
2423
import kotlinx.collections.immutable.ImmutableList
@@ -37,30 +36,18 @@ open class RoomDirectoryStateProvider : PreviewParameterProvider<RoomDirectorySt
3736
roomDescriptions = aRoomDescriptionList(),
3837
displayLoadMoreIndicator = true,
3938
),
40-
aRoomDirectoryState(
41-
query = "Element",
42-
roomDescriptions = aRoomDescriptionList(),
43-
joinRoomAction = AsyncAction.Loading,
44-
),
45-
aRoomDirectoryState(
46-
query = "Element",
47-
roomDescriptions = aRoomDescriptionList(),
48-
joinRoomAction = AsyncAction.Failure(Exception("Failed to join room")),
49-
),
5039
)
5140
}
5241

5342
fun aRoomDirectoryState(
5443
query: String = "",
5544
displayLoadMoreIndicator: Boolean = false,
5645
roomDescriptions: ImmutableList<RoomDescription> = persistentListOf(),
57-
joinRoomAction: AsyncAction<RoomId> = AsyncAction.Uninitialized,
5846
eventSink: (RoomDirectoryEvents) -> Unit = {},
5947
) = RoomDirectoryState(
6048
query = query,
6149
roomDescriptions = roomDescriptions,
6250
displayLoadMoreIndicator = displayLoadMoreIndicator,
63-
joinRoomAction = joinRoomAction,
6451
eventSink = eventSink,
6552
)
6653

features/roomdirectory/impl/src/main/kotlin/io/element/android/features/roomdirectory/impl/root/RoomDirectoryView.kt

Lines changed: 16 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,6 @@ import io.element.android.compound.theme.ElementTheme
4747
import io.element.android.compound.tokens.generated.CompoundIcons
4848
import io.element.android.features.roomdirectory.api.RoomDescription
4949
import io.element.android.features.roomdirectory.impl.R
50-
import io.element.android.libraries.designsystem.components.async.AsyncActionView
5150
import io.element.android.libraries.designsystem.components.avatar.Avatar
5251
import io.element.android.libraries.designsystem.components.avatar.AvatarSize
5352
import io.element.android.libraries.designsystem.components.button.BackButton
@@ -61,7 +60,6 @@ import io.element.android.libraries.designsystem.theme.components.Scaffold
6160
import io.element.android.libraries.designsystem.theme.components.Text
6261
import io.element.android.libraries.designsystem.theme.components.TextField
6362
import io.element.android.libraries.designsystem.theme.components.TopAppBar
64-
import io.element.android.libraries.matrix.api.core.RoomId
6563
import io.element.android.libraries.testtags.TestTags
6664
import io.element.android.libraries.ui.strings.CommonStrings
6765
import kotlinx.collections.immutable.ImmutableList
@@ -70,7 +68,6 @@ import kotlinx.collections.immutable.ImmutableList
7068
fun RoomDirectoryView(
7169
state: RoomDirectoryState,
7270
onResultClicked: (RoomDescription) -> Unit,
73-
onRoomJoined: (RoomId) -> Unit,
7471
onBackPressed: () -> Unit,
7572
modifier: Modifier = Modifier,
7673
) {
@@ -84,21 +81,11 @@ fun RoomDirectoryView(
8481
state = state,
8582
onResultClicked = onResultClicked,
8683
modifier = Modifier
87-
.padding(padding)
88-
.consumeWindowInsets(padding)
84+
.padding(padding)
85+
.consumeWindowInsets(padding)
8986
)
9087
}
9188
)
92-
AsyncActionView(
93-
async = state.joinRoomAction,
94-
onSuccess = onRoomJoined,
95-
onErrorDismiss = {
96-
state.eventSink(RoomDirectoryEvents.JoinRoomDismissError)
97-
},
98-
errorMessage = {
99-
stringResource(id = CommonStrings.error_unknown)
100-
}
101-
)
10289
}
10390

10491
@OptIn(ExperimentalMaterial3Api::class)
@@ -186,10 +173,10 @@ private fun RoomDirectoryRoomList(
186173
@Composable
187174
private fun LoadMoreIndicator(modifier: Modifier = Modifier) {
188175
Box(
189-
modifier
190-
.fillMaxWidth()
191-
.wrapContentHeight()
192-
.padding(24.dp),
176+
modifier = modifier
177+
.fillMaxWidth()
178+
.wrapContentHeight()
179+
.padding(24.dp),
193180
contentAlignment = Alignment.Center,
194181
) {
195182
CircularProgressIndicator(
@@ -259,23 +246,23 @@ private fun RoomDirectoryRoomRow(
259246
) {
260247
Row(
261248
modifier = modifier
262-
.fillMaxWidth()
263-
.clickable(onClick = onClick)
264-
.padding(
265-
top = 12.dp,
266-
bottom = 12.dp,
267-
start = 16.dp,
268-
)
269-
.height(IntrinsicSize.Min),
249+
.fillMaxWidth()
250+
.clickable(onClick = onClick)
251+
.padding(
252+
top = 12.dp,
253+
bottom = 12.dp,
254+
start = 16.dp,
255+
)
256+
.height(IntrinsicSize.Min),
270257
) {
271258
Avatar(
272259
avatarData = roomDescription.avatarData(AvatarSize.RoomDirectoryItem),
273260
modifier = Modifier.align(Alignment.CenterVertically)
274261
)
275262
Column(
276263
modifier = Modifier
277-
.weight(1f)
278-
.padding(horizontal = 16.dp)
264+
.weight(1f)
265+
.padding(horizontal = 16.dp)
279266
) {
280267
Text(
281268
text = roomDescription.computedName,
@@ -301,7 +288,6 @@ internal fun RoomDirectoryViewPreview(@PreviewParameter(RoomDirectoryStateProvid
301288
RoomDirectoryView(
302289
state = state,
303290
onResultClicked = {},
304-
onRoomJoined = {},
305291
onBackPressed = {},
306292
)
307293
}

features/roomdirectory/impl/src/test/kotlin/io/element/android/features/roomdirectory/impl/root/RoomDirectoryPresenterTest.kt

Lines changed: 0 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,8 @@
1717
package io.element.android.features.roomdirectory.impl.root
1818

1919
import com.google.common.truth.Truth.assertThat
20-
import io.element.android.features.roomdirectory.impl.root.di.JoinRoom
21-
import io.element.android.libraries.architecture.AsyncAction
22-
import io.element.android.libraries.matrix.api.core.RoomId
2320
import io.element.android.libraries.matrix.api.roomdirectory.RoomDirectoryList
2421
import io.element.android.libraries.matrix.api.roomdirectory.RoomDirectoryService
25-
import io.element.android.libraries.matrix.test.A_ROOM_ID
2622
import io.element.android.libraries.matrix.test.roomdirectory.FakeRoomDirectoryList
2723
import io.element.android.libraries.matrix.test.roomdirectory.FakeRoomDirectoryService
2824
import io.element.android.libraries.matrix.test.roomdirectory.aRoomDescription
@@ -47,7 +43,6 @@ import org.junit.Test
4743
val initialState = awaitItem()
4844
assertThat(initialState.query).isEmpty()
4945
assertThat(initialState.displayEmptyState).isFalse()
50-
assertThat(initialState.joinRoomAction).isEqualTo(AsyncAction.Uninitialized)
5146
assertThat(initialState.roomDescriptions).isEmpty()
5247
assertThat(initialState.displayLoadMoreIndicator).isTrue()
5348
}
@@ -136,46 +131,13 @@ import org.junit.Test
136131
.withNoParameter()
137132
}
138133

139-
@Test
140-
fun `present - emit join room event`() = runTest {
141-
val joinRoomSuccess = lambdaRecorder { _: RoomId ->
142-
Result.success(Unit)
143-
}
144-
val joinRoomFailure = lambdaRecorder { roomId: RoomId ->
145-
Result.failure<Unit>(RuntimeException("Failed to join room $roomId"))
146-
}
147-
val fakeJoinRoom = FakeJoinRoom(joinRoomSuccess)
148-
val presenter = createRoomDirectoryPresenter(joinRoom = fakeJoinRoom)
149-
presenter.test {
150-
awaitItem().also { state ->
151-
state.eventSink(RoomDirectoryEvents.JoinRoom(A_ROOM_ID))
152-
}
153-
awaitItem().also { state ->
154-
assertThat(state.joinRoomAction).isEqualTo(AsyncAction.Success(A_ROOM_ID))
155-
fakeJoinRoom.lambda = joinRoomFailure
156-
state.eventSink(RoomDirectoryEvents.JoinRoom(A_ROOM_ID))
157-
}
158-
awaitItem().also { state ->
159-
assertThat(state.joinRoomAction).isInstanceOf(AsyncAction.Failure::class.java)
160-
}
161-
}
162-
assert(joinRoomSuccess)
163-
.isCalledOnce()
164-
.with(value(A_ROOM_ID))
165-
assert(joinRoomFailure)
166-
.isCalledOnce()
167-
.with(value(A_ROOM_ID))
168-
}
169-
170134
private fun TestScope.createRoomDirectoryPresenter(
171135
roomDirectoryService: RoomDirectoryService = FakeRoomDirectoryService(
172136
createRoomDirectoryListFactory = { FakeRoomDirectoryList() }
173137
),
174-
joinRoom: JoinRoom = FakeJoinRoom { Result.success(Unit) },
175138
): RoomDirectoryPresenter {
176139
return RoomDirectoryPresenter(
177140
dispatchers = testCoroutineDispatchers(),
178-
joinRoom = joinRoom,
179141
roomDirectoryService = roomDirectoryService,
180142
)
181143
}

0 commit comments

Comments
 (0)