1
0
Fork 0
forked from mirrors/homebox
homebox/frontend/composables/use-preferences.ts

31 lines
879 B
TypeScript
Raw Normal View History

import { Ref } from "vue";
import { DaisyTheme } from "~~/lib/data/themes";
2022-09-01 14:32:03 -08:00
export type LocationViewPreferences = {
showDetails: boolean;
2022-09-06 10:32:13 -08:00
showEmpty: boolean;
editorSimpleView: boolean;
theme: DaisyTheme;
2022-09-01 14:32:03 -08:00
};
/**
2022-09-02 09:46:20 -08:00
* useViewPreferences loads the view preferences from local storage and hydrates
2022-09-01 14:32:03 -08:00
* them. These are reactive and will update the local storage when changed.
*/
2022-09-02 09:46:20 -08:00
export function useViewPreferences(): Ref<LocationViewPreferences> {
2022-09-01 14:32:03 -08:00
const results = useLocalStorage(
"homebox/preferences/location",
2022-09-01 14:32:03 -08:00
{
showDetails: true,
2022-09-06 10:32:13 -08:00
showEmpty: true,
editorSimpleView: true,
theme: "garden",
2022-09-01 14:32:03 -08:00
},
{ mergeDefaults: true }
);
// casting is required because the type returned is removable, however since we
// use `mergeDefaults` the result _should_ always be present.
return results as unknown as Ref<LocationViewPreferences>;
}