feat: mode-aware subreddit color overrides with v1→v2 migration
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -24,7 +24,8 @@
|
|||||||
container.classList.remove("rt-dark");
|
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-bg", overrides?.bg || settings[prefix + ".subredditBgColor"]);
|
||||||
container.style.setProperty("--rt-sub-border", overrides?.border || settings[prefix + ".subredditBorderColor"]);
|
container.style.setProperty("--rt-sub-border", overrides?.border || settings[prefix + ".subredditBorderColor"]);
|
||||||
@@ -58,6 +59,7 @@
|
|||||||
badge.href = subLink.href;
|
badge.href = subLink.href;
|
||||||
badge.textContent = subLink.textContent.trim();
|
badge.textContent = subLink.textContent.trim();
|
||||||
subredditName = subLink.textContent.trim().replace(/^r\//, "");
|
subredditName = subLink.textContent.trim().replace(/^r\//, "");
|
||||||
|
container.setAttribute("data-rt-subreddit", subredditName);
|
||||||
container.appendChild(badge);
|
container.appendChild(badge);
|
||||||
|
|
||||||
const prevNode = subLink.previousSibling;
|
const prevNode = subLink.previousSibling;
|
||||||
@@ -139,10 +141,7 @@
|
|||||||
currentSettings = settings;
|
currentSettings = settings;
|
||||||
const containers = document.querySelectorAll(".reddit-tweaks-badges");
|
const containers = document.querySelectorAll(".reddit-tweaks-badges");
|
||||||
containers.forEach(function (container) {
|
containers.forEach(function (container) {
|
||||||
const subBadge = container.querySelector(".rt-badge--subreddit");
|
const subredditName = container.getAttribute("data-rt-subreddit");
|
||||||
const subredditName = subBadge
|
|
||||||
? subBadge.textContent.trim().replace(/^r\//, "")
|
|
||||||
: null;
|
|
||||||
applyColorsToContainer(container, settings, subredditName);
|
applyColorsToContainer(container, settings, subredditName);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -158,5 +157,7 @@
|
|||||||
window.RedditTweaks.badgeTweak = {
|
window.RedditTweaks.badgeTweak = {
|
||||||
apply: apply,
|
apply: apply,
|
||||||
updateColors: updateColors,
|
updateColors: updateColors,
|
||||||
|
isDarkMode: isDarkMode,
|
||||||
|
getColorPrefix: getColorPrefix,
|
||||||
};
|
};
|
||||||
})();
|
})();
|
||||||
|
|||||||
@@ -19,10 +19,29 @@
|
|||||||
subredditColors: {},
|
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() {
|
async function loadSettings() {
|
||||||
const stored = await browser.storage.local.get(null);
|
const stored = await browser.storage.local.get(null);
|
||||||
const merged = Object.assign({}, DEFAULTS, stored);
|
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;
|
return merged;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user