210 lines
9.4 KiB
JavaScript
210 lines
9.4 KiB
JavaScript
|
(function() {
|
|||
|
const delay = 500;
|
|||
|
const licensesUrl = `https://store.steampowered.com/account/licenses/`;
|
|||
|
const removeLicensesUrl = `https://store.steampowered.com/account/removelicense`;
|
|||
|
const warningString = 'Code cannot be executed here. You will be automatically redirected to the correct page. Please run this code on Steam\'s account page details: store.steampowered.com/account/licenses';
|
|||
|
const analysisHeader = 'Analyzing...';
|
|||
|
const analysisText = 'Please wait until analysis is complete.';
|
|||
|
const headerString = 'Games removing';
|
|||
|
const okString = 'Remove';
|
|||
|
const cancelString = 'Cancel';
|
|||
|
const mainInfo = 'You have <b id="numberGames"></b> game(s) can be removed.<br/>Enter the number of games you want to remove.';
|
|||
|
const errorMessage = 'Enter number from 0 to ';
|
|||
|
const removingHeader = 'In Progress...';
|
|||
|
const removingText = 'Don\'t forget to say thanks if you like the script ;) Removed:';
|
|||
|
const noGamesToRemoveMessage = 'There are no games available for removing.'
|
|||
|
const rateLimitedMessage = 'You have been rate limited, try again later!'
|
|||
|
const errorMessage2 = 'An error was encountered while processing your request:'
|
|||
|
if (location.href != (licensesUrl)) {
|
|||
|
alert(warningString);
|
|||
|
window.location = (licensesUrl);
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
var freeLicensePackages = [];
|
|||
|
var modal = ShowBlockingWaitDialog(analysisHeader, analysisText);
|
|||
|
|
|||
|
jQuery('.free_license_remove_link a').each(function(i, el) {
|
|||
|
var matched = decodeURI(el.href).match(/\d{4,}/);
|
|||
|
if (matched !== null) {
|
|||
|
freeLicensePackages.push(+matched);
|
|||
|
}
|
|||
|
});
|
|||
|
modal.Dismiss();
|
|||
|
|
|||
|
var total = freeLicensePackages.length;
|
|||
|
if (total == 0) {
|
|||
|
alert(noGamesToRemoveMessage);
|
|||
|
return;
|
|||
|
}
|
|||
|
var enteredNumber = total;
|
|||
|
|
|||
|
var desc = jQuery(`<div class="newmodal_prompt_description">${mainInfo}</div><div><div class="newmodal_prompt_input gray_bevel for_text_input fullwidth"><input type="text" id="games_number" value="0"/><span style="display: none; color: rgb(255, 0, 0);"><small>${errorMessage}${total}</small></span></div></div>`);
|
|||
|
var main = jQuery(`<div class="newmodal" style="position: fixed; z-index: 1000; max-width: 900px; left: 300px; top: 95px;"><div class="newmodal_header_border"><div class="newmodal_header"><div class="ellipsis">${headerString}</div></div></div><div class="newmodal_content_border"><div class="newmodal_content" style="max-height: 205px;"><div id="mainDiv"></div><div class="newmodal_buttons"><div class="btn_green_white_innerfade btn_medium"><span id="okButton">${okString}</span></div><div class="btn_grey_white_innerfade btn_medium"><span id="cancelButton">${cancelString}</span></div></div></div></div></div><div class="newmodal_background" style="opacity: 0.8;"></div>`);
|
|||
|
|
|||
|
jQuery('body').append(main);
|
|||
|
jQuery('#cancelButton').on('click', function (event) {
|
|||
|
jQuery('.newmodal').remove();
|
|||
|
jQuery('.newmodal_background').remove();
|
|||
|
});
|
|||
|
jQuery('#mainDiv').html(desc);
|
|||
|
jQuery('#numberGames').text(total);
|
|||
|
jQuery('#games_number').val(total);
|
|||
|
jQuery('#games_number').on('change', function (event) {
|
|||
|
var input = jQuery(this);
|
|||
|
var value = +input.val();
|
|||
|
if (!Number.isInteger(value) || value > total || value <= 0) {
|
|||
|
input.css('border-color', 'red');
|
|||
|
input.next('span').show();
|
|||
|
jQuery('#okButton').hide();
|
|||
|
}
|
|||
|
else {
|
|||
|
enteredNumber = value;
|
|||
|
input.css('border-color', '');
|
|||
|
input.next('span').hide();
|
|||
|
jQuery('#okButton').show();
|
|||
|
}
|
|||
|
});
|
|||
|
|
|||
|
var removed = 0;
|
|||
|
jQuery('#okButton').on('click', function (event) {
|
|||
|
jQuery('.newmodal').remove();
|
|||
|
jQuery('.newmodal_background').remove();
|
|||
|
proceed();
|
|||
|
});
|
|||
|
const proceed = () => {
|
|||
|
if (modal) {
|
|||
|
modal.Dismiss();
|
|||
|
}
|
|||
|
if (removed >= enteredNumber) {
|
|||
|
location.reload();
|
|||
|
}
|
|||
|
else {
|
|||
|
modal = ShowBlockingWaitDialog(removingHeader, `${removingText} <b>${removed}</b>/${enteredNumber}.`);
|
|||
|
deleteFunc(removed++);
|
|||
|
}
|
|||
|
};
|
|||
|
const deleteFunc = (index) => {
|
|||
|
jQuery.ajax({url: removeLicensesUrl,
|
|||
|
type: 'POST',
|
|||
|
data: { packageid: freeLicensePackages[index], sessionid: g_sessionID },
|
|||
|
success: function ( response ) {
|
|||
|
if ( response.success == 1 ) {
|
|||
|
setTimeout(() => proceed(), delay)
|
|||
|
}
|
|||
|
else {
|
|||
|
modal.Dismiss();
|
|||
|
if (response.success = 84)
|
|||
|
ShowAlertDialog( 'Error', rateLimitedMessage + ' Error: ' + response.success);
|
|||
|
else
|
|||
|
ShowAlertDialog( 'Error', errorMessage2 + ' ' + response.success);
|
|||
|
... (5 lines left)
|
|||
|
Collapse
|
|||
|
message.txt
|
|||
|
5 KB
|
|||
|
|
|||
|
(function() {
|
|||
|
const delay = 500;
|
|||
|
const licensesUrl = `https://store.steampowered.com/account/licenses/`;
|
|||
|
const removeLicensesUrl = `https://store.steampowered.com/account/removelicense`;
|
|||
|
const warningString = 'Code cannot be executed here. You will be automatically redirected to the correct page. Please run this code on Steam\'s account page details: store.steampowered.com/account/licenses';
|
|||
|
const analysisHeader = 'Analyzing...';
|
|||
|
const analysisText = 'Please wait until analysis is complete.';
|
|||
|
const headerString = 'Games removing';
|
|||
|
const okString = 'Remove';
|
|||
|
const cancelString = 'Cancel';
|
|||
|
const mainInfo = 'You have <b id="numberGames"></b> game(s) can be removed.<br/>Enter the number of games you want to remove.';
|
|||
|
const errorMessage = 'Enter number from 0 to ';
|
|||
|
const removingHeader = 'In Progress...';
|
|||
|
const removingText = 'Don\'t forget to say thanks if you like the script ;) Removed:';
|
|||
|
const noGamesToRemoveMessage = 'There are no games available for removing.'
|
|||
|
const rateLimitedMessage = 'You have been rate limited, try again later!'
|
|||
|
const errorMessage2 = 'An error was encountered while processing your request:'
|
|||
|
if (location.href != (licensesUrl)) {
|
|||
|
alert(warningString);
|
|||
|
window.location = (licensesUrl);
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
var freeLicensePackages = [];
|
|||
|
var modal = ShowBlockingWaitDialog(analysisHeader, analysisText);
|
|||
|
|
|||
|
jQuery('.free_license_remove_link a').each(function(i, el) {
|
|||
|
var matched = decodeURI(el.href).match(/\d{4,}/);
|
|||
|
if (matched !== null) {
|
|||
|
freeLicensePackages.push(+matched);
|
|||
|
}
|
|||
|
});
|
|||
|
modal.Dismiss();
|
|||
|
|
|||
|
var total = freeLicensePackages.length;
|
|||
|
if (total == 0) {
|
|||
|
alert(noGamesToRemoveMessage);
|
|||
|
return;
|
|||
|
}
|
|||
|
var enteredNumber = total;
|
|||
|
|
|||
|
var desc = jQuery(`<div class="newmodal_prompt_description">${mainInfo}</div><div><div class="newmodal_prompt_input gray_bevel for_text_input fullwidth"><input type="text" id="games_number" value="0"/><span style="display: none; color: rgb(255, 0, 0);"><small>${errorMessage}${total}</small></span></div></div>`);
|
|||
|
var main = jQuery(`<div class="newmodal" style="position: fixed; z-index: 1000; max-width: 900px; left: 300px; top: 95px;"><div class="newmodal_header_border"><div class="newmodal_header"><div class="ellipsis">${headerString}</div></div></div><div class="newmodal_content_border"><div class="newmodal_content" style="max-height: 205px;"><div id="mainDiv"></div><div class="newmodal_buttons"><div class="btn_green_white_innerfade btn_medium"><span id="okButton">${okString}</span></div><div class="btn_grey_white_innerfade btn_medium"><span id="cancelButton">${cancelString}</span></div></div></div></div></div><div class="newmodal_background" style="opacity: 0.8;"></div>`);
|
|||
|
|
|||
|
jQuery('body').append(main);
|
|||
|
jQuery('#cancelButton').on('click', function (event) {
|
|||
|
jQuery('.newmodal').remove();
|
|||
|
jQuery('.newmodal_background').remove();
|
|||
|
});
|
|||
|
jQuery('#mainDiv').html(desc);
|
|||
|
jQuery('#numberGames').text(total);
|
|||
|
jQuery('#games_number').val(total);
|
|||
|
jQuery('#games_number').on('change', function (event) {
|
|||
|
var input = jQuery(this);
|
|||
|
var value = +input.val();
|
|||
|
if (!Number.isInteger(value) || value > total || value <= 0) {
|
|||
|
input.css('border-color', 'red');
|
|||
|
input.next('span').show();
|
|||
|
jQuery('#okButton').hide();
|
|||
|
}
|
|||
|
else {
|
|||
|
enteredNumber = value;
|
|||
|
input.css('border-color', '');
|
|||
|
input.next('span').hide();
|
|||
|
jQuery('#okButton').show();
|
|||
|
}
|
|||
|
});
|
|||
|
|
|||
|
var removed = 0;
|
|||
|
jQuery('#okButton').on('click', function (event) {
|
|||
|
jQuery('.newmodal').remove();
|
|||
|
jQuery('.newmodal_background').remove();
|
|||
|
proceed();
|
|||
|
});
|
|||
|
const proceed = () => {
|
|||
|
if (modal) {
|
|||
|
modal.Dismiss();
|
|||
|
}
|
|||
|
if (removed >= enteredNumber) {
|
|||
|
location.reload();
|
|||
|
}
|
|||
|
else {
|
|||
|
modal = ShowBlockingWaitDialog(removingHeader, `${removingText} <b>${removed}</b>/${enteredNumber}.`);
|
|||
|
deleteFunc(removed++);
|
|||
|
}
|
|||
|
};
|
|||
|
const deleteFunc = (index) => {
|
|||
|
jQuery.ajax({url: removeLicensesUrl,
|
|||
|
type: 'POST',
|
|||
|
data: { packageid: freeLicensePackages[index], sessionid: g_sessionID },
|
|||
|
success: function ( response ) {
|
|||
|
if ( response.success == 1 ) {
|
|||
|
setTimeout(() => proceed(), delay)
|
|||
|
}
|
|||
|
else {
|
|||
|
modal.Dismiss();
|
|||
|
if (response.success = 84)
|
|||
|
ShowAlertDialog( 'Error', rateLimitedMessage + ' Error: ' + response.success);
|
|||
|
else
|
|||
|
ShowAlertDialog( 'Error', errorMessage2 + ' ' + response.success);
|
|||
|
}
|
|||
|
}
|
|||
|
})
|
|||
|
};
|
|||
|
}());
|