{"version":3,"file":"useConfig.mjs","sources":["../../../admin/src/hooks/useConfig.ts"],"sourcesContent":["import { useNotification, useFetchClient } from '@strapi/admin/strapi-admin';\nimport { useIntl } from 'react-intl';\nimport { useMutation, useQuery, UseMutationResult, UseQueryResult } from 'react-query';\n\nimport { GetConfiguration, UpdateConfiguration } from '../../../shared/contracts/configuration';\nimport { pluginId } from '../pluginId';\n\nimport { useTracking } from './useTracking';\n\nconst endpoint = `/${pluginId}/configuration`;\nconst queryKey = [pluginId, 'configuration'];\n\nexport const useConfig = () => {\n  const { trackUsage } = useTracking();\n  const { formatMessage } = useIntl();\n  const { toggleNotification } = useNotification();\n  const { get, put } = useFetchClient();\n\n  const config: UseQueryResult<\n    GetConfiguration.Response['data']['data'] | GetConfiguration.Response['error']\n  > = useQuery(\n    queryKey,\n    async () => {\n      const res: GetConfiguration.Response = await get(endpoint);\n\n      return res.data.data;\n    },\n    {\n      onError() {\n        return toggleNotification({\n          type: 'danger',\n          message: formatMessage({ id: 'notification.error' }),\n        });\n      },\n      /**\n       * We're cementing that we always expect an object to be returned.\n       */\n      select: (data) => data || {},\n    }\n  );\n\n  const putMutation: UseMutationResult<\n    void,\n    UpdateConfiguration.Response['error'],\n    UpdateConfiguration.Request['body']\n  > = useMutation(\n    async (body) => {\n      await put<UpdateConfiguration.Response>(endpoint, body);\n    },\n    {\n      onSuccess() {\n        trackUsage('didEditMediaLibraryConfig');\n        config.refetch();\n      },\n      onError() {\n        return toggleNotification({\n          type: 'danger',\n          message: formatMessage({ id: 'notification.error' }),\n        });\n      },\n    }\n  );\n\n  return {\n    config,\n    mutateConfig: putMutation,\n  };\n};\n"],"names":["endpoint","pluginId","queryKey","useConfig","trackUsage","useTracking","formatMessage","useIntl","toggleNotification","useNotification","get","put","useFetchClient","config","useQuery","res","data","onError","type","message","id","select","putMutation","useMutation","body","onSuccess","refetch","mutateConfig"],"mappings":";;;;;;AASA,MAAMA,WAAW,CAAC,CAAC,EAAEC,QAAAA,CAAS,cAAc,CAAC;AAC7C,MAAMC,QAAAA,GAAW;AAACD,IAAAA,QAAAA;AAAU,IAAA;AAAgB,CAAA;MAE/BE,SAAAA,GAAY,IAAA;IACvB,MAAM,EAAEC,UAAU,EAAE,GAAGC,WAAAA,EAAAA;IACvB,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;IAC1B,MAAM,EAAEC,kBAAkB,EAAE,GAAGC,eAAAA,EAAAA;AAC/B,IAAA,MAAM,EAAEC,GAAG,EAAEC,GAAG,EAAE,GAAGC,cAAAA,EAAAA;IAErB,MAAMC,MAAAA,GAEFC,SACFZ,QAAAA,EACA,UAAA;QACE,MAAMa,GAAAA,GAAiC,MAAML,GAAAA,CAAIV,QAAAA,CAAAA;QAEjD,OAAOe,GAAAA,CAAIC,IAAI,CAACA,IAAI;IACtB,CAAA,EACA;AACEC,QAAAA,OAAAA,CAAAA,GAAAA;AACE,YAAA,OAAOT,kBAAAA,CAAmB;gBACxBU,IAAAA,EAAM,QAAA;AACNC,gBAAAA,OAAAA,EAASb,aAAAA,CAAc;oBAAEc,EAAAA,EAAI;AAAqB,iBAAA;AACpD,aAAA,CAAA;AACF,QAAA,CAAA;AACA;;AAEC,UACDC,MAAAA,EAAQ,CAACL,IAAAA,GAASA,IAAAA,IAAQ;AAC5B,KAAA,CAAA;IAGF,MAAMM,WAAAA,GAIFC,YACF,OAAOC,IAAAA,GAAAA;AACL,QAAA,MAAMb,IAAkCX,QAAAA,EAAUwB,IAAAA,CAAAA;IACpD,CAAA,EACA;AACEC,QAAAA,SAAAA,CAAAA,GAAAA;YACErB,UAAAA,CAAW,2BAAA,CAAA;AACXS,YAAAA,MAAAA,CAAOa,OAAO,EAAA;AAChB,QAAA,CAAA;AACAT,QAAAA,OAAAA,CAAAA,GAAAA;AACE,YAAA,OAAOT,kBAAAA,CAAmB;gBACxBU,IAAAA,EAAM,QAAA;AACNC,gBAAAA,OAAAA,EAASb,aAAAA,CAAc;oBAAEc,EAAAA,EAAI;AAAqB,iBAAA;AACpD,aAAA,CAAA;AACF,QAAA;AACF,KAAA,CAAA;IAGF,OAAO;AACLP,QAAAA,MAAAA;QACAc,YAAAA,EAAcL;AAChB,KAAA;AACF;;;;"}