feat: refactor timeunit hook for store persistency

This commit is contained in:
Caio Carvalho 2024-11-21 01:02:29 -03:00
parent f4b68c9bac
commit b6ffe4c383

View file

@ -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;