diff --git a/ui/src/app/admin/container/ApprovalActions.js b/ui/src/app/admin/container/ApprovalActions.js
index 2d4119727..c4b9ae3ed 100644
--- a/ui/src/app/admin/container/ApprovalActions.js
+++ b/ui/src/app/admin/container/ApprovalActions.js
@@ -1,6 +1,5 @@
import React from 'react';
-import { DeleteConfirmation } from '../../core/components/DeleteConfirmation';
-import { useMetadataApprover, useMetadataEntity } from '../../metadata/hooks/api';
+import { useMetadataApprover } from '../../metadata/hooks/api';
import { NotificationContext, createNotificationAction, NotificationTypes } from '../../notifications/hoc/Notifications';
@@ -8,37 +7,17 @@ export function ApprovalActions ({type = 'source', children}) {
const { dispatch } = React.useContext(NotificationContext);
- const { del, response } = useMetadataEntity('source', {
- cachePolicy: 'no-cache'
- });
-
- const activator = useMetadataApprover('source');
+ const approver = useMetadataApprover('source');
async function approveEntity(entity, enabled, cb = () => {}) {
- await activator.patch(`${type === 'source' ? entity.id : entity.resourceId}/${enabled ? 'approve' : 'unapprove'}`);
- if (activator?.response.ok) {
+ await approver.patch(`${type === 'source' ? entity.id : entity.resourceId}/${enabled ? 'approve' : 'unapprove'}`);
+ if (approver?.response.ok) {
dispatch(createNotificationAction(
`Metadata ${type} has been ${enabled ? 'approved' : 'unapproved'}.`
));
cb();
} else {
- const { errorCode, errorMessage, cause } = activator?.response?.data;
- dispatch(createNotificationAction(
- `${errorCode}: ${errorMessage} ${cause ? `-${cause}` : ''}`,
- NotificationTypes.ERROR
- ));
- }
- }
-
- async function deleteEntity(id, cb = () => {}) {
- await del(`/${id}`);
- if (response.ok) {
- dispatch(createNotificationAction(
- `Metadata ${type} has been deleted.`
- ));
- cb();
- } else {
- const { errorCode, errorMessage, cause } = activator?.response?.data;
+ const { errorCode, errorMessage, cause } = approver?.response?.data;
dispatch(createNotificationAction(
`${errorCode}: ${errorMessage} ${cause ? `-${cause}` : ''}`,
NotificationTypes.ERROR
@@ -47,10 +26,6 @@ export function ApprovalActions ({type = 'source', children}) {
}
return (
-
- {(block) =>
- <>{children(approveEntity, (id, cb) => block(() => deleteEntity(id, cb)))}>
- }
-
+ <>{children(approveEntity)}>
);
}
\ No newline at end of file
diff --git a/ui/src/app/core/user/UserContext.js b/ui/src/app/core/user/UserContext.js
index 2390c4d3a..dc39fc74d 100644
--- a/ui/src/app/core/user/UserContext.js
+++ b/ui/src/app/core/user/UserContext.js
@@ -75,10 +75,6 @@ function useCanEnable() {
return isAdmin || isEnabler;
}
-function useCanApprove() {
- return true;
-}
-
function useIsApprover() {
const user = useCurrentUser();
return user.canApprove;
@@ -114,7 +110,6 @@ export {
useIsAdminOrInGroup,
useIsApprover,
useCanEnable,
- useCanApprove,
useCurrentUserLoading,
useCurrentUserLoader,
useUserGroupRegexValidator,
diff --git a/ui/src/app/metadata/domain/source/component/SourceList.js b/ui/src/app/metadata/domain/source/component/SourceList.js
index 1ef91e500..b8af68e82 100644
--- a/ui/src/app/metadata/domain/source/component/SourceList.js
+++ b/ui/src/app/metadata/domain/source/component/SourceList.js
@@ -34,8 +34,8 @@ export default function SourceList({ entities, onDelete, onEnable, onApprove, on
Entity ID |
Author |
Created Date |
+ Approval |
Enabled |
- {onApprove && Approval | }
{isAdmin && onChangeGroup && Group | }
{onDelete && isAdmin &&
@@ -62,38 +62,44 @@ export default function SourceList({ entities, onDelete, onEnable, onApprove, on
| |
- {onEnable && (canEnable && source.approved) ?
+ {onApprove ?
onEnable(source, checked)}
- checked={source.serviceEnabled}
+ aria-label={translator(source.approved ? 'label.disapprove' : 'label.approve')}
+ onChange={({ target: { checked } }) => onApprove(source, checked)}
+ checked={source.approved}
>
:
-
-
+
+
- }
+ }
|
- {onApprove &&
+ {onEnable && (canEnable && source.approved) ?
onApprove(source, checked)}
- checked={source.approved}
+ aria-label={translator(source.serviceEnabled ? 'label.disable' : 'label.enable')}
+ onChange={({ target: { checked } }) => onEnable(source, checked)}
+ checked={source.serviceEnabled}
>
+ :
+
+
+
+ }
|
- }
+
+
{isAdmin && onChangeGroup &&
diff --git a/ui/src/app/metadata/view/MetadataOptions.js b/ui/src/app/metadata/view/MetadataOptions.js
index 73b5a4802..5740e93ca 100644
--- a/ui/src/app/metadata/view/MetadataOptions.js
+++ b/ui/src/app/metadata/view/MetadataOptions.js
@@ -20,7 +20,8 @@ import { MetadataFilterConfigurationList } from '../domain/filter/component/Meta
import { MetadataFilterTypes } from '../domain/filter';
import { useMetadataSchema } from '../hooks/schema';
import { FilterableProviders } from '../domain/provider';
-import { useCanEnable, useIsAdmin } from '../../core/user/UserContext';
+import { useCanEnable, useIsAdmin, useIsApprover } from '../../core/user/UserContext';
+import { ApprovalActions } from '../../admin/container/ApprovalActions';
export function MetadataOptions ({reload}) {
@@ -54,6 +55,7 @@ export function MetadataOptions ({reload}) {
const canEnable = useCanEnable();
const isAdmin = useIsAdmin();
+ const canApprove = useIsApprover();
return (
@@ -78,6 +80,19 @@ export function MetadataOptions ({reload}) {
}
+ {canApprove &&
+
+ {(approve) =>
+
+ }
+
+ }
{type === 'source' && remove && isAdmin &&
|