From fdd3b48364ada8929c0dc666ac2ddea81ab8e24a Mon Sep 17 00:00:00 2001 From: geeksville Date: Sun, 19 Apr 2020 12:31:27 -0700 Subject: [PATCH] don't let users try to send texts if we don't have a node id --- app/src/main/java/com/geeksville/mesh/model/NodeDB.kt | 4 ++-- .../main/java/com/geeksville/mesh/ui/MessagesFragment.kt | 7 +++++++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/geeksville/mesh/model/NodeDB.kt b/app/src/main/java/com/geeksville/mesh/model/NodeDB.kt index 6313d5a8f..1e8beaf46 100644 --- a/app/src/main/java/com/geeksville/mesh/model/NodeDB.kt +++ b/app/src/main/java/com/geeksville/mesh/model/NodeDB.kt @@ -44,7 +44,7 @@ class NodeDB(private val ui: UIViewModel) { private val seedWithTestNodes = isEmulator /// The unique ID of our node - val myId = object : MutableLiveData(if (isEmulator) "+16508765309" else "invalid") {} + val myId = object : MutableLiveData(if (isEmulator) "+16508765309" else null) {} /// A map from nodeid to to nodeinfo val nodes = @@ -53,5 +53,5 @@ class NodeDB(private val ui: UIViewModel) { .toTypedArray())) {} /// Could be null if we haven't received our node DB yet - val ourNodeInfo get() = nodes.value!![myId.value] + val ourNodeInfo get() = nodes.value?.get(myId.value) } \ No newline at end of file diff --git a/app/src/main/java/com/geeksville/mesh/ui/MessagesFragment.kt b/app/src/main/java/com/geeksville/mesh/ui/MessagesFragment.kt index eb21684cb..756bae244 100644 --- a/app/src/main/java/com/geeksville/mesh/ui/MessagesFragment.kt +++ b/app/src/main/java/com/geeksville/mesh/ui/MessagesFragment.kt @@ -14,6 +14,7 @@ import com.geeksville.android.Logging import com.geeksville.mesh.R import com.geeksville.mesh.model.TextMessage import com.geeksville.mesh.model.UIViewModel +import com.geeksville.mesh.service.MeshService import kotlinx.android.synthetic.main.adapter_message_layout.view.* import kotlinx.android.synthetic.main.messages_fragment.* import java.text.SimpleDateFormat @@ -167,6 +168,12 @@ class MessagesFragment : ScreenFragment("Messages"), Logging { model.messagesState.messages.observe(viewLifecycleOwner, Observer { it -> messagesAdapter.onMessagesChanged(it) }) + + model.isConnected.observe(viewLifecycleOwner, Observer { connected -> + // If we don't know our node ID and we are offline don't let user try to send + textInputLayout.isEnabled = + connected != MeshService.ConnectionState.DISCONNECTED || model.nodeDB.myId.value != null + }) } private val dateFormat = SimpleDateFormat("h:mm a")