mirror of
https://github.com/umami-software/umami.git
synced 2026-02-05 21:27:20 +01:00
Refactor: removed default exports.
This commit is contained in:
parent
cd944e14ce
commit
f83a12d6cd
343 changed files with 555 additions and 1046 deletions
|
|
@ -1,9 +1,9 @@
|
|||
import { useEffect } from 'react';
|
||||
import useStore, { setConfig } from '@/store/app';
|
||||
import { useApp, setConfig } from '@/store/app';
|
||||
import { getConfig } from '@/app/actions/getConfig';
|
||||
|
||||
export function useConfig() {
|
||||
const { config } = useStore();
|
||||
const { config } = useApp();
|
||||
|
||||
async function loadConfig() {
|
||||
setConfig(await getConfig());
|
||||
|
|
@ -17,5 +17,3 @@ export function useConfig() {
|
|||
|
||||
return config;
|
||||
}
|
||||
|
||||
export default useConfig;
|
||||
|
|
|
|||
|
|
@ -16,5 +16,3 @@ export function useEventDataEvents(
|
|||
...options,
|
||||
});
|
||||
}
|
||||
|
||||
export default useEventDataEvents;
|
||||
|
|
|
|||
|
|
@ -16,5 +16,3 @@ export function useEventDataProperties(
|
|||
...options,
|
||||
});
|
||||
}
|
||||
|
||||
export default useEventDataProperties;
|
||||
|
|
|
|||
|
|
@ -19,5 +19,3 @@ export function useEventDataValues(
|
|||
...options,
|
||||
});
|
||||
}
|
||||
|
||||
export default useEventDataValues;
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
import { UseQueryResult } from '@tanstack/react-query';
|
||||
import useStore, { setUser } from '@/store/app';
|
||||
import { useApp, setUser } from '@/store/app';
|
||||
import { useApi } from '../useApi';
|
||||
|
||||
const selector = (state: { user: any }) => state.user;
|
||||
|
|
@ -9,7 +9,7 @@ export function useLogin(): {
|
|||
setUser: (data: any) => void;
|
||||
} & UseQueryResult {
|
||||
const { get, useQuery } = useApi();
|
||||
const user = useStore(selector);
|
||||
const user = useApp(selector);
|
||||
|
||||
const query = useQuery({
|
||||
queryKey: ['login'],
|
||||
|
|
@ -25,5 +25,3 @@ export function useLogin(): {
|
|||
|
||||
return { user, setUser, ...query };
|
||||
}
|
||||
|
||||
export default useLogin;
|
||||
|
|
|
|||
|
|
@ -17,5 +17,3 @@ export function useRealtime(websiteId: string) {
|
|||
|
||||
return { data, isLoading, error };
|
||||
}
|
||||
|
||||
export default useRealtime;
|
||||
|
|
|
|||
|
|
@ -92,5 +92,3 @@ export function useReport(
|
|||
|
||||
return { report, runReport, updateReport, isRunning };
|
||||
}
|
||||
|
||||
export default useReport;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import useApi from '../useApi';
|
||||
import usePagedQuery from '../usePagedQuery';
|
||||
import useModified from '../useModified';
|
||||
import { useApi } from '../useApi';
|
||||
import { usePagedQuery } from '../usePagedQuery';
|
||||
import { useModified } from '../useModified';
|
||||
|
||||
export function useReports({ websiteId, teamId }: { websiteId?: string; teamId?: string }) {
|
||||
const { modified } = useModified(`reports`);
|
||||
|
|
@ -24,5 +24,3 @@ export function useReports({ websiteId, teamId }: { websiteId?: string; teamId?:
|
|||
deleteReport,
|
||||
};
|
||||
}
|
||||
|
||||
export default useReports;
|
||||
|
|
|
|||
|
|
@ -14,5 +14,3 @@ export function useRevenueValues(websiteId: string, startDate: Date, endDate: Da
|
|||
enabled: !!(websiteId && startDate && endDate),
|
||||
});
|
||||
}
|
||||
|
||||
export default useRevenueValues;
|
||||
|
|
|
|||
|
|
@ -16,5 +16,3 @@ export function useSessionDataProperties(
|
|||
...options,
|
||||
});
|
||||
}
|
||||
|
||||
export default useSessionDataProperties;
|
||||
|
|
|
|||
|
|
@ -17,5 +17,3 @@ export function useSessionDataValues(
|
|||
...options,
|
||||
});
|
||||
}
|
||||
|
||||
export default useSessionDataValues;
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import useStore, { setShareToken } from '@/store/app';
|
||||
import { useApp, setShareToken } from '@/store/app';
|
||||
import { useApi } from '../useApi';
|
||||
|
||||
const selector = (state: { shareToken: string }) => state.shareToken;
|
||||
|
|
@ -8,7 +8,7 @@ export function useShareToken(shareId: string): {
|
|||
isLoading?: boolean;
|
||||
error?: Error;
|
||||
} {
|
||||
const shareToken = useStore(selector);
|
||||
const shareToken = useApp(selector);
|
||||
const { get, useQuery } = useApi();
|
||||
const { isLoading, error } = useQuery({
|
||||
queryKey: ['share', shareId],
|
||||
|
|
@ -23,5 +23,3 @@ export function useShareToken(shareId: string): {
|
|||
|
||||
return { shareToken, isLoading, error };
|
||||
}
|
||||
|
||||
export default useShareToken;
|
||||
|
|
|
|||
|
|
@ -8,5 +8,3 @@ export function useTeam(teamId: string) {
|
|||
enabled: !!teamId,
|
||||
});
|
||||
}
|
||||
|
||||
export default useTeam;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import { useApi } from '../useApi';
|
||||
import usePagedQuery from '../usePagedQuery';
|
||||
import useModified from '../useModified';
|
||||
import { usePagedQuery } from '../usePagedQuery';
|
||||
import { useModified } from '../useModified';
|
||||
|
||||
export function useTeamMembers(teamId: string) {
|
||||
const { get } = useApi();
|
||||
|
|
@ -14,5 +14,3 @@ export function useTeamMembers(teamId: string) {
|
|||
enabled: !!teamId,
|
||||
});
|
||||
}
|
||||
|
||||
export default useTeamMembers;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import { useApi } from '../useApi';
|
||||
import { usePagedQuery } from '../usePagedQuery';
|
||||
import useModified from '../useModified';
|
||||
import { useModified } from '../useModified';
|
||||
|
||||
export function useTeamWebsites(teamId: string) {
|
||||
const { get } = useApi();
|
||||
|
|
@ -13,5 +13,3 @@ export function useTeamWebsites(teamId: string) {
|
|||
},
|
||||
});
|
||||
}
|
||||
|
||||
export default useTeamWebsites;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import { useApi } from '../useApi';
|
||||
import { usePagedQuery } from '../usePagedQuery';
|
||||
import useModified from '../useModified';
|
||||
import { useModified } from '../useModified';
|
||||
|
||||
export function useTeams(userId: string) {
|
||||
const { get } = useApi();
|
||||
|
|
@ -14,5 +14,3 @@ export function useTeams(userId: string) {
|
|||
enabled: !!userId,
|
||||
});
|
||||
}
|
||||
|
||||
export default useTeams;
|
||||
|
|
|
|||
|
|
@ -9,5 +9,3 @@ export function useUser(userId: string, options?: { [key: string]: any }) {
|
|||
...options,
|
||||
});
|
||||
}
|
||||
|
||||
export default useUser;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import { useApi } from '../useApi';
|
||||
import { usePagedQuery } from '../usePagedQuery';
|
||||
import useModified from '../useModified';
|
||||
import { useModified } from '../useModified';
|
||||
|
||||
export function useUsers() {
|
||||
const { get } = useApi();
|
||||
|
|
@ -15,5 +15,3 @@ export function useUsers() {
|
|||
},
|
||||
});
|
||||
}
|
||||
|
||||
export default useUsers;
|
||||
|
|
|
|||
|
|
@ -10,5 +10,3 @@ export function useWebsite(websiteId: string, options?: { [key: string]: any })
|
|||
...options,
|
||||
});
|
||||
}
|
||||
|
||||
export default useWebsite;
|
||||
|
|
|
|||
|
|
@ -18,5 +18,3 @@ export function useWebsiteEvents(
|
|||
...options,
|
||||
});
|
||||
}
|
||||
|
||||
export default useWebsiteEvents;
|
||||
|
|
|
|||
|
|
@ -16,5 +16,3 @@ export function useWebsiteEventsSeries(
|
|||
...options,
|
||||
});
|
||||
}
|
||||
|
||||
export default useWebsiteEventsSeries;
|
||||
|
|
|
|||
|
|
@ -36,5 +36,3 @@ export function useWebsiteMetrics(
|
|||
...options,
|
||||
});
|
||||
}
|
||||
|
||||
export default useWebsiteMetrics;
|
||||
|
|
|
|||
|
|
@ -17,5 +17,3 @@ export function useWebsitePageviews(
|
|||
...options,
|
||||
});
|
||||
}
|
||||
|
||||
export default useWebsitePageviews;
|
||||
|
|
|
|||
|
|
@ -10,5 +10,3 @@ export function useWebsiteSession(websiteId: string, sessionId: string) {
|
|||
},
|
||||
});
|
||||
}
|
||||
|
||||
export default useWebsiteSession;
|
||||
|
|
|
|||
|
|
@ -12,5 +12,3 @@ export function useWebsiteSessionStats(websiteId: string, options?: { [key: stri
|
|||
...options,
|
||||
});
|
||||
}
|
||||
|
||||
export default useWebsiteSessionStats;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import { useApi } from '../useApi';
|
||||
import { usePagedQuery } from '../usePagedQuery';
|
||||
import useModified from '../useModified';
|
||||
import { useModified } from '../useModified';
|
||||
import { useFilterParams } from '@/components/hooks/useFilterParams';
|
||||
|
||||
export function useWebsiteSessions(websiteId: string, params?: { [key: string]: string | number }) {
|
||||
|
|
@ -20,5 +20,3 @@ export function useWebsiteSessions(websiteId: string, params?: { [key: string]:
|
|||
},
|
||||
});
|
||||
}
|
||||
|
||||
export default useWebsiteSessions;
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
import { useApi } from '../useApi';
|
||||
import useModified from '../useModified';
|
||||
import { useModified } from '../useModified';
|
||||
import { useFilterParams } from '@/components/hooks/useFilterParams';
|
||||
|
||||
export function useWebsiteSessionsWeekly(
|
||||
|
|
@ -20,5 +20,3 @@ export function useWebsiteSessionsWeekly(
|
|||
},
|
||||
});
|
||||
}
|
||||
|
||||
export default useWebsiteSessionsWeekly;
|
||||
|
|
|
|||
|
|
@ -16,5 +16,3 @@ export function useWebsiteStats(
|
|||
...options,
|
||||
});
|
||||
}
|
||||
|
||||
export default useWebsiteStats;
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import { useApi } from '../useApi';
|
||||
import { useCountryNames } from '@/components/hooks/useCountryNames';
|
||||
import { useRegionNames } from '@/components/hooks/useRegionNames';
|
||||
import useLocale from '../useLocale';
|
||||
import { useLocale } from '../useLocale';
|
||||
|
||||
export function useWebsiteValues({
|
||||
websiteId,
|
||||
|
|
@ -60,5 +60,3 @@ export function useWebsiteValues({
|
|||
enabled: !!(websiteId && type && startDate && endDate),
|
||||
});
|
||||
}
|
||||
|
||||
export default useWebsiteValues;
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import { useApi } from '../useApi';
|
||||
import { usePagedQuery } from '../usePagedQuery';
|
||||
import { useLogin } from './useLogin';
|
||||
import useModified from '../useModified';
|
||||
import { useModified } from '../useModified';
|
||||
|
||||
export function useWebsites(
|
||||
{ userId, teamId }: { userId?: string; teamId?: string },
|
||||
|
|
@ -21,5 +21,3 @@ export function useWebsites(
|
|||
},
|
||||
});
|
||||
}
|
||||
|
||||
export default useWebsites;
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import * as reactQuery from '@tanstack/react-query';
|
|||
import { getClientAuthToken } from '@/lib/client';
|
||||
import { SHARE_TOKEN_HEADER } from '@/lib/constants';
|
||||
import { httpGet, httpPost, httpPut, httpDelete, FetchResponse } from '@/lib/fetch';
|
||||
import useStore from '@/store/app';
|
||||
import { useApp } from '@/store/app';
|
||||
|
||||
const selector = (state: { shareToken: { token?: string } }) => state.shareToken;
|
||||
|
||||
|
|
@ -19,7 +19,7 @@ function handleError(err: Error | string) {
|
|||
}
|
||||
|
||||
export function useApi() {
|
||||
const shareToken = useStore(selector);
|
||||
const shareToken = useApp(selector);
|
||||
|
||||
const defaultHeaders = {
|
||||
authorization: `Bearer ${getClientAuthToken()}`,
|
||||
|
|
@ -74,5 +74,3 @@ export function useApi() {
|
|||
...reactQuery,
|
||||
};
|
||||
}
|
||||
|
||||
export default useApi;
|
||||
|
|
|
|||
|
|
@ -30,5 +30,3 @@ export function useCountryNames(locale: string) {
|
|||
|
||||
return { countryNames: list };
|
||||
}
|
||||
|
||||
export default useCountryNames;
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
import { getMinimumUnit, parseDateRange } from '@/lib/date';
|
||||
import { setItem } from '@/lib/storage';
|
||||
import { DATE_RANGE_CONFIG, DEFAULT_DATE_COMPARE, DEFAULT_DATE_RANGE } from '@/lib/constants';
|
||||
import websiteStore, { setWebsiteDateRange, setWebsiteDateCompare } from '@/store/websites';
|
||||
import appStore, { setDateRange } from '@/store/app';
|
||||
import { useWebsites, setWebsiteDateRange, setWebsiteDateCompare } from '@/store/websites';
|
||||
import { useApp, setDateRange } from '@/store/app';
|
||||
import { DateRange } from '@/lib/types';
|
||||
import { useLocale } from './useLocale';
|
||||
import { useApi } from './useApi';
|
||||
|
|
@ -15,11 +15,11 @@ export function useDateRange(websiteId?: string): {
|
|||
} {
|
||||
const { get } = useApi();
|
||||
const { locale } = useLocale();
|
||||
const websiteConfig = websiteStore(state => state[websiteId]?.dateRange);
|
||||
const websiteConfig = useWebsites(state => state[websiteId]?.dateRange);
|
||||
const defaultConfig = DEFAULT_DATE_RANGE;
|
||||
const globalConfig = appStore(state => state.dateRange);
|
||||
const globalConfig = useApp(state => state.dateRange);
|
||||
const dateRange = parseDateRange(websiteConfig || globalConfig || defaultConfig, locale);
|
||||
const dateCompare = websiteStore(state => state[websiteId]?.dateCompare || DEFAULT_DATE_COMPARE);
|
||||
const dateCompare = useWebsites(state => state[websiteId]?.dateCompare || DEFAULT_DATE_COMPARE);
|
||||
|
||||
const saveDateRange = async (value: DateRange | string) => {
|
||||
if (websiteId) {
|
||||
|
|
@ -57,5 +57,3 @@ export function useDateRange(websiteId?: string): {
|
|||
|
||||
return { dateRange, saveDateRange, dateCompare, saveDateCompare };
|
||||
}
|
||||
|
||||
export default useDateRange;
|
||||
|
|
|
|||
|
|
@ -11,5 +11,3 @@ export function useDocumentClick(handler: (event: MouseEvent) => any) {
|
|||
|
||||
return null;
|
||||
}
|
||||
|
||||
export default useDocumentClick;
|
||||
|
|
|
|||
|
|
@ -17,5 +17,3 @@ export function useEscapeKey(handler: (event: KeyboardEvent) => void) {
|
|||
|
||||
return null;
|
||||
}
|
||||
|
||||
export default useEscapeKey;
|
||||
|
|
|
|||
|
|
@ -20,5 +20,3 @@ export function useFields() {
|
|||
|
||||
return { fields };
|
||||
}
|
||||
|
||||
export default useFields;
|
||||
|
|
|
|||
|
|
@ -49,5 +49,3 @@ export function useFilters() {
|
|||
|
||||
return { filters, operatorLabels, typeFilters, getFilters };
|
||||
}
|
||||
|
||||
export default useFilters;
|
||||
|
|
|
|||
|
|
@ -7,5 +7,3 @@ export function useForceUpdate() {
|
|||
update(Object.create(null));
|
||||
}, [update]);
|
||||
}
|
||||
|
||||
export default useForceUpdate;
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
import useMessages from './useMessages';
|
||||
import { useMessages } from './useMessages';
|
||||
import { BROWSERS, OS_NAMES } from '@/lib/constants';
|
||||
import useLocale from './useLocale';
|
||||
import useCountryNames from './useCountryNames';
|
||||
import useLanguageNames from './useLanguageNames';
|
||||
import { useLocale } from './useLocale';
|
||||
import { useCountryNames } from './useCountryNames';
|
||||
import { useLanguageNames } from './useLanguageNames';
|
||||
import regions from '../../../public/iso-3166-2.json';
|
||||
|
||||
export function useFormat() {
|
||||
|
|
@ -72,5 +72,3 @@ export function useFormat() {
|
|||
formatValue,
|
||||
};
|
||||
}
|
||||
|
||||
export default useFormat;
|
||||
|
|
|
|||
|
|
@ -30,5 +30,3 @@ export function useLanguageNames(locale) {
|
|||
|
||||
return { languageNames: list };
|
||||
}
|
||||
|
||||
export default useLanguageNames;
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import { httpGet } from '@/lib/fetch';
|
|||
import { setItem } from '@/lib/storage';
|
||||
import { LOCALE_CONFIG } from '@/lib/constants';
|
||||
import { getDateLocale, getTextDirection } from '@/lib/lang';
|
||||
import useStore, { setLocale } from '@/store/app';
|
||||
import { useApp, setLocale } from '@/store/app';
|
||||
import { useForceUpdate } from './useForceUpdate';
|
||||
import enUS from '../../../public/intl/country/en-US.json';
|
||||
|
||||
|
|
@ -14,7 +14,7 @@ const messages = {
|
|||
const selector = (state: { locale: any }) => state.locale;
|
||||
|
||||
export function useLocale() {
|
||||
const locale = useStore(selector);
|
||||
const locale = useApp(selector);
|
||||
const forceUpdate = useForceUpdate();
|
||||
const dir = getTextDirection(locale);
|
||||
const dateLocale = getDateLocale(locale);
|
||||
|
|
@ -58,5 +58,3 @@ export function useLocale() {
|
|||
|
||||
return { locale, saveLocale, messages, dir, dateLocale };
|
||||
}
|
||||
|
||||
export default useLocale;
|
||||
|
|
|
|||
|
|
@ -23,5 +23,3 @@ export function useMessages(): any {
|
|||
|
||||
return { formatMessage, messages, labels, getMessage };
|
||||
}
|
||||
|
||||
export default useMessages;
|
||||
|
|
|
|||
|
|
@ -1,15 +1,13 @@
|
|||
import useStore from '@/store/modified';
|
||||
import { create } from 'zustand';
|
||||
|
||||
const store = create(() => ({}));
|
||||
|
||||
export function touch(key: string) {
|
||||
store.setState({ [key]: Date.now() });
|
||||
}
|
||||
|
||||
export function useModified(key?: string) {
|
||||
const modified = useStore(state => state?.[key]);
|
||||
|
||||
const touch = (id?: string) => {
|
||||
if (id || key) {
|
||||
useStore.setState({ [id || key]: Date.now() });
|
||||
}
|
||||
};
|
||||
const modified = store(state => state?.[key]);
|
||||
|
||||
return { modified, touch };
|
||||
}
|
||||
|
||||
export default useModified;
|
||||
|
|
|
|||
|
|
@ -28,5 +28,3 @@ export function useNavigation(): {
|
|||
|
||||
return { pathname, query, router, renderUrl };
|
||||
}
|
||||
|
||||
export default useNavigation;
|
||||
|
|
|
|||
|
|
@ -29,5 +29,3 @@ export function usePagedQuery<T = any>({
|
|||
setParams,
|
||||
};
|
||||
}
|
||||
|
||||
export default usePagedQuery;
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import useCountryNames from './useCountryNames';
|
||||
import { useCountryNames } from './useCountryNames';
|
||||
import regions from '../../../public/iso-3166-2.json';
|
||||
|
||||
export function useRegionNames(locale: string) {
|
||||
|
|
@ -15,5 +15,3 @@ export function useRegionNames(locale: string) {
|
|||
|
||||
return { regionNames: regions, getRegionName };
|
||||
}
|
||||
|
||||
export default useRegionNames;
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ export function useSticky({ enabled = true, threshold = 1 }) {
|
|||
|
||||
useEffect(() => {
|
||||
let observer: IntersectionObserver | undefined;
|
||||
// eslint-disable-next-line no-undef
|
||||
const handler: IntersectionObserverCallback = ([entry]) =>
|
||||
setIsSticky(entry.intersectionRatio < threshold);
|
||||
|
||||
|
|
@ -22,5 +23,3 @@ export function useSticky({ enabled = true, threshold = 1 }) {
|
|||
|
||||
return { ref, isSticky };
|
||||
}
|
||||
|
||||
export default useSticky;
|
||||
|
|
|
|||
|
|
@ -13,5 +13,3 @@ export function useTeamUrl(): {
|
|||
|
||||
return { teamId, renderTeamUrl };
|
||||
}
|
||||
|
||||
export default useTeamUrl;
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
import { useEffect, useMemo } from 'react';
|
||||
import useStore, { setTheme } from '@/store/app';
|
||||
import { useApp, setTheme } from '@/store/app';
|
||||
import { getItem, setItem } from '@/lib/storage';
|
||||
import { DEFAULT_THEME, THEME_COLORS, THEME_CONFIG } from '@/lib/constants';
|
||||
import { colord } from 'colord';
|
||||
|
|
@ -7,7 +7,7 @@ import { colord } from 'colord';
|
|||
const selector = (state: { theme: string }) => state.theme;
|
||||
|
||||
export function useTheme() {
|
||||
const theme = useStore(selector) || getItem(THEME_CONFIG) || DEFAULT_THEME;
|
||||
const theme = useApp(selector) || getItem(THEME_CONFIG) || DEFAULT_THEME;
|
||||
const primaryColor = colord(THEME_COLORS[theme].primary);
|
||||
|
||||
const colors = useMemo(() => {
|
||||
|
|
@ -60,5 +60,3 @@ export function useTheme() {
|
|||
|
||||
return { theme, saveTheme, colors };
|
||||
}
|
||||
|
||||
export default useTheme;
|
||||
|
|
|
|||
|
|
@ -1,12 +1,12 @@
|
|||
import { setItem } from '@/lib/storage';
|
||||
import { TIMEZONE_CONFIG } from '@/lib/constants';
|
||||
import { formatInTimeZone, zonedTimeToUtc, utcToZonedTime } from 'date-fns-tz';
|
||||
import useStore, { setTimezone } from '@/store/app';
|
||||
import { useApp, setTimezone } from '@/store/app';
|
||||
|
||||
const selector = (state: { timezone: string }) => state.timezone;
|
||||
|
||||
export function useTimezone() {
|
||||
const timezone = useStore(selector);
|
||||
const timezone = useApp(selector);
|
||||
|
||||
const saveTimezone = (value: string) => {
|
||||
setItem(TIMEZONE_CONFIG, value);
|
||||
|
|
@ -33,5 +33,3 @@ export function useTimezone() {
|
|||
|
||||
return { timezone, saveTimezone, formatTimezoneDate, toUtc, fromUtc };
|
||||
}
|
||||
|
||||
export default useTimezone;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue