diff --git a/frontend/src/Movie/Index/MovieIndexSearchButton.tsx b/frontend/src/Movie/Index/MovieIndexSearchButton.tsx index aa91ba923df..8f0db5dffcc 100644 --- a/frontend/src/Movie/Index/MovieIndexSearchButton.tsx +++ b/frontend/src/Movie/Index/MovieIndexSearchButton.tsx @@ -1,11 +1,12 @@ -import React, { useCallback, useMemo } from 'react'; +import React, { useCallback, useMemo, useState } from 'react'; import { useDispatch, useSelector } from 'react-redux'; import { useSelect } from 'App/SelectContext'; import ClientSideCollectionAppState from 'App/State/ClientSideCollectionAppState'; import MoviesAppState, { MovieIndexAppState } from 'App/State/MoviesAppState'; import { MOVIE_SEARCH } from 'Commands/commandNames'; +import ConfirmModal from 'Components/Modal/ConfirmModal'; import PageToolbarButton from 'Components/Page/Toolbar/PageToolbarButton'; -import { icons } from 'Helpers/Props'; +import { icons, kinds } from 'Helpers/Props'; import { executeCommand } from 'Store/Actions/commandActions'; import createCommandExecutingSelector from 'Store/Selectors/createCommandExecutingSelector'; import createMovieClientSideCollectionItemsSelector from 'Store/Selectors/createMovieClientSideCollectionItemsSelector'; @@ -25,6 +26,8 @@ function MovieIndexSearchButton(props: MovieIndexSearchButtonProps) { useSelector(createMovieClientSideCollectionItemsSelector('movieIndex')); const dispatch = useDispatch(); + const [isConfirmModalOpen, setIsConfirmModalOpen] = useState(false); + const { isSelectMode, selectedFilterKey } = props; const [selectState] = useSelect(); const { selectedState } = selectState; @@ -49,6 +52,8 @@ function MovieIndexSearchButton(props: MovieIndexSearchButtonProps) { : translate('SearchAll'); const onPress = useCallback(() => { + setIsConfirmModalOpen(false); + dispatch( executeCommand({ name: MOVIE_SEARCH, @@ -57,14 +62,36 @@ function MovieIndexSearchButton(props: MovieIndexSearchButtonProps) { ); }, [dispatch, moviesToSearch]); + const onConfirmPress = useCallback(() => { + setIsConfirmModalOpen(true); + }, [setIsConfirmModalOpen]); + + const onConfirmModalClose = useCallback(() => { + setIsConfirmModalOpen(false); + }, [setIsConfirmModalOpen]); + return ( - + <> + 5 ? onConfirmPress : onPress} + /> + + + ); } diff --git a/src/NzbDrone.Core/Localization/Core/en.json b/src/NzbDrone.Core/Localization/Core/en.json index 0147fc78c29..663af708d2b 100644 --- a/src/NzbDrone.Core/Localization/Core/en.json +++ b/src/NzbDrone.Core/Localization/Core/en.json @@ -1072,6 +1072,7 @@ "SearchOnAddCollectionHelpText": "Search for movies on this collection when added to library", "SearchOnAddHelpText": "Search for movies on this list when added to library", "SearchSelected": "Search Selected", + "SearchMoviesConfirmationMessageText": "Are you sure you want to run a search for {count} movie(s)?", "Seconds": "Seconds", "Security": "Security", "Seeders": "Seeders",