2026-08-26 15:00:49 -04:00
|
|
|
(function () {
|
|
|
|
|
"use strict";
|
|
|
|
|
|
2026-08-26 21:14:06 -04:00
|
|
|
function startDarkModeObserver(settings) {
|
|
|
|
|
var observer = new MutationObserver(function () {
|
2026-08-26 21:18:48 -04:00
|
|
|
window.RedditTweaks.loadSettings().then(function (updated) {
|
|
|
|
|
if (updated.darkMode === "auto") {
|
2026-08-28 01:39:25 -04:00
|
|
|
window.RedditTweaks.applyDarkModeClass(updated);
|
2026-08-26 21:18:48 -04:00
|
|
|
if (updated.badgeLayout) {
|
2026-08-26 21:14:06 -04:00
|
|
|
window.RedditTweaks.badgeTweak.updateColors(updated);
|
|
|
|
|
}
|
2026-08-26 21:18:48 -04:00
|
|
|
if (updated.cardLayout) {
|
2026-08-26 21:14:06 -04:00
|
|
|
window.RedditTweaks.cardTweak.updateSettings(updated);
|
|
|
|
|
}
|
2026-08-26 21:18:48 -04:00
|
|
|
}
|
|
|
|
|
});
|
2026-08-26 21:14:06 -04:00
|
|
|
});
|
|
|
|
|
|
|
|
|
|
observer.observe(document.body, {
|
|
|
|
|
attributes: true,
|
|
|
|
|
attributeFilter: ["class"],
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function startPostObserver(settings) {
|
|
|
|
|
var target =
|
|
|
|
|
document.getElementById("siteTable") ||
|
|
|
|
|
document.querySelector('.content[role="main"]') ||
|
|
|
|
|
document.body;
|
|
|
|
|
|
|
|
|
|
var observer = new MutationObserver(function (mutations) {
|
|
|
|
|
var hasNewPosts = false;
|
|
|
|
|
for (var i = 0; i < mutations.length; i++) {
|
|
|
|
|
var added = mutations[i].addedNodes;
|
|
|
|
|
for (var j = 0; j < added.length; j++) {
|
|
|
|
|
var node = added[j];
|
|
|
|
|
if (node.nodeType !== Node.ELEMENT_NODE) continue;
|
|
|
|
|
if ((node.matches && node.matches("div.thing.link")) ||
|
|
|
|
|
(node.querySelector && node.querySelector("div.thing.link"))) {
|
|
|
|
|
hasNewPosts = true;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (hasNewPosts) break;
|
|
|
|
|
}
|
|
|
|
|
if (hasNewPosts) {
|
|
|
|
|
window.RedditTweaks.loadSettings().then(function (updated) {
|
2026-08-28 01:39:25 -04:00
|
|
|
if (updated.badgeLayout) {
|
2026-08-26 21:14:06 -04:00
|
|
|
window.RedditTweaks.badgeTweak.processNewPosts(updated);
|
|
|
|
|
}
|
2026-08-28 01:39:25 -04:00
|
|
|
if (updated.cardLayout) {
|
2026-08-26 21:14:06 -04:00
|
|
|
window.RedditTweaks.cardTweak.processNewPosts(updated);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
observer.observe(target, { childList: true, subtree: true });
|
|
|
|
|
}
|
|
|
|
|
|
2026-08-26 15:00:49 -04:00
|
|
|
async function init() {
|
2026-08-27 05:45:48 -04:00
|
|
|
try {
|
|
|
|
|
var settings = await window.RedditTweaks.loadSettings();
|
|
|
|
|
if (!settings.enabled) return;
|
2026-08-26 15:00:49 -04:00
|
|
|
|
2026-08-28 01:39:25 -04:00
|
|
|
window.RedditTweaks.applyDarkModeClass(settings);
|
|
|
|
|
|
2026-08-27 05:45:48 -04:00
|
|
|
if (settings.badgeLayout) {
|
|
|
|
|
document.documentElement.classList.add("rt-badges-enabled");
|
|
|
|
|
window.RedditTweaks.badgeTweak.apply(settings);
|
|
|
|
|
}
|
2026-08-26 15:00:49 -04:00
|
|
|
|
2026-08-27 05:45:48 -04:00
|
|
|
if (settings.fontOverride) {
|
|
|
|
|
document.documentElement.classList.add("rt-fonts-enabled");
|
|
|
|
|
}
|
2026-08-26 21:14:06 -04:00
|
|
|
|
2026-08-27 05:45:48 -04:00
|
|
|
if (settings.cardLayout) {
|
|
|
|
|
window.RedditTweaks.cardTweak.apply(settings);
|
|
|
|
|
}
|
2026-08-26 21:14:06 -04:00
|
|
|
|
2026-08-27 05:45:48 -04:00
|
|
|
if (settings.badgeLayout || settings.cardLayout) {
|
|
|
|
|
startPostObserver(settings);
|
|
|
|
|
startDarkModeObserver(settings);
|
2026-08-26 15:00:49 -04:00
|
|
|
}
|
|
|
|
|
|
2026-08-28 01:39:25 -04:00
|
|
|
var RELOAD_KEYS = ["enabled", "badgeLayout", "fontOverride", "cardLayout"];
|
|
|
|
|
|
2026-08-27 05:45:48 -04:00
|
|
|
browser.storage.onChanged.addListener(function (changes) {
|
2026-08-28 01:39:25 -04:00
|
|
|
var needsReload = RELOAD_KEYS.some(function (key) {
|
|
|
|
|
return changes[key] && changes[key].newValue !== changes[key].oldValue;
|
|
|
|
|
});
|
|
|
|
|
if (needsReload) {
|
2026-08-27 05:45:48 -04:00
|
|
|
location.reload();
|
|
|
|
|
return;
|
2026-08-26 21:14:06 -04:00
|
|
|
}
|
2026-08-27 05:45:48 -04:00
|
|
|
|
|
|
|
|
window.RedditTweaks.loadSettings().then(function (updated) {
|
2026-08-28 01:39:25 -04:00
|
|
|
window.RedditTweaks.applyDarkModeClass(updated);
|
2026-08-27 05:45:48 -04:00
|
|
|
if (updated.badgeLayout) {
|
|
|
|
|
window.RedditTweaks.badgeTweak.updateColors(updated);
|
|
|
|
|
}
|
|
|
|
|
if (updated.cardLayout) {
|
|
|
|
|
window.RedditTweaks.cardTweak.updateSettings(updated);
|
|
|
|
|
}
|
|
|
|
|
});
|
2026-08-26 15:00:49 -04:00
|
|
|
});
|
2026-08-27 05:45:48 -04:00
|
|
|
} catch (err) {
|
|
|
|
|
console.error("RedditTweaks init failed:", err);
|
|
|
|
|
}
|
2026-08-26 15:00:49 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
init();
|
|
|
|
|
})();
|