Looking at these two examples which one is better in your opinion, and why?
import {usePolicy} from 'shared/authorization';
import {productPolicy} from 'products';
...
function Product() {
const [{loading}, directives] = usePolicy(productPolicy);
return (
<Page>
{directives.edit.allowed ? <ProductStatus /> : <ViewOnlyProductStatus />}
...
</Page>
);
}
import {PolicyAuth} from 'shared/authorization';
import {productPolicy} from 'products';
...
function Product() {
return (
<Page>
<PolicyAuth
policy={productPolicy}
directive="edit"
onEval={({allowed, message}) => allowed ? <ProductStatus /> : <ViewOnlyProductStatus />}
onLoading={() => <Skeleton />}
/>
...
</Page>
);
}
import {usePolicy} from 'shared/authorization';
import {productPolicy} from 'products';
import {collectionPolicy} from 'collections';
...
function Product() {
const [{loading, error}, producutDirectives, collectionDirectives] = usePolicy(productPolicy, collectionPolicy);
return (
<Page>
{producutDirectives.edit.allowed ? <ProductStatus /> : <ViewOnlyProductStatus />}
...
</Page>
);
}