2022-09-09 14:46:53 -08:00
|
|
|
import { Ref } from "vue";
|
2022-10-15 12:15:55 -08:00
|
|
|
import { DaisyTheme } from "~~/lib/data/themes";
|
2022-10-06 18:54:09 -08:00
|
|
|
|
2022-09-01 14:32:03 -08:00
|
|
|
export type LocationViewPreferences = {
|
|
|
|
showDetails: boolean;
|
2022-09-06 10:32:13 -08:00
|
|
|
showEmpty: boolean;
|
2022-09-12 14:47:27 -08:00
|
|
|
editorSimpleView: boolean;
|
2022-10-06 18:54:09 -08:00
|
|
|
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(
|
2022-09-09 14:46:53 -08:00
|
|
|
"homebox/preferences/location",
|
2022-09-01 14:32:03 -08:00
|
|
|
{
|
|
|
|
showDetails: true,
|
2022-09-06 10:32:13 -08:00
|
|
|
showEmpty: true,
|
2022-09-12 14:47:27 -08:00
|
|
|
editorSimpleView: true,
|
2022-10-06 18:54:09 -08:00
|
|
|
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>;
|
|
|
|
}
|