Skip to content

Commit b5e1bd4

Browse files
committed
Refactor GroupChannelEditScreen to handle GroupChannelEditViewModel initialization internally.
- Update `GroupChannelEditScreen` to accept `GroupChannelEditViewModelFactory` instead of a pre-initialized `GroupChannelEditViewModel`. - Move `GroupChannelEditViewModel` creation logic from `GroupChannelInfoScreen` into `GroupChannelEditScreen` using `viewModel()`. - Wrap `GroupChannelEditPlaceholder` in a `ViewModelStore` and update it to use the new factory-based signature to improve preview reliability. - Remove unnecessary `GroupChannelEditViewModel` import in `GroupChannelInfoScreen`.
1 parent 30fec46 commit b5e1bd4

3 files changed

Lines changed: 21 additions & 11 deletions

File tree

stream-chat-android-compose/api/stream-chat-android-compose.api

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -924,6 +924,7 @@ public final class io/getstream/chat/android/compose/ui/channel/info/ComposableS
924924
public static field lambda-6 Lkotlin/jvm/functions/Function2;
925925
public static field lambda-7 Lkotlin/jvm/functions/Function2;
926926
public static field lambda-8 Lkotlin/jvm/functions/Function2;
927+
public static field lambda-9 Lkotlin/jvm/functions/Function2;
927928
public fun <init> ()V
928929
public final fun getLambda-1$stream_chat_android_compose_release ()Lkotlin/jvm/functions/Function2;
929930
public final fun getLambda-2$stream_chat_android_compose_release ()Lkotlin/jvm/functions/Function2;
@@ -933,6 +934,7 @@ public final class io/getstream/chat/android/compose/ui/channel/info/ComposableS
933934
public final fun getLambda-6$stream_chat_android_compose_release ()Lkotlin/jvm/functions/Function2;
934935
public final fun getLambda-7$stream_chat_android_compose_release ()Lkotlin/jvm/functions/Function2;
935936
public final fun getLambda-8$stream_chat_android_compose_release ()Lkotlin/jvm/functions/Function2;
937+
public final fun getLambda-9$stream_chat_android_compose_release ()Lkotlin/jvm/functions/Function2;
936938
}
937939

938940
public final class io/getstream/chat/android/compose/ui/channel/info/ComposableSingletons$GroupChannelInfoScreenKt {

stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/channel/info/GroupChannelEditScreen.kt

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ import androidx.compose.ui.text.style.TextOverflow
6060
import androidx.compose.ui.tooling.preview.Preview
6161
import androidx.compose.ui.unit.dp
6262
import androidx.lifecycle.compose.collectAsStateWithLifecycle
63+
import androidx.lifecycle.viewmodel.compose.viewModel
6364
import io.getstream.chat.android.compose.R
6465
import io.getstream.chat.android.compose.ui.components.LoadingIndicator
6566
import io.getstream.chat.android.compose.ui.components.avatar.AvatarSize
@@ -70,9 +71,11 @@ import io.getstream.chat.android.compose.ui.messages.attachments.media.rememberC
7071
import io.getstream.chat.android.compose.ui.theme.ChannelAvatarParams
7172
import io.getstream.chat.android.compose.ui.theme.ChatTheme
7273
import io.getstream.chat.android.compose.ui.theme.StreamTokens
74+
import io.getstream.chat.android.compose.ui.util.ViewModelStore
7375
import io.getstream.chat.android.compose.ui.util.bottomBorder
7476
import io.getstream.chat.android.compose.viewmodel.channel.GroupChannelEditViewEvent
7577
import io.getstream.chat.android.compose.viewmodel.channel.GroupChannelEditViewModel
78+
import io.getstream.chat.android.compose.viewmodel.channel.GroupChannelEditViewModelFactory
7679
import io.getstream.chat.android.models.Channel
7780
import io.getstream.chat.android.previewdata.PreviewChannelData
7881
import io.getstream.chat.android.ui.common.contract.internal.CaptureMediaContract
@@ -81,11 +84,12 @@ import java.io.File
8184
@OptIn(ExperimentalMaterial3Api::class)
8285
@Composable
8386
internal fun GroupChannelEditScreen(
84-
viewModel: GroupChannelEditViewModel,
87+
viewModelFactory: GroupChannelEditViewModelFactory,
8588
channel: Channel,
8689
onDismiss: () -> Unit,
8790
) {
8891
val context = LocalContext.current
92+
val viewModel = viewModel<GroupChannelEditViewModel>(factory = viewModelFactory)
8993
val state by viewModel.state.collectAsStateWithLifecycle()
9094

9195
var channelName by rememberSaveable(stateSaver = TextFieldValue.Saver) {
@@ -400,15 +404,23 @@ private fun ChannelNameField(
400404
@Composable
401405
private fun GroupChannelEditPlaceholderPreview() {
402406
ChatTheme {
403-
GroupChannelEditPlaceholder()
407+
ViewModelStore {
408+
GroupChannelEditPlaceholder()
409+
}
404410
}
405411
}
406412

407413
@Composable
408414
internal fun GroupChannelEditPlaceholder() {
409-
GroupChannelEditContent(
410-
channel = PreviewChannelData.channelWithImage,
411-
channelName = TextFieldValue(text = ""),
415+
val context = LocalContext.current
416+
val channel = PreviewChannelData.channelWithImage
417+
GroupChannelEditScreen(
418+
viewModelFactory = GroupChannelEditViewModelFactory(
419+
context = context,
420+
cid = channel.cid,
421+
),
422+
channel = channel,
423+
onDismiss = {},
412424
)
413425
}
414426

stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/channel/info/GroupChannelInfoScreen.kt

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,6 @@ import io.getstream.chat.android.compose.viewmodel.channel.AddMembersViewModel
8282
import io.getstream.chat.android.compose.viewmodel.channel.ChannelHeaderViewModel
8383
import io.getstream.chat.android.compose.viewmodel.channel.ChannelInfoViewModel
8484
import io.getstream.chat.android.compose.viewmodel.channel.ChannelInfoViewModelFactory
85-
import io.getstream.chat.android.compose.viewmodel.channel.GroupChannelEditViewModel
8685
import io.getstream.chat.android.compose.viewmodel.channel.GroupChannelEditViewModelFactory
8786
import io.getstream.chat.android.models.Channel
8887
import io.getstream.chat.android.models.ConnectionState
@@ -137,14 +136,11 @@ public fun GroupChannelInfoScreen(
137136
if (showEditChannel && channel != null) {
138137
FullscreenDialog(onDismissRequest = { showEditChannel = false }) {
139138
ViewModelStore {
140-
val editViewModel = viewModel<GroupChannelEditViewModel>(
141-
factory = GroupChannelEditViewModelFactory(
139+
GroupChannelEditScreen(
140+
viewModelFactory = GroupChannelEditViewModelFactory(
142141
context = context,
143142
cid = channel.cid,
144143
),
145-
)
146-
GroupChannelEditScreen(
147-
viewModel = editViewModel,
148144
channel = channel,
149145
onDismiss = { showEditChannel = false },
150146
)

0 commit comments

Comments
 (0)