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 { 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<string>) {
|
||||
async checkPermission(args, multiple?: Array<PermissionsType>) {
|
||||
const perm = args.object.bindingContext.name;
|
||||
try {
|
||||
console.log('checkPermission', perm);
|
||||
|
||||
@@ -5,4 +5,5 @@ export enum PermissionStatus {
|
||||
restricted = 'restricted',
|
||||
undetermined = 'undetermined',
|
||||
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;
|
||||
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<string> } };
|
||||
|
||||
|
||||
@@ -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<PermissionResult> {
|
||||
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<CBPeripheralManagerDelegate>;
|
||||
@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<PermissionResult> {
|
||||
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<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()) {
|
||||
Trace.write(`request ${permission}`, Trace.categories.Permissions, Trace.messageType.info);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user