import { CreatePermissionFunctionOptions, PermissionFunctionWithDialog } from '@apps-in-toss/types'; import { openPermissionDialog } from './openPermissionDialog'; import { requestPermission } from './requestPermission'; import { getPermission } from '../getPermission'; export function createPermissionFunction any>({ handler, permission, error, }: CreatePermissionFunctionOptions): PermissionFunctionWithDialog { const permissionFunction = async (...args: Parameters): Promise>> => { const permissionStatus = await requestPermission(permission); if (permissionStatus === 'denied') { throw new error(); } return handler(...args); }; permissionFunction.getPermission = () => getPermission(permission); permissionFunction.openPermissionDialog = () => openPermissionDialog(permission); return permissionFunction as any; }