diff --git a/apps/toolbox/src/pages/permissions.ts b/apps/toolbox/src/pages/permissions.ts index 84ef1bd13..1d494084f 100644 --- a/apps/toolbox/src/pages/permissions.ts +++ b/apps/toolbox/src/pages/permissions.ts @@ -1,5 +1,5 @@ import { Observable, EventData, Page, Trace } from '@nativescript/core'; -import { Permissions } from '@nativescript/permissions'; +import { Permissions, PermissionsType } from '@nativescript/permissions'; let page: Page; @@ -35,7 +35,7 @@ export class PermissionsModel extends Observable { super(); } - async checkPermission(args, multiple?: Array) { + async checkPermission(args, multiple?: Array) { const perm = args.object.bindingContext.name; try { console.log('checkPermission', perm); diff --git a/packages/permissions/common.ts b/packages/permissions/common.ts index b90ff42e1..9a82bbd64 100644 --- a/packages/permissions/common.ts +++ b/packages/permissions/common.ts @@ -5,4 +5,5 @@ export enum PermissionStatus { restricted = 'restricted', undetermined = 'undetermined', never_ask_again = 'never_ask_again', + blocked = 'blocked', } diff --git a/packages/permissions/index.d.ts b/packages/permissions/index.d.ts index b12cb6737..40c604f8e 100644 --- a/packages/permissions/index.d.ts +++ b/packages/permissions/index.d.ts @@ -9,7 +9,7 @@ export interface PermissionRationale { buttonNegative?: string; buttonNeutral?: string; } -export type PermissionCheckOptions = { type: 'always' | null | undefined }; +export type PermissionCheckOptions = { type: 'always' | 'none' | null | undefined }; export type PermissionRequestOptions = PermissionCheckOptions & { rationale?: PermissionRationale }; export type PermissionResult = { [k: PermissionsType]: { status: PermissionStatus; nativePermission: Array } }; diff --git a/packages/permissions/index.ios.ts b/packages/permissions/index.ios.ts index dcd476dd0..2b1fa50b5 100644 --- a/packages/permissions/index.ios.ts +++ b/packages/permissions/index.ios.ts @@ -1,6 +1,6 @@ import { Device, Trace } from '@nativescript/core'; import { PermissionStatus } from './common'; -import { PermissionCheckOptions, PermissionsType, PermissionRequestOptions } from '.'; +import { PermissionCheckOptions, PermissionsType, PermissionRequestOptions, PermissionResult } from '.'; export * from './common'; @@ -84,7 +84,7 @@ export namespace PermissionsIOS { // }); // } } - export function request(type): Promise<[PermissionStatus, boolean]> { + export function request(type): Promise { const status = getStatusForType(type); if (Trace.isEnabled()) { Trace.write(`NSPLocation request ${type}`, Trace.categories.Permissions, Trace.messageType.info); @@ -152,7 +152,7 @@ export namespace PermissionsIOS { } namespace NSPBluetooth { let status: PermissionStatus = PermissionStatus.undetermined; - export function getStatus(): [PermissionStatus, boolean] { + export function getStatus(): PermissionStatus { const status2 = CBPeripheralManager.authorizationStatus(); switch (status2) { case CBPeripheralManagerAuthorizationStatus.Authorized: @@ -167,7 +167,7 @@ export namespace PermissionsIOS { default: status = PermissionStatus.undetermined; } - return [status, true]; + return status; } export type SubCBPeripheralManagerDelegate = Partial; @NativeClass @@ -248,7 +248,7 @@ export namespace PermissionsIOS { return AVMediaTypeVideo; } } - export function getStatus(type?: string): [PermissionStatus, boolean] { + export function getStatus(type?: string): PermissionStatus { const videoStatus = AVCaptureDevice.authorizationStatusForMediaType(typeFromString(type)); switch (videoStatus) { case AVAuthorizationStatus.Authorized: @@ -263,10 +263,10 @@ export namespace PermissionsIOS { default: status = PermissionStatus.undetermined; } - return [status, true]; + return status; } - export function request(type): Promise<[PermissionStatus, boolean]> { + export function request(type): Promise { return new Promise((resolve, reject) => { AVCaptureDevice.requestAccessForMediaTypeCompletionHandler(typeFromString(type), (granted) => resolve(getStatus(type))); }); @@ -274,7 +274,7 @@ export namespace PermissionsIOS { } namespace NSPSpeechRecognition { let status: PermissionStatus = PermissionStatus.undetermined; - export function getStatus(): [PermissionStatus, boolean] { + export function getStatus(): PermissionStatus { const speechStatus = SFSpeechRecognizer.authorizationStatus(); switch (speechStatus) { case SFSpeechRecognizerAuthorizationStatus.Authorized: @@ -289,7 +289,7 @@ export namespace PermissionsIOS { default: status = PermissionStatus.undetermined; } - return [status, true]; + return status; } export function request(): Promise<[PermissionStatus, boolean]> { @@ -731,7 +731,7 @@ export class Permissions { return PermissionsIOS.getPermissionStatus(permission, options?.type || DEFAULTS[permission]); } - static async request(permission: T, options?: PermissionRequestOptions): Promise> { + static async request(permission: T, options?: PermissionRequestOptions): Promise { if (Trace.isEnabled()) { Trace.write(`request ${permission}`, Trace.categories.Permissions, Trace.messageType.info); }