User:Rutilant/statusChanger.js

/*   February 7, 2019

if (s_appname === undefined) { var s_appname = "statusChanger"; }

$(function { var get_token = $.get("/w/api.php?action=query&meta=tokens&format=json").then(response => { try { return response.query.tokens.csrftoken; } catch (e) { mw.notify(s_appname + ': unable to parse the token; check console log for more detail.'); console.log(e); return false; } });

function change_status(new_status) { var wgUserName = mw.config.values.wgUserName; var edit_summary = `Status: ${new_status} (${s_appname})`; get_token.then(token => {     if (token) {        $(".s-btns").attr("disabled", "disabled");        $.ajax({ type: 'POST', url: '/w/api.php', data: { title: 'User:' + wgUserName + '/Status', action: 'edit', token: token, summary: edit_summary, minor: 1, recreate: 1, text: new_status, format: 'json' },         success: function(e) { hide_options; mw.notify(s_appname + ': updated status to \'' + new_status + '\'.'); },         error: function(e) { console.log(e); mw.notify(s_appname + ': unable to perform the edit; check console log for more detail.'); return 'Unable to perform the edit.'; },         complete:  => { $(".s-btns").prop("disabled", false); }       });      }    });  }

function show_options { var wgUserName = mw.config.values.wgUserName; var overlay = ""; var style = ` position: fixed; top:50%; left: 50%; background-color:#f3f3f3; padding: 10px; font-family: BlinkMacSystemFont, 'Segoe UI', Constantia, Calibri; transform: translate(-50%, -50%); width: 350px; z-index: 1; `;   var header = "User: " + wgUserName + " Current status: unknown "; var available = ['online', 'away', 'around', 'busy', 'offline', 'sleeping']; var cancelbutton = `Cancel `;

var available_options = ""; available.forEach(function(e, i) {     available_options += `${e} `;    }); overlay += `  ${header} ${available_options} ${cancelbutton} `;   $("body").prepend(overlay); $(".s-btns").click(function(elem) {     change_status(elem.currentTarget.dataset.status);    }); $("#cancel_status_change").click(function {     hide_options;    }); /* get the current status */ $.get('/w/api.php?action=parse&prop=wikitext&format=json&page=User:' + wgUserName + '/Status') .then(returndata => {       try {          returndata = returndata.parse.wikitext["*"];        } catch (e) {          returndata = "parse error";          console.log('Parse error.');          console.log(e);        }        $("#s-current-status").html(returndata);      }); }

function hide_options { $("#status_changer_overlay_11").animate({     opacity: 0,      top: 0    }, 500, function {      $("#status_changer_overlay_11").remove;    }); }

mw.util.addPortletLink("p-cactions", "#", "Change status", "sts_change"); $("#sts_change").click(function(ev) {   ev.preventDefault;    show_options;  }); });