import * as React from 'react'; import usePermissions, { UsePermissionsResult } from './usePermissions'; import { QueryClient } from '@tanstack/react-query'; import { AuthProvider } from '../types'; import { CoreAdminContext } from '../core'; import { TestMemoryRouter } from '../routing'; export default { title: 'ra-core/auth/usePermissions', }; export const NoAuthProvider = () => ( {state => inspectState(state)} ); export const NoAuthProviderGetPermissions = () => ( Promise.reject('bad method'), logout: () => Promise.reject('bad method'), checkAuth: () => Promise.reject('bad method'), checkError: () => Promise.reject('bad method'), }} > {state => inspectState(state)} ); export const WithAuthProviderAndGetPermissions = ({ authProvider = { login: () => Promise.reject('bad method'), logout: () => Promise.reject('bad method'), checkAuth: () => Promise.reject('bad method'), checkError: () => Promise.reject('bad method'), getPermissions: () => new Promise(resolve => setTimeout(resolve, 300, 'admin')), }, queryClient, }: { authProvider?: AuthProvider; queryClient?: QueryClient; }) => ( {state => inspectState(state)} ); const UsePermissions = ({ children, }: { children: (state: UsePermissionsResult) => React.ReactNode; }) => { const permissionQueryParams = { retry: false, }; const res = usePermissions({}, permissionQueryParams); return children(res); }; const inspectState = (state: UsePermissionsResult) => ( {state.isPending ? LOADING : null} {state.permissions ? ( PERMISSIONS: {state.permissions} ) : null} {state.error ? ERROR : null} );