From d2cbab70a9538cc223030febbf4e26c9b98f9deb Mon Sep 17 00:00:00 2001 From: Bogdan Date: Fri, 24 Nov 2023 00:52:46 +0200 Subject: [PATCH] New: Confirmation for searching movies --- .../Movie/Index/MovieIndexSearchButton.tsx | 45 +++++++++++++++---- src/NzbDrone.Core/Localization/Core/en.json | 1 + 2 files changed, 37 insertions(+), 9 deletions(-) diff --git a/frontend/src/Movie/Index/MovieIndexSearchButton.tsx b/frontend/src/Movie/Index/MovieIndexSearchButton.tsx index aa91ba923..8f0db5dff 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 0147fc78c..663af708d 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",