diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index c1efa97..d933c7b 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -115,4 +115,6 @@ New message! + User is not connected. Cannot send message. + diff --git a/app/src/main/scala/com/nutomic/ensichat/fragments/ChatFragment.scala b/app/src/main/scala/com/nutomic/ensichat/fragments/ChatFragment.scala index 38f3c52..44d4d46 100644 --- a/app/src/main/scala/com/nutomic/ensichat/fragments/ChatFragment.scala +++ b/app/src/main/scala/com/nutomic/ensichat/fragments/ChatFragment.scala @@ -109,8 +109,9 @@ class ChatFragment extends ListFragment with OnClickListener { val text = messageText.getText.toString.trim if (!text.isEmpty) { val message = new Text(text.toString) - chatService.sendTo(address, message) - messageText.getText.clear() + val success = chatService.sendTo(address, message) + if (success) + messageText.getText.clear() } } diff --git a/app/src/main/scala/com/nutomic/ensichat/protocol/ChatService.scala b/app/src/main/scala/com/nutomic/ensichat/protocol/ChatService.scala index 5c7c93d..02bb47e 100644 --- a/app/src/main/scala/com/nutomic/ensichat/protocol/ChatService.scala +++ b/app/src/main/scala/com/nutomic/ensichat/protocol/ChatService.scala @@ -9,6 +9,7 @@ import android.preference.PreferenceManager import android.support.v4.app.NotificationCompat import android.support.v4.content.LocalBroadcastManager import android.util.Log +import android.widget.Toast import com.nutomic.ensichat.R import com.nutomic.ensichat.activities.MainActivity import com.nutomic.ensichat.bluetooth.BluetoothInterface @@ -118,11 +119,13 @@ class ChatService extends Service { /** * Sends a new message to the given target address. */ - def sendTo(target: Address, body: MessageBody): Unit = { - Future { - if (!btInterface.getConnections.contains(target)) - return + def sendTo(target: Address, body: MessageBody): Boolean = { + if (!btInterface.getConnections.contains(target)) { + Toast.makeText(this, R.string.toast_user_not_connected, Toast.LENGTH_SHORT).show() + return false + } + Future { val messageId = preferences.getLong("message_id", 0) val header = new ContentHeader(crypto.localAddress, target, seqNumGenerator.next(), body.contentType, Some(messageId), Some(new Date())) @@ -133,6 +136,7 @@ class ChatService extends Service { router.onReceive(encrypted) onNewMessage(msg) }.onFailure {case e => throw e} + true } private def sendVia(nextHop: Address, msg: Message) =