feat: Simplify search results condition in ChatsListScreen

This commit is contained in:
k1ngsterr1
2026-01-10 19:33:25 +05:00
parent fa634936f5
commit 3d8c9570b4
4 changed files with 63 additions and 40 deletions

View File

@@ -757,8 +757,8 @@ fun ChatsListScreen(
.fillMaxSize()
.padding(paddingValues)
) {
// Show search results when search is expanded and has query
if (isSearchExpanded && searchQuery.isNotEmpty()) {
// Show search results when search is expanded
if (isSearchExpanded) {
Column(modifier = Modifier.fillMaxSize()) {
// Search Results List
SearchResultsList(
@@ -767,6 +767,9 @@ fun ChatsListScreen(
currentUserPublicKey = accountPublicKey,
isDarkTheme = isDarkTheme,
onUserClick = { user ->
// Логируем выбор пользователя
ProtocolManager.addLog("🎯 User selected: ${user.title.ifEmpty { user.publicKey.take(10) }}")
ProtocolManager.addLog(" PublicKey: ${user.publicKey.take(20)}...")
// Закрываем поиск и вызываем callback
searchViewModel.collapseSearch()
onUserSelect(user)
@@ -774,41 +777,42 @@ fun ChatsListScreen(
)
}
} else {
// Console button - hidden for now
AnimatedVisibility(
visible = false,
enter = fadeIn(tween(500, delayMillis = 400)) + slideInHorizontally(
initialOffsetX = { -it },
animationSpec = tween(500, delayMillis = 400)
),
modifier = Modifier
.align(Alignment.BottomStart)
.padding(16.dp)
) {
FloatingActionButton(
onClick = { showDevConsole = true },
containerColor = if (isDarkTheme) Color(0xFF2A2A2A) else Color(0xFFF5F5F5),
contentColor = if (protocolState == ProtocolState.AUTHENTICATED)
Color(0xFF4CAF50)
else
Color(0xFFFF9800),
shape = CircleShape,
modifier = Modifier.size(48.dp)
) {
Icon(
Icons.Default.Terminal,
contentDescription = "Dev Console",
modifier = Modifier.size(24.dp)
)
}
}
// Empty state with Lottie animation
EmptyChatsState(
isDarkTheme = isDarkTheme,
modifier = Modifier.fillMaxSize()
)
}
// Console button - always visible at bottom left
AnimatedVisibility(
visible = visible,
enter = fadeIn(tween(500, delayMillis = 400)) + slideInHorizontally(
initialOffsetX = { -it },
animationSpec = tween(500, delayMillis = 400)
),
modifier = Modifier
.align(Alignment.BottomStart)
.padding(16.dp)
) {
FloatingActionButton(
onClick = { showDevConsole = true },
containerColor = if (isDarkTheme) Color(0xFF2A2A2A) else Color(0xFFF5F5F5),
contentColor = when (protocolState) {
ProtocolState.AUTHENTICATED -> Color(0xFF4CAF50)
ProtocolState.CONNECTING, ProtocolState.HANDSHAKING -> Color(0xFFFFA726)
else -> Color(0xFFFF5722)
},
shape = CircleShape,
modifier = Modifier.size(48.dp)
) {
Icon(
Icons.Default.Terminal,
contentDescription = "Dev Console",
modifier = Modifier.size(24.dp)
)
}
}
}
}
}

View File

@@ -40,7 +40,13 @@ class SearchUsersViewModel : ViewModel() {
// Callback для обработки ответа поиска
private val searchPacketHandler: (com.rosetta.messenger.network.Packet) -> Unit = { packet ->
if (packet is PacketSearch) {
android.util.Log.d("SearchUsersVM", "📥 Search results received: ${packet.users.size} users")
ProtocolManager.addLog("📥 Search response received")
ProtocolManager.addLog(" Users found: ${packet.users.size}")
packet.users.forEachIndexed { index, user ->
ProtocolManager.addLog(" [$index] ${user.title.ifEmpty { "No title" }} (@${user.username.ifEmpty { "no username" }})")
ProtocolManager.addLog(" Key: ${user.publicKey.take(20)}...")
ProtocolManager.addLog(" Verified: ${user.verified}, Online: ${user.online}")
}
_searchResults.value = packet.users
_isSearching.value = false
}
@@ -97,7 +103,7 @@ class SearchUsersViewModel : ViewModel() {
// Проверяем состояние протокола
if (ProtocolManager.state.value != ProtocolState.AUTHENTICATED) {
android.util.Log.w("SearchUsersVM", "Not authenticated, cannot search")
ProtocolManager.addLog("⚠️ Search failed: Not authenticated")
_isSearching.value = false
return@launch
}
@@ -109,7 +115,8 @@ class SearchUsersViewModel : ViewModel() {
lastSearchedText = query
android.util.Log.d("SearchUsersVM", "🔍 Sending search request: $query")
ProtocolManager.addLog("🔍 Searching for: \"$query\"")
ProtocolManager.addLog(" PrivateKeyHash: ${privateKeyHash.take(20)}...")
// Создаем и отправляем пакет поиска
val packetSearch = PacketSearch().apply {
@@ -125,6 +132,7 @@ class SearchUsersViewModel : ViewModel() {
* Открыть панель поиска
*/
fun expandSearch() {
ProtocolManager.addLog("🔎 Search panel opened")
_isSearchExpanded.value = true
}
@@ -132,6 +140,7 @@ class SearchUsersViewModel : ViewModel() {
* Закрыть панель поиска и очистить результаты
*/
fun collapseSearch() {
ProtocolManager.addLog("🔎 Search panel closed")
_isSearchExpanded.value = false
_searchQuery.value = ""
_searchResults.value = emptyList()