diff --git a/app/build.gradle b/app/build.gradle
index 553c15997f..79aa4cabf1 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -16,8 +16,8 @@ android {
applicationId "com.geeksville.mesh"
minSdkVersion 22 // The oldest emulator image I have tried is 22 (though 21 probably works)
targetSdkVersion 29
- versionCode 138
- versionName "0.3.8"
+ versionCode 139
+ versionName "0.3.9"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
@@ -97,8 +97,8 @@ dependencies {
implementation 'androidx.constraintlayout:constraintlayout:2.0.0-beta4'
implementation 'com.google.android.material:material:1.1.0'
implementation 'androidx.viewpager2:viewpager2:1.0.0'
- implementation 'androidx.lifecycle:lifecycle-extensions:2.1.0'
- implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.1.0'
+ implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
+ implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.2.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
@@ -123,10 +123,10 @@ dependencies {
implementation 'com.google.android.gms:play-services-location:17.0.0'
// For Google Sign-In (owner name accesss)
- implementation 'com.google.android.gms:play-services-auth:17.0.0'
+ implementation 'com.google.android.gms:play-services-auth:18.0.0'
// Add the Firebase SDK for Crashlytics.
- implementation 'com.google.firebase:firebase-crashlytics:17.0.0-beta03'
+ implementation 'com.google.firebase:firebase-crashlytics:17.0.0-beta04'
// alas implementation bug deep in the bowels when I tried it for my SyncBluetoothDevice class
// implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.3"
diff --git a/app/src/main/java/com/geeksville/mesh/model/UIState.kt b/app/src/main/java/com/geeksville/mesh/model/UIState.kt
index 7650f575f9..38939a0fcd 100644
--- a/app/src/main/java/com/geeksville/mesh/model/UIState.kt
+++ b/app/src/main/java/com/geeksville/mesh/model/UIState.kt
@@ -73,7 +73,8 @@ class UIViewModel(app: Application) : AndroidViewModel(app), Logging {
fun setRadioConfig(c: MeshProtos.RadioConfig) {
debug("Setting new radio config!")
meshService?.radioConfig = c.toByteArray()
- radioConfig.value = c
+ radioConfig.value =
+ c // Must be done after calling the service, so we will will properly throw if the service failed (and therefore not cache invalid new settings)
getPreferences(context).edit(commit = true) {
this.putString("channel-url", getChannel(c)!!.getChannelUrl().toString())
diff --git a/app/src/main/java/com/geeksville/mesh/ui/ChannelFragment.kt b/app/src/main/java/com/geeksville/mesh/ui/ChannelFragment.kt
index a9d9a4dbc5..b012fb7414 100644
--- a/app/src/main/java/com/geeksville/mesh/ui/ChannelFragment.kt
+++ b/app/src/main/java/com/geeksville/mesh/ui/ChannelFragment.kt
@@ -4,6 +4,7 @@ import android.content.Intent
import android.graphics.ColorMatrix
import android.graphics.ColorMatrixColorFilter
import android.os.Bundle
+import android.os.RemoteException
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
@@ -19,7 +20,9 @@ import com.geeksville.android.hideKeyboard
import com.geeksville.mesh.R
import com.geeksville.mesh.model.UIViewModel
import com.geeksville.mesh.service.MeshService
+import com.geeksville.util.Exceptions
import com.google.android.material.dialog.MaterialAlertDialogBuilder
+import com.google.android.material.snackbar.Snackbar
import kotlinx.android.synthetic.main.channel_fragment.*
@@ -128,12 +131,6 @@ class ChannelFragment : ScreenFragment("Channel"), Logging {
editableCheckbox.setOnCheckedChangeListener { _, checked ->
if (!checked) {
// User just locked it, we should warn and then apply changes to radio
- /* Snackbar.make(
- editableCheckbox,
- "Changing channels is not yet supported",
- Snackbar.LENGTH_SHORT
- ).show() */
-
MaterialAlertDialogBuilder(requireContext())
.setTitle(R.string.change_channel)
.setMessage(R.string.are_you_sure_channel)
@@ -146,8 +143,22 @@ class ChannelFragment : ScreenFragment("Channel"), Logging {
val newSettings = old.settings.toBuilder()
newSettings.name = channelNameEdit.text.toString().trim()
// FIXME, regenerate a new preshared key!
- model.setChannel(newSettings.build())
- // Since we are writing to radioconfig, that will trigger the rest of the GUI update (QR code etc)
+
+ // Try to change the radio, if it fails, tell the user why and throw away their redits
+ try {
+ model.setChannel(newSettings.build())
+ // Since we are writing to radioconfig, that will trigger the rest of the GUI update (QR code etc)
+ } catch (ex: RemoteException) {
+ setGUIfromModel() // Throw away user edits
+
+ // Tell the user to try again
+ Snackbar.make(
+ editableCheckbox,
+ R.string.radio_sleeping,
+ Snackbar.LENGTH_SHORT
+ ).show()
+ Exceptions.report(ex, "ignoring channel problem")
+ }
}
}
.show()
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 04630e7963..771a35e8a0 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -36,4 +36,5 @@
If you would like to see the map, you\'ll need to turn on analytics in the Settings pane (also, for the time being you might need to force restart the application).\n\n
If you are interested in us paying for mapbox (or switching to a different map provider), please post in our forum.
A required permission is missing, Meshtastic won\'t be able to work properly. Please enable in application settings.
+ Radio was sleeping, could not change channel
diff --git a/build.gradle b/build.gradle
index 7c9083db89..c5812afc0e 100644
--- a/build.gradle
+++ b/build.gradle
@@ -19,7 +19,7 @@ buildscript {
// Check that you have the Google Services Gradle plugin v4.3.2 or later
// (if not, add it).
classpath 'com.google.gms:google-services:4.3.3'
- classpath 'com.google.firebase:firebase-crashlytics-gradle:2.0.0-beta03'
+ classpath 'com.google.firebase:firebase-crashlytics-gradle:2.0.0-beta04'
// protobuf plugin - docs here https://github.com/google/protobuf-gradle-plugin
classpath 'com.google.protobuf:protobuf-gradle-plugin:0.8.12'