From 24a394bf46e16ede9e9341d4e7ee70cb39c1cc26 Mon Sep 17 00:00:00 2001 From: Leonardo Galli Date: Wed, 8 Mar 2017 18:01:15 +0100 Subject: [PATCH] Loads only request movie first into full collection. Should fix things. (#1046) Fixes #982 --- src/NzbDrone.Api/Series/MovieModule.cs | 11 +++++++++++ src/UI/Movies/FullMovieCollection.js | 1 + src/UI/Movies/MoviesController.js | 8 ++++++++ 3 files changed, 20 insertions(+) diff --git a/src/NzbDrone.Api/Series/MovieModule.cs b/src/NzbDrone.Api/Series/MovieModule.cs index eb6fc574a..8c3fd3077 100644 --- a/src/NzbDrone.Api/Series/MovieModule.cs +++ b/src/NzbDrone.Api/Series/MovieModule.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Linq; using FluentValidation; using NzbDrone.Common.Extensions; +using NzbDrone.Api.Extensions; using NzbDrone.Core.Datastore.Events; using NzbDrone.Core.MediaCover; using NzbDrone.Core.MediaFiles; @@ -33,6 +34,8 @@ namespace NzbDrone.Api.Movie private readonly IMovieStatisticsService _moviesStatisticsService; private readonly IMapCoversToLocal _coverMapper; + private const string TITLE_SLUG_ROUTE = "/titleslug/(?[^/]+)"; + public MovieModule(IBroadcastSignalRMessage signalRBroadcaster, IMovieService moviesService, IMovieStatisticsService moviesStatisticsService, @@ -55,6 +58,9 @@ namespace NzbDrone.Api.Movie GetResourceAll = AllMovie; GetResourcePaged = GetMoviePaged; GetResourceById = GetMovie; + Get[TITLE_SLUG_ROUTE] = (options) => { + return ReqResExtensions.AsResponse(GetByTitleSlug(options.slug)); + }; CreateResource = AddMovie; UpdateResource = UpdateMovie; DeleteResource = DeleteMovie; @@ -186,6 +192,11 @@ namespace NzbDrone.Api.Movie return moviesResources; } + private MovieResource GetByTitleSlug(string slug) + { + return MapToResource(_moviesService.FindByTitleSlug(slug)); + } + private int AddMovie(MovieResource moviesResource) { var model = moviesResource.ToModel(); diff --git a/src/UI/Movies/FullMovieCollection.js b/src/UI/Movies/FullMovieCollection.js index d080848ac..7532f33e1 100644 --- a/src/UI/Movies/FullMovieCollection.js +++ b/src/UI/Movies/FullMovieCollection.js @@ -1,6 +1,7 @@ var movieCollection = require('./MoviesCollection'); var fullCollection = movieCollection.clone(); +fullCollection.reset(); fullCollection.bindSignalR(); fullCollection.state.pageSize = 100000; fullCollection.fetch({reset : true}); diff --git a/src/UI/Movies/MoviesController.js b/src/UI/Movies/MoviesController.js index 41cf97877..5850fad16 100644 --- a/src/UI/Movies/MoviesController.js +++ b/src/UI/Movies/MoviesController.js @@ -4,6 +4,7 @@ var MoviesCollection = require('./MoviesCollection'); var FullMovieCollection = require("./FullMovieCollection"); var MoviesIndexLayout = require('./Index/MoviesIndexLayout'); var MoviesDetailsLayout = require('./Details/MoviesDetailsLayout'); +var $ = require('jquery'); module.exports = NzbDroneController.extend({ _originalInit : NzbDroneController.prototype.initialize, @@ -25,8 +26,15 @@ module.exports = NzbDroneController.extend({ if(FullMovieCollection.length > 0) { this._renderMovieDetails(query); + //debugger; } else { + self = this; + $.getJSON(window.NzbDrone.ApiRoot + '/movie/titleslug/'+query, { }, function(data) { + FullMovieCollection.add(data) + self._renderMovieDetails(query); + }); this.listenTo(FullMovieCollection, 'sync', function(model, options) { + //debugger; this._renderMovieDetails(query); }); }