mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
PublicDashboards: Reshare public dashboard to recipient API call (#64178)
This commit is contained in:
parent
e217854c24
commit
10476043ea
@ -101,28 +101,20 @@ export const publicDashboardApi = createApi({
|
||||
},
|
||||
invalidatesTags: (result, error, { payload }) => [{ type: 'PublicDashboard', id: payload.dashboardUid }],
|
||||
}),
|
||||
addEmailSharing: builder.mutation<void, { recipient: string; dashboardUid: string; uid: string }>({
|
||||
query: ({ recipient, uid }) => ({
|
||||
url: `/public-dashboards/${uid}/share/recipients`,
|
||||
method: 'POST',
|
||||
data: { recipient },
|
||||
addRecipient: builder.mutation<void, { recipient: string; dashboardUid: string; uid: string }>({
|
||||
query: () => ({
|
||||
url: '',
|
||||
}),
|
||||
async onQueryStarted(_, { dispatch, queryFulfilled }) {
|
||||
await queryFulfilled;
|
||||
dispatch(notifyApp(createSuccessNotification('Invite sent!')));
|
||||
},
|
||||
invalidatesTags: (result, error, { dashboardUid }) => [{ type: 'PublicDashboard', id: dashboardUid }],
|
||||
}),
|
||||
deleteEmailSharing: builder.mutation<void, { recipientUid: string; dashboardUid: string; uid: string }>({
|
||||
query: ({ uid, recipientUid }) => ({
|
||||
url: `/public-dashboards/${uid}/share/recipients/${recipientUid}`,
|
||||
method: 'DELETE',
|
||||
deleteRecipient: builder.mutation<void, { recipientUid: string; dashboardUid: string; uid: string }>({
|
||||
query: () => ({
|
||||
url: '',
|
||||
}),
|
||||
}),
|
||||
reshareAccessToRecipient: builder.mutation<void, { recipientUid: string; uid: string }>({
|
||||
query: () => ({
|
||||
url: '',
|
||||
}),
|
||||
async onQueryStarted(_, { dispatch, queryFulfilled }) {
|
||||
await queryFulfilled;
|
||||
dispatch(notifyApp(createSuccessNotification('User revoked')));
|
||||
},
|
||||
invalidatesTags: (result, error, { dashboardUid }) => [{ type: 'PublicDashboard', id: dashboardUid }],
|
||||
}),
|
||||
listPublicDashboards: builder.query<ListPublicDashboardResponse[], void>({
|
||||
query: () => ({
|
||||
@ -158,6 +150,7 @@ export const {
|
||||
useUpdatePublicDashboardMutation,
|
||||
useDeletePublicDashboardMutation,
|
||||
useListPublicDashboardsQuery,
|
||||
useAddEmailSharingMutation,
|
||||
useDeleteEmailSharingMutation,
|
||||
useAddRecipientMutation,
|
||||
useDeleteRecipientMutation,
|
||||
useReshareAccessToRecipientMutation,
|
||||
} = publicDashboardApi;
|
||||
|
@ -15,9 +15,10 @@ import {
|
||||
useStyles2,
|
||||
} from '@grafana/ui/src';
|
||||
import {
|
||||
useAddEmailSharingMutation,
|
||||
useDeleteEmailSharingMutation,
|
||||
useAddRecipientMutation,
|
||||
useDeleteRecipientMutation,
|
||||
useGetPublicDashboardQuery,
|
||||
useReshareAccessToRecipientMutation,
|
||||
useUpdatePublicDashboardMutation,
|
||||
} from 'app/features/dashboard/api/publicDashboardApi';
|
||||
import { useSelector } from 'app/types';
|
||||
@ -46,12 +47,19 @@ const EmailList = ({
|
||||
publicDashboardUid: string;
|
||||
}) => {
|
||||
const styles = useStyles2(getStyles);
|
||||
const [deleteEmail, { isLoading: isDeleteLoading }] = useDeleteEmailSharingMutation();
|
||||
const [deleteEmail, { isLoading: isDeleteLoading }] = useDeleteRecipientMutation();
|
||||
const [reshareAccess, { isLoading: isReshareLoading }] = useReshareAccessToRecipientMutation();
|
||||
|
||||
const isLoading = isDeleteLoading || isReshareLoading;
|
||||
|
||||
const onDeleteEmail = (recipientUid: string) => {
|
||||
deleteEmail({ recipientUid, dashboardUid: dashboardUid, uid: publicDashboardUid });
|
||||
};
|
||||
|
||||
const onReshare = (recipientUid: string) => {
|
||||
reshareAccess({ recipientUid, uid: publicDashboardUid });
|
||||
};
|
||||
|
||||
return (
|
||||
<table className={styles.table} data-testid={selectors.EmailSharingList}>
|
||||
<tbody>
|
||||
@ -67,11 +75,23 @@ const EmailList = ({
|
||||
aria-label="Revoke"
|
||||
title="Revoke"
|
||||
size="sm"
|
||||
disabled={isDeleteLoading}
|
||||
disabled={isLoading}
|
||||
onClick={() => onDeleteEmail(recipient.uid)}
|
||||
>
|
||||
Revoke
|
||||
</Button>
|
||||
<Button
|
||||
type="button"
|
||||
variant="primary"
|
||||
fill="text"
|
||||
aria-label="Resend"
|
||||
title="Resend"
|
||||
size="sm"
|
||||
disabled={isLoading}
|
||||
onClick={() => onReshare(recipient.uid)}
|
||||
>
|
||||
Resend
|
||||
</Button>
|
||||
</ButtonGroup>
|
||||
</td>
|
||||
</tr>
|
||||
@ -88,7 +108,7 @@ export const EmailSharingConfiguration = () => {
|
||||
|
||||
const { data: publicDashboard } = useGetPublicDashboardQuery(dashboard.uid);
|
||||
const [updateShareType] = useUpdatePublicDashboardMutation();
|
||||
const [addEmail, { isLoading: isAddEmailLoading }] = useAddEmailSharingMutation();
|
||||
const [addEmail, { isLoading: isAddEmailLoading }] = useAddRecipientMutation();
|
||||
|
||||
const {
|
||||
register,
|
||||
|
Loading…
Reference in New Issue
Block a user