chore: permission cleanup wip

This commit is contained in:
Nathan Walker
2022-03-01 11:54:59 -08:00
parent 31c82478b7
commit 144394f3ea
3 changed files with 17 additions and 33 deletions

View File

@@ -1,6 +1,7 @@
import type { PermissionStatus } from './common';
export * from './common';
export type PermissionsType = 'location' | 'camera' | 'microphone' | 'photo' | 'contacts' | 'event' | 'reminder' | 'bluetooth' | 'bluetoothConnect' | 'bluetoothScan' | 'notification' | 'backgroundRefresh' | 'speechRecognition' | 'mediaLocation' | 'mediaLibrary' | 'motion' | 'storage' | 'callPhone' | 'readSms' | 'receiveSms';
export interface PermissionRationale {
title: string;
message: string;
@@ -8,15 +9,14 @@ export interface PermissionRationale {
buttonNegative?: string;
buttonNeutral?: string;
}
export type PermissionCheckOptions = string | { type: string };
export type PermissionRequestOptions = string | { type: string; rationale?: PermissionRationale };
export type PermissionResult<T> = T extends any[] ? { [k: string]: PermissionStatus } : [PermissionStatus, boolean];
export type PermissionCheckOptions = { type: 'always' | null | undefined };
export type PermissionRequestOptions = PermissionCheckOptions & { rationale?: PermissionRationale };
export type PermissionResult = { [k: PermissionsType]: { status: PermissionStatus; nativePermission: Array<string> } };
export class Permissions {
static canOpenSettings(): Promise<boolean>;
static openSettings(): Promise<boolean>;
static getTypes(): Permissions[];
static check<T = Permissions>(permission: T, options?: PermissionCheckOptions): Promise<PermissionResult<T>>;
static request<T = Permissions | Permissions[] | string[]>(permission: T, options?: PermissionRequestOptions): Promise<PermissionResult<T>>;
static checkMultiple<T = Permissions[]>(permissions: T): Promise<PermissionResult<T>>;
static getTypes(): Array<PermissionsType>;
static check(permission: Array<PermissionsType> | PermissionsType, options?: PermissionCheckOptions): Promise<PermissionResult>;
static request(permission: Array<PermissionsType> | PermissionsType, options?: PermissionRequestOptions): Promise<PermissionResult>;
}