Skip to content

Commit a4f2673

Browse files
author
Dimitar Tachev
authored
Merge pull request #73 from surdu/perm-promise
requestPermissions now returns Promise
2 parents 901fa7f + 161b3b7 commit a4f2673

File tree

3 files changed

+41
-25
lines changed

3 files changed

+41
-25
lines changed

src/camera.android.ts

+5-11
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import * as imageSourceModule from "tns-core-modules/image-source/image-source";
55
import * as imageAssetModule from "tns-core-modules/image-asset/image-asset";
66
import * as trace from "tns-core-modules/trace/trace";
77
import * as platform from "tns-core-modules/platform/platform";
8+
import * as permissions from "nativescript-permissions";
89

910
let REQUEST_IMAGE_CAPTURE = 3453;
1011
let REQUEST_REQUIRED_PERMISSIONS = 1234;
@@ -155,17 +156,10 @@ export let isAvailable = function () {
155156
};
156157

157158
export let requestPermissions = function () {
158-
if ((<any>android.support.v4.content.ContextCompat).checkSelfPermission(applicationModule.android.currentContext,
159-
(<any>android).Manifest.permission.WRITE_EXTERNAL_STORAGE) !== android.content.pm.PackageManager.PERMISSION_GRANTED ||
160-
(<any>android.support.v4.content.ContextCompat).checkSelfPermission(applicationModule.android.currentContext,
161-
(<any>android).Manifest.permission.CAMERA) !== android.content.pm.PackageManager.PERMISSION_GRANTED) {
162-
163-
(<any>android.support.v4.app.ActivityCompat).requestPermissions(applicationModule.android.currentContext, [
164-
(<any>android).Manifest.permission.CAMERA,
165-
(<any>android).Manifest.permission.WRITE_EXTERNAL_STORAGE
166-
],
167-
REQUEST_REQUIRED_PERMISSIONS);
168-
}
159+
return permissions.requestPermissions([
160+
(<any>android).Manifest.permission.WRITE_EXTERNAL_STORAGE,
161+
(<any>android).Manifest.permission.CAMERA
162+
]);
169163
};
170164

171165
let createDateTimeStamp = function () {

src/camera.ios.ts

+33-14
Original file line numberDiff line numberDiff line change
@@ -189,19 +189,38 @@ export let isAvailable = function () {
189189
};
190190

191191
export let requestPermissions = function () {
192-
let authStatus = PHPhotoLibrary.authorizationStatus();
193-
if (authStatus === PHAuthorizationStatus.NotDetermined) {
194-
PHPhotoLibrary.requestAuthorization((auth) => {
195-
if (auth === PHAuthorizationStatus.Authorized) {
196-
if (trace.isEnabled()) {
197-
trace.write("Application can access photo library assets.", trace.categories.Debug);
198-
}
199-
return;
200-
}
201-
});
202-
} else if (authStatus !== PHAuthorizationStatus.Authorized) {
203-
if (trace.isEnabled()) {
204-
trace.write("Application can not access photo library assets.", trace.categories.Debug);
192+
return new Promise(function(resolve, reject) {
193+
let authStatus = PHPhotoLibrary.authorizationStatus();
194+
switch (authStatus) {
195+
case PHAuthorizationStatus.NotDetermined: {
196+
PHPhotoLibrary.requestAuthorization((auth) => {
197+
if (auth === PHAuthorizationStatus.Authorized) {
198+
if (trace.isEnabled()) {
199+
trace.write("Application can access photo library assets.", trace.categories.Debug);
200+
}
201+
resolve();
202+
}
203+
else {
204+
reject();
205+
}
206+
});
207+
break;
205208
}
206-
}
209+
case PHAuthorizationStatus.Authorized: {
210+
if (trace.isEnabled()) {
211+
trace.write("Application can access photo library assets.", trace.categories.Debug);
212+
}
213+
resolve();
214+
break;
215+
}
216+
case PHAuthorizationStatus.Restricted:
217+
case PHAuthorizationStatus.Denied: {
218+
if (trace.isEnabled()) {
219+
trace.write("Application can not access photo library assets.", trace.categories.Debug);
220+
}
221+
reject();
222+
break;
223+
}
224+
}
225+
});
207226
};

src/package.json

+3
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,9 @@
4040
"images"
4141
],
4242
"author": "NativeScript team",
43+
"dependencies": {
44+
"nativescript-permissions": "^1.2.3"
45+
},
4346
"devDependencies": {
4447
"tns-core-modules": "^3.0.0",
4548
"tns-platform-declarations": "^3.0.0",

0 commit comments

Comments
 (0)