diff --git a/app/src/generic/java/org/tasks/gtasks/PlayServices.kt b/app/src/generic/java/org/tasks/gtasks/PlayServices.kt deleted file mode 100644 index f5c58f65d..000000000 --- a/app/src/generic/java/org/tasks/gtasks/PlayServices.kt +++ /dev/null @@ -1,26 +0,0 @@ -package org.tasks.gtasks - -import android.app.Activity -import com.todoroo.astrid.activity.MainActivity -import io.reactivex.disposables.Disposable -import io.reactivex.disposables.Disposables -import javax.inject.Inject - -@Suppress("UNUSED_PARAMETER") -class PlayServices @Inject constructor() { - val isPlayServicesAvailable: Boolean - get() = false - - fun refreshAndCheck(): Boolean { - return false - } - - fun resolve(activity: Activity?) {} - - val status: String? - get() = null - - fun check(mainActivity: MainActivity?): Disposable { - return Disposables.empty() - } -} \ No newline at end of file diff --git a/app/src/generic/res/values/keys.xml b/app/src/generic/res/values/keys.xml index f2656b6dc..0b56e72d9 100644 --- a/app/src/generic/res/values/keys.xml +++ b/app/src/generic/res/values/keys.xml @@ -7,5 +7,4 @@ %s support@tasks.org 1 - 1 \ No newline at end of file diff --git a/app/src/googleplay/java/org/tasks/gtasks/PlayServices.kt b/app/src/googleplay/java/org/tasks/gtasks/PlayServices.kt index 029e42937..8ed500012 100644 --- a/app/src/googleplay/java/org/tasks/gtasks/PlayServices.kt +++ b/app/src/googleplay/java/org/tasks/gtasks/PlayServices.kt @@ -1,65 +1,12 @@ package org.tasks.gtasks -import android.app.Activity import android.content.Context -import android.widget.Toast import com.google.android.gms.common.ConnectionResult -import com.google.android.gms.common.GoogleApiAvailability +import com.google.android.gms.common.GoogleApiAvailability.getInstance import dagger.hilt.android.qualifiers.ApplicationContext -import org.tasks.R -import org.tasks.data.LocationDao -import org.tasks.preferences.Preferences -import timber.log.Timber import javax.inject.Inject -class PlayServices @Inject constructor( - @param:ApplicationContext private val context: Context, - private val preferences: Preferences, - private val locationDao: LocationDao) { - - suspend fun check(activity: Activity?) { - val playServicesAvailable = locationDao.geofenceCount() == 0 || refreshAndCheck() - if (!playServicesAvailable && !preferences.getBoolean(R.string.warned_play_services, false)) { - preferences.setBoolean(R.string.warned_play_services, true) - resolve(activity) - } - } - - fun refreshAndCheck(): Boolean { - refresh() - return isPlayServicesAvailable - } - - val isPlayServicesAvailable: Boolean - get() = result == ConnectionResult.SUCCESS - - private fun refresh() { - val instance = GoogleApiAvailability.getInstance() - val googlePlayServicesAvailable = instance.isGooglePlayServicesAvailable(context) - preferences.setInt(R.string.play_services_available, googlePlayServicesAvailable) - if (googlePlayServicesAvailable == ConnectionResult.SUCCESS) { - preferences.setBoolean(R.string.warned_play_services, false) - } - Timber.d(status) - } - - fun resolve(activity: Activity?) { - val googleApiAvailability = GoogleApiAvailability.getInstance() - val error = preferences.getInt(R.string.play_services_available, -1) - if (googleApiAvailability.isUserResolvableError(error)) { - googleApiAvailability.getErrorDialog(activity, error, REQUEST_RESOLUTION).show() - } else { - Toast.makeText(activity, status, Toast.LENGTH_LONG).show() - } - } - - private val status: String - get() = GoogleApiAvailability.getInstance().getErrorString(result) - - private val result: Int - get() = preferences.getInt(R.string.play_services_available, -1) - - companion object { - private const val REQUEST_RESOLUTION = 10000 - } +object PlayServices { + fun isAvailable(context: Context) = + getInstance().isGooglePlayServicesAvailable(context) == ConnectionResult.SUCCESS } \ No newline at end of file diff --git a/app/src/googleplay/java/org/tasks/injection/FlavorModule.kt b/app/src/googleplay/java/org/tasks/injection/FlavorModule.kt index 0fa3d0212..66106e420 100644 --- a/app/src/googleplay/java/org/tasks/injection/FlavorModule.kt +++ b/app/src/googleplay/java/org/tasks/injection/FlavorModule.kt @@ -1,9 +1,11 @@ package org.tasks.injection +import android.content.Context import dagger.Lazy import dagger.Module import dagger.Provides import dagger.hilt.InstallIn +import dagger.hilt.android.qualifiers.ApplicationContext import dagger.hilt.components.SingletonComponent import org.tasks.gtasks.PlayServices import org.tasks.location.* @@ -12,12 +14,16 @@ import org.tasks.location.* @InstallIn(SingletonComponent::class) class FlavorModule { @Provides - fun getLocationService(service: LocationServiceGooglePlay): LocationService = service + fun getLocationService( + @ApplicationContext context: Context, + google: Lazy, + android: Lazy + ): LocationService = if (PlayServices.isAvailable(context)) google.get() else android.get() @Provides fun getMapFragment( - playServices: PlayServices, + @ApplicationContext context: Context, osm: Lazy, google: Lazy, - ): MapFragment = if (playServices.isPlayServicesAvailable) google.get() else osm.get() + ): MapFragment = if (PlayServices.isAvailable(context)) google.get() else osm.get() } \ No newline at end of file diff --git a/app/src/googleplay/res/values/keys.xml b/app/src/googleplay/res/values/keys.xml index 502268675..27376c412 100644 --- a/app/src/googleplay/res/values/keys.xml +++ b/app/src/googleplay/res/values/keys.xml @@ -1,11 +1,9 @@ MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAk8mXRE3dDXwtinUILCEzKjov2rxs3kZbLRzNrcjFWXpG9OEsUzRGLzqEN+WwibVuMRpZLj/+IxbU2sJWq/M0q+90rOhmXn46ZPeNyr77IqX2pWKIAWpzBoWq/mshRwtm9m1FIiGdBNlXrhSE7u3TGB5FuEuuSqKWvWzxeqQ7fHmlM04Lqrh1mN3FaMne8rWv+DWVHDbLrtnXBuC36glOAj17HxrzaE2v6Pv7Df3QefJ3rM1+0fAp/5jNInaP0qHAlG8WTbUmDShQ5kG3urbv3HLByyx6TSqhmNudXUK/6TusvIj50OptAG7x+UFYf956dD3diXhY3yoICvyFWx1sNwIDAQAB - play_services_available market://details?id=org.tasks purchases https://play.google.com/store/account/subscriptions?sku=%s&package=org.tasks play-support@tasks.org 0 - 0 \ No newline at end of file diff --git a/app/src/main/java/com/todoroo/astrid/activity/MainActivity.kt b/app/src/main/java/com/todoroo/astrid/activity/MainActivity.kt index e0018be9a..b94089ed3 100644 --- a/app/src/main/java/com/todoroo/astrid/activity/MainActivity.kt +++ b/app/src/main/java/com/todoroo/astrid/activity/MainActivity.kt @@ -41,7 +41,6 @@ import org.tasks.dialogs.SortDialog.SortDialogCallback import org.tasks.dialogs.WhatsNewDialog import org.tasks.filters.PlaceFilter import org.tasks.fragments.CommentBarFragment.CommentBarFragmentCallback -import org.tasks.gtasks.PlayServices import org.tasks.injection.InjectingAppCompatActivity import org.tasks.intents.TaskIntents.getTaskListIntent import org.tasks.location.LocationPickerActivity @@ -66,7 +65,6 @@ class MainActivity : InjectingAppCompatActivity(), TaskListFragmentCallbackHandl @Inject lateinit var taskDao: TaskDao @Inject lateinit var localBroadcastManager: LocalBroadcastManager @Inject lateinit var taskCreator: TaskCreator - @Inject lateinit var playServices: PlayServices @Inject lateinit var inventory: Inventory @Inject lateinit var colorProvider: ColorProvider @Inject lateinit var locationDao: LocationDao @@ -489,12 +487,6 @@ class MainActivity : InjectingAppCompatActivity(), TaskListFragmentCallbackHandl taskEditFragment!!.onRemoteListChanged(filter) } - init { - lifecycleScope.launchWhenResumed { - playServices.check(this@MainActivity) - } - } - companion object { /** For indicating the new list screen should be launched at fragment setup time */ const val TOKEN_CREATE_NEW_LIST_NAME = "newListName" // $NON-NLS-1$ diff --git a/app/src/main/java/org/tasks/location/GeofenceApi.kt b/app/src/main/java/org/tasks/location/GeofenceApi.kt index aa9cb907d..b9a78a477 100644 --- a/app/src/main/java/org/tasks/location/GeofenceApi.kt +++ b/app/src/main/java/org/tasks/location/GeofenceApi.kt @@ -13,8 +13,6 @@ class GeofenceApi @Inject constructor( ) { suspend fun registerAll() = locationDao.getPlacesWithGeofences().forEach { update(it) } - suspend fun cancelAll() = locationDao.getPlacesWithGeofences().forEach { cancel(it) } - suspend fun update(taskId: Long) = update(locationDao.getPlaceForTask(taskId)) suspend fun update(place: String) = update(locationDao.getPlace(place)) @@ -28,11 +26,9 @@ class GeofenceApi @Inject constructor( Timber.d("Adding geofence for %s", it) locationService.addGeofences(it) } - ?: cancel(place) - } - - private fun cancel(place: Place?) = place?.let { - Timber.d("Removing geofence for %s", place) - locationService.removeGeofences(place) + ?: place.let { + Timber.d("Removing geofence for %s", it) + locationService.removeGeofences(it) + } } } \ No newline at end of file diff --git a/app/src/main/java/org/tasks/preferences/fragments/LocationPreferences.kt b/app/src/main/java/org/tasks/preferences/fragments/LocationPreferences.kt index b4c5b6c61..683302b24 100644 --- a/app/src/main/java/org/tasks/preferences/fragments/LocationPreferences.kt +++ b/app/src/main/java/org/tasks/preferences/fragments/LocationPreferences.kt @@ -2,44 +2,25 @@ package org.tasks.preferences.fragments import android.content.Intent import android.os.Bundle -import androidx.lifecycle.lifecycleScope -import androidx.preference.Preference import androidx.preference.SwitchPreference import dagger.hilt.android.AndroidEntryPoint -import kotlinx.coroutines.NonCancellable -import kotlinx.coroutines.launch -import kotlinx.coroutines.withContext import org.tasks.R -import org.tasks.Tasks.Companion.IS_GOOGLE_PLAY import org.tasks.billing.Inventory -import org.tasks.gtasks.PlayServices import org.tasks.injection.InjectingPreferenceFragment -import org.tasks.location.GeofenceApi import org.tasks.location.LocationPermissionDialog.Companion.newLocationPermissionDialog import org.tasks.preferences.PermissionChecker import org.tasks.preferences.Preferences -import org.tasks.ui.Toaster import javax.inject.Inject @AndroidEntryPoint class LocationPreferences : InjectingPreferenceFragment() { - @Inject lateinit var playServices: PlayServices - @Inject lateinit var inventory: Inventory - @Inject lateinit var toaster: Toaster - @Inject lateinit var geofenceApi: GeofenceApi @Inject lateinit var permissionChecker: PermissionChecker @Inject lateinit var preferences: Preferences override fun getPreferenceXml() = R.xml.preferences_location override suspend fun setupPreferences(savedInstanceState: Bundle?) { - if (IS_GOOGLE_PLAY) { - findPreference(R.string.p_geofence_service) - .setOnPreferenceChangeListener(this::onGeofenceServiceChanged) - } else { - disable(R.string.p_geofence_service) - } } override fun onResume() { @@ -62,29 +43,6 @@ class LocationPreferences : InjectingPreferenceFragment() { false } } - findPreference(R.string.p_geofence_service).isEnabled = hasPermissions && IS_GOOGLE_PLAY - } - - private fun onGeofenceServiceChanged(preference: Preference, newValue: Any): Boolean = - if (newValue.toString().toIntOrNull() ?: 0 == 1) { - if (!playServices.refreshAndCheck()) { - playServices.resolve(activity) - false - } else { - geofenceChanged() - } - } else { - geofenceChanged() - } - - private fun geofenceChanged(): Boolean { - lifecycleScope.launch { - withContext(NonCancellable) { - geofenceApi.cancelAll() - } - showRestartDialog() - } - return true } override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) = diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index fbe977a04..084c19e16 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -697,9 +697,6 @@ Tasks.org cuenta Suscripción Mostrar título - Servicio de localización de Android - Servicio de localización de Google Play - Servicio de geovallas Recordatorios basados en la ubicación Utilizar el tema de la aplicación Mapas diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index e9cbd3bab..a0093e46d 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -694,9 +694,6 @@ Afficher le titre Géocodeur inversé Thème de la carte - Service de localisation Android - Service de localisation Google Play - Service Geofence Rappels basés sur la localisation Utiliser le thème de l’application Cartes diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml index 9bb74c57d..3e7c51a51 100644 --- a/app/src/main/res/values-hu/strings.xml +++ b/app/src/main/res/values-hu/strings.xml @@ -695,9 +695,6 @@ Alapértelmezett kezdő dátum Kezdés dátuma szerint Cím megjelenítése - Android hely szolgáltatás - Google Play hely szolgáltatás - Geokerítés szolgáltatás Hely alapú emlékeztetők Fordított geokódoló Alkalmazás témájának használata diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index 01bb15242..135f03171 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -693,9 +693,6 @@ Abonnement Toon titel Omgekeerde geocoder - Android-locatieservice - Google Play-locatieservice - Geofence-service Locatiegebaseerde herinneringen Kaartthema Gebruik app-thema diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index 9ab54e053..a669c3bc3 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -717,9 +717,6 @@ Обліковий запис Tasks.org Підписка Показати заголовок - Служба визначення розташування Android - Служба розташування Google Play - Служба геозон Нагадування на основі розташування Використовувати тему застосунку Карти diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 5e510b8f3..e783e3de5 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -687,9 +687,6 @@ Tasks.org 账户 订阅 显示标题 - 安卓位置服务 - Google Play 位置服务 - 地理围栏服务 基于位置的提醒 使用应用主题 地图 diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml index 832ef581c..bc3aeddd3 100644 --- a/app/src/main/res/values/arrays.xml +++ b/app/src/main/res/values/arrays.xml @@ -281,14 +281,4 @@ 1 2 - - - @string/google_play_location_service - @string/android_location_services - - - - 0 - 1 - \ No newline at end of file diff --git a/app/src/main/res/values/keys.xml b/app/src/main/res/values/keys.xml index 2d5316b88..63a314b7a 100644 --- a/app/src/main/res/values/keys.xml +++ b/app/src/main/res/values/keys.xml @@ -382,7 +382,6 @@ p_flipper debug_pro debug_crash_main_queries - warned_play_services sync_ongoing_google_tasks sync_ongoing_caldav sync_ongoing_etesync @@ -399,7 +398,6 @@ Nominatim Android location_based_reminders - geofence_service preference_screen google_tasks_add_to_top google_tasks_position_hack diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index b8f73368c..b54e5e19c 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -703,7 +703,4 @@ File %1$s contained %2$s.\n\n Maps Use app theme Location-based reminders - Geofence service - Google Play location service - Android location service diff --git a/app/src/main/res/xml/preferences_location.xml b/app/src/main/res/xml/preferences_location.xml index fdb77657c..82d477526 100644 --- a/app/src/main/res/xml/preferences_location.xml +++ b/app/src/main/res/xml/preferences_location.xml @@ -10,14 +10,6 @@ android:key="@string/p_location_based_reminders" android:title="@string/enabled" /> - -