import { Dark } from 'quasar'; import { appName, databaseName, type Settings } from 'src/vueLib/models/settings'; import { updateOrAddObject } from 'src/vueLib/utils/utils'; import { ref } from 'vue'; export function setLocalSettings(settings: Settings) { localStorage.setItem('icon', settings.icon); localStorage.setItem('appName', settings.appName); localStorage.setItem('databaseName', settings.databaseName); localStorage.setItem('primaryColor', settings.primaryColor); localStorage.setItem('primaryColorText', settings.primaryColorText); localStorage.setItem('secondaryColor', settings.secondaryColor); localStorage.setItem('secondaryColorText', settings.secondaryColorText); } export function getLocalSettings(): Settings { let name = localStorage.getItem('appName'); if (name === undefined || name === 'undefined') { name = appName.value; } let db = localStorage.getItem('databaseName'); if (db === undefined || db === 'undefined') { db = databaseName.value; } let iconName = localStorage.getItem('icon'); if (iconName === undefined || iconName === 'undefined') { iconName = ''; } return { icon: iconName, appName: name, databaseName: db, primaryColor: localStorage.getItem('primaryColor'), primaryColorText: localStorage.getItem('primaryColorText'), secondaryColor: localStorage.getItem('secondaryColor'), secondaryColorText: localStorage.getItem('secondaryColorText'), }; } export function clearLocalStorage() { localStorage.removeItem('icon'); localStorage.removeItem('appName'); localStorage.removeItem('databaseName'); localStorage.removeItem('primaryColor'); localStorage.removeItem('primaryColorText'); localStorage.removeItem('secondaryColor'); localStorage.removeItem('secondaryColorText'); localStorage.removeItem('lastRoute'); localStorage.removeItem('mode'); localStorage.removeItem('lang'); } export function setLocalDarkMode() { localStorage.setItem('mode', String(Dark.mode)); } export function getLocalDarkMode(): boolean { return localStorage.getItem('mode') === 'true'; } export function setLocalLastRoute(route: string) { localStorage.setItem('lastRoute', route); } export function getLocalLastRoute(): string { return localStorage.getItem('lastRoute') || '/members'; } export function setLocalLanguage(language: string) { localStorage.setItem('lang', language); } export function getLocalLanguage(): string | null { return localStorage.getItem('lang'); } type pageDefault = { page: string; stringValue: string; filteredValues: string[]; }; type pageDefaults = pageDefault[]; const pageDefaults = ref([]); export function setLocalPageDefaults( page: string, filteredColumn?: string, filteredValue?: string[], ) { updateOrAddObject( pageDefaults.value, { page: page, stringValue: filteredColumn, filteredValues: filteredValue }, 'page', ); localStorage.setItem('pageDefaults', JSON.stringify(pageDefaults.value)); } export function getLocalPageDefaults(page: string): pageDefault | null { const defaults = localStorage.getItem('pageDefaults'); if (!defaults) return null; pageDefaults.value = JSON.parse(defaults); return pageDefaults.value.find((e) => e.page === page) || null; }