Files
BetterSEQTA-Plus/src/seqta/ui/themes/setTheme.ts
T
2024-09-02 21:46:48 +10:00

38 lines
1.4 KiB
TypeScript

import localforage from 'localforage';
import type { CustomTheme } from '@/old-interface/types/CustomThemes';
import { applyTheme } from './applyTheme';
import { removeTheme } from './removeTheme';
import { settingsState } from '@/seqta/utils/listeners/SettingsState';
export const setTheme = async (themeId: string) => {
try {
const theme = await localforage.getItem(themeId) as CustomTheme;
console.debug('Loading theme', theme);
let originalSelectedColor = { selectedColor: '' };
const styleElement = document.getElementById('custom-theme');
// Remove the currently enabled theme
if (settingsState.selectedTheme || styleElement) {
const currentTheme = await localforage.getItem(settingsState.selectedTheme) as CustomTheme;
if (currentTheme) {
await removeTheme(currentTheme);
}
originalSelectedColor = { selectedColor: settingsState.originalSelectedColor };
} else {
originalSelectedColor = { selectedColor: settingsState.selectedColor };
}
await applyTheme(theme);
settingsState.selectedTheme = themeId
settingsState.selectedColor = theme.selectedColor ? theme.selectedColor : (theme.defaultColour !== '' ? theme.defaultColour : '#007bff')
settingsState.originalSelectedColor = originalSelectedColor.selectedColor
} catch (error) {
console.error('Error setting theme:', error);
}
};