Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
16 commits
Select commit Hold shift + click to select a range
fc2e90c
Replace the "Add Members" button with a "Edit" action button in the t…
andremion Mar 26, 2026
78aaedc
Replace `RenameChannel` (with `isReadOnly` flag) and `UserInfo` optio…
andremion Mar 26, 2026
ead4937
Introduce `GroupChannelEditScreen`
andremion Mar 27, 2026
7a97b40
Mark `AddMembersViewAction` and `AddMembersViewState` as internal APIs
andremion Mar 27, 2026
5ee621c
Fix stale loadMore results contaminating search in AddMembersViewCont…
andremion Mar 27, 2026
d1fcbeb
strings still used by XML SDK (old design)
andremion Mar 27, 2026
3928ff6
Remove unused `UserInfoClick` action and `CopyToClipboardHandler` dep…
andremion Mar 27, 2026
743f791
Implement group channel image editing in `GroupChannelEditScreen`
andremion Mar 27, 2026
ae3eae4
Increase coverage of GroupChannelEditScreen and update snapshot files
andremion Mar 27, 2026
1be76fe
Refactor group channel editing logic to move image selection and cach…
andremion Mar 30, 2026
259c195
Update `Edit` option documentation in `ChannelInfoViewState`.
andremion Mar 30, 2026
189f535
Update `GroupChannelInfoLoading` preview and implementation
andremion Mar 30, 2026
30fec46
Update unit tests for `GroupChannelEditViewModel` and `AddMembersView…
andremion Mar 30, 2026
b5e1bd4
Refactor `GroupChannelEditScreen` to handle `GroupChannelEditViewMode…
andremion Mar 30, 2026
747b1e0
Refactor `GroupChannelEditScreen` to handle its own `GroupChannelEdit…
andremion Mar 30, 2026
ffc2720
Merge branch 'v7' into redesign/AND-1135-redesign-channel-info-edit-s…
andremion Mar 30, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,6 @@ class DirectChannelInfoActivity : ComponentActivity() {

private val viewModelFactory by lazy {
ChannelInfoViewModelFactory(
context = applicationContext,
cid = channelId,
)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,6 @@ class GroupChannelInfoActivity : ComponentActivity() {

private val viewModelFactory by lazy {
ChannelInfoViewModelFactory(
context = applicationContext,
cid = channelId,
)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ import androidx.compose.foundation.lazy.LazyListState
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton
import androidx.compose.material3.OutlinedButton
import androidx.compose.material3.Surface
import androidx.compose.material3.Text
import androidx.compose.material3.TopAppBar
Expand Down Expand Up @@ -75,7 +76,6 @@ import io.getstream.chat.android.compose.ui.theme.ChatTheme
import io.getstream.chat.android.compose.ui.theme.ChatUiConfig
import io.getstream.chat.android.compose.ui.theme.CompoundComponentFactory
import io.getstream.chat.android.compose.ui.theme.DirectChannelInfoTopBarParams
import io.getstream.chat.android.compose.ui.theme.GroupChannelInfoAddMembersButtonParams
import io.getstream.chat.android.compose.ui.theme.GroupChannelInfoTopBarParams
import io.getstream.chat.android.compose.ui.theme.TranslationConfig
import io.getstream.chat.android.compose.ui.util.adaptivelayout.AdaptiveLayoutInfo
Expand Down Expand Up @@ -107,6 +107,7 @@ import kotlinx.coroutines.delay
import kotlinx.coroutines.flow.collectLatest
import kotlinx.coroutines.flow.flatMapLatest
import kotlinx.coroutines.launch
import io.getstream.chat.android.compose.R as ComposeR

class ChatsActivity : ComponentActivity() {

Expand Down Expand Up @@ -330,7 +331,7 @@ class ChatsActivity : ComponentActivity() {
onNavigateToFilesAttachments: () -> Unit,
) {
val viewModelFactory = remember(channelId) {
ChannelInfoViewModelFactory(context = applicationContext, cid = channelId)
ChannelInfoViewModelFactory(cid = channelId)
}
val viewModel = viewModel<ChannelInfoViewModel>(factory = viewModelFactory)

Expand Down Expand Up @@ -384,7 +385,7 @@ class ChatsActivity : ComponentActivity() {
onNavigateToChannel: (cid: String) -> Unit,
) {
val viewModelFactory = remember(channelId) {
ChannelInfoViewModelFactory(context = applicationContext, cid = channelId)
ChannelInfoViewModelFactory(cid = channelId)
}
val viewModel = viewModel<ChannelInfoViewModel>(factory = viewModelFactory)

Expand Down Expand Up @@ -412,7 +413,7 @@ class ChatsActivity : ComponentActivity() {
infoState = params.infoState,
listState = params.listState,
navigationIcon = { CloseButton(onClick = params.onNavigationIconClick) },
onAddMembersClick = params.onAddMembersClick,
onActionClick = params.onActionClick,
)
}
}
Expand Down Expand Up @@ -466,7 +467,7 @@ class ChatsActivity : ComponentActivity() {
infoState: ChannelInfoViewState,
listState: LazyListState,
navigationIcon: @Composable () -> Unit,
onAddMembersClick: () -> Unit,
onActionClick: () -> Unit,
) {
val elevation by animateDpAsState(
targetValue = if (listState.canScrollBackward) {
Expand Down Expand Up @@ -503,11 +504,13 @@ class ChatsActivity : ComponentActivity() {
),
actions = {
if (infoState is ChannelInfoViewState.Content &&
infoState.options.contains(ChannelInfoViewState.Content.Option.AddMember)
infoState.options.any { option -> option is ChannelInfoViewState.Content.Option.EditChannel }
) {
ChatTheme.componentFactory.GroupChannelInfoAddMembersButton(
params = GroupChannelInfoAddMembersButtonParams(onClick = onAddMembersClick),
)
OutlinedButton(
onClick = onActionClick,
) {
Text(text = stringResource(id = ComposeR.string.stream_ui_channel_info_edit_action))
}
}
},
)
Expand Down
57 changes: 36 additions & 21 deletions stream-chat-android-compose/api/stream-chat-android-compose.api
Original file line number Diff line number Diff line change
Expand Up @@ -871,15 +871,6 @@ public final class io/getstream/chat/android/compose/ui/channel/info/ComposableS
public final fun getLambda-4$stream_chat_android_compose_release ()Lkotlin/jvm/functions/Function2;
}

public final class io/getstream/chat/android/compose/ui/channel/info/ComposableSingletons$ChannelInfoNameFieldKt {
public static final field INSTANCE Lio/getstream/chat/android/compose/ui/channel/info/ComposableSingletons$ChannelInfoNameFieldKt;
public static field lambda-1 Lkotlin/jvm/functions/Function2;
public static field lambda-2 Lkotlin/jvm/functions/Function2;
public fun <init> ()V
public final fun getLambda-1$stream_chat_android_compose_release ()Lkotlin/jvm/functions/Function2;
public final fun getLambda-2$stream_chat_android_compose_release ()Lkotlin/jvm/functions/Function2;
}

public final class io/getstream/chat/android/compose/ui/channel/info/ComposableSingletons$ChannelInfoOptionKt {
public static final field INSTANCE Lio/getstream/chat/android/compose/ui/channel/info/ComposableSingletons$ChannelInfoOptionKt;
public static field lambda-1 Lkotlin/jvm/functions/Function2;
Expand Down Expand Up @@ -923,19 +914,40 @@ public final class io/getstream/chat/android/compose/ui/channel/info/ComposableS
public final fun getLambda-3$stream_chat_android_compose_release ()Lkotlin/jvm/functions/Function2;
}

public final class io/getstream/chat/android/compose/ui/channel/info/ComposableSingletons$GroupChannelInfoScreenKt {
public static final field INSTANCE Lio/getstream/chat/android/compose/ui/channel/info/ComposableSingletons$GroupChannelInfoScreenKt;
public final class io/getstream/chat/android/compose/ui/channel/info/ComposableSingletons$GroupChannelEditScreenKt {
public static final field INSTANCE Lio/getstream/chat/android/compose/ui/channel/info/ComposableSingletons$GroupChannelEditScreenKt;
public static field lambda-1 Lkotlin/jvm/functions/Function2;
public static field lambda-2 Lkotlin/jvm/functions/Function3;
public static field lambda-2 Lkotlin/jvm/functions/Function2;
public static field lambda-3 Lkotlin/jvm/functions/Function2;
public static field lambda-4 Lkotlin/jvm/functions/Function2;
public static field lambda-5 Lkotlin/jvm/functions/Function2;
public static field lambda-6 Lkotlin/jvm/functions/Function2;
public static field lambda-7 Lkotlin/jvm/functions/Function2;
public static field lambda-8 Lkotlin/jvm/functions/Function2;
public static field lambda-9 Lkotlin/jvm/functions/Function2;
public fun <init> ()V
public final fun getLambda-1$stream_chat_android_compose_release ()Lkotlin/jvm/functions/Function2;
public final fun getLambda-2$stream_chat_android_compose_release ()Lkotlin/jvm/functions/Function3;
public final fun getLambda-2$stream_chat_android_compose_release ()Lkotlin/jvm/functions/Function2;
public final fun getLambda-3$stream_chat_android_compose_release ()Lkotlin/jvm/functions/Function2;
public final fun getLambda-4$stream_chat_android_compose_release ()Lkotlin/jvm/functions/Function2;
public final fun getLambda-5$stream_chat_android_compose_release ()Lkotlin/jvm/functions/Function2;
public final fun getLambda-6$stream_chat_android_compose_release ()Lkotlin/jvm/functions/Function2;
public final fun getLambda-7$stream_chat_android_compose_release ()Lkotlin/jvm/functions/Function2;
public final fun getLambda-8$stream_chat_android_compose_release ()Lkotlin/jvm/functions/Function2;
public final fun getLambda-9$stream_chat_android_compose_release ()Lkotlin/jvm/functions/Function2;
}

public final class io/getstream/chat/android/compose/ui/channel/info/ComposableSingletons$GroupChannelInfoScreenKt {
public static final field INSTANCE Lio/getstream/chat/android/compose/ui/channel/info/ComposableSingletons$GroupChannelInfoScreenKt;
public static field lambda-1 Lkotlin/jvm/functions/Function2;
public static field lambda-2 Lkotlin/jvm/functions/Function2;
public static field lambda-3 Lkotlin/jvm/functions/Function2;
public static field lambda-4 Lkotlin/jvm/functions/Function2;
public fun <init> ()V
public final fun getLambda-1$stream_chat_android_compose_release ()Lkotlin/jvm/functions/Function2;
public final fun getLambda-2$stream_chat_android_compose_release ()Lkotlin/jvm/functions/Function2;
public final fun getLambda-3$stream_chat_android_compose_release ()Lkotlin/jvm/functions/Function2;
public final fun getLambda-4$stream_chat_android_compose_release ()Lkotlin/jvm/functions/Function2;
}

public final class io/getstream/chat/android/compose/ui/channel/info/DirectChannelInfoScreenKt {
Expand Down Expand Up @@ -4203,6 +4215,7 @@ public final class io/getstream/chat/android/compose/ui/theme/GroupChannelInfoMe
public final class io/getstream/chat/android/compose/ui/theme/GroupChannelInfoTopBarParams {
public static final field $stable I
public fun <init> (Lio/getstream/chat/android/ui/common/state/messages/list/ChannelHeaderViewState;Lio/getstream/chat/android/ui/common/state/channel/info/ChannelInfoViewState;Landroidx/compose/foundation/lazy/LazyListState;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;)V
public synthetic fun <init> (Lio/getstream/chat/android/ui/common/state/messages/list/ChannelHeaderViewState;Lio/getstream/chat/android/ui/common/state/channel/info/ChannelInfoViewState;Landroidx/compose/foundation/lazy/LazyListState;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
public final fun component1 ()Lio/getstream/chat/android/ui/common/state/messages/list/ChannelHeaderViewState;
public final fun component2 ()Lio/getstream/chat/android/ui/common/state/channel/info/ChannelInfoViewState;
public final fun component3 ()Landroidx/compose/foundation/lazy/LazyListState;
Expand All @@ -4214,7 +4227,7 @@ public final class io/getstream/chat/android/compose/ui/theme/GroupChannelInfoTo
public final fun getHeaderState ()Lio/getstream/chat/android/ui/common/state/messages/list/ChannelHeaderViewState;
public final fun getInfoState ()Lio/getstream/chat/android/ui/common/state/channel/info/ChannelInfoViewState;
public final fun getListState ()Landroidx/compose/foundation/lazy/LazyListState;
public final fun getOnAddMembersClick ()Lkotlin/jvm/functions/Function0;
public final fun getOnActionClick ()Lkotlin/jvm/functions/Function0;
public final fun getOnNavigationIconClick ()Lkotlin/jvm/functions/Function0;
public fun hashCode ()I
public fun toString ()Ljava/lang/String;
Expand Down Expand Up @@ -6253,7 +6266,7 @@ public final class io/getstream/chat/android/compose/ui/theme/StreamDesign$Color
public final class io/getstream/chat/android/compose/ui/theme/StreamDesign$Colors {
public static final field $stable I
public static final field Companion Lio/getstream/chat/android/compose/ui/theme/StreamDesign$Colors$Companion;
public synthetic fun <init> (Lio/getstream/chat/android/compose/ui/theme/StreamDesign$ColorScale;Lio/getstream/chat/android/compose/ui/theme/StreamDesign$ChromeScale;JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJLkotlin/jvm/internal/DefaultConstructorMarker;)V
public synthetic fun <init> (Lio/getstream/chat/android/compose/ui/theme/StreamDesign$ColorScale;Lio/getstream/chat/android/compose/ui/theme/StreamDesign$ChromeScale;JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJLkotlin/jvm/internal/DefaultConstructorMarker;)V
public final fun component1 ()Lio/getstream/chat/android/compose/ui/theme/StreamDesign$ColorScale;
public final fun component10-0d7_KjU ()J
public final fun component11-0d7_KjU ()J
Expand Down Expand Up @@ -6311,11 +6324,12 @@ public final class io/getstream/chat/android/compose/ui/theme/StreamDesign$Color
public final fun component59-0d7_KjU ()J
public final fun component6-0d7_KjU ()J
public final fun component60-0d7_KjU ()J
public final fun component61-0d7_KjU ()J
public final fun component7-0d7_KjU ()J
public final fun component8-0d7_KjU ()J
public final fun component9-0d7_KjU ()J
public final fun copy-fYouhN8 (Lio/getstream/chat/android/compose/ui/theme/StreamDesign$ColorScale;Lio/getstream/chat/android/compose/ui/theme/StreamDesign$ChromeScale;JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ)Lio/getstream/chat/android/compose/ui/theme/StreamDesign$Colors;
public static synthetic fun copy-fYouhN8$default (Lio/getstream/chat/android/compose/ui/theme/StreamDesign$Colors;Lio/getstream/chat/android/compose/ui/theme/StreamDesign$ColorScale;Lio/getstream/chat/android/compose/ui/theme/StreamDesign$ChromeScale;JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJIILjava/lang/Object;)Lio/getstream/chat/android/compose/ui/theme/StreamDesign$Colors;
public final fun copy-7QP4Db0 (Lio/getstream/chat/android/compose/ui/theme/StreamDesign$ColorScale;Lio/getstream/chat/android/compose/ui/theme/StreamDesign$ChromeScale;JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ)Lio/getstream/chat/android/compose/ui/theme/StreamDesign$Colors;
public static synthetic fun copy-7QP4Db0$default (Lio/getstream/chat/android/compose/ui/theme/StreamDesign$Colors;Lio/getstream/chat/android/compose/ui/theme/StreamDesign$ColorScale;Lio/getstream/chat/android/compose/ui/theme/StreamDesign$ChromeScale;JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJIILjava/lang/Object;)Lio/getstream/chat/android/compose/ui/theme/StreamDesign$Colors;
public fun equals (Ljava/lang/Object;)Z
public final fun getAccentError-0d7_KjU ()J
public final fun getAccentNeutral-0d7_KjU ()J
Expand Down Expand Up @@ -6370,6 +6384,7 @@ public final class io/getstream/chat/android/compose/ui/theme/StreamDesign$Color
public final fun getChrome ()Lio/getstream/chat/android/compose/ui/theme/StreamDesign$ChromeScale;
public final fun getSkeletonLoadingBase-0d7_KjU ()J
public final fun getSkeletonLoadingHighlight-0d7_KjU ()J
public final fun getSystemCaret-0d7_KjU ()J
public final fun getTextDisabled-0d7_KjU ()J
public final fun getTextInverse-0d7_KjU ()J
public final fun getTextLink-0d7_KjU ()J
Expand Down Expand Up @@ -6900,8 +6915,8 @@ public final class io/getstream/chat/android/compose/viewmodel/channel/ChannelIn

public final class io/getstream/chat/android/compose/viewmodel/channel/ChannelInfoViewModel : androidx/lifecycle/ViewModel {
public static final field $stable I
public fun <init> (Ljava/lang/String;Lio/getstream/chat/android/ui/common/helper/CopyToClipboardHandler;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)V
public synthetic fun <init> (Ljava/lang/String;Lio/getstream/chat/android/ui/common/helper/CopyToClipboardHandler;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
public fun <init> (Ljava/lang/String;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)V
public synthetic fun <init> (Ljava/lang/String;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
public final fun addMembers (Ljava/util/Set;)V
public final fun getEvents ()Lkotlinx/coroutines/flow/SharedFlow;
public final fun getState ()Lkotlinx/coroutines/flow/StateFlow;
Expand All @@ -6911,8 +6926,8 @@ public final class io/getstream/chat/android/compose/viewmodel/channel/ChannelIn

public final class io/getstream/chat/android/compose/viewmodel/channel/ChannelInfoViewModelFactory : androidx/lifecycle/ViewModelProvider$Factory {
public static final field $stable I
public fun <init> (Landroid/content/Context;Ljava/lang/String;Lkotlin/jvm/functions/Function1;)V
public synthetic fun <init> (Landroid/content/Context;Ljava/lang/String;Lkotlin/jvm/functions/Function1;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
public fun <init> (Ljava/lang/String;Lkotlin/jvm/functions/Function1;)V
public synthetic fun <init> (Ljava/lang/String;Lkotlin/jvm/functions/Function1;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
public fun create (Ljava/lang/Class;)Landroidx/lifecycle/ViewModel;
}

Expand Down
Loading
Loading