File size: 802 Bytes
db242f8
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
'use client';

import { useCallback } from 'react';
import useSWR from 'swr';

import { useStore } from '@/store';

type ModelInfo = {
  id: number;
  name: string;
};

export const useModelData = () => {
  const { fetcher } = useStore();
  const { data: models, isLoading: modelLoading } = useSWR<ModelInfo[]>(
    '/product/models',
    (url) =>
      fetcher(url)
        .then((res) => res.json())
        .then((res) => res.data),
    {
      keepPreviousData: true,
      revalidateOnFocus: false,
    },
  );

  const getModelName = useCallback(
    (id: number) => {
      if (!models) return null;
      const model = models.find((element: ModelInfo) => element.id === id);
      return model ? model.name : null;
    },
    [models],
  );

  return { models, modelLoading, getModelName };
};