mirror of
https://github.com/Novaloop-AG/element-x-android.git
synced 2026-11-03 06:55:41 +00:00
Add KDoc to the features/invitepeople API interfaces
Document InvitePeopleState and each of its properties, InvitePeopleEvents, InvitePeopleRenderer and the presenter factory. The state properties now say what drives them, in particular that createRoomFromDmAction covers the case of inviting a third person into an existing direct message, and that the factory accepts a null room for that flow. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
+3
@@ -8,6 +8,9 @@
|
|||||||
|
|
||||||
package io.element.android.features.invitepeople.api
|
package io.element.android.features.invitepeople.api
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Events the invite people UI sends to its presenter through [InvitePeopleState.eventSink].
|
||||||
|
*/
|
||||||
interface InvitePeopleEvents {
|
interface InvitePeopleEvents {
|
||||||
data object SendInvites : InvitePeopleEvents
|
data object SendInvites : InvitePeopleEvents
|
||||||
data object CloseSearch : InvitePeopleEvents
|
data object CloseSearch : InvitePeopleEvents
|
||||||
|
|||||||
+7
@@ -13,7 +13,14 @@ import io.element.android.libraries.matrix.api.core.RoomId
|
|||||||
import io.element.android.libraries.matrix.api.room.JoinedRoom
|
import io.element.android.libraries.matrix.api.room.JoinedRoom
|
||||||
|
|
||||||
interface InvitePeoplePresenter : Presenter<InvitePeopleState> {
|
interface InvitePeoplePresenter : Presenter<InvitePeopleState> {
|
||||||
|
/**
|
||||||
|
* Creates a presenter for one invite flow.
|
||||||
|
*/
|
||||||
interface Factory {
|
interface Factory {
|
||||||
|
/**
|
||||||
|
* @param joinedRoom the room to invite into, or `null` when the room does not exist yet, as when inviting from a direct message.
|
||||||
|
* @param roomId the id of the room to invite into.
|
||||||
|
*/
|
||||||
fun create(
|
fun create(
|
||||||
joinedRoom: JoinedRoom?,
|
joinedRoom: JoinedRoom?,
|
||||||
roomId: RoomId,
|
roomId: RoomId,
|
||||||
|
|||||||
+9
@@ -11,7 +11,16 @@ package io.element.android.features.invitepeople.api
|
|||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Renders the invite people UI, so that other screens can embed it without depending on its implementation.
|
||||||
|
*/
|
||||||
interface InvitePeopleRenderer {
|
interface InvitePeopleRenderer {
|
||||||
|
/**
|
||||||
|
* Draws the invite list and its search field.
|
||||||
|
*
|
||||||
|
* @param state the state produced by [InvitePeoplePresenter].
|
||||||
|
* @param modifier layout modifier for the container.
|
||||||
|
*/
|
||||||
@Composable
|
@Composable
|
||||||
fun Render(
|
fun Render(
|
||||||
state: InvitePeopleState,
|
state: InvitePeopleState,
|
||||||
|
|||||||
+12
@@ -11,10 +11,22 @@ package io.element.android.features.invitepeople.api
|
|||||||
import io.element.android.libraries.architecture.AsyncAction
|
import io.element.android.libraries.architecture.AsyncAction
|
||||||
import io.element.android.libraries.matrix.api.core.RoomId
|
import io.element.android.libraries.matrix.api.core.RoomId
|
||||||
|
|
||||||
|
/**
|
||||||
|
* State of the invite people UI, produced by an [InvitePeoplePresenter] and consumed by an [InvitePeopleRenderer].
|
||||||
|
*/
|
||||||
interface InvitePeopleState {
|
interface InvitePeopleState {
|
||||||
|
/** Whether the send button should be enabled, i.e. at least one user is selected and the user has the permission. */
|
||||||
val canInvite: Boolean
|
val canInvite: Boolean
|
||||||
|
|
||||||
|
/** Whether the search field currently has focus, which the host screen uses to adapt its own layout. */
|
||||||
val isSearchActive: Boolean
|
val isSearchActive: Boolean
|
||||||
|
|
||||||
|
/** Progress of the invite request, so the UI can show a loader and surface failures. */
|
||||||
val sendInvitesAction: AsyncAction<Unit>
|
val sendInvitesAction: AsyncAction<Unit>
|
||||||
|
|
||||||
|
/** Progress of turning a direct message into a room, which happens when inviting a third person into a DM. */
|
||||||
val createRoomFromDmAction: AsyncAction<RoomId>
|
val createRoomFromDmAction: AsyncAction<RoomId>
|
||||||
|
|
||||||
|
/** Where the UI sends its events. */
|
||||||
val eventSink: (InvitePeopleEvents) -> Unit
|
val eventSink: (InvitePeopleEvents) -> Unit
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user