Merge branch 'develop' into feature/fga/join_space

This commit is contained in:
ganfra 2025-09-19 16:35:55 +02:00
commit 5cda6730c4
446 changed files with 5669 additions and 2617 deletions

View file

@ -67,7 +67,6 @@ fun aDmRoomMember(
membership: RoomMembershipState = RoomMembershipState.JOIN,
isNameAmbiguous: Boolean = false,
powerLevel: Long = 0,
normalizedPowerLevel: Long = powerLevel,
isIgnored: Boolean = false,
role: RoomMember.Role = RoomMember.Role.User,
membershipChangeReason: String? = null,
@ -78,7 +77,6 @@ fun aDmRoomMember(
membership = membership,
isNameAmbiguous = isNameAmbiguous,
powerLevel = powerLevel,
normalizedPowerLevel = normalizedPowerLevel,
isIgnored = isIgnored,
role = role,
membershipChangeReason = membershipChangeReason

View file

@ -8,6 +8,7 @@
package io.element.android.features.roomdetails.impl.invite
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.ui.Modifier
import com.bumble.appyx.core.lifecycle.subscribe
import com.bumble.appyx.core.modality.BuildContext
@ -49,11 +50,18 @@ class RoomInviteMembersNode(
@Composable
override fun View(modifier: Modifier) {
val state = invitePeoplePresenter.present()
// Once invites have been sent successfully, close the Invite view.
LaunchedEffect(state.sendInvitesAction) {
if (state.sendInvitesAction.isReady()) {
navigateUp()
}
}
RoomInviteMembersView(
state = state,
modifier = modifier,
onBackClick = { navigateUp() },
onDone = { navigateUp() }
onBackClick = { navigateUp() }
) {
invitePeopleRenderer.Render(state, Modifier)
}

View file

@ -8,22 +8,29 @@
package io.element.android.features.roomdetails.impl.invite
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.consumeWindowInsets
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.PreviewParameter
import androidx.compose.ui.unit.dp
import io.element.android.compound.theme.ElementTheme
import io.element.android.features.invitepeople.api.InvitePeopleEvents
import io.element.android.features.invitepeople.api.InvitePeopleState
import io.element.android.features.invitepeople.api.InvitePeopleStateProvider
import io.element.android.features.roomdetails.impl.R
import io.element.android.libraries.designsystem.components.ProgressDialog
import io.element.android.libraries.designsystem.components.button.BackButton
import io.element.android.libraries.designsystem.preview.ElementPreview
import io.element.android.libraries.designsystem.preview.PreviewsDayNight
import io.element.android.libraries.designsystem.theme.components.Scaffold
import io.element.android.libraries.designsystem.theme.components.Text
import io.element.android.libraries.designsystem.theme.components.TextButton
import io.element.android.libraries.designsystem.theme.components.TopAppBar
import io.element.android.libraries.ui.strings.CommonStrings
@ -32,7 +39,6 @@ import io.element.android.libraries.ui.strings.CommonStrings
fun RoomInviteMembersView(
state: InvitePeopleState,
onBackClick: () -> Unit,
onDone: () -> Unit,
modifier: Modifier = Modifier,
invitePeopleView: @Composable () -> Unit,
) {
@ -49,7 +55,6 @@ fun RoomInviteMembersView(
},
onSubmitClick = {
state.eventSink(InvitePeopleEvents.SendInvites)
onDone()
},
canSend = state.canInvite,
)
@ -64,6 +69,10 @@ fun RoomInviteMembersView(
invitePeopleView()
}
}
if (state.sendInvitesAction.isLoading()) {
InviteProgressDialog()
}
}
@OptIn(ExperimentalMaterial3Api::class)
@ -86,6 +95,24 @@ private fun RoomInviteMembersTopBar(
)
}
@Composable
private fun InviteProgressDialog() {
ProgressDialog {
Spacer(modifier = Modifier.height(8.dp))
Text(
text = stringResource(R.string.screen_room_details_invite_people_preparing),
color = ElementTheme.colors.textPrimary,
style = ElementTheme.typography.fontHeadingSmMedium,
)
Spacer(modifier = Modifier.height(16.dp))
Text(
text = stringResource(R.string.screen_room_details_invite_people_dont_close),
color = ElementTheme.colors.textSecondary,
style = MaterialTheme.typography.bodyMedium,
)
}
}
@PreviewsDayNight
@Composable
internal fun RoomInviteMembersViewPreview(@PreviewParameter(InvitePeopleStateProvider::class) state: InvitePeopleState) = ElementPreview {
@ -93,6 +120,5 @@ internal fun RoomInviteMembersViewPreview(@PreviewParameter(InvitePeopleStatePro
state = state,
invitePeopleView = {},
onBackClick = {},
onDone = {},
)
}

View file

@ -148,7 +148,6 @@ fun aRoomMember(
membership: RoomMembershipState = RoomMembershipState.JOIN,
isNameAmbiguous: Boolean = false,
powerLevel: Long = 0L,
normalizedPowerLevel: Long = 0L,
isIgnored: Boolean = false,
role: RoomMember.Role = RoomMember.Role.User,
membershipChangeReason: String? = null,
@ -159,7 +158,6 @@ fun aRoomMember(
membership = membership,
isNameAmbiguous = isNameAmbiguous,
powerLevel = powerLevel,
normalizedPowerLevel = normalizedPowerLevel,
isIgnored = isIgnored,
role = role,
membershipChangeReason = membershipChangeReason,

View file

@ -34,10 +34,7 @@ class ChangeRoomPermissionsNode(
) : NodeInputs, Parcelable
private val inputs: Inputs = inputs()
private val presenter = presenterFactory.run {
create(inputs.section)
}
private val presenter = presenterFactory.create(inputs.section)
@Composable
override fun View(modifier: Modifier) {

View file

@ -50,6 +50,8 @@
<string name="screen_room_details_error_loading_notification_settings">"Beim Laden der Benachrichtigungseinstellungen ist ein Fehler aufgetreten."</string>
<string name="screen_room_details_error_muting">"Die Stummschaltung ist fehlgeschlagen, bitte versuche es erneut."</string>
<string name="screen_room_details_error_unmuting">"Die Deaktivierung der Stummschaltung ist fehlgeschlagen, bitte versuche es erneut."</string>
<string name="screen_room_details_invite_people_dont_close">"Schließ die App erst, wenn du fertig bist."</string>
<string name="screen_room_details_invite_people_preparing">"Einladungen werden vorbereitet…"</string>
<string name="screen_room_details_invite_people_title">"Nutzer einladen"</string>
<string name="screen_room_details_leave_conversation_title">"Unterhaltung verlassen"</string>
<string name="screen_room_details_leave_room_title">"Verlassen"</string>

View file

@ -50,6 +50,8 @@
<string name="screen_room_details_error_loading_notification_settings">"Teavituste seadistuste laadimisel tekkis viga."</string>
<string name="screen_room_details_error_muting">"Selle jututoa summutamine ei õnnestunud. Palun proovi uuesti."</string>
<string name="screen_room_details_error_unmuting">"Selle jututoa summutamise eemaldamine ei õnnestunud. Palun proovi uuesti."</string>
<string name="screen_room_details_invite_people_dont_close">"Ära sulge rakendust enne, kui tegevus on lõppenud."</string>
<string name="screen_room_details_invite_people_preparing">"Valmistan kutseid ette…"</string>
<string name="screen_room_details_invite_people_title">"Kutsu osalejaid"</string>
<string name="screen_room_details_leave_conversation_title">"Lahku vestlusest"</string>
<string name="screen_room_details_leave_room_title">"Lahku jututoast"</string>

View file

@ -50,6 +50,8 @@
<string name="screen_room_details_error_loading_notification_settings">"An error occurred when loading notification settings."</string>
<string name="screen_room_details_error_muting">"Failed muting this room, please try again."</string>
<string name="screen_room_details_error_unmuting">"Failed unmuting this room, please try again."</string>
<string name="screen_room_details_invite_people_dont_close">"Don\'t close the app until finished."</string>
<string name="screen_room_details_invite_people_preparing">"Preparing invitations…"</string>
<string name="screen_room_details_invite_people_title">"Invite people"</string>
<string name="screen_room_details_leave_conversation_title">"Leave conversation"</string>
<string name="screen_room_details_leave_room_title">"Leave room"</string>