Custom button
If you wish to integrate a custom subscribe/unsubscribe button with your own design, you can.
These are the exposed pixel features that you can use in your JS code to do a custom integration:
await pusher.get_subscription_status(); await pusher.subscribe(); await pusher.unsubscribe();
Here is a sample code integration that uses these custom JS functions:
<span id="pusher_loading">Loading status...</span>
<a href="#" id="pusher_subscribe" style="display: none;">Subscribe ✅</a>
<a href="#" id="pusher_unsubscribe" style="display: none;">Unsubscribe ❌</a>
<script defer>
let initiate_pusher_script = async () => {
if(typeof pusher !== 'undefined') {
clearInterval(pusher_is_loaded_interval);
/* Get status of subscription */
let status = await pusher.get_subscription_status();
/* Remove loading message */
document.querySelector('#pusher_loading').style.display = 'none';
/* Display subscribe or unsubscribe button based on the current subscription status */
if(status) {
document.querySelector('#pusher_unsubscribe').style.display = 'block';
document.querySelector('#pusher_subscribe').style.display = 'none';
} else {
document.querySelector('#pusher_unsubscribe').style.display = 'none';
document.querySelector('#pusher_subscribe').style.display = 'block';
}
}
}
let pusher_is_loaded_interval = setInterval(initiate_pusher_script, 100);
/* Attach simple subscribe event */
document.querySelector(`#pusher_subscribe`) && document.querySelector(`#pusher_subscribe`).addEventListener('click', async event => {
event.preventDefault();
await pusher.subscribe(event);
initiate_pusher_script();
});
/* Attach simple unsubscribe event */
document.querySelector(`#pusher_unsubscribe`) && document.querySelector(`#pusher_unsubscribe`).addEventListener('click', async event => {
event.preventDefault();
await pusher.unsubscribe(event);
initiate_pusher_script();
});
</script>