mirror of
https://github.com/PretendoNetwork/website.git
synced 2025-04-02 11:11:50 -04:00
114 lines
4 KiB
JavaScript
114 lines
4 KiB
JavaScript
const buttons = {
|
|
submit: document.getElementById('submitButton'),
|
|
unsubModal: {
|
|
show: document.getElementById('unsubModalShowButton'),
|
|
close: document.getElementById('unsubModalCloseButton'),
|
|
confirm: document.getElementById('unsubModalConfirmButton'),
|
|
},
|
|
switchTierModal: {
|
|
show: document.getElementById('switchTierShowButton'),
|
|
close: document.getElementById('switchTierCloseButton'),
|
|
confirm: document.getElementById('switchTierConfirmButton'),
|
|
},
|
|
};
|
|
|
|
const currentTierID = document.querySelector('form').dataset.currentTier || undefined;
|
|
|
|
const currentTierElement = document.querySelector(`#${currentTierID}`) || undefined;
|
|
|
|
// if the condition is met, we disable the submit button and enable the unsubscribe button
|
|
function conditionalSubmitButton(condition, target) {
|
|
if (condition) {
|
|
buttons.submit.innerText = 'Already subscribed to this tier';
|
|
buttons.unsubModal.show.innerText = `Unsubscribe from ${currentTierElement.dataset.tierName}`;
|
|
buttons.submit.disabled = true;
|
|
buttons.submit.classList.add('disabled');
|
|
buttons.unsubModal.show.classList.remove('hidden');
|
|
} else {
|
|
buttons.submit.classList.remove('disabled');
|
|
buttons.unsubModal.show.classList.add('hidden');
|
|
buttons.submit.disabled = false;
|
|
buttons.submit.innerText = `Subscribe to ${target.dataset.tierName}`;
|
|
}
|
|
}
|
|
|
|
function submitForm(cancel) {
|
|
const form = document.querySelector('form');
|
|
|
|
if (cancel) {
|
|
form.action = '/account/stripe/unsubscribe';
|
|
} else {
|
|
const selectedTier = form.querySelector('input[type="radio"]:checked').value;
|
|
form.action = `/account/stripe/checkout/${selectedTier}`;
|
|
}
|
|
|
|
form.submit();
|
|
}
|
|
|
|
// If the currect tier exists, select it from the list and disable the submit button.
|
|
if (currentTierElement) {
|
|
currentTierElement.click();
|
|
conditionalSubmitButton(true);
|
|
}
|
|
|
|
// If a tier is selected, conditionally enable the submit button.
|
|
document.querySelector('form').addEventListener('change', function(e) {
|
|
e.preventDefault();
|
|
|
|
// If the selected tier is the current tier, set the button to disabled. Else we enable the button
|
|
conditionalSubmitButton(e.target.value === currentTierElement?.value, e.target);
|
|
});
|
|
|
|
// handle the submit button
|
|
buttons.submit.addEventListener('click', function(e) {
|
|
e.preventDefault();
|
|
|
|
// If the user is already subscribed to another tier, we show the confirm modal, else if this is a new subscription we submit the form.
|
|
if (currentTierElement) {
|
|
const oldTierNameSpan = document.querySelector('#switchtier .modal-caption span.oldtier');
|
|
const newTierNameSpan = document.querySelector('#switchtier .modal-caption span.newtier');
|
|
oldTierNameSpan.innerText = currentTierElement.dataset.tierName;
|
|
newTierNameSpan.innerText = document.querySelector('input[name="tier"]:checked').dataset.tierName;
|
|
|
|
document.body.classList.add('modal-open');
|
|
document.querySelector('.modal-wrapper#switchtier').classList.remove('hidden');
|
|
} else {
|
|
submitForm();
|
|
}
|
|
});
|
|
|
|
buttons.unsubModal.show.addEventListener('click', function(e) {
|
|
e.preventDefault();
|
|
|
|
const tierNameSpan = document.querySelector('#unsub .modal-caption span');
|
|
tierNameSpan.innerText = currentTierElement.dataset.tierName;
|
|
|
|
// Show the unsubscribe modal
|
|
document.body.classList.add('modal-open');
|
|
document.querySelector('.modal-wrapper#unsub').classList.remove('hidden');
|
|
});
|
|
buttons.unsubModal.close.addEventListener('click', function(e) {
|
|
e.preventDefault();
|
|
|
|
// Hide the unsubscribe modal
|
|
document.body.classList.remove('modal-open');
|
|
document.querySelector('.modal-wrapper#unsub').classList.add('hidden');
|
|
});
|
|
buttons.unsubModal.confirm.addEventListener('click', function(e) {
|
|
e.preventDefault();
|
|
|
|
submitForm(true);
|
|
});
|
|
|
|
buttons.switchTierModal.close.addEventListener('click', function(e) {
|
|
e.preventDefault();
|
|
|
|
// Hide the switch tier modal
|
|
document.body.classList.remove('modal-open');
|
|
document.querySelector('.modal-wrapper#switchtier').classList.add('hidden');
|
|
});
|
|
buttons.switchTierModal.confirm.addEventListener('click', function(e) {
|
|
e.preventDefault();
|
|
|
|
submitForm(false);
|
|
});
|