mirror of
https://github.com/nextcloud/talk-android
synced 2025-07-09 13:59:48 +01:00
82 lines
3.3 KiB
Kotlin
82 lines
3.3 KiB
Kotlin
/*
|
|
* Nextcloud Talk - Android Client
|
|
*
|
|
* SPDX-FileCopyrightText: 2024 Sowjanya Kota <sowjanya.kch@gmail.com>
|
|
* SPDX-FileCopyrightText: 2025 Marcel Hibbe <dev@mhibbe.de>
|
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
|
*/
|
|
|
|
package com.nextcloud.talk.contacts
|
|
|
|
import androidx.compose.foundation.background
|
|
import androidx.compose.foundation.layout.Column
|
|
import androidx.compose.foundation.layout.padding
|
|
import androidx.compose.foundation.layout.statusBarsPadding
|
|
import androidx.compose.material3.Scaffold
|
|
import androidx.compose.runtime.Composable
|
|
import androidx.compose.runtime.getValue
|
|
import androidx.compose.ui.Modifier
|
|
import androidx.compose.ui.res.colorResource
|
|
import androidx.compose.ui.unit.dp
|
|
import androidx.lifecycle.compose.collectAsStateWithLifecycle
|
|
import com.nextcloud.talk.R
|
|
import com.nextcloud.talk.contacts.components.ContactsAppBar
|
|
import com.nextcloud.talk.contacts.components.ContactsList
|
|
import com.nextcloud.talk.contacts.components.ContactsSearchAppBar
|
|
import com.nextcloud.talk.contacts.components.ConversationCreationOptions
|
|
|
|
@Composable
|
|
fun ContactsScreen(contactsViewModel: ContactsViewModel, uiState: ContactsUiState) {
|
|
val searchQuery by contactsViewModel.searchQuery.collectAsStateWithLifecycle()
|
|
val isSearchActive by contactsViewModel.isSearchActive.collectAsStateWithLifecycle()
|
|
val isAddParticipants by contactsViewModel.isAddParticipantsView.collectAsStateWithLifecycle()
|
|
val autocompleteUsers by contactsViewModel.selectedParticipantsList.collectAsStateWithLifecycle()
|
|
val enableAddButton by contactsViewModel.enableAddButton.collectAsStateWithLifecycle()
|
|
|
|
Scaffold(
|
|
modifier = Modifier
|
|
.statusBarsPadding(),
|
|
topBar = {
|
|
if (isSearchActive) {
|
|
ContactsSearchAppBar(
|
|
searchQuery = searchQuery,
|
|
onTextChange = {
|
|
contactsViewModel.updateSearchQuery(it)
|
|
contactsViewModel.getContactsFromSearchParams()
|
|
},
|
|
onCloseSearch = {
|
|
contactsViewModel.updateSearchQuery("")
|
|
contactsViewModel.setSearchActive(false)
|
|
contactsViewModel.getContactsFromSearchParams()
|
|
},
|
|
enableAddButton = enableAddButton,
|
|
isAddParticipants = isAddParticipants,
|
|
clickAddButton = { contactsViewModel.modifyClickAddButton(true) }
|
|
)
|
|
} else {
|
|
ContactsAppBar(
|
|
isAddParticipants = isAddParticipants,
|
|
autocompleteUsers = autocompleteUsers,
|
|
onStartSearch = { contactsViewModel.setSearchActive(true) }
|
|
)
|
|
}
|
|
},
|
|
content = { paddingValues ->
|
|
Column(
|
|
Modifier
|
|
.padding(0.dp, paddingValues.calculateTopPadding(), 0.dp, 0.dp)
|
|
.background(colorResource(id = R.color.bg_default))
|
|
) {
|
|
if (!isAddParticipants) {
|
|
ConversationCreationOptions()
|
|
}
|
|
|
|
ContactsList(
|
|
contactsUiState = uiState,
|
|
contactsViewModel = contactsViewModel
|
|
)
|
|
}
|
|
}
|
|
)
|
|
}
|