From 1217aff567bff86dcbd03af64f637cde39ea2932 Mon Sep 17 00:00:00 2001 From: Federico Iosue Date: Fri, 23 Aug 2024 21:54:03 +0200 Subject: [PATCH] com.guolindev.permissionx:permissionx replacing com.github.tbruyelle:rxpermissions --- omniNotes/build.gradle | 4 +-- .../android/omninotes/DetailFragment.java | 8 ++--- .../android/omninotes/SettingsFragment.java | 2 +- .../omninotes/helpers/PermissionsHelper.java | 30 ++++++++-------- .../omninotes/utils/GeocodeHelper.java | 36 ++++++------------- 5 files changed, 31 insertions(+), 49 deletions(-) diff --git a/omniNotes/build.gradle b/omniNotes/build.gradle index eba9bba87..1fa952a5d 100644 --- a/omniNotes/build.gradle +++ b/omniNotes/build.gradle @@ -182,9 +182,7 @@ dependencies { implementation 'org.apache.commons:commons-lang3:3.9' implementation 'com.pnikosis:materialish-progress:1.5' implementation 'com.github.paolorotolo:appintro:1.3.0' -// implementation 'io.reactivex.rxjava3:rxandroid:3.0.2' -// implementation 'io.reactivex.rxjava3:rxjava:3.1.5' - implementation 'com.github.tbruyelle:rxpermissions:0.12' + implementation 'com.guolindev.permissionx:permissionx:1.8.0' implementation 'org.ocpsoft.prettytime:prettytime:3.2.7.Final' implementation 'org.bitbucket.cowwoc:diff-match-patch:1.2' implementation 'com.github.bosphere.android-filelogger:filelogger:1.0.7' diff --git a/omniNotes/src/main/java/it/feio/android/omninotes/DetailFragment.java b/omniNotes/src/main/java/it/feio/android/omninotes/DetailFragment.java index 7705cebb1..f0270cfa3 100644 --- a/omniNotes/src/main/java/it/feio/android/omninotes/DetailFragment.java +++ b/omniNotes/src/main/java/it/feio/android/omninotes/DetailFragment.java @@ -718,7 +718,7 @@ private void initViewLocation() { private void getLocation(OnGeoUtilResultListener onGeoUtilResultListener) { PermissionsHelper - .requestPermission(getActivity(), Manifest.permission.ACCESS_FINE_LOCATION, R.string + .requestPermission(this, Manifest.permission.ACCESS_FINE_LOCATION, R.string .permission_coarse_location, binding.snackbarPlaceholder, () -> GeocodeHelper.getLocation(onGeoUtilResultListener)); } @@ -1326,7 +1326,7 @@ private void takePhoto() { return; } - PermissionsHelper.requestPermission(getActivity(), CAMERA, + PermissionsHelper.requestPermission(this, CAMERA, R.string.permission_camera, binding.snackbarPlaceholder, () -> { // Checks for created file validity File f = StorageHelper.createNewAttachmentFile(mainActivity, MIME_TYPE_IMAGE_EXT); @@ -1349,7 +1349,7 @@ private void takeVideo() { return; } - PermissionsHelper.requestPermission(getActivity(), CAMERA, + PermissionsHelper.requestPermission(this, CAMERA, R.string.permission_camera, binding.snackbarPlaceholder, () -> { // File is stored in custom ON folder to speedup the attachment var f = StorageHelper.createNewAttachmentFile(mainActivity, MIME_TYPE_VIDEO_EXT); @@ -1795,7 +1795,7 @@ private void stopPlaying() { } private void startRecording(View v) { - PermissionsHelper.requestPermission(getActivity(), Manifest.permission.RECORD_AUDIO, + PermissionsHelper.requestPermission(this, Manifest.permission.RECORD_AUDIO, R.string.permission_audio_recording, binding.snackbarPlaceholder, () -> { isRecording = true; diff --git a/omniNotes/src/main/java/it/feio/android/omninotes/SettingsFragment.java b/omniNotes/src/main/java/it/feio/android/omninotes/SettingsFragment.java index da984492a..4530b1700 100644 --- a/omniNotes/src/main/java/it/feio/android/omninotes/SettingsFragment.java +++ b/omniNotes/src/main/java/it/feio/android/omninotes/SettingsFragment.java @@ -524,7 +524,7 @@ public void onResume() { enableFileLogging.setOnPreferenceChangeListener((preference, newValue) -> { if ((Boolean) newValue) { PermissionsHelper - .requestPermission(getActivity(), permission.WRITE_EXTERNAL_STORAGE, R + .requestPermission(this, permission.WRITE_EXTERNAL_STORAGE, R .string.permission_external_storage, getActivity().findViewById(R.id.crouton_handle), () -> enableFileLogging.setChecked(true)); diff --git a/omniNotes/src/main/java/it/feio/android/omninotes/helpers/PermissionsHelper.java b/omniNotes/src/main/java/it/feio/android/omninotes/helpers/PermissionsHelper.java index 189503ab6..c45b08144 100644 --- a/omniNotes/src/main/java/it/feio/android/omninotes/helpers/PermissionsHelper.java +++ b/omniNotes/src/main/java/it/feio/android/omninotes/helpers/PermissionsHelper.java @@ -22,13 +22,13 @@ import static com.google.android.material.snackbar.BaseTransientBottomBar.LENGTH_INDEFINITE; import static com.google.android.material.snackbar.BaseTransientBottomBar.LENGTH_LONG; -import android.app.Activity; import android.os.Build.VERSION_CODES; import android.view.View; import androidx.core.app.ActivityCompat; import androidx.core.content.ContextCompat; +import androidx.fragment.app.Fragment; import com.google.android.material.snackbar.Snackbar; -import com.tbruyelle.rxpermissions.RxPermissions; +import com.permissionx.guolindev.PermissionX; import it.feio.android.omninotes.R; import it.feio.android.omninotes.models.listeners.OnPermissionRequestedListener; import lombok.experimental.UtilityClass; @@ -36,23 +36,23 @@ @UtilityClass public class PermissionsHelper { - public static void requestPermission(Activity activity, String permission, - int rationaleDescription, View messageView, OnPermissionRequestedListener onPermissionRequestedListener) { + public static void requestPermission(Fragment fragment, String permission, + int rationaleDescription, View messageView, + OnPermissionRequestedListener onPermissionRequestedListener) { if (skipPermissionRequest(permission)) { onPermissionRequestedListener.onPermissionGranted(); return; } - if (ContextCompat.checkSelfPermission(activity, permission) != PERMISSION_GRANTED) { - - if (ActivityCompat.shouldShowRequestPermissionRationale(activity, permission)) { + if (ContextCompat.checkSelfPermission(fragment.getActivity(), permission) != PERMISSION_GRANTED) { + if (ActivityCompat.shouldShowRequestPermissionRationale(fragment.getActivity(), permission)) { Snackbar.make(messageView, rationaleDescription, LENGTH_INDEFINITE) - .setAction(R.string.ok, view -> requestPermissionExecute(activity, permission, + .setAction(R.string.ok, view -> requestPermissionExecute(fragment, permission, onPermissionRequestedListener, messageView)) .show(); } else { - requestPermissionExecute(activity, permission, onPermissionRequestedListener, messageView); + requestPermissionExecute(fragment, permission, onPermissionRequestedListener, messageView); } } else { if (onPermissionRequestedListener != null) { @@ -65,15 +65,15 @@ private static boolean skipPermissionRequest(String permission) { return BuildHelper.isAbove(VERSION_CODES.Q) && permission.equals(WRITE_EXTERNAL_STORAGE); } - private static void requestPermissionExecute(Activity activity, String permission, + private static void requestPermissionExecute(Fragment fragment, String permission, OnPermissionRequestedListener onPermissionRequestedListener, View messageView) { - RxPermissions.getInstance(activity) - .request(permission) - .subscribe(granted -> { - if (Boolean.TRUE.equals(granted) && onPermissionRequestedListener != null) { + PermissionX.init(fragment) + .permissions(permission) + .request((allGranted, grantedList, deniedList) -> { + if (allGranted) { onPermissionRequestedListener.onPermissionGranted(); } else { - var msg = activity.getString(R.string.permission_not_granted) + ": " + permission; + var msg = fragment.getString(R.string.permission_not_granted) + ": " + permission; Snackbar.make(messageView, msg, LENGTH_LONG).show(); } }); diff --git a/omniNotes/src/main/java/it/feio/android/omninotes/utils/GeocodeHelper.java b/omniNotes/src/main/java/it/feio/android/omninotes/utils/GeocodeHelper.java index 4c2bb4735..708b22e95 100644 --- a/omniNotes/src/main/java/it/feio/android/omninotes/utils/GeocodeHelper.java +++ b/omniNotes/src/main/java/it/feio/android/omninotes/utils/GeocodeHelper.java @@ -31,7 +31,6 @@ import android.text.TextUtils; import io.nlopez.smartlocation.SmartLocation; import io.nlopez.smartlocation.location.config.LocationParams; -import io.nlopez.smartlocation.rx.ObservableFactory; import it.feio.android.omninotes.OmniNotes; import it.feio.android.omninotes.helpers.LogDelegate; import it.feio.android.omninotes.models.listeners.OnGeoUtilResultListener; @@ -45,13 +44,10 @@ import java.util.Collections; import java.util.List; import java.util.Locale; -import java.util.concurrent.TimeUnit; import java.util.regex.Pattern; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; -import rx.Observable; -import rx.Subscriber; public class GeocodeHelper implements LocationListener { @@ -86,33 +82,21 @@ public void onProviderDisabled(String provider) { public static void getLocation(OnGeoUtilResultListener onGeoUtilResultListener) { - SmartLocation.LocationControl bod = SmartLocation.with(OmniNotes.getAppContext()) + SmartLocation.LocationControl bod = SmartLocation.with(OmniNotes.getAppContext()) .location(getProvider(OmniNotes.getAppContext())) .config(LocationParams.NAVIGATION).oneFix(); - Observable locations = ObservableFactory.from(bod).timeout(2, TimeUnit.SECONDS); - locations.subscribe(new Subscriber<>() { - @Override - public void onNext(Location location) { - onGeoUtilResultListener.onLocationRetrieved(location); - unsubscribe(); - } - - @Override - public void onCompleted() { - // Nothing to do - } + var location = bod.oneFix().getLastLocation(); - @Override - public void onError(Throwable e) { - if(checkHighAccuracyLocationProvider(OmniNotes.getAppContext()) == true) { - onGeoUtilResultListener.onLocationUnavailable(); - }else{ - onGeoUtilResultListener.onLocationNotEnabled(); - } - unsubscribe(); + if (location != null) { + onGeoUtilResultListener.onLocationRetrieved(location); + } else { + if (checkHighAccuracyLocationProvider(OmniNotes.getAppContext())) { + onGeoUtilResultListener.onLocationUnavailable(); + } else { + onGeoUtilResultListener.onLocationNotEnabled(); } - }); + } }