From a7a4642920e046a21a9ce101d6064b1c430fff95 Mon Sep 17 00:00:00 2001 From: Ajay Ramachandran Date: Sat, 20 Jul 2019 16:03:42 -0400 Subject: [PATCH] Sponsor time submission now has proper error messages. --- background.js | 21 +++++++++++++++------ popup.html | 12 +++++++++++- popup.js | 33 +++++++++++++++++++++++++++++---- 3 files changed, 55 insertions(+), 11 deletions(-) diff --git a/background.js b/background.js index c7bf572b..026b83f8 100644 --- a/background.js +++ b/background.js @@ -21,11 +21,10 @@ chrome.tabs.onUpdated.addListener( // On tab update chrome.runtime.onMessage.addListener(function (request, sender, callback) { if (request.message == "submitTimes") { - submitTimes(request.videoID); + submitTimes(request.videoID, callback); - callback({ - success: true - }); + //this allows the callback to be called later by the submitTimes function + return true; } else if (request.message == "ytvideoid") { if (previousVideoID != request.videoID) { videoIDChange(request.videoID); @@ -107,7 +106,7 @@ function submitVote(type, UUID, callback) { }) } -function submitTimes(videoID) { +function submitTimes(videoID, callback) { //get the video times from storage let sponsorTimeKey = 'sponsorTimes' + videoID; chrome.storage.local.get([sponsorTimeKey], function(result) { @@ -119,7 +118,17 @@ function submitTimes(videoID) { getUserID(function(userIDStorage) { //submit the sponsorTime sendRequestToServer('GET', "/api/postVideoSponsorTimes?videoID=" + videoID + "&startTime=" + sponsorTimes[i][0] + "&endTime=" + sponsorTimes[i][1] - + "&userID=" + userIDStorage); + + "&userID=" + userIDStorage, function(xmlhttp, error) { + if (xmlhttp.readyState == 4 && !error) { + callback({ + statusCode: xmlhttp.status + }); + } else if (error) { + callback({ + statusCode: -1 + }); + } + }); }); } } diff --git a/popup.html b/popup.html index d34d9a76..f77a6a02 100644 --- a/popup.html +++ b/popup.html @@ -62,8 +62,18 @@

+ + -
diff --git a/popup.js b/popup.js index 29157379..d60bba61 100644 --- a/popup.js +++ b/popup.js @@ -268,12 +268,35 @@ function clearTimes() { } function submitTimes() { + //make info message say loading + document.getElementById("submitTimesInfoMessage").innerText = "Loading..."; + document.getElementById("submitTimesInfoMessageContainer").style.display = "unset"; + if (sponsorTimes.length > 0) { chrome.runtime.sendMessage({ message: "submitTimes", videoID: currentVideoID - }, function(request) { - clearTimes(); + }, function(response) { + if (response != undefined) { + if (response.statusCode == 200) { + //hide loading message + document.getElementById("submitTimesInfoMessageContainer").style.display = "none"; + + clearTimes(); + } else if(response.statusCode == 400) { + document.getElementById("submitTimesInfoMessage").innerText = "Server said this request was invalid"; + document.getElementById("submitTimesInfoMessageContainer").style.display = "unset"; + } else if(response.statusCode == 429) { + document.getElementById("submitTimesInfoMessage").innerText = "You have submitted too many sponsor times for this one video, are you sure there are this many?"; + document.getElementById("submitTimesInfoMessageContainer").style.display = "unset"; + } else if(response.statusCode == 409) { + document.getElementById("submitTimesInfoMessage").innerText = "This has already been submitted before"; + document.getElementById("submitTimesInfoMessageContainer").style.display = "unset"; + } else { + document.getElementById("submitTimesInfoMessage").innerText = "There was an error submitting your sponsor times, please try again later"; + document.getElementById("submitTimesInfoMessageContainer").style.display = "unset"; + } + } }); } } @@ -343,13 +366,15 @@ function resetStartTimeChosen() { document.getElementById("sponsorStart").innerHTML = "Sponsorship Starts Now"; } +//hides and shows the submit times button when needed function showSubmitTimesIfNecessary() { //check if an end time has been specified for the latest sponsor time if (sponsorTimes.length > 0 && sponsorTimes[sponsorTimes.length - 1].length > 1) { //show submit times button - document.getElementById("submitTimes").style.display = "unset"; + document.getElementById("submitTimesContainer").style.display = "unset"; } else { - document.getElementById("submitTimes").style.display = "none"; + //hide submit times button + document.getElementById("submitTimesContainer").style.display = "none"; } }