UNPKG

para-bridge-demo

Version:

a bridge api for js-ios/andriod rest

59 lines (49 loc) 1.6 kB
import { BridgePlugin } from '../bridge'; import { get } from 'para-utils'; type permissionNames = 'location' | 'storage' | 'telephone' | 'camera' | 'sms' | 'contacts'; type QueryPermissionItems = { [index in permissionNames]?: boolean; }; interface IQueryPermissionParam { names?: permissionNames[]; } interface IQueryPermissionItems { name: permissionNames; isOpen: 'true' | 'false'; } interface IQueryPermissionResult { // NTV 版本号 6.0.1 version: string; // 返回的权限列表+状态 permissions: IQueryPermissionItems[]; } export class QueryPermission<K> extends BridgePlugin<IQueryPermissionParam, K>{ protected get ntvPluginName() { return "_ntv_util_query_permission"; } protected get availableMinVersion() { return "1.0.0"; } protected bridgeExecChrome(pluginName: string | undefined): void { // 可针对不同运行环境实现特定的调用逻辑来MOCK,弥补平台差异性. throw new Error('QueryPermission() 未针对当前环境实现'); } } /** * 查询应用权限是否打开 * @param names 指定查询的权限名称 * @returns 返回对象 */ export const queryPermission = (...names: permissionNames[]) => { return new QueryPermission<IQueryPermissionResult>({ names }).invokeOnce().then(result => { const cbData = result.cbData; const newResult: QueryPermissionItems = {}; get(cbData, 'permissions', []).forEach((item: IQueryPermissionItems) => { newResult[item.name] = Boolean(item.isOpen); }); return { version: cbData.version, permissions: newResult, } }); }