Skip to content

Commit

Permalink
Re-saving edited providers will forcibly save them
Browse files Browse the repository at this point in the history
Fixes #5192

Co-Authored-By: Mark McDowall <markus101@users.noreply.github.com>
  • Loading branch information
Qstick and markus101 committed Oct 17, 2020
1 parent ee456c3 commit e82f0c0
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 10 deletions.
24 changes: 17 additions & 7 deletions frontend/src/Store/Actions/Creators/createSaveProviderHandler.js
@@ -1,10 +1,12 @@
import $ from 'jquery';
import _ from 'lodash';
import { batchActions } from 'redux-batched-actions';
import createAjaxRequest from 'Utilities/createAjaxRequest';
import getProviderState from 'Utilities/State/getProviderState';
import { set, updateItem } from '../baseActions';

const abortCurrentRequests = {};
let lastSaveData = null;

export function createCancelSaveProviderHandler(section) {
return function(getState, payload, dispatch) {
Expand All @@ -26,25 +28,33 @@ function createSaveProviderHandler(section, url, options = {}) {
} = payload;

const saveData = getProviderState({ id, ...otherPayload }, getState, section);
const requestUrl = id ? `${url}/${id}` : url;
const params = { ...queryParams };

// If the user is re-saving the same provider without changes
// force it to be saved. Only applies to editing existing providers.

if (id && _.isEqual(saveData, lastSaveData)) {
params.forceSave = true;
}

lastSaveData = saveData;

const ajaxOptions = {
url: `${url}?${$.param(queryParams, true)}`,
method: 'POST',
url: `${requestUrl}?${$.param(params, true)}`,
method: id ? 'PUT' : 'POST',
contentType: 'application/json',
dataType: 'json',
data: JSON.stringify(saveData)
};

if (id) {
ajaxOptions.url = `${url}/${id}?${$.param(queryParams, true)}`;
ajaxOptions.method = 'PUT';
}

const { request, abortRequest } = createAjaxRequest(ajaxOptions);

abortCurrentRequests[section] = abortRequest;

request.done((data) => {
lastSaveData = null;

dispatch(batchActions([
updateItem({ section, ...data }),

Expand Down
7 changes: 4 additions & 3 deletions src/Radarr.Api.V3/ProviderModuleBase.cs
Expand Up @@ -7,6 +7,7 @@
using NzbDrone.Core.ThingiProvider;
using NzbDrone.Core.Validation;
using Radarr.Http;
using Radarr.Http.Extensions;

namespace Radarr.Api.V3
{
Expand Down Expand Up @@ -84,10 +85,10 @@ private int CreateProvider(TProviderResource providerResource)
private void UpdateProvider(TProviderResource providerResource)
{
var providerDefinition = GetDefinition(providerResource, false);
var existingDefinition = _providerFactory.Get(providerDefinition.Id);
var forceSave = Request.GetBooleanQueryParameter("forceSave");

// Only test existing definitions if it was previously disabled
if (providerDefinition.Enable && !existingDefinition.Enable)
// Only test existing definitions if it is enabled and forceSave isn't set.
if (providerDefinition.Enable && !forceSave)
{
Test(providerDefinition, false);
}
Expand Down

0 comments on commit e82f0c0

Please sign in to comment.