1
0
mirror of https://github.com/Radarr/Radarr.git synced 2024-11-20 18:02:44 +01:00

Fixed: Re-testing edited providers will forcibly test them

(cherry picked from commit e9662544621b2d1fb133ff9d96d0eb20b8198725)

Closes #9933
This commit is contained in:
Bogdan 2024-04-15 05:43:52 +03:00
parent 02518e2116
commit 8d90c7678f
2 changed files with 24 additions and 4 deletions

View File

@ -1,8 +1,11 @@
import $ from 'jquery';
import _ from 'lodash';
import createAjaxRequest from 'Utilities/createAjaxRequest'; import createAjaxRequest from 'Utilities/createAjaxRequest';
import getProviderState from 'Utilities/State/getProviderState'; import getProviderState from 'Utilities/State/getProviderState';
import { set } from '../baseActions'; import { set } from '../baseActions';
const abortCurrentRequests = {}; const abortCurrentRequests = {};
let lastTestData = null;
export function createCancelTestProviderHandler(section) { export function createCancelTestProviderHandler(section) {
return function(getState, payload, dispatch) { return function(getState, payload, dispatch) {
@ -17,10 +20,25 @@ function createTestProviderHandler(section, url) {
return function(getState, payload, dispatch) { return function(getState, payload, dispatch) {
dispatch(set({ section, isTesting: true })); dispatch(set({ section, isTesting: true }));
const testData = getProviderState(payload, getState, section); const {
queryParams = {},
...otherPayload
} = payload;
const testData = getProviderState({ ...otherPayload }, getState, section);
const params = { ...queryParams };
// If the user is re-testing the same provider without changes
// force it to be tested.
if (_.isEqual(testData, lastTestData)) {
params.forceTest = true;
}
lastTestData = testData;
const ajaxOptions = { const ajaxOptions = {
url: `${url}/test`, url: `${url}/test?${$.param(params, true)}`,
method: 'POST', method: 'POST',
contentType: 'application/json', contentType: 'application/json',
dataType: 'json', dataType: 'json',
@ -32,6 +50,8 @@ function createTestProviderHandler(section, url) {
abortCurrentRequests[section] = abortRequest; abortCurrentRequests[section] = abortRequest;
request.done((data) => { request.done((data) => {
lastTestData = null;
dispatch(set({ dispatch(set({
section, section,
isTesting: false, isTesting: false,

View File

@ -205,10 +205,10 @@ public List<TProviderResource> GetTemplates()
[SkipValidation(true, false)] [SkipValidation(true, false)]
[HttpPost("test")] [HttpPost("test")]
[Consumes("application/json")] [Consumes("application/json")]
public object Test([FromBody] TProviderResource providerResource) public object Test([FromBody] TProviderResource providerResource, [FromQuery] bool forceTest = false)
{ {
var existingDefinition = providerResource.Id > 0 ? _providerFactory.Find(providerResource.Id) : null; var existingDefinition = providerResource.Id > 0 ? _providerFactory.Find(providerResource.Id) : null;
var providerDefinition = GetDefinition(providerResource, existingDefinition, true, true, true); var providerDefinition = GetDefinition(providerResource, existingDefinition, true, !forceTest, true);
Test(providerDefinition, true); Test(providerDefinition, true);