From af7afde592455173f2a126202f2dfe37e3c6769f Mon Sep 17 00:00:00 2001 From: cottongin Date: Wed, 26 Aug 2026 16:00:52 -0400 Subject: [PATCH] =?UTF-8?q?feat:=20mode-aware=20subreddit=20color=20overri?= =?UTF-8?q?des=20with=20v1=E2=86=92v2=20migration?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Cursor --- content/tweaks/badges.js | 11 ++++++----- lib/settings.js | 21 ++++++++++++++++++++- 2 files changed, 26 insertions(+), 6 deletions(-) diff --git a/content/tweaks/badges.js b/content/tweaks/badges.js index b4f46dd..30082f2 100644 --- a/content/tweaks/badges.js +++ b/content/tweaks/badges.js @@ -24,7 +24,8 @@ container.classList.remove("rt-dark"); } - const overrides = subredditName && settings.subredditColors[subredditName]; + const entry = subredditName && settings.subredditColors[subredditName]; + const overrides = entry && entry[prefix]; container.style.setProperty("--rt-sub-bg", overrides?.bg || settings[prefix + ".subredditBgColor"]); container.style.setProperty("--rt-sub-border", overrides?.border || settings[prefix + ".subredditBorderColor"]); @@ -58,6 +59,7 @@ badge.href = subLink.href; badge.textContent = subLink.textContent.trim(); subredditName = subLink.textContent.trim().replace(/^r\//, ""); + container.setAttribute("data-rt-subreddit", subredditName); container.appendChild(badge); const prevNode = subLink.previousSibling; @@ -139,10 +141,7 @@ currentSettings = settings; const containers = document.querySelectorAll(".reddit-tweaks-badges"); containers.forEach(function (container) { - const subBadge = container.querySelector(".rt-badge--subreddit"); - const subredditName = subBadge - ? subBadge.textContent.trim().replace(/^r\//, "") - : null; + const subredditName = container.getAttribute("data-rt-subreddit"); applyColorsToContainer(container, settings, subredditName); }); } @@ -158,5 +157,7 @@ window.RedditTweaks.badgeTweak = { apply: apply, updateColors: updateColors, + isDarkMode: isDarkMode, + getColorPrefix: getColorPrefix, }; })(); diff --git a/lib/settings.js b/lib/settings.js index 61b56f7..cbb3a3b 100644 --- a/lib/settings.js +++ b/lib/settings.js @@ -19,10 +19,29 @@ subredditColors: {}, }; + function migrateSubredditColors(colors) { + let migrated = false; + const result = {}; + for (const name of Object.keys(colors)) { + const entry = colors[name]; + if (entry && entry.bg !== undefined && !entry.light && !entry.dark) { + result[name] = { light: { bg: entry.bg, border: entry.border, text: entry.text }, dark: { bg: entry.bg, border: entry.border, text: entry.text } }; + migrated = true; + } else { + result[name] = entry; + } + } + return { result: result, migrated: migrated }; + } + async function loadSettings() { const stored = await browser.storage.local.get(null); const merged = Object.assign({}, DEFAULTS, stored); - merged.subredditColors = Object.assign({}, merged.subredditColors); + const migration = migrateSubredditColors(merged.subredditColors || {}); + merged.subredditColors = migration.result; + if (migration.migrated) { + await browser.storage.local.set({ subredditColors: merged.subredditColors }); + } return merged; }