source: src/api/settings.ts@ 5d6f37a

main
Last change on this file since 5d6f37a was 5d6f37a, checked in by Naum Shapkarovski <naumshapkarovski@…>, 7 weeks ago

add customer

  • Property mode set to 100644
File size: 1.1 KB
RevLine 
[5d6f37a]1import { useMemo } from 'react';
2// types
3import { Settings } from 'src/types/settings';
4// db
5import { collections, collectionFetcher as fetcher } from 'src/lib/firestore';
6// swr
7import useSWR from 'swr';
8
9export function useGetSettings() {
10 const collectionName = collections.settings;
11
12 const { data, isLoading, error, isValidating } = useSWR(collectionName, fetcher<Settings>, {
13 revalidateOnFocus: false,
14 });
15
16 const dataObject = transformArrayToObject(data);
17
18 const memoizedValue = useMemo(
19 () => ({
20 settings: dataObject || null,
21 settingsLoading: isLoading,
22 settingsError: error,
23 settingsValidating: isValidating,
24 settingsEmpty: !isLoading && !dataObject,
25 }),
26 [dataObject, error, isLoading, isValidating]
27 );
28
29 return memoizedValue;
30}
31
32const transformArrayToObject = (data?: Settings[]): Settings | undefined => {
33 if (!data) return undefined;
34
35 return data.reduce((accumulator: Settings, doc) => {
36 const { id, ...fields } = doc;
37 accumulator[id as keyof Settings] = fields;
38 return accumulator;
39 }, {} as Settings);
40};
Note: See TracBrowser for help on using the repository browser.