Files
reddit-tweaks-ffe/lib/settings.js
cottongin 48db2fc70e feat: add color presets + fix badge hover effect
- Add global color presets: save/apply/delete sets of {bg, border, text}
  colors as reusable presets, shown as mini badges in their own colors.
- Popover: preset badges under preview with + to save, click to apply,
  × on hover to delete.
- Popup: dedicated Color Presets section with same functionality,
  applying to light subreddit badge colors.
- Storage: colorPresets array added to settings defaults.
- Fix badge hover: change brightness(0.9) to brightness(1.1) so hover
  brightens (activates) instead of dimming.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-26 18:00:54 -04:00

69 lines
2.1 KiB
JavaScript

(function () {
"use strict";
const DEFAULTS = {
enabled: true,
darkMode: "auto",
"light.subredditBgColor": "#fde8e0",
"light.subredditBorderColor": "#c84a20",
"light.subredditTextColor": "#c84a20",
"light.commentsBgColor": "#e0e0e0",
"light.commentsBorderColor": "#4a4a4a",
"light.commentsTextColor": "#4a4a4a",
"dark.subredditBgColor": "#3d2518",
"dark.subredditBorderColor": "#ff6b3d",
"dark.subredditTextColor": "#ff6b3d",
"dark.commentsBgColor": "#3a3a3a",
"dark.commentsBorderColor": "#888888",
"dark.commentsTextColor": "#cccccc",
subredditColors: {},
colorPresets: [],
};
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);
const migration = migrateSubredditColors(merged.subredditColors || {});
merged.subredditColors = migration.result;
if (migration.migrated) {
await browser.storage.local.set({ subredditColors: merged.subredditColors });
}
return merged;
}
async function saveSettings(settings) {
const toStore = {};
for (const key of Object.keys(settings)) {
if (key in DEFAULTS) {
toStore[key] = settings[key];
}
}
await browser.storage.local.set(toStore);
}
async function resetSettings() {
await browser.storage.local.clear();
}
window.RedditTweaks = window.RedditTweaks || {};
window.RedditTweaks.DEFAULTS = DEFAULTS;
window.RedditTweaks.loadSettings = loadSettings;
window.RedditTweaks.saveSettings = saveSettings;
window.RedditTweaks.resetSettings = resetSettings;
})();