diff --git a/app/src/main/aidl/com/geeksville/mesh/IMeshService.aidl b/app/src/main/aidl/com/geeksville/mesh/IMeshService.aidl
index 56b6090fc..8b5010c86 100644
--- a/app/src/main/aidl/com/geeksville/mesh/IMeshService.aidl
+++ b/app/src/main/aidl/com/geeksville/mesh/IMeshService.aidl
@@ -69,6 +69,8 @@ interface IMeshService {
void delete(int position);
+ void deleteAllMessages();
+
/**
Get the IDs of everyone on the mesh. You should also subscribe for NODE_CHANGE broadcasts.
*/
diff --git a/app/src/main/java/com/geeksville/mesh/model/MessagesState.kt b/app/src/main/java/com/geeksville/mesh/model/MessagesState.kt
index 60c7a5784..6e98fb5d4 100644
--- a/app/src/main/java/com/geeksville/mesh/model/MessagesState.kt
+++ b/app/src/main/java/com/geeksville/mesh/model/MessagesState.kt
@@ -53,6 +53,13 @@ class MessagesState(private val ui: UIViewModel) : Logging {
messages.value = messagesList
}
+ private fun removeAllMessages() {
+ debug("Removing all messages")
+
+ messagesList.clear()
+ messages.value = messagesList
+ }
+
fun updateStatus(id: Int, status: MessageStatus) {
// Super inefficent but this is rare
debug("Handling message status change $id: $status")
@@ -102,4 +109,16 @@ class MessagesState(private val ui: UIViewModel) : Logging {
}
removeMessage(packet)
}
+
+ fun deleteAllMessages() {
+ val service = ui.meshService
+ if (service != null) {
+ try {
+ service.deleteAllMessages()
+ } catch (ex: RemoteException) {
+
+ }
+ removeAllMessages()
+ }
+ }
}
diff --git a/app/src/main/java/com/geeksville/mesh/service/MeshService.kt b/app/src/main/java/com/geeksville/mesh/service/MeshService.kt
index 8790e0d4b..1392734cb 100644
--- a/app/src/main/java/com/geeksville/mesh/service/MeshService.kt
+++ b/app/src/main/java/com/geeksville/mesh/service/MeshService.kt
@@ -1789,6 +1789,10 @@ class MeshService : Service(), Logging {
}
}
+ override fun deleteAllMessages() {
+ recentDataPackets.clear()
+ }
+
override fun send(p: DataPacket) {
toRemoteExceptions {
// Init from and id
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 52a694c2c..bd0beefb4 100644
--- a/app/src/main/java/com/geeksville/mesh/ui/MessagesFragment.kt
+++ b/app/src/main/java/com/geeksville/mesh/ui/MessagesFragment.kt
@@ -173,9 +173,15 @@ class MessagesFragment : ScreenFragment("Messages"), Logging {
) { _, _ ->
model.messagesState.deleteMessage((messages[position]), position)
}
- deleteMessageDialog.setNegativeButton(R.string.cancel
+ deleteMessageDialog.setNeutralButton(
+ R.string.cancel
) { _, _ ->
}
+ deleteMessageDialog.setNegativeButton(
+ R.string.delete_all_messages
+ ) { _, _ ->
+ model.messagesState.deleteAllMessages()
+ }
deleteMessageDialog.create()
deleteMessageDialog.show()
true
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index a74d3ec71..41e99f78e 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -122,4 +122,5 @@
Medium Range / Slow
Delete selected message?
Delete
+ Delete All Messages
\ No newline at end of file