{"version":3,"file":"useFolders.mjs","sources":["../../../admin/src/hooks/useFolders.ts"],"sourcesContent":["import * as React from 'react';\n\nimport { useNotification, useFetchClient } from '@strapi/admin/strapi-admin';\nimport { useNotifyAT } from '@strapi/design-system';\nimport { stringify } from 'qs';\nimport { useIntl } from 'react-intl';\nimport { useQuery } from 'react-query';\n\nimport { GetFolders } from '../../../shared/contracts/folders';\nimport { pluginId } from '../pluginId';\n\nimport type { Query } from '../../../shared/contracts/files';\n\ninterface UseFoldersOptions {\n  enabled?: boolean;\n  query?: Query;\n}\n\nexport const useFolders = ({ enabled = true, query = {} }: UseFoldersOptions = {}) => {\n  const { formatMessage } = useIntl();\n  const { toggleNotification } = useNotification();\n  const { notifyStatus } = useNotifyAT();\n  const { folder, _q, ...paramsExceptFolderAndQ } = query;\n  const { get } = useFetchClient();\n\n  let params: Query;\n\n  if (_q) {\n    params = {\n      ...paramsExceptFolderAndQ,\n      pagination: {\n        pageSize: -1,\n      },\n      _q,\n    };\n  } else {\n    params = {\n      ...paramsExceptFolderAndQ,\n      pagination: {\n        pageSize: -1,\n      },\n      filters: {\n        $and: [\n          ...(paramsExceptFolderAndQ?.filters?.$and ?? []),\n          {\n            parent: {\n              id: folder ?? {\n                $null: true,\n              },\n            },\n          },\n        ],\n      },\n    };\n  }\n\n  const { data, error, isLoading } = useQuery<\n    GetFolders.Response['data'],\n    GetFolders.Response['error']\n  >(\n    [pluginId, 'folders', stringify(params)],\n    async () => {\n      const {\n        data: { data },\n      } = await get<GetFolders.Response>('/upload/folders', { params });\n\n      return data;\n    },\n    {\n      enabled,\n      staleTime: 0,\n      cacheTime: 0,\n      onError() {\n        toggleNotification({\n          type: 'danger',\n          message: formatMessage({ id: 'notification.error' }),\n        });\n      },\n    }\n  );\n\n  React.useEffect(() => {\n    if (data) {\n      notifyStatus(\n        formatMessage({\n          id: 'list.asset.at.finished',\n          defaultMessage: 'The folders have finished loading.',\n        })\n      );\n    }\n  }, [data, formatMessage, notifyStatus]);\n\n  return { data, error, isLoading };\n};\n"],"names":["useFolders","enabled","query","formatMessage","useIntl","toggleNotification","useNotification","notifyStatus","useNotifyAT","folder","_q","paramsExceptFolderAndQ","get","useFetchClient","params","pagination","pageSize","filters","$and","parent","id","$null","data","error","isLoading","useQuery","pluginId","stringify","staleTime","cacheTime","onError","type","message","React","useEffect","defaultMessage"],"mappings":";;;;;;;;AAkBO,MAAMA,UAAAA,GAAa,CAAC,EAAEC,OAAAA,GAAU,IAAI,EAAEC,KAAAA,GAAQ,EAAE,EAAqB,GAAG,EAAE,GAAA;IAC/E,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;IAC1B,MAAM,EAAEC,kBAAkB,EAAE,GAAGC,eAAAA,EAAAA;IAC/B,MAAM,EAAEC,YAAY,EAAE,GAAGC,WAAAA,EAAAA;AACzB,IAAA,MAAM,EAAEC,MAAM,EAAEC,EAAE,EAAE,GAAGC,wBAAwB,GAAGT,KAAAA;IAClD,MAAM,EAAEU,GAAG,EAAE,GAAGC,cAAAA,EAAAA;IAEhB,IAAIC,MAAAA;AAEJ,IAAA,IAAIJ,EAAAA,EAAI;QACNI,MAAAA,GAAS;AACP,YAAA,GAAGH,sBAAsB;YACzBI,UAAAA,EAAY;AACVC,gBAAAA,QAAAA,EAAU;AACZ,aAAA;AACAN,YAAAA;AACF,SAAA;IACF,CAAA,MAAO;QACLI,MAAAA,GAAS;AACP,YAAA,GAAGH,sBAAsB;YACzBI,UAAAA,EAAY;AACVC,gBAAAA,QAAAA,EAAU;AACZ,aAAA;YACAC,OAAAA,EAAS;gBACPC,IAAAA,EAAM;uBACAP,sBAAAA,EAAwBM,OAAAA,EAASC,QAAQ,EAAE;AAC/C,oBAAA;wBACEC,MAAAA,EAAQ;AACNC,4BAAAA,EAAAA,EAAIX,MAAAA,IAAU;gCACZY,KAAAA,EAAO;AACT;AACF;AACF;AACD;AACH;AACF,SAAA;AACF,IAAA;IAEA,MAAM,EAAEC,IAAI,EAAEC,KAAK,EAAEC,SAAS,EAAE,GAAGC,QAAAA,CAIjC;AAACC,QAAAA,QAAAA;AAAU,QAAA,SAAA;QAAWC,SAAAA,CAAUb,MAAAA;KAAQ,EACxC,UAAA;QACE,MAAM,EACJQ,MAAM,EAAEA,IAAI,EAAE,EACf,GAAG,MAAMV,GAAAA,CAAyB,iBAAA,EAAmB;AAAEE,YAAAA;AAAO,SAAA,CAAA;QAE/D,OAAOQ,IAAAA;IACT,CAAA,EACA;AACErB,QAAAA,OAAAA;QACA2B,SAAAA,EAAW,CAAA;QACXC,SAAAA,EAAW,CAAA;AACXC,QAAAA,OAAAA,CAAAA,GAAAA;YACEzB,kBAAAA,CAAmB;gBACjB0B,IAAAA,EAAM,QAAA;AACNC,gBAAAA,OAAAA,EAAS7B,aAAAA,CAAc;oBAAEiB,EAAAA,EAAI;AAAqB,iBAAA;AACpD,aAAA,CAAA;AACF,QAAA;AACF,KAAA,CAAA;AAGFa,IAAAA,KAAAA,CAAMC,SAAS,CAAC,IAAA;AACd,QAAA,IAAIZ,IAAAA,EAAM;AACRf,YAAAA,YAAAA,CACEJ,aAAAA,CAAc;gBACZiB,EAAAA,EAAI,wBAAA;gBACJe,cAAAA,EAAgB;AAClB,aAAA,CAAA,CAAA;AAEJ,QAAA;IACF,CAAA,EAAG;AAACb,QAAAA,IAAAA;AAAMnB,QAAAA,aAAAA;AAAeI,QAAAA;AAAa,KAAA,CAAA;IAEtC,OAAO;AAAEe,QAAAA,IAAAA;AAAMC,QAAAA,KAAAA;AAAOC,QAAAA;AAAU,KAAA;AAClC;;;;"}