Stoped users from spamming the request button

This commit is contained in:
tidusjar 2016-03-26 12:24:42 +00:00
parent 6940311b29
commit 96131b255a
2 changed files with 58 additions and 14 deletions

View file

@ -31,10 +31,15 @@ $("#tvSearchContent").on("input", function () {
// Click TV dropdown option // Click TV dropdown option
$(document).on("click", ".dropdownTv", function (e) { $(document).on("click", ".dropdownTv", function (e) {
var buttonId = e.target.id;
$("#" + buttonId).prop("disabled", true);
e.preventDefault(); e.preventDefault();
var buttonId = e.target.id;
if ($("#" + buttonId).attr('disabled')) {
return;
}
$("#" + buttonId).prop("disabled", true);
loadingButton(buttonId, "primary");
var $form = $('#form' + buttonId); var $form = $('#form' + buttonId);
var data = $form.serialize(); var data = $form.serialize();
@ -53,15 +58,19 @@ $(document).on("click", ".dropdownTv", function (e) {
var url = $form.prop('action'); var url = $form.prop('action');
sendRequestAjax(data, type, url, buttonId); sendRequestAjax(data, type, url, buttonId);
$("#" + buttonId).prop("disabled", false);
}); });
// Click Request for movie // Click Request for movie
$(document).on("click", ".requestMovie", function (e) { $(document).on("click", ".requestMovie", function (e) {
e.preventDefault();
var buttonId = e.target.id; var buttonId = e.target.id;
if ($("#" + buttonId).attr('disabled')) {
return;
}
$("#" + buttonId).prop("disabled", true); $("#" + buttonId).prop("disabled", true);
loadingButton(buttonId, "primary"); loadingButton(buttonId, "primary");
e.preventDefault();
var $form = $('#form' + buttonId); var $form = $('#form' + buttonId);
@ -70,7 +79,7 @@ $(document).on("click", ".requestMovie", function (e) {
var data = $form.serialize(); var data = $form.serialize();
sendRequestAjax(data, type, url, buttonId); sendRequestAjax(data, type, url, buttonId);
$("#" + buttonId).prop("disabled", false);
}); });
function sendRequestAjax(data, type, url, buttonId) { function sendRequestAjax(data, type, url, buttonId) {
@ -90,6 +99,9 @@ function sendRequestAjax(data, type, url, buttonId) {
$('#' + buttonId).addClass("btn-success-outline"); $('#' + buttonId).addClass("btn-success-outline");
} else { } else {
generateNotify(response.message, "warning"); generateNotify(response.message, "warning");
$('#' + buttonId).html("<i class='fa fa-plus'></i> Request");
$('#' + buttonId).attr("data-toggle", "dropdown");
$("#" + buttonId).removeAttr("disabled");
} }
}, },
error: function (e) { error: function (e) {

View file

@ -224,22 +224,54 @@ namespace PlexRequests.UI.Modules
Log.Trace("Settings: "); Log.Trace("Settings: ");
Log.Trace(cpSettings.DumpJson); Log.Trace(cpSettings.DumpJson);
if (cpSettings.Enabled)
{
Log.Info("Adding movie to CP (No approval required)");
var result = CouchPotatoApi.AddMovie(model.ImdbId, cpSettings.ApiKey, model.Title,
cpSettings.FullUri, cpSettings.ProfileId);
Log.Debug("Adding movie to CP result {0}", result);
if (result)
{
model.Approved = true;
Log.Debug("Adding movie to database requests (No approval required)");
RequestService.AddRequest(model);
Log.Info("Adding movie to CP (No approval required)"); var notificationModel = new NotificationModel
var result = CouchPotatoApi.AddMovie(model.ImdbId, cpSettings.ApiKey, model.Title, cpSettings.FullUri, cpSettings.ProfileId); {
Log.Debug("Adding movie to CP result {0}", result); Title = model.Title,
if (result) User = model.RequestedBy,
DateTime = DateTime.Now,
NotificationType = NotificationType.NewRequest
};
NotificationService.Publish(notificationModel);
return Response.AsJson(new JsonResponseModel {Result = true});
}
return
Response.AsJson(new JsonResponseModel
{
Result = false,
Message =
"Something went wrong adding the movie to CouchPotato! Please check your settings."
});
}
else
{ {
model.Approved = true; model.Approved = true;
Log.Debug("Adding movie to database requests (No approval required)"); Log.Debug("Adding movie to database requests (No approval required)");
RequestService.AddRequest(model); RequestService.AddRequest(model);
var notificationModel = new NotificationModel { Title = model.Title, User = model.RequestedBy, DateTime = DateTime.Now, NotificationType = NotificationType.NewRequest }; var notificationModel = new NotificationModel
{
Title = model.Title,
User = model.RequestedBy,
DateTime = DateTime.Now,
NotificationType = NotificationType.NewRequest
};
NotificationService.Publish(notificationModel); NotificationService.Publish(notificationModel);
return Response.AsJson(new JsonResponseModel { Result = true }); return Response.AsJson(new JsonResponseModel { Result = true });
} }
return Response.AsJson(new JsonResponseModel { Result = false, Message = "Something went wrong adding the movie to CouchPotato! Please check your settings." });
} }
try try
@ -305,7 +337,7 @@ namespace PlexRequests.UI.Modules
Approved = false, Approved = false,
RequestedBy = Session[SessionKeys.UsernameKey].ToString(), RequestedBy = Session[SessionKeys.UsernameKey].ToString(),
Issues = IssueState.None, Issues = IssueState.None,
ImdbId = showInfo.externals?.imdb ?? string.Empty, ImdbId = showInfo.externals?.imdb ?? string.Empty,
SeasonCount = showInfo.seasonCount SeasonCount = showInfo.seasonCount
}; };
var seasonsList = new List<int>(); var seasonsList = new List<int>();
@ -323,7 +355,7 @@ namespace PlexRequests.UI.Modules
model.SeasonsRequested = "All"; model.SeasonsRequested = "All";
break; break;
} }
model.SeasonList = seasonsList.ToArray(); model.SeasonList = seasonsList.ToArray();
var settings = PrService.GetSettings(); var settings = PrService.GetSettings();