diff --git a/public/app/features/manage-dashboards/components/RestoreModal.tsx b/public/app/features/manage-dashboards/components/RestoreModal.tsx index 9e09d26199f..520825861fb 100644 --- a/public/app/features/manage-dashboards/components/RestoreModal.tsx +++ b/public/app/features/manage-dashboards/components/RestoreModal.tsx @@ -3,22 +3,23 @@ import React from 'react'; import { ConfirmModal, Text } from '@grafana/ui'; import { Trans, t } from '../../../core/internationalization'; -import { DashboardTreeSelection } from '../../browse-dashboards/types'; interface Props { isOpen: boolean; onConfirm: () => Promise; onDismiss: () => void; - selectedItems: DashboardTreeSelection; + selectedDashboards: string[]; isLoading: boolean; } -export const RestoreModal = ({ onConfirm, onDismiss, selectedItems, isLoading, ...props }: Props) => { - const numberOfDashboards = selectedItems ? Object.keys(selectedItems.dashboard).length : 0; +export const RestoreModal = ({ onConfirm, onDismiss, selectedDashboards, isLoading, ...props }: Props) => { + const numberOfDashboards = selectedDashboards.length; + const onRestore = async () => { await onConfirm(); onDismiss(); }; + return ( { + return Object.entries(selectedItemsState.dashboard) + .filter(([_, selected]) => selected) + .map(([uid]) => uid); + }, [selectedItemsState.dashboard]); + const onActionComplete = () => { dispatch(setAllSelection({ isSelected: false, folderUID: undefined })); @@ -29,9 +35,8 @@ export function RecentlyDeletedActions() { }; const onRestore = async () => { - const promises = Object.entries(selectedItems.dashboard) - .filter(([_, selected]) => selected) - .map(([uid]) => restoreDashboard({ dashboardUID: uid })); + const promises = selectedDashboards.map((uid) => restoreDashboard({ dashboardUID: uid })); + await Promise.all(promises); onActionComplete(); }; @@ -41,7 +46,7 @@ export function RecentlyDeletedActions() { new ShowModalReactEvent({ component: RestoreModal, props: { - selectedItems, + selectedDashboards, onConfirm: onRestore, isLoading: isRestoreLoading, },