Skip to content

Commit 9c1ed3e

Browse files
committed
Avoid ask for external storage permissions if internal storage is used by '.useInternalStorage()'
1 parent 6c1f002 commit 9c1ed3e

4 files changed

Lines changed: 30 additions & 11 deletions

File tree

rx_paparazzo/src/main/java/com/fuck_boilerplate/rx_paparazzo/interactors/GrantPermissions.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,10 @@ public GrantPermissions with(String... permissions) {
3737
}
3838

3939
@Override public Observable<Void> react() {
40+
if (permissions.length == 0) {
41+
return Observable.just(null);
42+
}
43+
4044
return RxPermissions.getInstance(targetUi.activity())
4145
.request(permissions)
4246
.flatMap(new Func1<Boolean, Observable<Void>>() {

rx_paparazzo/src/main/java/com/fuck_boilerplate/rx_paparazzo/internal/di/ApplicationComponentImpl.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,8 @@ public ApplicationComponentImpl(TargetUi ui, Config config) {
3838
grantPermissions = new GrantPermissions(ui);
3939
pickImages = new PickImages(startIntent);
4040
pickImage = new PickImage(startIntent, ui);
41-
camera = new Camera(takePhoto, cropImage, saveImage, grantPermissions, ui);
42-
gallery = new Gallery(grantPermissions, pickImages, pickImage, cropImage, saveImage, ui);
41+
camera = new Camera(takePhoto, cropImage, saveImage, grantPermissions, ui, config);
42+
gallery = new Gallery(grantPermissions, pickImages, pickImage, cropImage, saveImage, ui, config);
4343
}
4444

4545
@Override

rx_paparazzo/src/main/java/com/fuck_boilerplate/rx_paparazzo/workers/Camera.java

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import android.app.Activity;
2121
import android.net.Uri;
2222

23+
import com.fuck_boilerplate.rx_paparazzo.entities.Config;
2324
import com.fuck_boilerplate.rx_paparazzo.entities.Response;
2425
import com.fuck_boilerplate.rx_paparazzo.entities.TargetUi;
2526
import com.fuck_boilerplate.rx_paparazzo.interactors.CropImage;
@@ -36,22 +37,20 @@ public final class Camera extends Worker {
3637
private final SaveImage saveImage;
3738
private final GrantPermissions grantPermissions;
3839
private final TargetUi targetUi;
40+
private final Config config;
3941

40-
public Camera(TakePhoto takePhoto, CropImage cropImage, SaveImage saveImage, GrantPermissions grantPermissions, TargetUi targetUi) {
42+
public Camera(TakePhoto takePhoto, CropImage cropImage, SaveImage saveImage, GrantPermissions grantPermissions, TargetUi targetUi, Config config) {
4143
super(targetUi);
4244
this.takePhoto = takePhoto;
4345
this.cropImage = cropImage;
4446
this.saveImage = saveImage;
4547
this.grantPermissions = grantPermissions;
4648
this.targetUi = targetUi;
49+
this.config = config;
4750
}
4851

4952
public <T> Observable<Response<T, String>> takePhoto() {
50-
String[] permissions = {Manifest.permission.WRITE_EXTERNAL_STORAGE,
51-
Manifest.permission.READ_EXTERNAL_STORAGE,
52-
Manifest.permission.CAMERA};
53-
54-
return grantPermissions.with(permissions).react()
53+
return grantPermissions.with(permissions()).react()
5554
.flatMap(new Func1<Void, Observable<Uri>>() {
5655
@Override
5756
public Observable<Uri> call(Void granted) {
@@ -78,4 +77,14 @@ public Response<T, String> call(String path) {
7877
})
7978
.compose(this.<Response<T, String>>applyOnError());
8079
}
80+
81+
private String[] permissions() {
82+
if (config.useInternalStorage()) {
83+
return new String[] {Manifest.permission.CAMERA};
84+
} else {
85+
return new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE,
86+
Manifest.permission.READ_EXTERNAL_STORAGE,
87+
Manifest.permission.CAMERA};
88+
}
89+
}
8190
}

rx_paparazzo/src/main/java/com/fuck_boilerplate/rx_paparazzo/workers/Gallery.java

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import android.app.Activity;
2121
import android.net.Uri;
2222

23+
import com.fuck_boilerplate.rx_paparazzo.entities.Config;
2324
import com.fuck_boilerplate.rx_paparazzo.entities.Response;
2425
import com.fuck_boilerplate.rx_paparazzo.entities.TargetUi;
2526
import com.fuck_boilerplate.rx_paparazzo.interactors.CropImage;
@@ -40,15 +41,17 @@ public final class Gallery extends Worker {
4041
private final CropImage cropImage;
4142
private final SaveImage saveImage;
4243
private final TargetUi targetUi;
44+
private final Config config;
4345

44-
public Gallery(GrantPermissions grantPermissions, PickImages pickImages, PickImage pickImage, CropImage cropImage, SaveImage saveImage, TargetUi targetUi) {
46+
public Gallery(GrantPermissions grantPermissions, PickImages pickImages, PickImage pickImage, CropImage cropImage, SaveImage saveImage, TargetUi targetUi, Config config) {
4547
super(targetUi);
4648
this.grantPermissions = grantPermissions;
4749
this.pickImages = pickImages;
4850
this.pickImage = pickImage;
4951
this.cropImage = cropImage;
5052
this.saveImage = saveImage;
5153
this.targetUi = targetUi;
54+
this.config = config;
5255
}
5356

5457
public <T> Observable<Response<T, String>> pickImage() {
@@ -117,8 +120,11 @@ public Response<T, List<String>> call(List<String> paths) {
117120
}
118121

119122
private String[] permissions() {
120-
String[] permissions = {Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE};
121-
return permissions;
123+
if (config.useInternalStorage()) {
124+
return new String[] {};
125+
} else {
126+
return new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE};
127+
}
122128
}
123129

124130
}

0 commit comments

Comments
 (0)