|
@@ -52,9 +52,7 @@ import androidx.compose.runtime.Composable
|
|
import androidx.compose.runtime.DisposableEffect
|
|
import androidx.compose.runtime.DisposableEffect
|
|
import androidx.compose.runtime.collectAsState
|
|
import androidx.compose.runtime.collectAsState
|
|
import androidx.compose.runtime.getValue
|
|
import androidx.compose.runtime.getValue
|
|
-import androidx.compose.runtime.mutableStateOf
|
|
|
|
import androidx.compose.runtime.remember
|
|
import androidx.compose.runtime.remember
|
|
-import androidx.compose.runtime.setValue
|
|
|
|
import androidx.compose.ui.Alignment
|
|
import androidx.compose.ui.Alignment
|
|
import androidx.compose.ui.Modifier
|
|
import androidx.compose.ui.Modifier
|
|
import androidx.compose.ui.graphics.Color
|
|
import androidx.compose.ui.graphics.Color
|
|
@@ -116,9 +114,9 @@ class ContactsActivityCompose : BaseActivity() {
|
|
@Suppress("DEPRECATION")
|
|
@Suppress("DEPRECATION")
|
|
intent.getParcelableArrayListExtra("selectedParticipants") ?: emptyList()
|
|
intent.getParcelableArrayListExtra("selectedParticipants") ?: emptyList()
|
|
}
|
|
}
|
|
- }
|
|
|
|
- val participants = selectedParticipants.toSet().toMutableList()
|
|
|
|
- contactsViewModel.updateSelectedParticipants(participants)
|
|
|
|
|
|
+ }.toSet().toMutableList()
|
|
|
|
+ contactsViewModel.updateSelectedParticipants(selectedParticipants)
|
|
|
|
+
|
|
MaterialTheme(
|
|
MaterialTheme(
|
|
colorScheme = colorScheme
|
|
colorScheme = colorScheme
|
|
) {
|
|
) {
|
|
@@ -137,8 +135,7 @@ class ContactsActivityCompose : BaseActivity() {
|
|
ContactsList(
|
|
ContactsList(
|
|
contactsUiState = uiState.value,
|
|
contactsUiState = uiState.value,
|
|
contactsViewModel = contactsViewModel,
|
|
contactsViewModel = contactsViewModel,
|
|
- context = context,
|
|
|
|
- selectedParticipants = selectedParticipants.toMutableList()
|
|
|
|
|
|
+ context = context
|
|
)
|
|
)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -168,13 +165,8 @@ class ContactsActivityCompose : BaseActivity() {
|
|
}
|
|
}
|
|
|
|
|
|
@Composable
|
|
@Composable
|
|
-fun ContactItemRow(
|
|
|
|
- contact: AutocompleteUser,
|
|
|
|
- contactsViewModel: ContactsViewModel,
|
|
|
|
- context: Context,
|
|
|
|
- selectedContacts: MutableList<AutocompleteUser>
|
|
|
|
-) {
|
|
|
|
- var isSelected by remember { mutableStateOf(selectedContacts.contains(contact)) }
|
|
|
|
|
|
+fun ContactItemRow(contact: AutocompleteUser, contactsViewModel: ContactsViewModel, context: Context) {
|
|
|
|
+ var isSelected = remember(contact) { contactsViewModel.selectedParticipantsList.value.contains(contact) }
|
|
val roomUiState by contactsViewModel.roomViewState.collectAsState()
|
|
val roomUiState by contactsViewModel.roomViewState.collectAsState()
|
|
val isAddParticipants = contactsViewModel.isAddParticipantsView.collectAsState()
|
|
val isAddParticipants = contactsViewModel.isAddParticipantsView.collectAsState()
|
|
Row(
|
|
Row(
|
|
@@ -191,14 +183,11 @@ fun ContactItemRow(
|
|
)
|
|
)
|
|
} else {
|
|
} else {
|
|
isSelected = !isSelected
|
|
isSelected = !isSelected
|
|
- selectedContacts.apply {
|
|
|
|
- if (isSelected) {
|
|
|
|
- add(contact)
|
|
|
|
- } else {
|
|
|
|
- remove(contact)
|
|
|
|
- }
|
|
|
|
|
|
+ if (isSelected) {
|
|
|
|
+ contactsViewModel.selectContact(contact)
|
|
|
|
+ } else {
|
|
|
|
+ contactsViewModel.deselectContact(contact)
|
|
}
|
|
}
|
|
- contactsViewModel.updateSelectedParticipants(selectedContacts)
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
),
|
|
),
|
|
@@ -363,12 +352,7 @@ fun ConversationCreationOptions(context: Context, contactsViewModel: ContactsVie
|
|
}
|
|
}
|
|
|
|
|
|
@Composable
|
|
@Composable
|
|
-fun ContactsList(
|
|
|
|
- contactsUiState: ContactsUiState,
|
|
|
|
- contactsViewModel: ContactsViewModel,
|
|
|
|
- context: Context,
|
|
|
|
- selectedParticipants: MutableList<AutocompleteUser>
|
|
|
|
-) {
|
|
|
|
|
|
+fun ContactsList(contactsUiState: ContactsUiState, contactsViewModel: ContactsViewModel, context: Context) {
|
|
when (contactsUiState) {
|
|
when (contactsUiState) {
|
|
is ContactsUiState.None -> {
|
|
is ContactsUiState.None -> {
|
|
}
|
|
}
|
|
@@ -381,7 +365,7 @@ fun ContactsList(
|
|
val contacts = contactsUiState.contacts
|
|
val contacts = contactsUiState.contacts
|
|
Log.d(CompanionClass.TAG, "Contacts:$contacts")
|
|
Log.d(CompanionClass.TAG, "Contacts:$contacts")
|
|
if (contacts != null) {
|
|
if (contacts != null) {
|
|
- ContactsItem(contacts, contactsViewModel, context, selectedParticipants)
|
|
|
|
|
|
+ ContactsItem(contacts, contactsViewModel, context)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
is ContactsUiState.Error -> {
|
|
is ContactsUiState.Error -> {
|
|
@@ -395,12 +379,7 @@ fun ContactsList(
|
|
|
|
|
|
@OptIn(ExperimentalFoundationApi::class)
|
|
@OptIn(ExperimentalFoundationApi::class)
|
|
@Composable
|
|
@Composable
|
|
-fun ContactsItem(
|
|
|
|
- contacts: List<AutocompleteUser>,
|
|
|
|
- contactsViewModel: ContactsViewModel,
|
|
|
|
- context: Context,
|
|
|
|
- selectedParticipants: MutableList<AutocompleteUser>
|
|
|
|
-) {
|
|
|
|
|
|
+fun ContactsItem(contacts: List<AutocompleteUser>, contactsViewModel: ContactsViewModel, context: Context) {
|
|
val groupedContacts: Map<String, List<AutocompleteUser>> = contacts.groupBy { contact ->
|
|
val groupedContacts: Map<String, List<AutocompleteUser>> = contacts.groupBy { contact ->
|
|
(
|
|
(
|
|
if (contact.source == "users") {
|
|
if (contact.source == "users") {
|
|
@@ -432,8 +411,7 @@ fun ContactsItem(
|
|
ContactItemRow(
|
|
ContactItemRow(
|
|
contact = contact,
|
|
contact = contact,
|
|
contactsViewModel = contactsViewModel,
|
|
contactsViewModel = contactsViewModel,
|
|
- context = context,
|
|
|
|
- selectedContacts = selectedParticipants
|
|
|
|
|
|
+ context = context
|
|
)
|
|
)
|
|
Log.d(CompanionClass.TAG, "Contacts:$contact")
|
|
Log.d(CompanionClass.TAG, "Contacts:$contact")
|
|
}
|
|
}
|