Чат
This commit is contained in:
@@ -39,10 +39,18 @@ class ChatListViewModel @Inject constructor(
|
||||
true
|
||||
}
|
||||
_state.update { it.copy(isStoriesEnabled = isStoriesEnabled) }
|
||||
|
||||
val token = tokenManager.getToken()
|
||||
if (token != null) {
|
||||
val baseUrl = serverConfig.getBaseUrl().removeSuffix("/api/")
|
||||
signalrClient.connect(baseUrl, token)
|
||||
}
|
||||
|
||||
loadChats()
|
||||
observeSignalREvents()
|
||||
}
|
||||
|
||||
|
||||
private fun getCurrentUserId(): String = tokenManager.getUserId() ?: ""
|
||||
|
||||
fun loadChats() {
|
||||
@@ -66,7 +74,8 @@ class ChatListViewModel @Inject constructor(
|
||||
}
|
||||
is ChatEvent.NewChat -> {
|
||||
val currentUserId = getCurrentUserId()
|
||||
_state.update { it.copy(chats = listOf(event.chat.toDomain(currentUserId)) + it.chats) }
|
||||
val baseUrl = serverConfig.getBaseUrl().removeSuffix("/api/")
|
||||
_state.update { it.copy(chats = listOf(event.chat.toDomain(currentUserId, baseUrl)) + it.chats) }
|
||||
}
|
||||
else -> Unit
|
||||
}
|
||||
@@ -76,11 +85,12 @@ class ChatListViewModel @Inject constructor(
|
||||
|
||||
|
||||
private fun updateChatsWithNewMessage(event: ChatEvent.NewMessage) {
|
||||
val baseUrl = serverConfig.getBaseUrl().removeSuffix("/api/")
|
||||
_state.update { currentState ->
|
||||
val updatedChats = currentState.chats.map { chat ->
|
||||
if (chat.id == event.message.chatId) {
|
||||
chat.copy(
|
||||
lastMessage = event.message.toDomain(),
|
||||
lastMessage = event.message.toDomain(baseUrl),
|
||||
unreadCount = chat.unreadCount + 1
|
||||
)
|
||||
} else chat
|
||||
|
||||
Reference in New Issue
Block a user