Skip to content

Commit

Permalink
code refactoring
Browse files Browse the repository at this point in the history
  • Loading branch information
mumayank committed Jun 10, 2020
1 parent 2d4e1ca commit a62aa06
Show file tree
Hide file tree
Showing 7 changed files with 62 additions and 94 deletions.
2 changes: 1 addition & 1 deletion airlocationlibrary/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ dependencies {
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.72"
api 'com.google.android.gms:play-services-location:17.0.0'
implementation 'com.github.mumayank:AirPermissionsLibraryProject:3.0'
implementation 'com.github.mumayank:AirPermissionsLibraryProject:3.1'
}

repositories {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ import java.lang.ref.WeakReference

@SuppressLint("MissingPermission")
class AirLocation(
private val activity: Activity,
activity: Activity,
private val callback: Callback?,
private val isLocationRequiredOnlyOneTime: Boolean = false,
private val locationInterval: Long = 0,
Expand All @@ -34,14 +34,14 @@ class AirLocation(

private val activityWeakReference = WeakReference(activity)

private val googlePlayApiHelper = GooglePlayApiHelper(activity, activityWeakReference, fun() {
if (ActivityHelper.isActivityWeakReferenceNull(activityWeakReference)) {
private val googlePlayApiHelper = GooglePlayApiHelper(activity, fun() {
if (activityWeakReference.get() == null) {
return
}

getLocationPermissions()
}, fun() {
if (ActivityHelper.isActivityWeakReferenceNull(activityWeakReference)) {
if (activityWeakReference.get() == null) {
return
}

Expand All @@ -59,17 +59,16 @@ class AirLocation(

private val locationOptimizationPermissionHelper = LocationOptimizationPermissionHelper(
activity,
activityWeakReference,
locationInterval,
isLocationRequiredOnlyOneTime,
fun() {
if (ActivityHelper.isActivityWeakReferenceNull(activityWeakReference)) {
if (activityWeakReference.get() == null) {
return
}

getFusedLocation()
}, fun(locationFailedEnum: LocationFailedEnum) {
if (ActivityHelper.isActivityWeakReferenceNull(activityWeakReference)) {
if (activityWeakReference.get() == null) {
return
}

Expand All @@ -95,7 +94,7 @@ class AirLocation(
start of logic
*/
fun start() {
if (ActivityHelper.isActivityWeakReferenceNull(activityWeakReference)) {
if (activityWeakReference.get() == null) {
return
}

Expand All @@ -104,23 +103,23 @@ class AirLocation(
}

private fun makeGooglePlayApiAvailable() {
if (ActivityHelper.isActivityWeakReferenceNull(activityWeakReference)) {
if (activityWeakReference.get() == null) {
return
}

googlePlayApiHelper.makeItAvailable()
}

private fun getLocationPermissions() {
if (ActivityHelper.isActivityWeakReferenceNull(activityWeakReference)) {
if (activityWeakReference.get() == null) {
return
}

airPermissions.request()
}

private fun checkIfInFlightMode() {
if (ActivityHelper.isActivityWeakReferenceNull(activityWeakReference)) {
if (activityWeakReference.get() == null) {
return
}

Expand All @@ -132,22 +131,20 @@ class AirLocation(
}

private fun getOptimizationPermissions() {
if (ActivityHelper.isActivityWeakReferenceNull(activityWeakReference)) {
if (activityWeakReference.get() == null) {
return
}

locationOptimizationPermissionHelper.getPermission()
}

private fun getFusedLocation() {
if (ActivityHelper.isActivityWeakReferenceNull(activityWeakReference)) {
return
}
val activityTemp = activityWeakReference.get() ?: return

fusedLocationClient = LocationServices.getFusedLocationProviderClient(activity)
fusedLocationClient = LocationServices.getFusedLocationProviderClient(activityTemp)
val task = fusedLocationClient.lastLocation
task?.addOnSuccessListener { location: Location? ->
if (ActivityHelper.isActivityWeakReferenceNull(activityWeakReference)) {
if (activityWeakReference.get() == null) {
return@addOnSuccessListener
}

Expand All @@ -160,7 +157,7 @@ class AirLocation(
addLifecycleListener()
}
}?.addOnFailureListener {
if (ActivityHelper.isActivityWeakReferenceNull(activityWeakReference)) {
if (activityWeakReference.get() == null) {
return@addOnFailureListener
}

Expand All @@ -169,14 +166,12 @@ class AirLocation(
}

private fun addLifecycleListener() {
if (ActivityHelper.isActivityWeakReferenceNull(activityWeakReference)) {
return
}
val activityTemp = activityWeakReference.get() ?: return

(activity as LifecycleOwner).lifecycle.addObserver(object : LifecycleObserver {
(activityTemp as LifecycleOwner).lifecycle.addObserver(object : LifecycleObserver {
@OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
fun connectListener() {
if (ActivityHelper.isActivityWeakReferenceNull(activityWeakReference)) {
if (activityWeakReference.get() == null) {
return
}

Expand All @@ -185,7 +180,7 @@ class AirLocation(

@OnLifecycleEvent(Lifecycle.Event.ON_PAUSE)
fun disconnectListener() {
if (ActivityHelper.isActivityWeakReferenceNull(activityWeakReference)) {
if (activityWeakReference.get() == null) {
return
}

Expand All @@ -195,13 +190,13 @@ class AirLocation(
}

private fun requestLocationUpdates() {
if (ActivityHelper.isActivityWeakReferenceNull(activityWeakReference)) {
if (activityWeakReference.get() == null) {
return
}

locationCallback = object : LocationCallback() {
override fun onLocationResult(locationResult: LocationResult?) {
if (ActivityHelper.isActivityWeakReferenceNull(activityWeakReference)) {
if (activityWeakReference.get() == null) {
return
}

Expand All @@ -210,7 +205,7 @@ class AirLocation(
}

override fun onLocationAvailability(locationAvailability: LocationAvailability?) {
if (ActivityHelper.isActivityWeakReferenceNull(activityWeakReference)) {
if (activityWeakReference.get() == null) {
return
}

Expand All @@ -236,7 +231,7 @@ class AirLocation(
permissions: Array<out String>,
grantResults: IntArray
) {
if (ActivityHelper.isActivityWeakReferenceNull(activityWeakReference)) {
if (activityWeakReference.get() == null) {
return
}

Expand All @@ -248,7 +243,7 @@ class AirLocation(
}

fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
if (ActivityHelper.isActivityWeakReferenceNull(activityWeakReference)) {
if (activityWeakReference.get() == null) {
return
}

Expand All @@ -258,7 +253,7 @@ class AirLocation(

airPermissions.onActivityResult(requestCode)
locationOptimizationPermissionHelper.onActivityResult(requestCode, resultCode, data)
googlePlayApiHelper.onActivityResult(requestCode, resultCode, data)
googlePlayApiHelper.onActivityResult(requestCode)
}

}

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -7,31 +7,28 @@ import com.google.android.gms.common.GoogleApiAvailability
import java.lang.ref.WeakReference

class GooglePlayApiHelper(
private val activity: Activity,
private val activityWeakReference: WeakReference<Activity>,
activity: Activity,
private val onSuccess: (() -> Unit)?,
private val onFailure: (() -> Unit)?
) {
private val activityWeakReference = WeakReference(activity)

fun makeItAvailable() {
if (ActivityHelper.isActivityWeakReferenceNull(activityWeakReference)) {
return
}
val activityTemp = activityWeakReference.get() ?: return

val googlePlayServiceAvailability =
GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(activity)
GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(activityTemp)
if (googlePlayServiceAvailability == ConnectionResult.SUCCESS) {
if (ActivityHelper.isActivityWeakReferenceNull(activityWeakReference)) {
if (activityWeakReference.get() == null) {
return
}

onSuccess?.invoke()
} else {
if (ActivityHelper.isActivityWeakReferenceNull(activityWeakReference)) {
return
}
val activityTemp2 = activityWeakReference.get() ?: return

val errorDialog = GoogleApiAvailability.getInstance().getErrorDialog(
activity,
activityTemp2,
googlePlayServiceAvailability,
REQUEST_CODE
) {
Expand All @@ -42,8 +39,8 @@ class GooglePlayApiHelper(

}

fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
if (ActivityHelper.isActivityWeakReferenceNull(activityWeakReference)) {
fun onActivityResult(requestCode: Int) {
if (activityWeakReference.get() == null) {
return
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,75 +13,70 @@ import mumayank.com.airlocationlibrary.AirLocation
import java.lang.ref.WeakReference

class LocationOptimizationPermissionHelper(
private val activity: Activity,
private val activityWeakReference: WeakReference<Activity>,
activity: Activity,
private val locationInterval: Long,
private val isLocationRequiredOnlyOneTime: Boolean,
private val onSuccess: (() -> Unit)?,
private val onFailure: ((locationFailedEnum: AirLocation.LocationFailedEnum) -> Unit)?
) {
private val activityWeakReference = WeakReference(activity)

fun getPermission() {
if (ActivityHelper.isActivityWeakReferenceNull(activityWeakReference)) {
return
}
val activityTemp = activityWeakReference.get() ?: return

// check current location settings
(LocationServices.getSettingsClient(activity))
(LocationServices.getSettingsClient(activityTemp)
.checkLocationSettings(
(LocationSettingsRequest.Builder().addLocationRequest(
getLocationRequest(locationInterval, isLocationRequiredOnlyOneTime)
)).build()
).addOnSuccessListener { locationSettingsResponse ->
if (ActivityHelper.isActivityWeakReferenceNull(activityWeakReference)) {
if (activityWeakReference.get() == null) {
return@addOnSuccessListener
}

onSuccess?.invoke()
}.addOnFailureListener { exception ->
if (exception is ResolvableApiException) {
if (ActivityHelper.isActivityWeakReferenceNull(activityWeakReference)) {
return@addOnFailureListener
}
val activityTemp2 = activityWeakReference.get() ?: return@addOnFailureListener

// Location settings are not satisfied, but this can be fixed by showing the user a dialog.
try {
// Show the dialog by calling startResolutionForResult(), and check the result in onActivityResult().
exception.startResolutionForResult(
activityWeakReference.get() as Activity,
activityTemp2,
REQUEST_CODE
)
} catch (sendEx: IntentSender.SendIntentException) {
onFailure?.invoke(AirLocation.LocationFailedEnum.COULD_NOT_OPTIMIZE_DEVICE_HARDWARE)
}
} else {
if (ActivityHelper.isActivityWeakReferenceNull(activityWeakReference)) {
if (activityWeakReference.get() == null) {
return@addOnFailureListener
}

onFailure?.invoke(AirLocation.LocationFailedEnum.COULD_NOT_OPTIMIZE_DEVICE_HARDWARE)
}
}
})
}

fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
if (ActivityHelper.isActivityWeakReferenceNull(activityWeakReference)) {
return
}
val activityTemp = activityWeakReference.get() ?: return

if (requestCode == REQUEST_CODE) {
if (resultCode == Activity.RESULT_OK) {
onSuccess?.invoke()
} else {
val locationManager =
(activity).getSystemService(Context.LOCATION_SERVICE) as LocationManager
activityTemp.getSystemService(Context.LOCATION_SERVICE) as LocationManager
if (locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
if (ActivityHelper.isActivityWeakReferenceNull(activityWeakReference)) {
if (activityWeakReference.get() == null) {
return
}

onFailure?.invoke(AirLocation.LocationFailedEnum.HIGH_PRECISION_LOCATION_NA_TRY_AGAIN_PREFERABLY_WITH_NETWORK_CONNECTIVITY)
} else {
if (ActivityHelper.isActivityWeakReferenceNull(activityWeakReference)) {
if (activityWeakReference.get() == null) {
return
}

Expand Down
Loading

0 comments on commit a62aa06

Please sign in to comment.