mirror of
https://github.com/umami-software/umami.git
synced 2026-02-19 20:15:41 +01:00
feat: refactor timeunit hook for store persistency
This commit is contained in:
parent
f4b68c9bac
commit
b6ffe4c383
1 changed files with 21 additions and 9 deletions
|
|
@ -1,19 +1,31 @@
|
|||
import { DEFAULT_TIME_UNIT, TIME_UNIT_CONFIG } from 'lib/constants';
|
||||
import { TimeUnit } from 'lib/types';
|
||||
import { getItem, setItem } from 'next-basics';
|
||||
import { useState } from 'react';
|
||||
import useStore, { setTimeUnit } from 'store/app';
|
||||
|
||||
export function useTimeUnit(): {
|
||||
currentTimeUnit: TimeUnit;
|
||||
timeUnitOptions: TimeUnit[];
|
||||
saveTimeUnit: (value: TimeUnit) => void;
|
||||
} {
|
||||
const [timeUnit, setTimeUnit] = useState<TimeUnit>('hour');
|
||||
const selector = (state: { timeUnit: string }) => state.timeUnit;
|
||||
|
||||
export function useTimeUnit() {
|
||||
const storeTimeUnit = useStore(selector) || getItem(TIME_UNIT_CONFIG) || DEFAULT_TIME_UNIT;
|
||||
const [tempTimeUnit, setTempTimeUnit] = useState<TimeUnit>(storeTimeUnit);
|
||||
const timeUnitOptions = ['hour', 'day', 'week', 'month', 'year'];
|
||||
|
||||
function saveTimeUnit(value: TimeUnit) {
|
||||
setTimeUnit(value);
|
||||
function updateTimeUnit(value: TimeUnit) {
|
||||
setTempTimeUnit(value);
|
||||
}
|
||||
|
||||
return { currentTimeUnit: timeUnit, timeUnitOptions, saveTimeUnit };
|
||||
function saveTimeUnit() {
|
||||
setTimeUnit(tempTimeUnit);
|
||||
setItem(TIME_UNIT_CONFIG, tempTimeUnit);
|
||||
}
|
||||
|
||||
return {
|
||||
timeUnit: tempTimeUnit,
|
||||
timeUnitOptions,
|
||||
updateTimeUnit,
|
||||
saveTimeUnit,
|
||||
};
|
||||
}
|
||||
|
||||
export default useTimeUnit;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue