[Chat][UI] Participants count shows actual count (#498)
* Call requestParticipants when chat is initialized, unit tests included * Removed the unnecessary remoteParticipants variable in preview Co-authored-by: ShaunaSong <93549644+ShaunaSong@users.noreply.github.com>
This commit is contained in:
Родитель
5f1f91ae02
Коммит
f7a4614cd9
|
@ -24,7 +24,7 @@ import com.azure.android.communication.ui.chat.models.RemoteParticipantInfoModel
|
||||||
import com.azure.android.communication.ui.chat.service.sdk.wrapper.CommunicationIdentifier
|
import com.azure.android.communication.ui.chat.service.sdk.wrapper.CommunicationIdentifier
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
internal fun TypingIndicatorView(participants: List<RemoteParticipantInfoModel>) {
|
internal fun TypingIndicatorView(participants: Collection<RemoteParticipantInfoModel>) {
|
||||||
val typers = participants.filter { it.isTyping }
|
val typers = participants.filter { it.isTyping }
|
||||||
|
|
||||||
AnimatedVisibility(
|
AnimatedVisibility(
|
||||||
|
|
|
@ -35,7 +35,7 @@ internal fun ChatScreen(viewModel: ChatScreenViewModel) {
|
||||||
topBar = {
|
topBar = {
|
||||||
val dispatcher = LocalOnBackPressedDispatcherOwner.current?.onBackPressedDispatcher
|
val dispatcher = LocalOnBackPressedDispatcherOwner.current?.onBackPressedDispatcher
|
||||||
ActionBarView(
|
ActionBarView(
|
||||||
participantCount = 4,
|
participantCount = viewModel.participants.count(),
|
||||||
topic = stringResource(R.string.azure_communication_ui_chat_chat_action_bar_title)
|
topic = stringResource(R.string.azure_communication_ui_chat_chat_action_bar_title)
|
||||||
) {
|
) {
|
||||||
dispatcher?.onBackPressed()
|
dispatcher?.onBackPressed()
|
||||||
|
@ -57,8 +57,8 @@ internal fun ChatScreen(viewModel: ChatScreenViewModel) {
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
viewModel.remoteParticipants?.also { remoteParticipants ->
|
viewModel.participants.also { remoteParticipants ->
|
||||||
TypingIndicatorView(participants = remoteParticipants)
|
TypingIndicatorView(participants = remoteParticipants.values)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
bottomBar = { BottomBarView(viewModel.postMessage) }
|
bottomBar = { BottomBarView(viewModel.postMessage) }
|
||||||
|
@ -100,16 +100,17 @@ internal fun ChatScreenPreview() {
|
||||||
state = ChatStatus.INITIALIZED.name,
|
state = ChatStatus.INITIALIZED.name,
|
||||||
buildCount = 2,
|
buildCount = 2,
|
||||||
postMessage = {},
|
postMessage = {},
|
||||||
|
participants = listOf(
|
||||||
|
RemoteParticipantInfoModel(CommunicationIdentifier.UnknownIdentifier("7A13DD2C-B49F-4521-9364-975F12F6E333"), "John Smith"),
|
||||||
|
RemoteParticipantInfoModel(CommunicationIdentifier.UnknownIdentifier("931804B1-D72E-4E70-BFEA-7813C7761BD2"), "William Brown"),
|
||||||
|
RemoteParticipantInfoModel(CommunicationIdentifier.UnknownIdentifier("152D5D76-3DDC-44BE-873F-A4575F8C91DF"), "James Miller"),
|
||||||
|
RemoteParticipantInfoModel(CommunicationIdentifier.UnknownIdentifier("85FF2697-2ABB-480E-ACCA-09EBE3D6F5EC"), "George Johnson"),
|
||||||
|
RemoteParticipantInfoModel(CommunicationIdentifier.UnknownIdentifier("DB75F1F0-65E4-46B0-A213-DA4F574659A5"), "Henry Jones"),
|
||||||
|
).associateBy({ it.userIdentifier.id })
|
||||||
|
|
||||||
// error = ChatStateError(
|
// error = ChatStateError(
|
||||||
// errorCode = ErrorCode.CHAT_JOIN_FAILED
|
// errorCode = ErrorCode.CHAT_JOIN_FAILED
|
||||||
// )
|
// )
|
||||||
remoteParticipants = listOf(
|
|
||||||
RemoteParticipantInfoModel(
|
|
||||||
CommunicationIdentifier.CommunicationUserIdentifier(""),
|
|
||||||
displayName = "John Doe", isTyping = true
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,7 +21,7 @@ internal data class ChatScreenViewModel(
|
||||||
var buildCount: Int,
|
var buildCount: Int,
|
||||||
val postMessage: (String) -> Unit,
|
val postMessage: (String) -> Unit,
|
||||||
private val error: ChatStateError? = null,
|
private val error: ChatStateError? = null,
|
||||||
val remoteParticipants: List<RemoteParticipantInfoModel>? = null
|
val participants: Map<String, RemoteParticipantInfoModel>
|
||||||
) {
|
) {
|
||||||
val showError get() = error != null
|
val showError get() = error != null
|
||||||
val errorMessage get() = error?.errorCode?.toString() ?: ""
|
val errorMessage get() = error?.errorCode?.toString() ?: ""
|
||||||
|
@ -52,5 +52,6 @@ internal fun buildChatScreenViewModel(
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
}
|
},
|
||||||
|
participants = store.getCurrentState().participantState.participants
|
||||||
)
|
)
|
||||||
|
|
Загрузка…
Ссылка в новой задаче