fix(desktop): add loading indicator + relay diagnostics for inline search

- Show "Searching N relays..." with spinner while waiting for results
- Show "No search relays configured" if searchRelays is empty
- Observe isSearching, peopleResults, noteResults directly for state

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
nrobi144
2026-05-29 07:02:51 +03:00
co-authored by Claude Opus 4.6
parent e587bb946e
commit e9756d41aa
@@ -1061,7 +1061,32 @@ private fun FeedTabsHeader(
HorizontalDivider(color = MaterialTheme.colorScheme.outlineVariant)
val hasQuery = searchText.text.isNotBlank()
val isSearching by searchState.isSearching.collectAsState()
val people by searchState.peopleResults.collectAsState()
val notes by searchState.noteResults.collectAsState()
val hasResults = people.isNotEmpty() || notes.isNotEmpty()
if (hasQuery) {
if (isSearching && !hasResults) {
// Loading state while waiting for relay results
Row(
modifier = Modifier.fillMaxWidth().padding(16.dp),
horizontalArrangement = Arrangement.Center,
verticalAlignment = Alignment.CenterVertically,
) {
androidx.compose.material3.CircularProgressIndicator(
modifier = Modifier.size(16.dp),
strokeWidth = 2.dp,
)
Spacer(Modifier.width(8.dp))
Text(
"Searching ${searchRelays.size} relays...",
style = MaterialTheme.typography.bodySmall,
color = MaterialTheme.colorScheme.onSurfaceVariant,
)
}
}
// Show search results (reuses SearchResultsList)
SearchResultsList(
state = searchState,
@@ -1077,6 +1102,15 @@ private fun FeedTabsHeader(
modifier = Modifier.heightIn(max = 400.dp).fillMaxWidth(),
)
if (!isSearching && !hasResults && searchRelays.isEmpty()) {
Text(
"No search relays configured",
style = MaterialTheme.typography.bodySmall,
color = MaterialTheme.colorScheme.onSurfaceVariant,
modifier = Modifier.padding(16.dp),
)
}
// "Open full search" link
HorizontalDivider(
color = MaterialTheme.colorScheme.outlineVariant,