Refactor and cleanup (#850)

* Move google play check to extension

* Extract launching bug report dialog

* Add missing extension for fdroid flavor
This commit is contained in:
Davis 2024-02-13 14:41:40 -07:00 committed by GitHub
parent 2bfda9784f
commit 11e31675ca
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 29 additions and 24 deletions

View file

@ -8,9 +8,6 @@ import androidx.appcompat.app.AppCompatActivity
import androidx.core.content.edit
import com.geeksville.mesh.analytics.AnalyticsProvider
@Suppress("UNUSED_PARAMETER")
fun isGooglePlayAvailable(context: Context): Boolean = false
open class GeeksvilleApplication : Application(), Logging {
companion object {
@ -55,3 +52,5 @@ open class GeeksvilleApplication : Application(), Logging {
isAnalyticsAllowed = false
}
}
fun Context.isGooglePlayAvailable(): Boolean = false

View file

@ -12,12 +12,6 @@ import com.google.android.gms.common.ConnectionResult
import com.google.android.gms.common.GoogleApiAvailabilityLight
import com.suddenh4x.ratingdialog.AppRating
fun isGooglePlayAvailable(context: Context): Boolean {
val a = GoogleApiAvailabilityLight.getInstance()
val r = a.isGooglePlayServicesAvailable(context)
return r != ConnectionResult.SERVICE_MISSING && r != ConnectionResult.SERVICE_INVALID
}
/**
* Created by kevinh on 1/4/15.
*/
@ -55,7 +49,8 @@ open class GeeksvilleApplication : Application(), Logging {
/** Ask user to rate in play store */
fun askToRate(activity: AppCompatActivity) {
if (!isGooglePlayAvailable(this)) return
if (!isGooglePlayAvailable()) return
exceptionReporter { // we don't want to crash our app because of bugs in this optional feature
AppRating.Builder(activity)
.setMinimumLaunchTimes(10) // default is 5, 3 means app is launched 3 or more times
@ -76,3 +71,12 @@ open class GeeksvilleApplication : Application(), Logging {
isAnalyticsAllowed = isAnalyticsAllowed
}
}
fun Context.isGooglePlayAvailable(): Boolean {
return GoogleApiAvailabilityLight.getInstance()
.isGooglePlayServicesAvailable(this)
.let {
it != ConnectionResult.SERVICE_MISSING &&
it != ConnectionResult.SERVICE_INVALID
}
}

View file

@ -372,7 +372,7 @@ class SettingsFragment : ScreenFragment("Settings"), Logging {
}
val app = (requireContext().applicationContext as GeeksvilleApplication)
val isGooglePlayAvailable = isGooglePlayAvailable(requireContext())
val isGooglePlayAvailable = requireContext().isGooglePlayAvailable()
val isAnalyticsAllowed = app.isAnalyticsAllowed && isGooglePlayAvailable
// Set analytics checkbox
@ -387,19 +387,21 @@ class SettingsFragment : ScreenFragment("Settings"), Logging {
// report bug button only enabled if analytics is allowed
binding.reportBugButton.isEnabled = isAnalyticsAllowed
binding.reportBugButton.setOnClickListener {
MaterialAlertDialogBuilder(requireContext())
.setTitle(R.string.report_a_bug)
.setMessage(getString(R.string.report_bug_text))
.setNeutralButton(R.string.cancel) { _, _ ->
debug("Decided not to report a bug")
}
.setPositiveButton(getString(R.string.report)) { _, _ ->
reportError("Clicked Report A Bug")
model.showSnackbar("Bug report sent!")
}
.show()
}
binding.reportBugButton.setOnClickListener(::showReportBugDialog)
}
private fun showReportBugDialog(view: View) {
MaterialAlertDialogBuilder(requireContext())
.setTitle(R.string.report_a_bug)
.setMessage(getString(R.string.report_bug_text))
.setNeutralButton(R.string.cancel) { _, _ ->
debug("Decided not to report a bug")
}
.setPositiveButton(getString(R.string.report)) { _, _ ->
reportError("Clicked Report A Bug")
model.showSnackbar("Bug report sent!")
}
.show()
}
private fun addDeviceButton(device: BTScanModel.DeviceListEntry, enabled: Boolean) {