Skip to content

Commit ba51b29

Browse files
authored
Cleanup nodes (#5358)
* Remove unused NavTarget.Empty * Let SpaceEntryPoint.Inputs implement NodeInputs. * Small cleanup * Small cleanup * Method can be private. * Simplify code * Rename to follow naming convention * Rename Node to follow naming convention * Add Konsist test. * Remove useless line of code.
2 parents 5d11540 + f28b53d commit ba51b29

File tree

13 files changed

+42
-50
lines changed

13 files changed

+42
-50
lines changed

features/changeroommemberroles/impl/src/main/kotlin/io/element/android/features/changeroommemberroles/impl/ChangeRolesNode.kt

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -37,16 +37,7 @@ class ChangeRolesNode(
3737
) : NodeInputs
3838

3939
private val inputs: Inputs = inputs()
40-
41-
private val presenter = presenterFactory.run {
42-
val role = when (inputs.listType) {
43-
ChangeRoomMemberRolesListType.Admins -> RoomMember.Role.Admin
44-
ChangeRoomMemberRolesListType.Moderators -> RoomMember.Role.Moderator
45-
ChangeRoomMemberRolesListType.SelectNewOwnersWhenLeaving -> RoomMember.Role.Owner(isCreator = false)
46-
}
47-
create(role)
48-
}
49-
40+
private val presenter = presenterFactory.create(inputs.listType.toRoomMemberRole())
5041
private val stateFlow = launchMolecule { presenter.present() }
5142

5243
suspend fun waitForRoleChanged() {
@@ -63,3 +54,9 @@ class ChangeRolesNode(
6354
)
6455
}
6556
}
57+
58+
private fun ChangeRoomMemberRolesListType.toRoomMemberRole() = when (this) {
59+
ChangeRoomMemberRolesListType.Admins -> RoomMember.Role.Admin
60+
ChangeRoomMemberRolesListType.Moderators -> RoomMember.Role.Moderator
61+
ChangeRoomMemberRolesListType.SelectNewOwnersWhenLeaving -> RoomMember.Role.Owner(isCreator = false)
62+
}

features/changeroommemberroles/impl/src/main/kotlin/io/element/android/features/changeroommemberroles/impl/ChangeRoomMemberRolesRootNode.kt

Lines changed: 6 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -39,16 +39,13 @@ class ChangeRoomMemberRolesRootNode(
3939
roomComponentFactory: RoomComponentFactory,
4040
) : ParentNode<ChangeRoomMemberRolesRootNode.NavTarget>(
4141
navModel = PermanentNavModel(
42-
navTargets = setOf(NavTarget.Root),
42+
navTargets = setOf(NavTarget),
4343
savedStateMap = buildContext.savedStateMap,
4444
),
4545
buildContext = buildContext,
4646
plugins = plugins,
4747
), DependencyInjectionGraphOwner, ChangeRoomMemberRolesEntryPoint.NodeProxy {
48-
sealed interface NavTarget : Parcelable {
49-
@Parcelize
50-
object Root : NavTarget
51-
}
48+
@Parcelize object NavTarget : Parcelable
5249

5350
data class Inputs(
5451
val joinedRoom: JoinedRoom,
@@ -60,14 +57,10 @@ class ChangeRoomMemberRolesRootNode(
6057
override val graph = roomComponentFactory.create(inputs.joinedRoom)
6158

6259
override fun resolve(navTarget: NavTarget, buildContext: BuildContext): Node {
63-
return when (navTarget) {
64-
NavTarget.Root -> {
65-
createNode<ChangeRolesNode>(
66-
buildContext = buildContext,
67-
plugins = listOf(ChangeRolesNode.Inputs(listType = inputs.listType)),
68-
)
69-
}
70-
}
60+
return createNode<ChangeRolesNode>(
61+
buildContext = buildContext,
62+
plugins = listOf(ChangeRolesNode.Inputs(listType = inputs.listType)),
63+
)
7164
}
7265

7366
@Composable

features/home/impl/src/main/kotlin/io/element/android/features/home/impl/HomeFlowNode.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,7 @@ class HomeFlowNode(
164164
stateFlow.value.roomListState.eventSink(RoomListEvents.LeaveRoom(roomId, needsConfirmation = false))
165165
}
166166

167-
fun rootNode(buildContext: BuildContext): Node {
167+
private fun rootNode(buildContext: BuildContext): Node {
168168
return node(buildContext) { modifier ->
169169
val state by stateFlow.collectAsState()
170170
val activity = requireNotNull(LocalActivity.current)

features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesFlowNode.kt

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ import androidx.lifecycle.lifecycleScope
1515
import com.bumble.appyx.core.lifecycle.subscribe
1616
import com.bumble.appyx.core.modality.BuildContext
1717
import com.bumble.appyx.core.node.Node
18-
import com.bumble.appyx.core.node.node
1918
import com.bumble.appyx.core.plugin.Plugin
2019
import com.bumble.appyx.core.plugin.plugins
2120
import com.bumble.appyx.navmodel.backstack.BackStack
@@ -126,9 +125,6 @@ class MessagesFlowNode(
126125
plugins = plugins
127126
) {
128127
sealed interface NavTarget : Parcelable {
129-
@Parcelize
130-
data object Empty : NavTarget
131-
132128
@Parcelize
133129
data class Messages(val focusedEventId: EventId?) : NavTarget
134130

@@ -399,9 +395,6 @@ class MessagesFlowNode(
399395
}
400396
createNode<PinnedMessagesListNode>(buildContext, plugins = listOf(callback))
401397
}
402-
NavTarget.Empty -> {
403-
node(buildContext) {}
404-
}
405398
NavTarget.KnockRequestsList -> {
406399
knockRequestsListEntryPoint.createNode(this, buildContext)
407400
}

features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/permissions/ChangeRoomPermissionsNode.kt

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,7 @@ class ChangeRoomPermissionsNode(
3434
) : NodeInputs, Parcelable
3535

3636
private val inputs: Inputs = inputs()
37-
38-
private val presenter = presenterFactory.run {
39-
create(inputs.section)
40-
}
37+
private val presenter = presenterFactory.create(inputs.section)
4138

4239
@Composable
4340
override fun View(modifier: Modifier) {

features/space/api/src/main/kotlin/io/element/android/features/space/api/SpaceEntryPoint.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import com.bumble.appyx.core.modality.BuildContext
1111
import com.bumble.appyx.core.node.Node
1212
import com.bumble.appyx.core.plugin.Plugin
1313
import io.element.android.libraries.architecture.FeatureEntryPoint
14+
import io.element.android.libraries.architecture.NodeInputs
1415
import io.element.android.libraries.matrix.api.core.RoomId
1516

1617
interface SpaceEntryPoint : FeatureEntryPoint {
@@ -27,7 +28,7 @@ interface SpaceEntryPoint : FeatureEntryPoint {
2728

2829
data class Inputs(
2930
val roomId: RoomId
30-
) : Plugin
31+
) : NodeInputs
3132

3233
interface Callback : Plugin {
3334
fun onOpenRoom(roomId: RoomId)

features/space/impl/src/main/kotlin/io/element/android/features/space/impl/SpaceNode.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import dev.zacsweers.metro.Assisted
1616
import dev.zacsweers.metro.Inject
1717
import io.element.android.annotations.ContributesNode
1818
import io.element.android.features.space.api.SpaceEntryPoint
19+
import io.element.android.libraries.architecture.inputs
1920
import io.element.android.libraries.di.SessionScope
2021

2122
@ContributesNode(SessionScope::class)
@@ -25,7 +26,7 @@ class SpaceNode(
2526
@Assisted plugins: List<Plugin>,
2627
presenterFactory: SpacePresenter.Factory,
2728
) : Node(buildContext, plugins = plugins) {
28-
private val inputs = plugins.filterIsInstance<SpaceEntryPoint.Inputs>().single()
29+
private val inputs: SpaceEntryPoint.Inputs = inputs()
2930
private val callback = plugins.filterIsInstance<SpaceEntryPoint.Callback>().single()
3031
private val presenter = presenterFactory.create(inputs)
3132

features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/DefaultViewFolderEntryPoint.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import dev.zacsweers.metro.AppScope
1414
import dev.zacsweers.metro.ContributesBinding
1515
import dev.zacsweers.metro.Inject
1616
import io.element.android.features.viewfolder.api.ViewFolderEntryPoint
17-
import io.element.android.features.viewfolder.impl.root.ViewFolderRootNode
17+
import io.element.android.features.viewfolder.impl.root.ViewFolderFlowNode
1818
import io.element.android.libraries.architecture.createNode
1919

2020
@ContributesBinding(AppScope::class)
@@ -25,7 +25,7 @@ class DefaultViewFolderEntryPoint : ViewFolderEntryPoint {
2525

2626
return object : ViewFolderEntryPoint.NodeBuilder {
2727
override fun params(params: ViewFolderEntryPoint.Params): ViewFolderEntryPoint.NodeBuilder {
28-
plugins += ViewFolderRootNode.Inputs(params.rootPath)
28+
plugins += ViewFolderFlowNode.Inputs(params.rootPath)
2929
return this
3030
}
3131

@@ -35,7 +35,7 @@ class DefaultViewFolderEntryPoint : ViewFolderEntryPoint {
3535
}
3636

3737
override fun build(): Node {
38-
return parentNode.createNode<ViewFolderRootNode>(buildContext, plugins)
38+
return parentNode.createNode<ViewFolderFlowNode>(buildContext, plugins)
3939
}
4040
}
4141
}
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,10 @@ import kotlinx.parcelize.Parcelize
3434

3535
@ContributesNode(AppScope::class)
3636
@Inject
37-
class ViewFolderRootNode(
37+
class ViewFolderFlowNode(
3838
@Assisted buildContext: BuildContext,
3939
@Assisted plugins: List<Plugin>,
40-
) : BaseFlowNode<ViewFolderRootNode.NavTarget>(
40+
) : BaseFlowNode<ViewFolderFlowNode.NavTarget>(
4141
backstack = BackStack(
4242
initialElement = NavTarget.Root,
4343
savedStateMap = buildContext.savedStateMap,

libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClient.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -287,7 +287,6 @@ class RustMatrixClient(
287287
}
288288

289289
override suspend fun getRoom(roomId: RoomId): BaseRoom? = withContext(sessionDispatcher) {
290-
innerClient.rooms()
291290
roomFactory.getBaseRoom(roomId)
292291
}
293292

0 commit comments

Comments
 (0)