diff --git a/app/src/main/java/org/thoughtcrime/securesms/starred/StarredMessagesActivity.kt b/app/src/main/java/org/thoughtcrime/securesms/starred/StarredMessagesActivity.kt index ff8951669e..fed29bcfda 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/starred/StarredMessagesActivity.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/starred/StarredMessagesActivity.kt @@ -18,6 +18,7 @@ import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size +import androidx.compose.material3.CircularProgressIndicator import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme @@ -151,7 +152,7 @@ private fun StarredMessagesScreen( onNavigateBack: () -> Unit, onNavigateToMessage: (MessageRecord) -> Unit ) { - val messages by viewModel.getMessages().collectAsStateWithLifecycle(initialValue = emptyList()) + val messages by viewModel.getMessages().collectAsStateWithLifecycle(initialValue = null) val scope = rememberCoroutineScope() val context = LocalContext.current val scrollBehavior = TopAppBarDefaults.pinnedScrollBehavior() @@ -174,24 +175,37 @@ private fun StarredMessagesScreen( .padding(padding) .fillMaxSize() ) { - StarredMessageList( - messages = messages, - onItemClick = onNavigateToMessage, - onQuoteClick = onNavigateToMessage, - onUnstarMessage = { messageId -> - scope.launch { - try { - viewModel.unstarMessage(messageId) - } catch (e: Exception) { - Toast.makeText(context, "Failed to unstar message", Toast.LENGTH_SHORT).show() - } + when { + messages == null -> { + Box( + modifier = Modifier.fillMaxSize(), + contentAlignment = Alignment.Center + ) { + CircularProgressIndicator() } - }, - modifier = Modifier.fillMaxSize() - ) + } - if (messages.isEmpty()) { - EmptyState(modifier = Modifier.fillMaxSize()) + messages.isNullOrEmpty() -> { + EmptyState(modifier = Modifier.fillMaxSize()) + } + + else -> { + StarredMessageList( + messages = messages!!, + onItemClick = onNavigateToMessage, + onQuoteClick = onNavigateToMessage, + onUnstarMessage = { messageId -> + scope.launch { + try { + viewModel.unstarMessage(messageId) + } catch (e: Exception) { + Toast.makeText(context, "Failed to unstar message", Toast.LENGTH_SHORT).show() + } + } + }, + modifier = Modifier.fillMaxSize() + ) + } } } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/stories/archive/StoryArchiveViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/stories/archive/StoryArchiveViewModel.kt index de0e136886..e91daa1994 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/stories/archive/StoryArchiveViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/stories/archive/StoryArchiveViewModel.kt @@ -7,6 +7,7 @@ import kotlinx.coroutines.Job import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.collectLatest +import kotlinx.coroutines.flow.drop import kotlinx.coroutines.launch import org.signal.paging.PagedData import org.signal.paging.PagingConfig @@ -99,7 +100,7 @@ class StoryArchiveViewModel : ViewModel() { pagedDataJob?.cancel() pagedDataJob = viewModelScope.launch { - newPagedData.data.collectLatest { stories -> + newPagedData.data.drop(1).collectLatest { stories -> _state.value = _state.value.copy(stories = stories, isLoading = false) } }