New: Refresh Selected in Editor Mode

pull/2/head
Qstick 4 years ago
parent 135251ec31
commit aa6c8f493e

@ -281,6 +281,13 @@ class MovieIndex extends Component {
this.setState({ isConfirmSearchModalOpen: true, searchType: 'moviesSearch' });
}
onRefreshMoviePress = () => {
const selectedMovieIds = this.getSelectedIds();
const refreshIds = this.state.isMovieEditorActive && selectedMovieIds.length > 0 ? selectedMovieIds : [];
this.props.onRefreshMoviePress(refreshIds);
}
onSearchConfirmed = () => {
const selectedMovieIds = this.getSelectedIds();
const searchIds = this.state.isMovieEditorActive && selectedMovieIds.length > 0 ? selectedMovieIds : this.props.items.map((m) => m.id);
@ -356,12 +363,12 @@ class MovieIndex extends Component {
<PageToolbar>
<PageToolbarSection>
<PageToolbarButton
label="Update all"
label={isMovieEditorActive && selectedMovieIds.length > 0 ? 'Update Selected' : 'Update All'}
iconName={icons.REFRESH}
spinningName={icons.REFRESH}
isSpinning={isRefreshingMovie}
isDisabled={hasNoMovie}
onPress={onRefreshMoviePress}
onPress={this.onRefreshMoviePress}
/>
<PageToolbarButton

@ -69,9 +69,10 @@ function createMapDispatchToProps(dispatch, props) {
dispatch(saveMovieEditor(payload));
},
onRefreshMoviePress() {
onRefreshMoviePress(items) {
dispatch(executeCommand({
name: commandNames.REFRESH_MOVIE
name: commandNames.REFRESH_MOVIE,
movieIds: items
}));
},

@ -51,7 +51,7 @@ namespace NzbDrone.Core.Test.MovieTests
GivenNewMovieInfo(newMovieInfo);
Subject.Execute(new RefreshMovieCommand(_movie.Id));
Subject.Execute(new RefreshMovieCommand(new List<int> { _movie.Id }));
Mocker.GetMock<IMovieService>()
.Verify(v => v.UpdateMovie(It.Is<List<Movie>>(s => s.First().ImdbId == newMovieInfo.ImdbId), true));
@ -60,7 +60,7 @@ namespace NzbDrone.Core.Test.MovieTests
[Test]
public void should_log_error_if_tmdb_id_not_found()
{
Subject.Execute(new RefreshMovieCommand(_movie.Id));
Subject.Execute(new RefreshMovieCommand(new List<int> { _movie.Id }));
Mocker.GetMock<IMovieService>()
.Verify(v => v.UpdateMovie(It.Is<Movie>(s => s.Status == MovieStatusType.Deleted)), Times.Once());
@ -76,7 +76,7 @@ namespace NzbDrone.Core.Test.MovieTests
GivenNewMovieInfo(newMovieInfo);
Subject.Execute(new RefreshMovieCommand(_movie.Id));
Subject.Execute(new RefreshMovieCommand(new List<int> { _movie.Id }));
Mocker.GetMock<IMovieService>()
.Verify(v => v.UpdateMovie(It.Is<List<Movie>>(s => s.First().TmdbId == newMovieInfo.TmdbId), true));
@ -87,7 +87,7 @@ namespace NzbDrone.Core.Test.MovieTests
[Test]
public void should_mark_as_deleted_if_tmdb_id_not_found()
{
Subject.Execute(new RefreshMovieCommand(_movie.Id));
Subject.Execute(new RefreshMovieCommand(new List<int> { _movie.Id }));
Mocker.GetMock<IMovieService>()
.Verify(v => v.UpdateMovie(It.Is<Movie>(s => s.Status == MovieStatusType.Deleted)), Times.Once());
@ -100,7 +100,7 @@ namespace NzbDrone.Core.Test.MovieTests
{
_movie.Status = MovieStatusType.Deleted;
Subject.Execute(new RefreshMovieCommand(_movie.Id));
Subject.Execute(new RefreshMovieCommand(new List<int> { _movie.Id }));
Mocker.GetMock<IMovieService>()
.Verify(v => v.UpdateMovie(It.IsAny<Movie>()), Times.Never());

@ -1,24 +1,27 @@
using System.Collections.Generic;
using System.Linq;
using NzbDrone.Core.Messaging.Commands;
namespace NzbDrone.Core.Movies.Commands
{
public class RefreshMovieCommand : Command
{
public int? MovieId { get; set; }
public List<int> MovieIds { get; set; }
public bool IsNewMovie { get; set; }
public RefreshMovieCommand()
{
MovieIds = new List<int>();
}
public RefreshMovieCommand(int? movieId, bool isNewMovie = false)
public RefreshMovieCommand(List<int> movieIds, bool isNewMovie = false)
{
MovieId = movieId;
MovieIds = movieIds;
IsNewMovie = isNewMovie;
}
public override bool SendUpdatesToClient => true;
public override bool UpdateScheduledTask => !MovieId.HasValue;
public override bool UpdateScheduledTask => !MovieIds.Any();
}
}

@ -1,3 +1,4 @@
using System.Collections.Generic;
using System.Linq;
using NzbDrone.Core.Messaging.Commands;
using NzbDrone.Core.Messaging.Events;
@ -17,12 +18,12 @@ namespace NzbDrone.Core.Movies
public void Handle(MovieAddedEvent message)
{
_commandQueueManager.Push(new RefreshMovieCommand(message.Movie.Id, true));
_commandQueueManager.Push(new RefreshMovieCommand(new List<int> { message.Movie.Id }, true));
}
public void Handle(MoviesImportedEvent message)
{
_commandQueueManager.PushMany(message.MovieIds.Select(s => new RefreshMovieCommand(s, true)).ToList());
_commandQueueManager.PushMany(message.MovieIds.Select(s => new RefreshMovieCommand(new List<int> { s }, true)).ToList());
}
}
}

@ -178,24 +178,27 @@ namespace NzbDrone.Core.Movies
var isNew = message.IsNewMovie;
_eventAggregator.PublishEvent(new MovieRefreshStartingEvent(message.Trigger == CommandTrigger.Manual));
if (message.MovieId.HasValue)
if (message.MovieIds.Any())
{
var movie = _movieService.GetMovie(message.MovieId.Value);
try
{
RefreshMovieInfo(movie);
RescanMovie(movie, isNew, trigger);
}
catch (MovieNotFoundException)
foreach (var movieId in message.MovieIds)
{
_logger.Error("Movie '{0}' (imdbid {1}) was not found, it may have been removed from The Movie Database.", movie.Title, movie.ImdbId);
}
catch (Exception e)
{
_logger.Error(e, "Couldn't refresh info for {0}", movie);
RescanMovie(movie, isNew, trigger);
throw;
var movie = _movieService.GetMovie(movieId);
try
{
RefreshMovieInfo(movie);
RescanMovie(movie, isNew, trigger);
}
catch (MovieNotFoundException)
{
_logger.Error("Movie '{0}' (imdbid {1}) was not found, it may have been removed from The Movie Database.", movie.Title, movie.ImdbId);
}
catch (Exception e)
{
_logger.Error(e, "Couldn't refresh info for {0}", movie);
RescanMovie(movie, isNew, trigger);
throw;
}
}
}
else

@ -305,7 +305,7 @@ namespace NzbDrone.Integration.Test
//File.Copy(sourcePath, path);
File.WriteAllText(path, "Fake Movie");
Commands.PostAndWait(new RefreshMovieCommand(movie.Id));
Commands.PostAndWait(new RefreshMovieCommand(new List<int> { movie.Id }));
Commands.WaitAll();
result = Movies.Get(movie.Id);

Loading…
Cancel
Save