refactor: Update store page header styling, add search functionality, and improve theme management

This commit is contained in:
sethburkart123
2024-09-17 17:36:21 +10:00
parent 3b62a82d91
commit 580cd9b3d9
4 changed files with 112 additions and 30 deletions
+25 -9
View File
@@ -12,6 +12,8 @@
import { StoreDownloadTheme } from '@/seqta/ui/themes/downloadTheme'
import { setTheme } from '@/seqta/ui/themes/setTheme'
import Header from '../components/store/Header.svelte'
import { deleteTheme } from '@/seqta/ui/themes/deleteTheme'
import { getAvailableThemes } from '@/seqta/ui/themes/getAvailableThemes'
// State variables
let searchTerm = $state<string>('');
@@ -20,8 +22,14 @@
let loading = $state<boolean>(true);
let darkMode = $state<boolean>(false);
let displayTheme = $state<Theme | null>(null);
let currentThemes = $state<string[]>([]);
const setDisplayTheme = (theme: Theme) => {
const fetchCurrentThemes = async () => {
const themes = await getAvailableThemes();
currentThemes = themes.themes.filter(theme => theme !== null).map(theme => theme.id);
};
const setDisplayTheme = (theme: Theme | null) => {
displayTheme = theme;
};
@@ -50,7 +58,8 @@
// On mount
onMount(async () => {
await fetchThemes();
await fetchCurrentThemes();
darkMode = (await browser.storage.local.get('DarkMode')).DarkMode === 'true';
darkMode = $settingsState.DarkMode;
@@ -83,14 +92,21 @@
<ThemeGrid themes={filteredThemes} searchTerm={searchTerm} setDisplayTheme={setDisplayTheme} />
{#if displayTheme}
<ThemeModal theme={displayTheme} onClose={() => displayTheme = null} onInstall={() => {
StoreDownloadTheme({themeContent: displayTheme as Theme}).then(() => {
setTheme((displayTheme as Theme).id);
displayTheme = null;
});
}} onRemove={() => {}} />
<ThemeModal currentThemes={currentThemes} allThemes={themes} theme={displayTheme} displayTheme={displayTheme} setDisplayTheme={setDisplayTheme} onInstall={async () => {
if (displayTheme) {
await StoreDownloadTheme({themeContent: displayTheme})
// @ts-ignore
setTheme(displayTheme.id);
await fetchCurrentThemes();
}
}} onRemove={async () => {
if (displayTheme?.id) {
console.log('deleting theme', displayTheme.id);
deleteTheme(displayTheme.id)
await fetchCurrentThemes();
}
}} />
{/if}
{/if}
</div>
</div>