Credit french translator, fix up dracula theme slightly, and mitigate a bug causing addThemeToDropdown to get called repeatedly.

This commit is contained in:
wearrrrr 2024-07-26 23:12:13 -05:00
parent 67e7fcf72d
commit 00ed3fe3b4
7 changed files with 35 additions and 40 deletions

View file

@ -5,5 +5,5 @@
--accent-color-brighter: #2d2f3c; --accent-color-brighter: #2d2f3c;
--text-color: #f8f8f2; --text-color: #f8f8f2;
--text-color-accent: #dddddd; --text-color-accent: #dddddd;
--dropdown-background-color: #6272a4; --dropdown-background-color: #343b52;
} }

View file

@ -21,6 +21,9 @@ const t = i18n.inferLangUseTranslations(Astro.url);
<p class="credit-item"> <p class="credit-item">
Rosé Pine Theme - <Link href="https://rosepinetheme.com/" newTab>Rosé Pine</Link> Rosé Pine Theme - <Link href="https://rosepinetheme.com/" newTab>Rosé Pine</Link>
</p> </p>
<p class="credit-item">
French Translations - <Link href="https://github.com/notboeing747" newTab>notboeing747</Link>
</p>
</div> </div>
</div> </div>

View file

@ -19,11 +19,11 @@ const languageList = [
<div class="settings-container"> <div class="settings-container">
<div class="setting__theme"> <div class="setting__theme">
<label aria-label="Theme" class="setting-label">{t("settings.customization.theme")}</label> <label for="dropdown__selected-theme" aria-label="Theme" class="setting-label">{t("settings.customization.theme")}</label>
<Dropdown buttonNameDefault="Alu" localStorageKey="alu__selectedTheme" dropdownList={themeList} id="dropdown__selected-theme" /> <Dropdown buttonNameDefault="Alu" localStorageKey="alu__selectedTheme" dropdownList={themeList} id="dropdown__selected-theme" />
</div> </div>
<div class="setting__language"> <div class="setting__language">
<label aria-label="Language" class="setting-label">{t("settings.customization.language")}</label> <label for="dropdown__selected-language" aria-label="Language" class="setting-label">{t("settings.customization.language")}</label>
<Dropdown buttonNameDefault="English" localStorageKey="alu__selectedLanguage" dropdownList={languageList} id="dropdown__selected-language" /> <Dropdown buttonNameDefault="English" localStorageKey="alu__selectedLanguage" dropdownList={languageList} id="dropdown__selected-language" />
</div> </div>
</div> </div>

View file

@ -38,19 +38,19 @@ const wispURLList = [
<div class="settings-container"> <div class="settings-container">
<div class="setting__selected-proxy"> <div class="setting__selected-proxy">
<label aria-label="Selected Proxy" class="setting-label">{t("settings.proxy.selectedProxy")}</label> <label for="dropdown__selected-proxy" aria-label="Selected Proxy" class="setting-label">{t("settings.proxy.selectedProxy")}</label>
<Dropdown buttonNameDefault="Ultraviolet" dropdownList={proxyList} localStorageKey="alu__selectedProxy" id="dropdown__selected-proxy" /> <Dropdown buttonNameDefault="Ultraviolet" dropdownList={proxyList} localStorageKey="alu__selectedProxy" id="dropdown__selected-proxy" />
</div> </div>
<div class="setting__search-engine"> <div class="setting__search-engine">
<label aria-label="Search Engine" class="setting-label">{t("settings.proxy.searchEngine")}</label> <label for="dropdown__search-engine" aria-label="Search Engine" class="setting-label">{t("settings.proxy.searchEngine")}</label>
<Dropdown buttonNameDefault="Google" dropdownList={searchEngineList} localStorageKey="alu__searchEngine" id="dropdown__search-engine" /> <Dropdown buttonNameDefault="Google" dropdownList={searchEngineList} localStorageKey="alu__searchEngine" id="dropdown__search-engine" />
</div> </div>
<div class="setting__open_with"> <div class="setting__open_with">
<label aria-label="Open Page With" class="setting-label">{t("settings.proxy.openPageWith")}</label> <label for="dropdown__open-with" aria-label="Open Page With" class="setting-label">{t("settings.proxy.openPageWith")}</label>
<Dropdown buttonNameDefault={t("settings.proxy.openPageWith.embed")} dropdownList={openPageWith} localStorageKey="alu__selectedOpenWith" id="dropdown__open-with" /> <Dropdown buttonNameDefault={t("settings.proxy.openPageWith.embed")} dropdownList={openPageWith} localStorageKey="alu__selectedOpenWith" id="dropdown__open-with" />
</div> </div>
<div class="setting__wisp_url"> <div class="setting__wisp_url">
<label aria-label="Wisp URL" for="dropdown__wisp-url" class="setting-label">{t("settings.proxy.wispURL")}</label> <label for="dropdown__wisp-url" aria-label="Wisp URL" for="dropdown__wisp-url" class="setting-label">{t("settings.proxy.wispURL")}</label>
<Dropdown buttonNameDefault="" dropdownList={wispURLList} localStorageKey="alu__selectedWisp" id="dropdown__wisp-url" /> <Dropdown buttonNameDefault="" dropdownList={wispURLList} localStorageKey="alu__selectedWisp" id="dropdown__wisp-url" />
</div> </div>
<div class="setting__bare_url"> <div class="setting__bare_url">
@ -58,7 +58,7 @@ const wispURLList = [
<Input height="50px" inputName="bare-url" /> <Input height="50px" inputName="bare-url" />
</div> </div>
<div class="setting__transport"> <div class="setting__transport">
<label aria-label="Wisp Transport" class="setting-label">{t("settings.proxy.transport")}</label> <label for="dropdown__transport" aria-label="Wisp Transport" class="setting-label">{t("settings.proxy.transport")}</label>
<Dropdown buttonNameDefault="Epoxy" dropdownList={transportsList} localStorageKey="alu__selectedTransport" id="dropdown__transport" /> <Dropdown buttonNameDefault="Epoxy" dropdownList={transportsList} localStorageKey="alu__selectedTransport" id="dropdown__transport" />
</div> </div>
</div> </div>

View file

@ -1,14 +1,5 @@
<script> <script>
import IDBManager from "@components/ts/IDBManager"; import IDBManager from "@components/ts/IDBManager";
const tempDB = await IDBManager.loadIDBPromise("AluDB", 1);
if (tempDB instanceof Event) {
// Something has gone wrong, and the IDB can't be loaded, so we'll delete it and recreate it.
IDBManager.DeleteIDB("AluDB");
throw new Error("IDB has failed to load - It has been deleted and will be recreated when you refresh the page.");
}
if (!IDBManager.ValidateStoreExists("InstalledExtensions")) {
IDBManager.CreateStore("InstalledExtensions", { keyPath: "slug" });
}
function switchTheme() { function switchTheme() {
let currentTheme = localStorage.getItem("alu__selectedTheme"); let currentTheme = localStorage.getItem("alu__selectedTheme");
@ -32,9 +23,6 @@
const idb = IDBManager.loadIDB("AluDB", 1); const idb = IDBManager.loadIDB("AluDB", 1);
idb.onsuccess = () => { idb.onsuccess = () => {
const db = idb.result;
IDBManager.SetIDB(db);
let store = IDBManager.GetStore("InstalledExtensions", "readonly"); let store = IDBManager.GetStore("InstalledExtensions", "readonly");
store.getAll().onsuccess = (event) => { store.getAll().onsuccess = (event) => {
const result = (event.target as IDBRequest).result; const result = (event.target as IDBRequest).result;
@ -42,20 +30,20 @@
result.forEach((extension: IExtensionMetadata) => { result.forEach((extension: IExtensionMetadata) => {
if (extension.type === "theme" && extension.themeName) { if (extension.type === "theme" && extension.themeName) {
// Load theme CSS // Load theme CSS
window.loadedThemeAtob = atob(extension.scriptCopy!); console.log("Attempting to load theme", extension.themeName);
loadStyleFromAtob(); loadStyleFromAtob(atob(extension.scriptCopy!));
document.addEventListener("astro:after-swap", () => { document.addEventListener("astro:after-swap", () => {
loadStyleFromAtob(); loadStyleFromAtob(atob(extension.scriptCopy!));
}); });
} }
}); });
} }
}; };
}; };
function loadStyleFromAtob() { function loadStyleFromAtob(style: string) {
const style = document.createElement("style"); const styleEl = document.createElement("style");
style.textContent = window.loadedThemeAtob; styleEl.textContent = style;
document.head.appendChild(style); document.head.appendChild(styleEl);
} }
</script> </script>

View file

@ -55,6 +55,16 @@ const { title, optionalPreloads } = Astro.props;
gtag("config", "G-P1JX4G9KSF"); gtag("config", "G-P1JX4G9KSF");
</script> </script>
<script>
import IDBManager from "@components/ts/IDBManager";
if (!window.idb) {
let db = await IDBManager.loadIDBPromise("AluDB", 1);
if (db instanceof IDBDatabase) {
window.idb = db;
}
}
</script>
<meta name="generator" content={Astro.generator} /> <meta name="generator" content={Astro.generator} />
<title>{title}</title> <title>{title}</title>
<ViewTransitions /> <ViewTransitions />

View file

@ -55,13 +55,6 @@ export function getStaticPaths() {
<div id="current-content"></div> <div id="current-content"></div>
</div> </div>
</main> </main>
<script>
import IDBManager from "@components/ts/IDBManager";
let db = await IDBManager.loadIDBPromise("AluDB", 1);
if (db instanceof IDBDatabase) {
window.idb = db;
}
</script>
<script is:inline> <script is:inline>
window.loadedContentStorage = {}; window.loadedContentStorage = {};
window.currentlySelectedTab; window.currentlySelectedTab;
@ -90,7 +83,6 @@ export function getStaticPaths() {
setTimeout(() => { setTimeout(() => {
currentContent.innerHTML = window.loadedContentStorage[tabID]; currentContent.innerHTML = window.loadedContentStorage[tabID];
currentContent.style.opacity = "1"; currentContent.style.opacity = "1";
document.dispatchEvent(new CustomEvent("setting-tabChange", { detail: tabID }));
document.dispatchEvent(new CustomEvent("setting-tabLoad", { detail: tabID })); document.dispatchEvent(new CustomEvent("setting-tabLoad", { detail: tabID }));
}, 250); }, 250);
} }
@ -204,19 +196,21 @@ export function getStaticPaths() {
function addThemeToDropdown(extension) { function addThemeToDropdown(extension) {
let dropdown = document.getElementById("dropdown__selected-theme-menu"); let dropdown = document.getElementById("dropdown__selected-theme-menu");
if (dropdown) { if (dropdown) {
// TODO: Figure out why addThemeToDropdown is being called 6 times
// This when you go from another page and back to settings->customization.
let duplicateItem = Array.from(dropdown.children).find((item) => {
return item.dataset.setting == extension.themeName;
});
if (duplicateItem) return;
let themeItem = document.createElement("li"); let themeItem = document.createElement("li");
themeItem.classList.add("dropdown-item"); themeItem.classList.add("dropdown-item");
themeItem.dataset.setting = extension.themeName; themeItem.dataset.setting = extension.themeName;
themeItem.textContent = extension.title; themeItem.textContent = extension.title;
dropdown.appendChild(themeItem); dropdown.appendChild(themeItem);
} else {
setTimeout(() => {
addThemeToDropdown(extension);
}, 1000);
} }
} }
document.addEventListener("setting-tabChange", determineListener); document.addEventListener("setting-tabLoad", determineListener);
loadContent("setting-tab-proxy"); loadContent("setting-tab-proxy");