|
|
|
@ -26,22 +26,33 @@ import androidx.compose.foundation.verticalScroll
@@ -26,22 +26,33 @@ import androidx.compose.foundation.verticalScroll
|
|
|
|
|
import androidx.compose.material3.ExperimentalMaterial3Api |
|
|
|
|
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.tokens.generated.CompoundIcons |
|
|
|
|
import io.element.android.features.roomdetails.impl.blockuser.BlockUserDialogs |
|
|
|
|
import io.element.android.features.roomdetails.impl.blockuser.BlockUserSection |
|
|
|
|
import io.element.android.libraries.designsystem.components.async.AsyncView |
|
|
|
|
import io.element.android.libraries.designsystem.components.button.BackButton |
|
|
|
|
import io.element.android.libraries.designsystem.components.list.ListItemContent |
|
|
|
|
import io.element.android.libraries.designsystem.preview.ElementPreviewDark |
|
|
|
|
import io.element.android.libraries.designsystem.preview.ElementPreviewLight |
|
|
|
|
import io.element.android.libraries.designsystem.preview.PreviewWithLargeHeight |
|
|
|
|
import io.element.android.libraries.designsystem.theme.components.IconSource |
|
|
|
|
import io.element.android.libraries.designsystem.theme.components.ListItem |
|
|
|
|
import io.element.android.libraries.designsystem.theme.components.ListItemStyle |
|
|
|
|
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.TopAppBar |
|
|
|
|
import io.element.android.libraries.matrix.api.core.RoomId |
|
|
|
|
import io.element.android.libraries.ui.strings.CommonStrings |
|
|
|
|
|
|
|
|
|
@OptIn(ExperimentalMaterial3Api::class) |
|
|
|
|
@Composable |
|
|
|
|
fun RoomMemberDetailsView( |
|
|
|
|
state: RoomMemberDetailsState, |
|
|
|
|
onShareUser: () -> Unit, |
|
|
|
|
onDMStarted: (RoomId) -> Unit, |
|
|
|
|
goBack: () -> Unit, |
|
|
|
|
openAvatarPreview: (username: String, url: String) -> Unit, |
|
|
|
|
modifier: Modifier = Modifier, |
|
|
|
@ -71,31 +82,36 @@ fun RoomMemberDetailsView(
@@ -71,31 +82,36 @@ fun RoomMemberDetailsView(
|
|
|
|
|
|
|
|
|
|
Spacer(modifier = Modifier.height(26.dp)) |
|
|
|
|
|
|
|
|
|
// TODO implement send DM |
|
|
|
|
// SendMessageSection(onSendMessage = { |
|
|
|
|
// ... |
|
|
|
|
// }) |
|
|
|
|
|
|
|
|
|
if (!state.isCurrentUser) { |
|
|
|
|
StartDMSection(onStartDMClicked = { state.eventSink(RoomMemberDetailsEvents.StartDM) }) |
|
|
|
|
BlockUserSection(state) |
|
|
|
|
BlockUserDialogs(state) |
|
|
|
|
} |
|
|
|
|
AsyncView( |
|
|
|
|
async = state.startDmActionState, |
|
|
|
|
progressText = stringResource(CommonStrings.common_starting_chat), |
|
|
|
|
onSuccess = onDMStarted, |
|
|
|
|
errorMessage = { stringResource(CommonStrings.common_error) }, |
|
|
|
|
onRetry = { state.eventSink(RoomMemberDetailsEvents.StartDM) }, |
|
|
|
|
onErrorDismiss = { state.eventSink(RoomMemberDetailsEvents.ClearStartDMState) }, |
|
|
|
|
) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/* |
|
|
|
|
@Composable |
|
|
|
|
private fun SendMessageSection(onSendMessage: () -> Unit, modifier: Modifier = Modifier) { |
|
|
|
|
PreferenceCategory(modifier = modifier) { |
|
|
|
|
PreferenceText( |
|
|
|
|
title = stringResource(CommonStrings.action_send_message), |
|
|
|
|
icon = Icons.Outlined.ChatBubbleOutline, |
|
|
|
|
onClick = onSendMessage, |
|
|
|
|
) |
|
|
|
|
} |
|
|
|
|
private fun StartDMSection( |
|
|
|
|
onStartDMClicked: () -> Unit, |
|
|
|
|
modifier: Modifier = Modifier |
|
|
|
|
) { |
|
|
|
|
ListItem( |
|
|
|
|
headlineContent = { Text(stringResource(CommonStrings.common_direct_chat)) }, |
|
|
|
|
leadingContent = ListItemContent.Icon(IconSource.Vector(CompoundIcons.Chat)), |
|
|
|
|
style = ListItemStyle.Primary, |
|
|
|
|
onClick = onStartDMClicked, |
|
|
|
|
modifier = modifier, |
|
|
|
|
) |
|
|
|
|
} |
|
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
@PreviewWithLargeHeight |
|
|
|
|
@Composable |
|
|
|
@ -113,6 +129,7 @@ private fun ContentToPreview(state: RoomMemberDetailsState) {
@@ -113,6 +129,7 @@ private fun ContentToPreview(state: RoomMemberDetailsState) {
|
|
|
|
|
state = state, |
|
|
|
|
onShareUser = {}, |
|
|
|
|
goBack = {}, |
|
|
|
|
onDMStarted = {}, |
|
|
|
|
openAvatarPreview = { _, _ -> } |
|
|
|
|
) |
|
|
|
|
} |
|
|
|
|