2020-03-09 22:26:37 +01:00
|
|
|
function PleromaModFavicon () {
|
|
|
|
this.instances = {};
|
|
|
|
this.config = {
|
|
|
|
favicon: "favicon.png",
|
|
|
|
fallback: "favicon.ico"
|
|
|
|
};
|
|
|
|
this.loadConfig();
|
|
|
|
}
|
|
|
|
|
|
|
|
[
|
|
|
|
function loadConfig () {
|
|
|
|
window.fetch(PleromaModLoader.getModDir() + "pleroma-mod-favicon/config.json").then((response) => {
|
|
|
|
if (response.ok) {
|
|
|
|
response.json().then((json) => {
|
|
|
|
// TODO (puniko): do config stuff
|
|
|
|
}).catch((error) => {
|
|
|
|
console.error("can't parse favicon config");
|
|
|
|
console.error(error);
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}).catch((error) => {
|
|
|
|
console.error("can't load favicon config");
|
|
|
|
console.error(error);
|
|
|
|
});
|
|
|
|
},
|
|
|
|
|
|
|
|
function onMutation (mutation, observer) {
|
|
|
|
this.addFavicon();
|
|
|
|
},
|
|
|
|
|
|
|
|
function onReady () {
|
|
|
|
this.addFavicon();
|
|
|
|
},
|
|
|
|
|
|
|
|
function run () {
|
|
|
|
PleromaModLoader.includeModCss("pleroma-mod-favicon/style.css");
|
|
|
|
},
|
|
|
|
|
|
|
|
function addFavicon () {
|
2020-05-12 20:06:00 +02:00
|
|
|
const statusHeadingRights = document.querySelectorAll(".status>.status-body");
|
2020-03-09 22:26:37 +01:00
|
|
|
for (let statusHeadingRight of statusHeadingRights) {
|
|
|
|
this.addFaviconByStatus(statusHeadingRight);
|
|
|
|
}
|
|
|
|
},
|
|
|
|
|
|
|
|
function addFaviconByStatus (statusHeadingRight) {
|
|
|
|
if (statusHeadingRight.querySelector(".instance-favicon")) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
const sourceElements = statusHeadingRight.querySelector(".source_url");
|
|
|
|
let instance = "default";
|
|
|
|
if (sourceElements) {
|
|
|
|
const urlMatches = sourceElements.href.match(/https?:\/\/[^/]*/);
|
|
|
|
if (urlMatches.length > 0) {
|
|
|
|
instance = urlMatches[0];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
instance = instance.replace(/^https?:\/\//, "");
|
|
|
|
|
|
|
|
const faviconElement = document.createElement("img");
|
|
|
|
faviconElement.src = PleromaModLoader.getModDir() + "pleroma-mod-favicon/cache/" + instance + ".png";
|
|
|
|
faviconElement.className = "instance-favicon";
|
|
|
|
statusHeadingRight.appendChild(faviconElement);
|
|
|
|
}
|
|
|
|
].forEach((func) => { PleromaModFavicon.prototype[func.name] = func; });
|
|
|
|
|
|
|
|
PleromaModLoader.registerMod(PleromaModFavicon);
|