Update observer when changing settings

This commit is contained in:
Lucas Sköld
2025-01-24 19:24:11 +01:00
parent 5633d5ca93
commit 44fcd26b16
2 changed files with 43 additions and 9 deletions
+31 -9
View File
@@ -5,6 +5,7 @@ import { api } from "../../../scripts/api.js";
const menuCache = new Map();
const settingsHelper = new SettingsHelper("SyntaxHighlighter");
let contextMenuObserver = null;
async function toggleFavourite(
existingList,
@@ -94,7 +95,8 @@ app.registerExtension({
return options;
};
observeContextMenu(existingList);
initializeContextMenuObserver();
settingsHelper.addReloadSettingsListener(initializeContextMenuObserver);
},
});
@@ -245,15 +247,32 @@ async function addStarsToFavourited(
}
});
// Remove all entries
menuEntries.forEach((entry) => entry.remove());
if (settings["Favorite On Top"]) {
// Remove all entries
menuEntries.forEach((entry) => entry.remove());
// Add entries in order: none (if exists), starred, unstarred
if (noneEntry) {
menuContainer.appendChild(noneEntry);
// Add entries in order: none (if exists), starred, unstarred
if (noneEntry) {
menuContainer.appendChild(noneEntry);
}
starredEntries.forEach((entry) => menuContainer.appendChild(entry));
unstarredEntries.forEach((entry) => menuContainer.appendChild(entry));
}
starredEntries.forEach((entry) => menuContainer.appendChild(entry));
unstarredEntries.forEach((entry) => menuContainer.appendChild(entry));
}
async function initializeContextMenuObserver() {
let existingList = await settingsHelper.getSettingById(
"SyntaxHighlighter.favorites"
);
if (!Array.isArray(existingList)) {
existingList = [];
}
if (contextMenuObserver) {
contextMenuObserver.disconnect();
}
contextMenuObserver = await observeContextMenu(existingList);
}
async function observeContextMenu(existingList) {
@@ -262,7 +281,8 @@ async function observeContextMenu(existingList) {
"Preview Image Padding",
"Preview Image Side",
"Preview Image Size",
"Preview Image Delay"
"Preview Image Delay",
"Favorite On Top"
);
const favoriteColor = settings["Combo Highlight Color"];
const brighterFavoriteColor = brightenColor(favoriteColor);
@@ -355,6 +375,8 @@ async function observeContextMenu(existingList) {
characterData: false,
subtree: true,
});
return observer;
}
async function addPreviewImage(entry, path, settings) {
+12
View File
@@ -23,6 +23,14 @@ const settingsDefinitions = [
),
onChange: () => SettingsHelper.PresetOnChange.reloadSettings(),
},
{
name: "Favorite On Top",
category: ["SyntaxHighlighter", "Combo", "FavoriteOnTop"],
defaultValue: true,
tooltip: "Put favorite items over all other items.",
type: SettingsHelper.ST.BOOLEAN,
onChange: () => SettingsHelper.PresetOnChange.reloadSettings(),
},
{
name: "Combo Highlight Color",
category: ["SyntaxHighlighter", "Combo", "ComboHighlightColor"],
@@ -35,12 +43,14 @@ const settingsDefinitions = [
category: ["SyntaxHighlighter", "Preview Image", "PreviewImageDelay"],
defaultValue: 200,
type: SettingsHelper.ST.SLIDER(0, 1000, 1),
onChange: () => SettingsHelper.PresetOnChange.reloadSettings(),
},
{
name: "Preview Image Padding",
category: ["SyntaxHighlighter", "Preview Image", "PreviewImagePadding"],
defaultValue: 20,
type: SettingsHelper.ST.SLIDER(0, 100, 1),
onChange: () => SettingsHelper.PresetOnChange.reloadSettings(),
},
{
name: "Preview Image Side",
@@ -50,12 +60,14 @@ const settingsDefinitions = [
{ text: "Left", value: "left" },
{ text: "Right", value: "right" }
),
onChange: () => SettingsHelper.PresetOnChange.reloadSettings(),
},
{
name: "Preview Image Size",
category: ["SyntaxHighlighter", "Preview Image", "PreviewImageSize"],
defaultValue: 300,
type: SettingsHelper.ST.SLIDER(100, 1000, 10),
onChange: () => SettingsHelper.PresetOnChange.reloadSettings(),
},
];
settingsHelper.addSettings(settingsDefinitions);