From 7adf3cd0f5004a35b90e2edd894d8790eed62cdc Mon Sep 17 00:00:00 2001
From: Douile <25043847+Douile@users.noreply.github.com>
Date: Tue, 23 Aug 2022 11:13:47 +0100
Subject: [PATCH 1/2] Add factory reset button
---
.../main/java/com/geeksville/mesh/model/UIState.kt | 11 +++++++++++
.../geeksville/mesh/ui/AdvancedSettingsFragment.kt | 13 +++++++++++++
app/src/main/res/layout/advanced_settings.xml | 12 ++++++++++++
app/src/main/res/values/strings.xml | 3 +++
4 files changed, 39 insertions(+)
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 daf27fa2d..b183feaef 100644
--- a/app/src/main/java/com/geeksville/mesh/model/UIState.kt
+++ b/app/src/main/java/com/geeksville/mesh/model/UIState.kt
@@ -349,6 +349,17 @@ class UIViewModel @Inject constructor(
meshService?.requestReboot(DataPacket.ID_LOCAL)
}
+ fun requestFactoryReset() {
+ val config = _localConfig.value
+ if (config != null) {
+ val builder = config.device.toBuilder()
+ builder.factoryReset = true
+ val newConfig = ConfigProtos.Config.newBuilder()
+ newConfig.device = builder.build()
+ setDeviceConfig(newConfig.build())
+ }
+ }
+
/**
* Write the persisted packet data out to a CSV file in the specified location.
*/
diff --git a/app/src/main/java/com/geeksville/mesh/ui/AdvancedSettingsFragment.kt b/app/src/main/java/com/geeksville/mesh/ui/AdvancedSettingsFragment.kt
index 6d6bff5de..aaa9397ec 100644
--- a/app/src/main/java/com/geeksville/mesh/ui/AdvancedSettingsFragment.kt
+++ b/app/src/main/java/com/geeksville/mesh/ui/AdvancedSettingsFragment.kt
@@ -55,6 +55,7 @@ class AdvancedSettingsFragment : ScreenFragment("Advanced Settings"), Logging {
binding.lsSleepSwitch.isEnabled = connected && model.isESP32()
binding.shutdownButton.isEnabled = connected && model.hasAXP()
binding.rebootButton.isEnabled = connected
+ binding.factoryResetButton.isEnabled = connected
}
binding.positionBroadcastPeriodEditText.on(EditorInfo.IME_ACTION_DONE) {
@@ -130,5 +131,17 @@ class AdvancedSettingsFragment : ScreenFragment("Advanced Settings"), Logging {
}
.show()
}
+
+ binding.factoryResetButton.setOnClickListener {
+ MaterialAlertDialogBuilder(requireContext())
+ .setTitle(R.string.are_you_sure_factory_reset)
+ .setMessage(R.string.factory_reset_description)
+ .setNeutralButton(R.string.cancel) { _, _ ->
+ }
+ .setPositiveButton(R.string.okay) { _, _ ->
+ model.requestFactoryReset()
+ }
+ .show()
+ }
}
}
\ No newline at end of file
diff --git a/app/src/main/res/layout/advanced_settings.xml b/app/src/main/res/layout/advanced_settings.xml
index e19cedb84..4d2ce438b 100644
--- a/app/src/main/res/layout/advanced_settings.xml
+++ b/app/src/main/res/layout/advanced_settings.xml
@@ -88,4 +88,16 @@
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/shutdownButton"
app:layout_constraintTop_toTopOf="@id/shutdownButton" />
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index ede3709cf..62de45bd5 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -155,4 +155,7 @@
Message
Append to message
Instantly send
+ Factory reset
+ Are you sure you want to factory reset?
+ This will clear all device configuration you have done.
From 27ee6a847ad5e861b6940d3f90c78ac9e5e6e9a8 Mon Sep 17 00:00:00 2001
From: andrekir
Date: Thu, 25 Aug 2022 20:50:55 -0300
Subject: [PATCH 2/2] remove play services code scanner
---
app/build.gradle | 2 --
app/src/main/AndroidManifest.xml | 3 --
.../mesh/android/ContextServices.kt | 10 ------
.../com/geeksville/mesh/ui/ChannelFragment.kt | 31 ++-----------------
4 files changed, 2 insertions(+), 44 deletions(-)
diff --git a/app/build.gradle b/app/build.gradle
index eac5e97d0..4ba547d08 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -173,8 +173,6 @@ dependencies {
implementation 'com.google.android.gms:play-services-location:19.0.1'
// For Google Sign-In (owner name accesss)
implementation 'com.google.android.gms:play-services-auth:20.2.0'
- // ML Kit barcode scanning
- implementation 'com.google.android.gms:play-services-code-scanner:16.0.0-beta2'
// Add the Firebase SDK for Crashlytics.
implementation 'com.google.firebase:firebase-crashlytics:18.2.6'
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 67799bf9e..535d6953d 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -97,9 +97,6 @@
-
= Build.VERSION_CODES.R)
- packageManager.getInstallSourceInfo(packageName).installingPackageName
- else
- packageManager.getInstallerPackageName(packageName)
-}
-
/**
* return a list of the permissions we don't have
*/
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 bd4fe6a35..8a16011ff 100644
--- a/app/src/main/java/com/geeksville/mesh/ui/ChannelFragment.kt
+++ b/app/src/main/java/com/geeksville/mesh/ui/ChannelFragment.kt
@@ -25,7 +25,6 @@ import com.geeksville.mesh.ConfigProtos
import com.geeksville.mesh.R
import com.geeksville.mesh.android.getCameraPermissions
import com.geeksville.mesh.android.hasCameraPermission
-import com.geeksville.mesh.android.installSource
import com.geeksville.mesh.databinding.ChannelFragmentBinding
import com.geeksville.mesh.model.Channel
import com.geeksville.mesh.model.ChannelOption
@@ -33,9 +32,6 @@ import com.geeksville.mesh.model.ChannelSet
import com.geeksville.mesh.model.UIViewModel
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import com.google.android.material.snackbar.Snackbar
-import com.google.mlkit.vision.barcode.common.Barcode
-import com.google.mlkit.vision.codescanner.GmsBarcodeScannerOptions
-import com.google.mlkit.vision.codescanner.GmsBarcodeScanning
import com.google.protobuf.ByteString
import com.journeyapps.barcodescanner.ScanContract
import com.journeyapps.barcodescanner.ScanOptions
@@ -238,24 +234,6 @@ class ChannelFragment : ScreenFragment("Channel"), Logging {
.show()
}
- fun mlkitScan() {
- debug("Starting ML Kit code scanner")
- val options = GmsBarcodeScannerOptions.Builder()
- .setBarcodeFormats(Barcode.FORMAT_QR_CODE)
- .build()
- val scanner = GmsBarcodeScanning.getClient(requireContext(), options)
- scanner.startScan()
- .addOnSuccessListener { barcode ->
- if (barcode.rawValue != null)
- model.setRequestChannelUrl(Uri.parse(barcode.rawValue))
- }
- .addOnFailureListener { ex ->
- errormsg("code scanner failed: ${ex.message}")
- if (requireContext().hasCameraPermission()) zxingScan()
- else requestPermissionAndScan()
- }
- }
-
binding.channelNameEdit.on(EditorInfo.IME_ACTION_DONE) {
requireActivity().hideKeyboard()
}
@@ -279,13 +257,8 @@ class ChannelFragment : ScreenFragment("Channel"), Logging {
}
binding.scanButton.setOnClickListener {
- // only use ML Kit for play store installs
- if (requireContext().installSource() == "com.android.vending") {
- mlkitScan()
- } else {
- if (requireContext().hasCameraPermission()) zxingScan()
- else requestPermissionAndScan()
- }
+ if (requireContext().hasCameraPermission()) zxingScan()
+ else requestPermissionAndScan()
}
// Note: Do not use setOnCheckedChanged here because we don't want to be called when we programmatically disable editing