109 lines
3.2 KiB
TypeScript
109 lines
3.2 KiB
TypeScript
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 <Settings>{
|
|
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<pageDefaults>([]);
|
|
|
|
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;
|
|
}
|