diff --git a/app/src/main/java/chat/rocket/android/chatroom/presentation/ChatRoomPresenter.kt b/app/src/main/java/chat/rocket/android/chatroom/presentation/ChatRoomPresenter.kt index 1b65510aa3..87548d5dac 100644 --- a/app/src/main/java/chat/rocket/android/chatroom/presentation/ChatRoomPresenter.kt +++ b/app/src/main/java/chat/rocket/android/chatroom/presentation/ChatRoomPresenter.kt @@ -47,6 +47,7 @@ import chat.rocket.common.model.UserStatus import chat.rocket.common.model.roomTypeOf import chat.rocket.common.util.ifNull import chat.rocket.core.internal.realtime.setTypingStatus +import chat.rocket.core.internal.realtime.socket.connect import chat.rocket.core.internal.realtime.socket.model.State import chat.rocket.core.internal.realtime.subscribeRoomMessages import chat.rocket.core.internal.realtime.subscribeTypingStatus @@ -356,6 +357,9 @@ class ChatRoomPresenter @Inject constructor( launchUI(strategy) { try { view.disableSendMessageButton() + if(client.state is State.Disconnected || client.state is State.Waiting){ + client.connect() + } // ignore message for now, will receive it on the stream if (messageId == null) { val id = UUID.randomUUID().toString() diff --git a/app/src/main/java/chat/rocket/android/chatroom/service/MessageService.kt b/app/src/main/java/chat/rocket/android/chatroom/service/MessageService.kt index 7ddf21194b..d83a72a86d 100644 --- a/app/src/main/java/chat/rocket/android/chatroom/service/MessageService.kt +++ b/app/src/main/java/chat/rocket/android/chatroom/service/MessageService.kt @@ -7,6 +7,7 @@ import chat.rocket.android.server.domain.GetAccountsInteractor import chat.rocket.android.server.infrastructure.ConnectionManagerFactory import chat.rocket.android.server.infrastructure.DatabaseMessageMapper import chat.rocket.android.server.infrastructure.DatabaseMessagesRepository +import chat.rocket.core.internal.realtime.socket.connect import chat.rocket.core.internal.rest.sendMessage import chat.rocket.core.model.Message import dagger.android.AndroidInjection @@ -15,6 +16,7 @@ import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.launch import timber.log.Timber import javax.inject.Inject +import chat.rocket.core.internal.realtime.socket.model.State class MessageService : JobService() { @Inject @@ -53,6 +55,9 @@ class MessageService : JobService() { val client = factory.create(serverUrl)?.client temporaryMessages.forEach { message -> try { + if(client?.state is State.Disconnected || client?.state is State.Waiting){ + client?.connect() + } client?.sendMessage( message = message.message, messageId = message.id,