Explorar o código

Improve asking for permissions

Signed-off-by: Mario Danic <mario@lovelyhq.com>
Mario Danic %!s(int64=7) %!d(string=hai) anos
pai
achega
76571ff16f

+ 25 - 9
app/src/main/java/com/nextcloud/talk/controllers/CallsListController.java

@@ -20,6 +20,7 @@
 
 package com.nextcloud.talk.controllers;
 
+import android.Manifest;
 import android.app.SearchManager;
 import android.content.Context;
 import android.content.Intent;
@@ -82,6 +83,7 @@ import io.reactivex.android.schedulers.AndroidSchedulers;
 import io.reactivex.disposables.Disposable;
 import io.reactivex.schedulers.Schedulers;
 import retrofit2.HttpException;
+import ru.alexbykov.nopermission.PermissionHelper;
 
 @AutoInjector(NextcloudTalkApplication.class)
 public class CallsListController extends BaseController implements SearchView.OnQueryTextListener,
@@ -388,15 +390,29 @@ public class CallsListController extends BaseController implements SearchView.On
     @Override
     public boolean onItemClick(int position) {
         if (callItems.size() > position) {
-            overridePushHandler(new NoOpControllerChangeHandler());
-            overridePopHandler(new NoOpControllerChangeHandler());
-            CallItem callItem = callItems.get(position);
-            Intent callIntent = new Intent(getActivity(), CallActivity.class);
-            BundleBuilder bundleBuilder = new BundleBuilder(new Bundle());
-            bundleBuilder.putString("roomToken", callItem.getModel().getToken());
-            bundleBuilder.putParcelable("userEntity", Parcels.wrap(userEntity));
-            callIntent.putExtras(bundleBuilder.build());
-            startActivity(callIntent);
+
+            PermissionHelper permissionHelper = new PermissionHelper(getActivity());
+            permissionHelper.check(Manifest.permission.CAMERA, Manifest.permission.RECORD_AUDIO)
+                    .onSuccess(new Runnable() {
+                        @Override
+                        public void run() {
+                            overridePushHandler(new NoOpControllerChangeHandler());
+                            overridePopHandler(new NoOpControllerChangeHandler());
+                            CallItem callItem = callItems.get(position);
+                            Intent callIntent = new Intent(getActivity(), CallActivity.class);
+                            BundleBuilder bundleBuilder = new BundleBuilder(new Bundle());
+                            bundleBuilder.putString("roomToken", callItem.getModel().getToken());
+                            bundleBuilder.putParcelable("userEntity", Parcels.wrap(userEntity));
+                            callIntent.putExtras(bundleBuilder.build());
+                            startActivity(callIntent);
+                        }
+                    })
+                    .onDenied(new Runnable() {
+                        @Override
+                        public void run() {
+                        }
+                    })
+                    .run();
         }
 
         return true;

+ 23 - 8
app/src/main/java/com/nextcloud/talk/controllers/ContactsController.java

@@ -20,6 +20,7 @@
 
 package com.nextcloud.talk.controllers;
 
+import android.Manifest;
 import android.app.SearchManager;
 import android.content.Context;
 import android.content.Intent;
@@ -85,6 +86,7 @@ import io.reactivex.android.schedulers.AndroidSchedulers;
 import io.reactivex.disposables.Disposable;
 import io.reactivex.schedulers.Schedulers;
 import retrofit2.HttpException;
+import ru.alexbykov.nopermission.PermissionHelper;
 
 @AutoInjector(NextcloudTalkApplication.class)
 public class ContactsController extends BaseController implements SearchView.OnQueryTextListener,
@@ -455,14 +457,27 @@ public class ContactsController extends BaseController implements SearchView.OnQ
 
                         @Override
                         public void onNext(RoomOverall roomOverall) {
-                            overridePushHandler(new NoOpControllerChangeHandler());
-                            overridePopHandler(new NoOpControllerChangeHandler());
-                            Intent callIntent = new Intent(getActivity(), CallActivity.class);
-                            BundleBuilder bundleBuilder = new BundleBuilder(new Bundle());
-                            bundleBuilder.putString("roomToken", roomOverall.getOcs().getData().getToken());
-                            bundleBuilder.putParcelable("userEntity", Parcels.wrap(userEntity));
-                            callIntent.putExtras(bundleBuilder.build());
-                            startActivity(callIntent);
+                            PermissionHelper permissionHelper = new PermissionHelper(getActivity());
+                            permissionHelper.check(Manifest.permission.CAMERA, Manifest.permission.RECORD_AUDIO)
+                                    .onSuccess(new Runnable() {
+                                        @Override
+                                        public void run() {
+                                            overridePushHandler(new NoOpControllerChangeHandler());
+                                            overridePopHandler(new NoOpControllerChangeHandler());
+                                            Intent callIntent = new Intent(getActivity(), CallActivity.class);
+                                            BundleBuilder bundleBuilder = new BundleBuilder(new Bundle());
+                                            bundleBuilder.putString("roomToken", roomOverall.getOcs().getData().getToken());
+                                            bundleBuilder.putParcelable("userEntity", Parcels.wrap(userEntity));
+                                            callIntent.putExtras(bundleBuilder.build());
+                                            startActivity(callIntent);
+                                        }
+                                    })
+                                    .onDenied(new Runnable() {
+                                        @Override
+                                        public void run() {
+                                        }
+                                    })
+                                    .run();
                         }
 
                         @Override