import {PermissionNotGrantedError} from 'react-devtools-shared/src/errors/PermissionNotGrantedError';
type SupportedPermission = 'clipboardWrite';
type Permissions = Array<SupportedPermission>;
type PermissionsOptions = {permissions: Permissions};
export function withPermissionsCheck<T: (...$ReadOnlyArray<empty>) => mixed>(
options: PermissionsOptions,
callback: T,
): T | (() => Promise<ReturnType<T>>) {
if (!__IS_CHROME__ && !__IS_EDGE__) {
return callback;
} else {
return async () => {
const granted = await chrome.permissions.request(options);
if (granted) {
return callback();
}
return Promise.reject(new PermissionNotGrantedError());
};
}
}