mirror of
https://github.com/NativeScript/NativeScript.git
synced 2025-11-05 13:26:48 +08:00
feat: permissionresult return type for all
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
import { Observable, EventData, Page, Trace } from '@nativescript/core';
|
import { Observable, EventData, Page, Trace } from '@nativescript/core';
|
||||||
import { Permissions } from '@nativescript/permissions';
|
import { Permissions, PermissionsType } from '@nativescript/permissions';
|
||||||
|
|
||||||
let page: Page;
|
let page: Page;
|
||||||
|
|
||||||
@@ -35,7 +35,7 @@ export class PermissionsModel extends Observable {
|
|||||||
super();
|
super();
|
||||||
}
|
}
|
||||||
|
|
||||||
async checkPermission(args, multiple?: Array<string>) {
|
async checkPermission(args, multiple?: Array<PermissionsType>) {
|
||||||
const perm = args.object.bindingContext.name;
|
const perm = args.object.bindingContext.name;
|
||||||
try {
|
try {
|
||||||
console.log('checkPermission', perm);
|
console.log('checkPermission', perm);
|
||||||
|
|||||||
@@ -5,4 +5,5 @@ export enum PermissionStatus {
|
|||||||
restricted = 'restricted',
|
restricted = 'restricted',
|
||||||
undetermined = 'undetermined',
|
undetermined = 'undetermined',
|
||||||
never_ask_again = 'never_ask_again',
|
never_ask_again = 'never_ask_again',
|
||||||
|
blocked = 'blocked',
|
||||||
}
|
}
|
||||||
|
|||||||
2
packages/permissions/index.d.ts
vendored
2
packages/permissions/index.d.ts
vendored
@@ -9,7 +9,7 @@ export interface PermissionRationale {
|
|||||||
buttonNegative?: string;
|
buttonNegative?: string;
|
||||||
buttonNeutral?: 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 PermissionRequestOptions = PermissionCheckOptions & { rationale?: PermissionRationale };
|
||||||
export type PermissionResult = { [k: PermissionsType]: { status: PermissionStatus; nativePermission: Array<string> } };
|
export type PermissionResult = { [k: PermissionsType]: { status: PermissionStatus; nativePermission: Array<string> } };
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { Device, Trace } from '@nativescript/core';
|
import { Device, Trace } from '@nativescript/core';
|
||||||
import { PermissionStatus } from './common';
|
import { PermissionStatus } from './common';
|
||||||
import { PermissionCheckOptions, PermissionsType, PermissionRequestOptions } from '.';
|
import { PermissionCheckOptions, PermissionsType, PermissionRequestOptions, PermissionResult } from '.';
|
||||||
|
|
||||||
export * from './common';
|
export * from './common';
|
||||||
|
|
||||||
@@ -84,7 +84,7 @@ export namespace PermissionsIOS {
|
|||||||
// });
|
// });
|
||||||
// }
|
// }
|
||||||
}
|
}
|
||||||
export function request(type): Promise<[PermissionStatus, boolean]> {
|
export function request(type): Promise<PermissionResult> {
|
||||||
const status = getStatusForType(type);
|
const status = getStatusForType(type);
|
||||||
if (Trace.isEnabled()) {
|
if (Trace.isEnabled()) {
|
||||||
Trace.write(`NSPLocation request ${type}`, Trace.categories.Permissions, Trace.messageType.info);
|
Trace.write(`NSPLocation request ${type}`, Trace.categories.Permissions, Trace.messageType.info);
|
||||||
@@ -152,7 +152,7 @@ export namespace PermissionsIOS {
|
|||||||
}
|
}
|
||||||
namespace NSPBluetooth {
|
namespace NSPBluetooth {
|
||||||
let status: PermissionStatus = PermissionStatus.undetermined;
|
let status: PermissionStatus = PermissionStatus.undetermined;
|
||||||
export function getStatus(): [PermissionStatus, boolean] {
|
export function getStatus(): PermissionStatus {
|
||||||
const status2 = CBPeripheralManager.authorizationStatus();
|
const status2 = CBPeripheralManager.authorizationStatus();
|
||||||
switch (status2) {
|
switch (status2) {
|
||||||
case CBPeripheralManagerAuthorizationStatus.Authorized:
|
case CBPeripheralManagerAuthorizationStatus.Authorized:
|
||||||
@@ -167,7 +167,7 @@ export namespace PermissionsIOS {
|
|||||||
default:
|
default:
|
||||||
status = PermissionStatus.undetermined;
|
status = PermissionStatus.undetermined;
|
||||||
}
|
}
|
||||||
return [status, true];
|
return status;
|
||||||
}
|
}
|
||||||
export type SubCBPeripheralManagerDelegate = Partial<CBPeripheralManagerDelegate>;
|
export type SubCBPeripheralManagerDelegate = Partial<CBPeripheralManagerDelegate>;
|
||||||
@NativeClass
|
@NativeClass
|
||||||
@@ -248,7 +248,7 @@ export namespace PermissionsIOS {
|
|||||||
return AVMediaTypeVideo;
|
return AVMediaTypeVideo;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
export function getStatus(type?: string): [PermissionStatus, boolean] {
|
export function getStatus(type?: string): PermissionStatus {
|
||||||
const videoStatus = AVCaptureDevice.authorizationStatusForMediaType(typeFromString(type));
|
const videoStatus = AVCaptureDevice.authorizationStatusForMediaType(typeFromString(type));
|
||||||
switch (videoStatus) {
|
switch (videoStatus) {
|
||||||
case AVAuthorizationStatus.Authorized:
|
case AVAuthorizationStatus.Authorized:
|
||||||
@@ -263,10 +263,10 @@ export namespace PermissionsIOS {
|
|||||||
default:
|
default:
|
||||||
status = PermissionStatus.undetermined;
|
status = PermissionStatus.undetermined;
|
||||||
}
|
}
|
||||||
return [status, true];
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
export function request(type): Promise<[PermissionStatus, boolean]> {
|
export function request(type): Promise<PermissionResult> {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
AVCaptureDevice.requestAccessForMediaTypeCompletionHandler(typeFromString(type), (granted) => resolve(getStatus(type)));
|
AVCaptureDevice.requestAccessForMediaTypeCompletionHandler(typeFromString(type), (granted) => resolve(getStatus(type)));
|
||||||
});
|
});
|
||||||
@@ -274,7 +274,7 @@ export namespace PermissionsIOS {
|
|||||||
}
|
}
|
||||||
namespace NSPSpeechRecognition {
|
namespace NSPSpeechRecognition {
|
||||||
let status: PermissionStatus = PermissionStatus.undetermined;
|
let status: PermissionStatus = PermissionStatus.undetermined;
|
||||||
export function getStatus(): [PermissionStatus, boolean] {
|
export function getStatus(): PermissionStatus {
|
||||||
const speechStatus = SFSpeechRecognizer.authorizationStatus();
|
const speechStatus = SFSpeechRecognizer.authorizationStatus();
|
||||||
switch (speechStatus) {
|
switch (speechStatus) {
|
||||||
case SFSpeechRecognizerAuthorizationStatus.Authorized:
|
case SFSpeechRecognizerAuthorizationStatus.Authorized:
|
||||||
@@ -289,7 +289,7 @@ export namespace PermissionsIOS {
|
|||||||
default:
|
default:
|
||||||
status = PermissionStatus.undetermined;
|
status = PermissionStatus.undetermined;
|
||||||
}
|
}
|
||||||
return [status, true];
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
export function request(): Promise<[PermissionStatus, boolean]> {
|
export function request(): Promise<[PermissionStatus, boolean]> {
|
||||||
@@ -731,7 +731,7 @@ export class Permissions {
|
|||||||
|
|
||||||
return PermissionsIOS.getPermissionStatus(permission, options?.type || DEFAULTS[permission]);
|
return PermissionsIOS.getPermissionStatus(permission, options?.type || DEFAULTS[permission]);
|
||||||
}
|
}
|
||||||
static async request<T extends IOSPermissionTypes | IOSPermissionTypes[]>(permission: T, options?: PermissionRequestOptions): Promise<Result<T>> {
|
static async request<T extends IOSPermissionTypes | IOSPermissionTypes[]>(permission: T, options?: PermissionRequestOptions): Promise<PermissionResult> {
|
||||||
if (Trace.isEnabled()) {
|
if (Trace.isEnabled()) {
|
||||||
Trace.write(`request ${permission}`, Trace.categories.Permissions, Trace.messageType.info);
|
Trace.write(`request ${permission}`, Trace.categories.Permissions, Trace.messageType.info);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user