Fix list updates (it was isEqual)
This commit is contained in:
@@ -30,7 +30,7 @@ fun ConversationListScreen(
|
|||||||
viewModel: ConversationListViewModel = hiltViewModel(),
|
viewModel: ConversationListViewModel = hiltViewModel(),
|
||||||
onConversationSelected: (conversationID: String) -> Unit
|
onConversationSelected: (conversationID: String) -> Unit
|
||||||
) {
|
) {
|
||||||
val conversations by viewModel.conversations.collectAsStateWithLifecycle(initialValue = listOf())
|
val conversations by viewModel.conversations.collectAsStateWithLifecycle(initialValue = emptyList())
|
||||||
ConversationListView(conversations = conversations, onConversationSelected = onConversationSelected)
|
ConversationListView(conversations = conversations, onConversationSelected = onConversationSelected)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -24,6 +24,9 @@ class ConversationListViewModel @Inject constructor(
|
|||||||
}
|
}
|
||||||
|
|
||||||
init {
|
init {
|
||||||
|
// TODO: Is this the best place to put these?
|
||||||
|
// TODO: Need error handling (exceptions thrown below)
|
||||||
|
|
||||||
viewModelScope.launch {
|
viewModelScope.launch {
|
||||||
repository.synchronize()
|
repository.synchronize()
|
||||||
}
|
}
|
||||||
@@ -31,11 +34,5 @@ class ConversationListViewModel @Inject constructor(
|
|||||||
viewModelScope.launch {
|
viewModelScope.launch {
|
||||||
repository.beginWatchingForUpdates(this)
|
repository.beginWatchingForUpdates(this)
|
||||||
}
|
}
|
||||||
|
|
||||||
viewModelScope.launch {
|
|
||||||
repository.conversationChanges.collect {
|
|
||||||
Log.v("ViewModel", "Got conversationChanges")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -41,7 +41,8 @@ data class Conversation(
|
|||||||
date == o.date &&
|
date == o.date &&
|
||||||
participants == o.participants &&
|
participants == o.participants &&
|
||||||
displayName == o.displayName &&
|
displayName == o.displayName &&
|
||||||
unreadCount == o.unreadCount
|
unreadCount == o.unreadCount &&
|
||||||
|
lastMessagePreview == o.lastMessagePreview
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import kotlinx.coroutines.cancel
|
|||||||
import kotlinx.coroutines.channels.Channel
|
import kotlinx.coroutines.channels.Channel
|
||||||
import kotlinx.coroutines.flow.Flow
|
import kotlinx.coroutines.flow.Flow
|
||||||
import kotlinx.coroutines.flow.collect
|
import kotlinx.coroutines.flow.collect
|
||||||
|
import kotlinx.coroutines.flow.onEach
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import kotlinx.coroutines.runBlocking
|
import kotlinx.coroutines.runBlocking
|
||||||
import net.buzzert.kordophone.backend.db.CachedChatDatabase
|
import net.buzzert.kordophone.backend.db.CachedChatDatabase
|
||||||
@@ -38,6 +39,7 @@ class ChatRepository(
|
|||||||
// Changes Flow
|
// Changes Flow
|
||||||
val conversationChanges: Flow<List<Conversation>>
|
val conversationChanges: Flow<List<Conversation>>
|
||||||
get() = database.conversationChanges
|
get() = database.conversationChanges
|
||||||
|
.onEach { Log.d(REPO_LOG, "Got database conversations changed") }
|
||||||
|
|
||||||
fun messagesChanged(conversation: Conversation): Flow<List<Message>> =
|
fun messagesChanged(conversation: Conversation): Flow<List<Message>> =
|
||||||
database.messagesChanged(conversation)
|
database.messagesChanged(conversation)
|
||||||
|
|||||||
Reference in New Issue
Block a user