datastake-daf 0.6.846 → 0.6.848

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/build/favicon.ico +0 -0
  2. package/build/logo192.png +0 -0
  3. package/build/logo512.png +0 -0
  4. package/build/manifest.json +25 -0
  5. package/build/robots.txt +3 -0
  6. package/dist/components/index.js +180 -4
  7. package/dist/hooks/index.js +4 -5
  8. package/dist/pages/index.js +1028 -866
  9. package/dist/services/index.js +11 -11
  10. package/dist/utils/index.js +14 -11
  11. package/package.json +1 -1
  12. package/src/@daf/core/components/Screens/TableScreen/StandardTablePage/index.jsx +108 -0
  13. package/src/@daf/core/components/Screens/TableScreen/TablePageWithTabs/index.jsx +9 -2
  14. package/src/@daf/core/components/TableScreen/TablePageWithTabs/index.jsx +13 -3
  15. package/src/@daf/hooks/useWidgetFetch.js +40 -34
  16. package/src/@daf/pages/Edit/index.jsx +3 -0
  17. package/src/@daf/pages/Partners/columns.js +2 -2
  18. package/src/@daf/pages/Partners/config.js +22 -0
  19. package/src/@daf/pages/Partners/hook.js +7 -11
  20. package/src/@daf/pages/Partners/index.jsx +128 -140
  21. package/src/@daf/pages/ResetPassword/index.jsx +2 -3
  22. package/src/@daf/pages/SelfAssesment/components/OrgInformationTable/columns.js +3 -2
  23. package/src/@daf/pages/TablePage/hook.js +51 -42
  24. package/src/@daf/pages/TablePage/index.jsx +95 -61
  25. package/src/@daf/{core/components/Screens → pages}/Users/columns.js +15 -10
  26. package/src/@daf/{core/components/Screens → pages}/Users/create.jsx +2 -1
  27. package/src/@daf/pages/Users/index.jsx +128 -0
  28. package/src/@daf/pages/View/hooks/useCallToGetData.js +5 -1
  29. package/src/@daf/pages/View/index.jsx +6 -3
  30. package/src/@daf/pages/hook.js +26 -7
  31. package/src/@daf/services/EventsService.js +2 -2
  32. package/src/@daf/services/MineSiteService.js +2 -2
  33. package/src/@daf/services/OperatorService.js +2 -2
  34. package/src/@daf/services/PartnerService.js +2 -2
  35. package/src/@daf/services/SourceService.js +1 -1
  36. package/src/@daf/services/WorkersService.js +2 -2
  37. package/src/@daf/utils/timeFilterUtils.js +250 -233
  38. package/src/constants/locales/fr/translation.js +14 -11
  39. package/src/index.js +1 -1
  40. package/src/pages.js +1 -1
  41. package/src/@daf/core/components/Screens/Users/index.jsx +0 -173
  42. /package/src/@daf/{core/components/Screens → pages}/Users/config.js +0 -0
@@ -1453,7 +1453,7 @@ class SourceService extends BaseService {
1453
1453
  ...rest
1454
1454
  } = filters;
1455
1455
  const params = {
1456
- filters: rest,
1456
+ ...rest,
1457
1457
  pagination: {
1458
1458
  skip: page,
1459
1459
  take: pageSize
@@ -1705,13 +1705,13 @@ class OperatorService extends BaseService {
1705
1705
  }
1706
1706
  });
1707
1707
  }
1708
- getData(id, sourceId, source, version) {
1708
+ getData(id, sourceId, sources, version) {
1709
1709
  return this.apiGet({
1710
1710
  isApp: true,
1711
1711
  url: `/stakeholder/${id}`,
1712
1712
  params: {
1713
1713
  authorId: sourceId,
1714
- source,
1714
+ sources,
1715
1715
  version
1716
1716
  }
1717
1717
  });
@@ -1765,11 +1765,11 @@ class OperatorService extends BaseService {
1765
1765
  var OperatorService$1 = createLazyService(OperatorService);
1766
1766
 
1767
1767
  class PartnerService extends BaseService {
1768
- get(tab, filters) {
1768
+ get(params) {
1769
1769
  return this.apiGet({
1770
1770
  url: "/partner",
1771
1771
  isApp: true,
1772
- params: filters
1772
+ params
1773
1773
  });
1774
1774
  }
1775
1775
  create(data) {
@@ -1878,13 +1878,13 @@ class EventsService extends BaseService {
1878
1878
  signal
1879
1879
  });
1880
1880
  }
1881
- getData(id, sourceId, source, version) {
1881
+ getData(id, sourceId, sources, version) {
1882
1882
  return this.apiGet({
1883
1883
  isApp: true,
1884
1884
  url: `/event/${id}`,
1885
1885
  params: {
1886
1886
  authorId: sourceId,
1887
- source,
1887
+ sources,
1888
1888
  version
1889
1889
  }
1890
1890
  });
@@ -1969,14 +1969,14 @@ class WorkersService extends BaseService {
1969
1969
  }
1970
1970
  });
1971
1971
  }
1972
- getData(id, sourceId, version, source) {
1972
+ getData(id, sourceId, sources, version) {
1973
1973
  return this.apiGet({
1974
1974
  isApp: true,
1975
1975
  url: `/stakeholder/${id}`,
1976
1976
  params: {
1977
1977
  authorId: sourceId,
1978
1978
  version,
1979
- source
1979
+ sources
1980
1980
  }
1981
1981
  });
1982
1982
  }
@@ -2077,13 +2077,13 @@ class MineSiteService extends BaseService {
2077
2077
  isApp: true
2078
2078
  });
2079
2079
  }
2080
- getData(id, sourceId, source, version) {
2080
+ getData(id, sourceId, sources, version) {
2081
2081
  return this.apiGet({
2082
2082
  url: `/location/${id}`,
2083
2083
  isApp: true,
2084
2084
  params: {
2085
2085
  authorId: sourceId,
2086
- source,
2086
+ sources,
2087
2087
  version
2088
2088
  }
2089
2089
  });
@@ -9256,9 +9256,11 @@ const fr = {
9256
9256
  "merge-subjects": "Fusionner les sujets",
9257
9257
  "FB00007": "Assurez-vous que cela a été correctement communiqué, car l’administrateur du compte détient des privilèges critiques de gestion des utilisateurs.",
9258
9258
  "add-new": "Ajouter un nouveau",
9259
- "All Data": "Toutes les données",
9259
+ "All Data": "Toutes Données",
9260
9260
  "Site": "Site",
9261
- "Production Sites": "Sites de production",
9261
+ "Self Assessment": "Auto-Evaluation",
9262
+ "Operator Review": "Examen d’Opérateur",
9263
+ "Production Sites": "Sites de Production",
9262
9264
  "Type of account": "Type de compte",
9263
9265
  "accounts": "Comptes",
9264
9266
  "users": "Utilisateurs",
@@ -9275,14 +9277,15 @@ const fr = {
9275
9277
  "link-details": "Détails du lien",
9276
9278
  "Mine Site Details": "Détails du site minier",
9277
9279
  "Number of Workers on Site": "Nombre de travailleurs sur le site",
9278
- "Extraction Methods": "Méthodes d'extraction",
9280
+ "Extraction Methods": "Méthodes d'Extraction",
9279
9281
  "Find Data": "Rechercher des données",
9280
- "Mine Review": "Évaluation de la mine",
9282
+ "Mine Review": " Examen de Mine",
9283
+ "Partner Update": "Update Partenaires",
9281
9284
  "Completion": "Achèvement",
9282
- "Information Completeness": "Complétude de l'information",
9285
+ "Information Completeness": "Complétude de l'Information",
9283
9286
  "Consolidated": "Consolidé",
9284
9287
  "Datapoints": "Points de données",
9285
- "Own Data": "Données propres",
9288
+ "Own Data": "Données Propres",
9286
9289
  "Create Worker": "Créer un travailleur",
9287
9290
  "Workers": "Travailleurs",
9288
9291
  "Census Update": "Mise à jour du recensement",
@@ -9341,15 +9344,15 @@ const fr = {
9341
9344
  "Stakeholders Data": "Données des parties prenantes",
9342
9345
  "Events Data": "Données d'événements",
9343
9346
  "Accumulation": "Accumulation",
9344
- "Create Mine Site": "Créer un site minier",
9347
+ "Create Mine Site": "Créer un Site Minier",
9345
9348
  "Supply Chain Map": "Carte de la chaîne d'approvisionnement",
9346
9349
  "Participants": "Participants",
9347
9350
  "Trade Connections": "Connexions commerciales",
9348
- "Key Information": "Informations clés",
9351
+ "Key Information": "Informations Clés",
9349
9352
  "Weekly": "Hebdomadaire",
9350
9353
  "Monthly": "Mensuel",
9351
9354
  "Daily": "Quotidien",
9352
- "Workforce": "Main-d'œuvre",
9355
+ "Workforce": "Main d’Œuvre ",
9353
9356
  "Trade Actors": "Acteurs commerciaux",
9354
9357
  "Mining Sites": "Sites miniers",
9355
9358
  "Primary Data Collection": "Collecte de données primaires",
@@ -9600,7 +9603,7 @@ const fr = {
9600
9603
  "New to Datastake": "Nouveau sur Datastake",
9601
9604
  "Sign Up": "S'inscrire",
9602
9605
  "CADD Dashboard": "Tableau de bord CADD",
9603
- "Dashboard Title": "Tableau de bord",
9606
+ "Dashboard Title": "Tableau de Bord",
9604
9607
  View: "Vue",
9605
9608
  "KYC Status": "Statut KYC",
9606
9609
  Create: "Créer",
@@ -11068,7 +11071,7 @@ const fr = {
11068
11071
  "Embassy of Norway": "Ambassade de Norvège",
11069
11072
  Analytics: "Indicateurs",
11070
11073
  Dismiss: "Ignorer",
11071
- "Due Dilligence": "Diligence raisonnable",
11074
+ "Due Dilligence": "Diligence Raisonnable",
11072
11075
  "Assess Mine Site": "Évaluer Site Minier",
11073
11076
  "Assess Supply Chain Actor": "Évaluer Acteur de la Chaine d’Approvisionnement",
11074
11077
  "Report an Incident": "Rapporter un Incident",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "datastake-daf",
3
- "version": "0.6.846",
3
+ "version": "0.6.848",
4
4
  "dependencies": {
5
5
  "@ant-design/icons": "^5.2.5",
6
6
  "@antv/g2": "^5.1.1",
@@ -0,0 +1,108 @@
1
+ import React, { useState, useEffect, useRef } from 'react'
2
+ import { Drawer } from 'antd'
3
+ import Header from '../../../Header/index.jsx'
4
+ import BaseScreen from '../../BaseScreen/index.jsx'
5
+ import { CREATE_DRAWER_WIDTH } from '../../../../../../helpers/Forms.js'
6
+ import DrawerHeader from '../../../Header/DrawerHeader/index.jsx'
7
+
8
+ const StandardTablePage = ({
9
+ t= () => {},
10
+ title,
11
+ breadCrumbs,
12
+ location,
13
+ loading = false,
14
+ goTo = () => {},
15
+ checkboxConfig = {},
16
+ columns = [],
17
+ data = {},
18
+ APP,
19
+ getApiBaseUrl = () => {},
20
+ selectOptions = {},
21
+ selectFiltersConfig = {},
22
+ getRedirectLink = () => {},
23
+ filtersConfig = {},
24
+ isMobile,
25
+ view,
26
+ onDownload,
27
+ downloadDisabled = false,
28
+ drawerTitle = "",
29
+ onCreateModalClose = () => {},
30
+ headerTooltip,
31
+ drawerTooltip,
32
+ externalOpenDrawer = false,
33
+ children
34
+ }) => {
35
+ const params = new URLSearchParams(location?.search);
36
+ const [openCreateModal, setOpenCreateModal] = useState(params.has("create"));
37
+
38
+ useEffect(() => {
39
+ if (externalOpenDrawer) {
40
+ setOpenCreateModal(true);
41
+ }
42
+ }, [externalOpenDrawer]);
43
+
44
+ console.log({openCreateModal, externalOpenDrawer})
45
+
46
+ return (
47
+ <div className="semibold form-input-output daf-create-view">
48
+ <Header
49
+ title={t(title)}
50
+ breadcrumbs={breadCrumbs}
51
+ actionButtons={[
52
+ {
53
+ type: "primary",
54
+ onClick: () => setOpenCreateModal(true),
55
+ tooltip: t("New"),
56
+ icon: "Add",
57
+ },
58
+ ]}
59
+ onDownload={(onDownload && typeof onDownload === 'function') ? onDownload : undefined}
60
+ downloadDisabled={downloadDisabled}
61
+ tooltip={headerTooltip}
62
+ />
63
+ <BaseScreen
64
+ t={t}
65
+ checkboxConfig={checkboxConfig}
66
+ defaultTableFilters={{}}
67
+ columns={columns}
68
+ data={Array.isArray(data?.data) ? data : data?.data}
69
+ loading={loading}
70
+ location={location}
71
+ goTo={goTo}
72
+ APP={APP}
73
+ getApiBaseUrl={getApiBaseUrl}
74
+ selectOptions={selectOptions}
75
+ selectFilters={selectFiltersConfig}
76
+ view={view}
77
+ getRedirectLink={getRedirectLink}
78
+ defaultUrlParams={{}}
79
+ module={APP}
80
+ filtersConfig={filtersConfig}
81
+ isMobile={isMobile}
82
+ />
83
+ {openCreateModal && (
84
+ <Drawer
85
+ destroyOnHidden
86
+ title={
87
+ <DrawerHeader
88
+ title={t(drawerTitle)}
89
+ />
90
+ }
91
+ tooltip={drawerTooltip}
92
+ open={openCreateModal}
93
+ onClose={() => setOpenCreateModal(false)}
94
+ width={CREATE_DRAWER_WIDTH}
95
+ bodyStyle={{ padding: 0 }}
96
+ >
97
+ {typeof children === 'function'
98
+ ? children({ onDrawerClose: () => setOpenCreateModal(false), open: openCreateModal })
99
+ : children
100
+ }
101
+ </Drawer>
102
+ )}
103
+
104
+ </div>
105
+ )
106
+ }
107
+
108
+ export default StandardTablePage
@@ -32,6 +32,7 @@ const TablePageWithTabs = ({
32
32
  tabs = [],
33
33
  headerTooltip,
34
34
  drawerTooltip,
35
+ externalOpenDrawer = false,
35
36
  children
36
37
  }) => {
37
38
  const params = new URLSearchParams(location?.search);
@@ -47,7 +48,13 @@ const TablePageWithTabs = ({
47
48
  getActiveTabRef.current(activeTab);
48
49
  }, [activeTab]);
49
50
 
50
- return (
51
+ useEffect(() => {
52
+ if (externalOpenDrawer) {
53
+ setOpenCreateModal(true);
54
+ }
55
+ }, [externalOpenDrawer]);
56
+
57
+ return (
51
58
  <div className="semibold form-input-output daf-create-view">
52
59
  <Header
53
60
  title={t(title)}
@@ -90,7 +97,7 @@ const TablePageWithTabs = ({
90
97
  checkboxConfig={checkboxConfig}
91
98
  defaultTableFilters={{}}
92
99
  columns={columns}
93
- data={data?.data}
100
+ data={Array.isArray(data?.data) ? data : data?.data}
94
101
  loading={loading}
95
102
  location={location}
96
103
  goTo={goTo}
@@ -29,10 +29,13 @@ const TablePageWithTabs = ({
29
29
  downloadDisabled = false,
30
30
  drawerTitle = "",
31
31
  onCreateModalClose = () => {},
32
+ noTabs = false,
32
33
  children
33
34
  }) => {
34
35
  const params = new URLSearchParams(location?.search);
35
- const [activeTab, setActiveTab] = useState(params.get("tab") || defaultActiveTab);
36
+ const [activeTab, setActiveTab] = useState(
37
+ noTabs ? null : (params.get("tab") || defaultActiveTab)
38
+ );
36
39
  const [openCreateModal, setOpenCreateModal] = useState(params.has("create"));
37
40
 
38
41
  const getActiveTabRef = useRef(getActiveTab);
@@ -44,6 +47,12 @@ const TablePageWithTabs = ({
44
47
  getActiveTabRef.current(activeTab);
45
48
  }, [activeTab]);
46
49
 
50
+ useEffect(() => {
51
+ if (!noTabs) {
52
+ getActiveTabRef.current(activeTab);
53
+ }
54
+ }, [activeTab, noTabs]);
55
+
47
56
  return (
48
57
  <div className="semibold form-input-output daf-create-view">
49
58
  <Header
@@ -60,7 +69,8 @@ const TablePageWithTabs = ({
60
69
  onDownload={onDownload}
61
70
  downloadDisabled={downloadDisabled}
62
71
  />
63
- <Tabs
72
+ {!noTabs && (
73
+ <Tabs
64
74
  items={[
65
75
  { label: t("All Data"), key: "all" },
66
76
  { label: t("Own Data"), key: "own" },
@@ -80,7 +90,7 @@ const TablePageWithTabs = ({
80
90
  goTo(`${location.pathname}?${newParams.toString()}`);
81
91
  }}
82
92
  className="view-page-tabs mt-3"
83
- />
93
+ />)}
84
94
  <BaseScreen
85
95
  t={t}
86
96
  checkboxConfig={checkboxConfig}
@@ -2,6 +2,7 @@ import { useState, useEffect, useRef } from "react";
2
2
  import DashboardService from "../services/DashboardService.js";
3
3
  import { isErrorResponse, getErrorMessage } from "../../helpers/errorHandling.js";
4
4
  import { message } from "antd";
5
+
5
6
  // config: {
6
7
  // stop: boolean,
7
8
  // defaultData: object,
@@ -9,37 +10,42 @@ import { message } from "antd";
9
10
  // url: string
10
11
  // basePath: string,
11
12
  // }
12
- export const useWidgetFetch = ({config, getData = DashboardService.getWidget, onFetch = () => {}}) => {
13
- const { stop, defaultData, ...rest} = config;
14
- const [ data, setData ] = useState(defaultData || {});
15
- const [ loading, setLoading ] = useState(false);
16
-
17
- const fetchData = async () => {
18
- setLoading(true);
19
- try {
20
- const { data } = await getData(rest);
21
- setData(data);
22
- if (isErrorResponse(data)) {
23
- const errorMessage = getErrorMessage(data);
24
- message.error(errorMessage);
25
- return;
26
- }
27
- onFetch();
28
- } catch (err) {
29
- console.log(err);
30
- }finally {
31
- setLoading(false);
32
- }
33
- };
34
- useEffect(() => {
35
- if(!stop) {
36
- console.log('fetching data');
37
- fetchData();
38
- }
39
- }, [JSON.stringify(config), stop]);
40
- return {
41
- data,
42
- loading,
43
- setData,
44
- }
45
- }
13
+
14
+ export const useWidgetFetch = ({ config, getData = DashboardService.getWidget, onFetch = () => { } }) => {
15
+ const { stop, defaultData, ...rest } = config;
16
+ const [data, setData] = useState(defaultData || {});
17
+ const [loading, setLoading] = useState(false);
18
+
19
+ const fetchData = async () => {
20
+
21
+ setLoading(true);
22
+
23
+ try {
24
+ const { data } = await getData(rest);
25
+ setData(data || defaultData);
26
+ if (isErrorResponse(data)) {
27
+ const errorMessage = getErrorMessage(data);
28
+ message.error(errorMessage);
29
+ return;
30
+ }
31
+ onFetch();
32
+ } catch (err) {
33
+ console.log(err);
34
+ }
35
+
36
+ setLoading(false);
37
+ };
38
+
39
+
40
+ useEffect(() => {
41
+ if (!stop) {
42
+ fetchData();
43
+ }
44
+ }, [JSON.stringify(config), stop]);
45
+
46
+ return {
47
+ data,
48
+ loading,
49
+ setData,
50
+ }
51
+ }
@@ -33,6 +33,7 @@ const Edit = ({
33
33
  params,
34
34
  clear,
35
35
  getRedirectLink,
36
+ selectedPartners,
36
37
  pathname,
37
38
  search,
38
39
  viewConfig,
@@ -153,6 +154,7 @@ const Edit = ({
153
154
  view: namespaceConfig?.view,
154
155
  ...(namespaceConfig?.scope && { scope: namespaceConfig.scope }),
155
156
  datastakeId: id ? id : 'user',
157
+ sources: selectedPartners?.partners,
156
158
  })
157
159
  }
158
160
  }
@@ -169,6 +171,7 @@ const Edit = ({
169
171
  user,
170
172
  setLoading,
171
173
  APP,
174
+ selectedPartners,
172
175
  })
173
176
 
174
177
  const callback = (type, m) => {
@@ -17,6 +17,7 @@ export const getColumns = ({
17
17
  activeTab,
18
18
  setOpen,
19
19
  block,
20
+ options,
20
21
  }) => [
21
22
  {
22
23
  title: t("ID"),
@@ -27,7 +28,6 @@ export const getColumns = ({
27
28
  if (all.empty) {
28
29
  return <div className="daf-default-cell" />;
29
30
  }
30
- // THE FALLBACK WAS DEPENDS BEFORE
31
31
  return v || "-";
32
32
  },
33
33
  },
@@ -116,7 +116,7 @@ export const getColumns = ({
116
116
  if (all.empty) {
117
117
  return <div className="daf-default-cell" />;
118
118
  }
119
- return v ? findOptions(v, selectOptions?.category || []) : "-";
119
+ return v ? findOptions(v, options?.categoriesOptions || []) : "-";
120
120
  },
121
121
  },
122
122
  {
@@ -15,6 +15,28 @@ export const selectFiltersConfig = {
15
15
  },
16
16
  };
17
17
 
18
+ export const getSelectFiltersConfig = ({t}) => {
19
+ return {
20
+ category: {
21
+ type: "select",
22
+ label: "Category",
23
+ placeholder: (t) => `${t("Filter by")} ${t("Category").toLowerCase()}`,
24
+ style: { flex: 1 },
25
+ labelStyle: { flex: 1 },
26
+ getLabel: (option) => option.label,
27
+ getValue: (option) => option.value,
28
+ },
29
+ }
30
+ }
31
+
32
+ export const getFilterOptions = (options, t) => {
33
+ const { countries, category, categoriesOptions } = options || {};
34
+ return {
35
+ country: countries || [],
36
+ category: categoriesOptions || category || [],
37
+ }
38
+ }
39
+
18
40
  export const checkboxConfig = {
19
41
  name: "Name",
20
42
  datastakeId: "ID",
@@ -3,8 +3,6 @@ import PartnerService from "../../services/PartnerService.js";
3
3
  import { message } from "antd";
4
4
 
5
5
  export const usePartnersActions = ({
6
- activeTab,
7
- filters,
8
6
  setTotalRequests,
9
7
  t = () => {},
10
8
  }) => {
@@ -13,14 +11,14 @@ export const usePartnersActions = ({
13
11
  const [requestDataFetch, setRequestDataFetch] = useState(false);
14
12
  const [initFetchDone, setInitFetchDone] = useState(false);
15
13
 
16
- const fetchData = useCallback(async () => {
14
+ const fetchData = useCallback(async (params) => {
17
15
  setLoading(true);
18
16
  setData([]);
19
17
 
20
18
  try {
21
- const { data } = await PartnerService.get(activeTab, {
22
- ...filters,
23
- type: activeTab,
19
+ const { data } = await PartnerService.get({
20
+ ...params,
21
+ type: params?.tab,
24
22
  });
25
23
  setData(data);
26
24
  setTotalRequests(data?.meta?.total || 0);
@@ -33,7 +31,7 @@ export const usePartnersActions = ({
33
31
  if (!initFetchDone) {
34
32
  setInitFetchDone(true);
35
33
  }
36
- }, [activeTab, filters, initFetchDone, setLoading, setTotalRequests, setData, setInitFetchDone]);
34
+ }, [initFetchDone, setLoading, setTotalRequests, setData, setInitFetchDone]);
37
35
 
38
36
  const accept = useCallback(
39
37
  async (id) => {
@@ -106,14 +104,13 @@ export const usePartnersActions = ({
106
104
 
107
105
  try {
108
106
  await PartnerService.resendInvite(id);
109
- await fetchData();
110
107
  } catch (err) {
111
108
  console.log(err);
112
109
  }
113
110
 
114
111
  setLoading(false);
115
112
  },
116
- [fetchData, setLoading],
113
+ [setLoading],
117
114
  );
118
115
 
119
116
  const block = useCallback(
@@ -122,14 +119,13 @@ export const usePartnersActions = ({
122
119
 
123
120
  try {
124
121
  await PartnerService.block(id);
125
- await fetchData();
126
122
  } catch (err) {
127
123
  console.log(err);
128
124
  }
129
125
 
130
126
  setLoading(false);
131
127
  },
132
- [fetchData, setLoading],
128
+ [setLoading],
133
129
  );
134
130
 
135
131
  return {