User:Moony/common.js: Difference between revisions
From Space Station 14 Wiki
(Created page with "// The user script that runs on the client side - this was thrown together in a couple hours // Apache 2.0/CC-BY-SA // (c) 2021 User:Ed6767 - full attributions https://github.com/wikimedia-gadgets/EasyWikiDev/commits/main/.wikidev/wikiscript.js let hasRecievedFirstMessage = false; const currentSkin = mw.config.get("skin"); const portletLinkSelector = { 'vector': 'a > span', 'monobook': 'a', 'timeless': 'a' } const currentPortletLinkSelector = portletLinkSelector[c...") |
No edit summary |
||
Line 3: | Line 3: | ||
// (c) 2021 User:Ed6767 - full attributions https://github.com/wikimedia-gadgets/EasyWikiDev/commits/main/.wikidev/wikiscript.js | // (c) 2021 User:Ed6767 - full attributions https://github.com/wikimedia-gadgets/EasyWikiDev/commits/main/.wikidev/wikiscript.js | ||
console.log("AAA"); | |||
let hasRecievedFirstMessage = false; | let hasRecievedFirstMessage = false; | ||
Revision as of 22:59, 21 December 2021
// The user script that runs on the client side - this was thrown together in a couple hours
// Apache 2.0/CC-BY-SA
// (c) 2021 User:Ed6767 - full attributions https://github.com/wikimedia-gadgets/EasyWikiDev/commits/main/.wikidev/wikiscript.js
console.log("AAA");
let hasRecievedFirstMessage = false;
const currentSkin = mw.config.get("skin");
const portletLinkSelector = {
'vector': 'a > span',
'monobook': 'a',
'timeless': 'a'
}
const currentPortletLinkSelector = portletLinkSelector[currentSkin];
const currentPageLink = mw.util.addPortletLink(
'p-personal',
'#',
"Develop",
"developLink",
null, null, // ones we don't need
'#pt-preferences' // put before preferences
);
currentPageLink.onclick = () => {
if (hasRecievedFirstMessage) {
stopDeveloperMode();
window.location.reload(); // Clear the indev script
} else {
runDeveloperMode();
}
}
function stopDeveloperMode() {
localStorage.setItem('EasyWikiDev', 'disabled');
currentPageLink.querySelector(currentPortletLinkSelector).innerText = "Develop";
}
function runDeveloperMode() {
currentPageLink.querySelector(currentPortletLinkSelector).innerText = "Stop Developing";
// Create the localstorage note
localStorage.setItem('EasyWikiDev', 'enabled');
try {
// Connect to the websocket at ws://localhost:6767
const ws = new WebSocket("ws://localhost:6767");
ws.onerror = e => { throw e; };
ws.onclose = () => {
mw.notify("EasyWikiDev: Websocket closed. The server may not be running, else try enabling developer mode again.", {
title: "Socket closed",
type: "error",
autoHide: false,
});
stopDeveloperMode();
}
// When the websocket receives a message, it will run this function
ws.onmessage = e => {
if (!hasRecievedFirstMessage) {
hasRecievedFirstMessage = true;
// The message is the script.js file
// It's just a string, so we can just eval it
eval(e.data);
} else {
window.location.reload();
}
}
} catch (error) {
console.error(error);
mw.notify("EasyWikiDev: An error occured. Make sure the server is running, then check the Javascript console for more info.", {
title: "Error",
type: "error",
autoHide: false,
});
stopDeveloperMode();
}
}
// If present, run the developer mode
if (localStorage.getItem('EasyWikiDev') === 'enabled') {
runDeveloperMode();
}