
// I got the key, I got the secret…
let key = 'mastodon-instance';
let instance = localStorage.getItem(key);

// get the link from the DOM
const button = document.querySelector('.mastodon-share');

// refresh the link with the instance name
const refreshlink = (instance) => {
    button.href = `https://${instance}/share?text=${encodeURIComponent(document.title)}%0A${encodeURIComponent(location.href)}`;
}

// got it? Let's go! 
if (button) {
    // labels and texts from the link
    let prompt = button.dataset.prompt || 'Please tell me your Mastodon instance';
    let editlabel = button.dataset.editlabel || 'Edit your Mastodon instance';
    let edittext = button.dataset.edittext || '✏️';

    // Ask the user for the instance name and set it…
    const setinstance = _ => {
        instance = window.prompt(prompt, instance);
        if(instance) {
            localStorage.setItem(key, instance);
            createeditbutton();
            refreshlink(instance);
            button.click();
        }
    }
    
    // create and insert the edit link
    const createeditbutton = _ => {
        if (document.querySelector('button.mastodon-edit')) return;
        let editlink = document.createElement('button');
          editlink.innerText = edittext;
          editlink.classList.add('mastodon-edit');
          editlink.title = editlabel;
          editlink.ariaLabel = editlabel;
          editlink.addEventListener('click', (e) => {
              e.preventDefault();
              localStorage.removeItem(key);
              setinstance();
          });
          button.insertAdjacentElement('afterend', editlink);
    }
    
    // if there is  a value in localstorage, create the edit link
    if(localStorage.getItem(key)) {
        createeditbutton();
    }  
    
    // When a user clicks the link
    button.addEventListener('click', (e) => {

        // If the user has already entered their instance 
        // and it is in localstorage write out the link href 
        // with the instance and the current page title and URL
        if(localStorage.getItem(key)) {
            refreshlink(localStorage.getItem(key));
            // otherwise, prompt the user for their instance and save it to localstorage
        } else {
            e.preventDefault();
            setinstance();
        }

    });
}