diff --git a/src/lib/settings.js b/src/lib/settings.js index 799334be4..3ef5adeb4 100644 --- a/src/lib/settings.js +++ b/src/lib/settings.js @@ -176,6 +176,7 @@ class Settings { maxRetryCount: 3, showRetryToast: false, showSideButtons: true, + showSponsorSidebarApp: true, showAnnotations: false, lintGutter: true, rainbowBrackets: true, diff --git a/src/settings/appSettings.js b/src/settings/appSettings.js index d1c74294b..f23d3188a 100644 --- a/src/settings/appSettings.js +++ b/src/settings/appSettings.js @@ -176,6 +176,11 @@ export default function otherSettings() { text: strings["show side buttons"], checkbox: values.showSideButtons, }, + { + key: "showSponsorSidebarApp", + text: `${strings.sponsor} (${strings.sidebar})`, + checkbox: values.showSponsorSidebarApp, + }, { key: "excludeFolders", text: strings["exclude files"], diff --git a/src/sidebarApps/index.js b/src/sidebarApps/index.js index c08636c84..f30c08a84 100644 --- a/src/sidebarApps/index.js +++ b/src/sidebarApps/index.js @@ -1,3 +1,4 @@ +import appSettings from "lib/settings"; import Sponsors from "pages/sponsors"; import SidebarApp from "./sidebarApp"; @@ -11,6 +12,8 @@ let $sidebar; let currentSection = localStorage.getItem(SIDEBAR_APPS_LAST_SECTION); /**@type {SidebarApp[]} */ const apps = []; +/**@type {HTMLSpanElement | null} */ +let $sponsorIcon = null; /** * @param {string} icon icon of the app @@ -68,6 +71,10 @@ function init($el) { $apps = $sidebar.get(".app-icons-container"); $apps.addEventListener("click", onclick); SidebarApp.init($el, $apps); + appSettings.on( + "update:showSponsorSidebarApp", + setSponsorSidebarAppVisibility, + ); } /** @@ -78,7 +85,33 @@ async function loadApps() { add(...(await import("./searchInFiles")).default); add(...(await import("./extensions")).default); add(...(await import("./notification")).default); - $apps.append(); + setSponsorSidebarAppVisibility(appSettings.value.showSponsorSidebarApp); +} + +/** + * Adds or removes the sponsor icon in sidebar based on settings. + * @param {boolean} visible + */ +function setSponsorSidebarAppVisibility(visible) { + if (!$apps) return; + + if (visible) { + if ($sponsorIcon?.isConnected) return; + $sponsorIcon = ( + + ); + $apps.append($sponsorIcon); + return; + } + + if ($sponsorIcon) { + $sponsorIcon.remove(); + $sponsorIcon = null; + } } /**