{"version":3,"file":"usePlugins.mjs","sources":["../../../../../admin/src/pages/Roles/hooks/usePlugins.js"],"sourcesContent":["import { useEffect } from 'react';\n\nimport { useAPIErrorHandler, useNotification, useFetchClient } from '@strapi/strapi/admin';\nimport { useQueries } from 'react-query';\n\nimport { cleanPermissions, getTrad } from '../../../utils';\n\nexport const usePlugins = () => {\n  const { toggleNotification } = useNotification();\n  const { get } = useFetchClient();\n  const { formatAPIError } = useAPIErrorHandler(getTrad);\n\n  const [\n    {\n      data: permissions,\n      isLoading: isLoadingPermissions,\n      error: permissionsError,\n      refetch: refetchPermissions,\n    },\n    { data: routes, isLoading: isLoadingRoutes, error: routesError, refetch: refetchRoutes },\n  ] = useQueries([\n    {\n      queryKey: ['users-permissions', 'permissions'],\n      async queryFn() {\n        const {\n          data: { permissions },\n        } = await get(`/users-permissions/permissions`);\n\n        return permissions;\n      },\n    },\n    {\n      queryKey: ['users-permissions', 'routes'],\n      async queryFn() {\n        const {\n          data: { routes },\n        } = await get(`/users-permissions/routes`);\n\n        return routes;\n      },\n    },\n  ]);\n\n  const refetchQueries = async () => {\n    await Promise.all([refetchPermissions(), refetchRoutes()]);\n  };\n\n  useEffect(() => {\n    if (permissionsError) {\n      toggleNotification({\n        type: 'danger',\n        message: formatAPIError(permissionsError),\n      });\n    }\n  }, [toggleNotification, permissionsError, formatAPIError]);\n\n  useEffect(() => {\n    if (routesError) {\n      toggleNotification({\n        type: 'danger',\n        message: formatAPIError(routesError),\n      });\n    }\n  }, [toggleNotification, routesError, formatAPIError]);\n\n  const isLoading = isLoadingPermissions || isLoadingRoutes;\n\n  return {\n    // TODO: these return values need to be memoized, otherwise\n    // they will create infinite rendering loops when used as\n    // effect dependencies\n    permissions: permissions ? cleanPermissions(permissions) : {},\n    routes: routes ?? {},\n\n    getData: refetchQueries,\n    isLoading,\n  };\n};\n"],"names":["usePlugins","toggleNotification","useNotification","get","useFetchClient","formatAPIError","useAPIErrorHandler","getTrad","data","permissions","isLoading","isLoadingPermissions","error","permissionsError","refetch","refetchPermissions","routes","isLoadingRoutes","routesError","refetchRoutes","useQueries","queryKey","queryFn","refetchQueries","Promise","all","useEffect","type","message","cleanPermissions","getData"],"mappings":";;;;;;MAOaA,UAAAA,GAAa,IAAA;IACxB,MAAM,EAAEC,kBAAkB,EAAE,GAAGC,eAAAA,EAAAA;IAC/B,MAAM,EAAEC,GAAG,EAAE,GAAGC,cAAAA,EAAAA;AAChB,IAAA,MAAM,EAAEC,cAAc,EAAE,GAAGC,kBAAAA,CAAmBC,OAAAA,CAAAA;AAE9C,IAAA,MAAM,CACJ,EACEC,IAAAA,EAAMC,WAAW,EACjBC,SAAAA,EAAWC,oBAAoB,EAC/BC,KAAAA,EAAOC,gBAAgB,EACvBC,OAAAA,EAASC,kBAAkB,EAC5B,EACD,EAAEP,IAAAA,EAAMQ,MAAM,EAAEN,SAAAA,EAAWO,eAAe,EAAEL,KAAAA,EAAOM,WAAW,EAAEJ,OAAAA,EAASK,aAAa,EAAE,CACzF,GAAGC,UAAAA,CAAW;AACb,QAAA;YACEC,QAAAA,EAAU;AAAC,gBAAA,mBAAA;AAAqB,gBAAA;AAAc,aAAA;YAC9C,MAAMC,OAAAA,CAAAA,GAAAA;gBACJ,MAAM,EACJd,IAAAA,EAAM,EAAEC,WAAW,EAAE,EACtB,GAAG,MAAMN,GAAAA,CAAI,CAAC,8BAA8B,CAAC,CAAA;gBAE9C,OAAOM,WAAAA;AACT,YAAA;AACF,SAAA;AACA,QAAA;YACEY,QAAAA,EAAU;AAAC,gBAAA,mBAAA;AAAqB,gBAAA;AAAS,aAAA;YACzC,MAAMC,OAAAA,CAAAA,GAAAA;gBACJ,MAAM,EACJd,IAAAA,EAAM,EAAEQ,MAAM,EAAE,EACjB,GAAG,MAAMb,GAAAA,CAAI,CAAC,yBAAyB,CAAC,CAAA;gBAEzC,OAAOa,MAAAA;AACT,YAAA;AACF;AACD,KAAA,CAAA;AAED,IAAA,MAAMO,cAAAA,GAAiB,UAAA;QACrB,MAAMC,OAAAA,CAAQC,GAAG,CAAC;AAACV,YAAAA,kBAAAA,EAAAA;AAAsBI,YAAAA,aAAAA;AAAgB,SAAA,CAAA;AAC3D,IAAA,CAAA;IAEAO,SAAAA,CAAU,IAAA;AACR,QAAA,IAAIb,gBAAAA,EAAkB;YACpBZ,kBAAAA,CAAmB;gBACjB0B,IAAAA,EAAM,QAAA;AACNC,gBAAAA,OAAAA,EAASvB,cAAAA,CAAeQ,gBAAAA;AAC1B,aAAA,CAAA;AACF,QAAA;IACF,CAAA,EAAG;AAACZ,QAAAA,kBAAAA;AAAoBY,QAAAA,gBAAAA;AAAkBR,QAAAA;AAAe,KAAA,CAAA;IAEzDqB,SAAAA,CAAU,IAAA;AACR,QAAA,IAAIR,WAAAA,EAAa;YACfjB,kBAAAA,CAAmB;gBACjB0B,IAAAA,EAAM,QAAA;AACNC,gBAAAA,OAAAA,EAASvB,cAAAA,CAAea,WAAAA;AAC1B,aAAA,CAAA;AACF,QAAA;IACF,CAAA,EAAG;AAACjB,QAAAA,kBAAAA;AAAoBiB,QAAAA,WAAAA;AAAab,QAAAA;AAAe,KAAA,CAAA;AAEpD,IAAA,MAAMK,YAAYC,oBAAAA,IAAwBM,eAAAA;IAE1C,OAAO;;;;QAILR,WAAAA,EAAaA,WAAAA,GAAcoB,gBAAAA,CAAiBpB,WAAAA,CAAAA,GAAe,EAAC;AAC5DO,QAAAA,MAAAA,EAAQA,UAAU,EAAC;QAEnBc,OAAAA,EAASP,cAAAA;AACTb,QAAAA;AACF,KAAA;AACF;;;;"}