{"version":3,"file":"apiHelpers.mjs","names":["React","acquireAccessToken","InteractionRequiredAuthError","useTenantStore","useSnackbar","Button","useCallback","useHistory","getMergedConfig","accessToken","config","headers","tenantId","getState","currentTenant","currentTenantId","Authorization","handleResponseErrors","error","response","status","getAccessToken","useHandleAxiosSnackbar","enqueueSnackbar","closeSnackbar","history","dismissSnackbar","key","callback","handleErrorSnackbar","customMessage","preCallBack","fallbackErrorMessage","toString","toLowerCase","code","showSnackBar","errorMessage","data","message","length","variant","anchorOrigin","vertical","horizontal","action","handleSuccessSnackbar","navigationPath","buttonText","fallbackSuccessMessage","showMessage","successMessage","options","push"],"sources":["../../src/utilities/apiHelpers.jsx"],"sourcesContent":["import React from \"react\";\nimport { acquireAccessToken } from './auth/authActions';\nimport { InteractionRequiredAuthError } from '@azure/msal-browser';\nimport { useTenantStore } from '../stores/tenantStore';\nimport { useSnackbar } from 'notistack';\nimport { Button } from '@material-ui/core';\nimport { useCallback } from 'react';\nimport { useHistory } from 'react-router-dom';\n\nexport const getMergedConfig = (accessToken, config) => {\n  const headers = config?.headers ?? {};\n  const tenantId = useTenantStore.getState().currentTenant?.tenantId;\n\n  if (tenantId && !headers.currentTenantId) {\n    headers.currentTenantId = tenantId;\n  }\n\n  if (accessToken) headers.Authorization ||= `Bearer ${accessToken}`;\n\n  config.headers = headers;\n  return config;\n};\n\nexport const handleResponseErrors = async (error) => {\n  if (error?.response?.status === 401) {\n      await acquireAccessToken();\n  }\n};\n\nexport const getAccessToken = async () => {\n  return await acquireAccessToken();\n};\n\n/**\n * Checks to make sure the error isn't cancelled, if so just return w/o doing anything\n *Otherwise call a pre-method, create a snackbar, then call a post-method\n *preCallBack returns a bool, true = show snackbar\n */\nexport const useHandleAxiosSnackbar = () => {\n  const { enqueueSnackbar, closeSnackbar } = useSnackbar();\n  const history = useHistory();\n\n  const dismissSnackbar = useCallback(\n    (key, callback) => {\n      closeSnackbar(key);\n      callback?.();\n    },\n    [closeSnackbar]\n  );\n\n  const handleErrorSnackbar = useCallback(\n    (error, customMessage, preCallBack, callback) => {\n      const fallbackErrorMessage = 'Error executing request';\n      if (\n        error?.toString()?.toLowerCase() === 'cancel' ||\n        error?.code === 'ERR_CANCELED'\n      )\n        return;\n\n      // Don't call the preCallback unless we actually failed.\n      const showSnackBar = preCallBack?.();\n      if (preCallBack && !showSnackBar) return;\n\n      let errorMessage =\n        customMessage ??\n        (error?.response?.data || error?.message || fallbackErrorMessage);\n      if (\n        typeof errorMessage !== 'string' ||\n        !errorMessage ||\n        errorMessage.length === 0\n      ) {\n        errorMessage = fallbackErrorMessage;\n      }\n\n      enqueueSnackbar(errorMessage, {\n        variant: 'error',\n        anchorOrigin: {\n          vertical: 'top',\n          horizontal: 'center'\n        },\n        action: (key) => (\n          <Button\n            color='secondary'\n            size='small'\n            onClick={() => {\n              dismissSnackbar(key);\n            }}\n          >\n            Ok\n          </Button>\n        )\n      });\n\n      callback?.();\n    },\n    [dismissSnackbar, enqueueSnackbar]\n  );\n\n  const handleSuccessSnackbar = useCallback(\n    (message, preCallBack, callback, navigationPath, buttonText) => {\n      const fallbackSuccessMessage = 'Executed request successfully';\n      const showMessage = preCallBack?.();\n      if (preCallBack && !showMessage) return;\n\n      let successMessage = message ?? fallbackSuccessMessage;\n      if (\n        typeof successMessage !== 'string' ||\n        !successMessage ||\n        successMessage.length === 0\n      ) {\n        successMessage = fallbackSuccessMessage;\n      }\n\n      const options = {\n        variant: 'default',\n        anchorOrigin: {\n          vertical: 'top',\n          horizontal: 'center'\n        },\n        action: (key) => (\n          <>\n            {navigationPath && (\n              <Button\n                color='secondary'\n                size='small'\n                onClick={() => {\n                  history.push(navigationPath);\n                  dismissSnackbar(key);\n                }}\n              >\n                {buttonText? buttonText : 'Go to page'}\n              </Button>\n            )}\n            <Button\n              color='secondary'\n              size='small'\n              onClick={() => {\n                dismissSnackbar(key);\n              }}\n            >\n              Ok\n            </Button>\n          </>\n        )\n      };\n\n      enqueueSnackbar(successMessage, options);\n    },\n    [dismissSnackbar, enqueueSnackbar]\n  );\n\n  return { handleErrorSnackbar, handleSuccessSnackbar };\n};\n"],"mappings":";;;;;;;;AASA,MAAaQ,mBAAmBC,aAAaC,WAAW;CACtD,MAAMC,UAAUD,QAAQC,WAAW,EAAE;CACrC,MAAMC,WAAWT,eAAeU,UAAU,CAACC,eAAeF;AAE1D,KAAIA,YAAY,CAACD,QAAQI,gBACvBJ,SAAQI,kBAAkBH;AAG5B,KAAIH,YAAaE,SAAQK,kBAAkB,UAAUP;AAErDC,QAAOC,UAAUA;AACjB,QAAOD;;AAGT,MAAaO,uBAAuB,OAAOC,UAAU;AACnD,KAAIA,OAAOC,UAAUC,WAAW,IAC5B,OAAMnB,oBAAoB;;AAIhC,MAAaoB,iBAAiB,YAAY;AACxC,QAAO,MAAMpB,oBAAoB;;;;;;;AAQnC,MAAaqB,+BAA+B;CAC1C,MAAM,EAAEC,iBAAiBC,kBAAkBpB,aAAa;CACxD,MAAMqB,UAAUlB,YAAY;CAE5B,MAAMmB,kBAAkBpB,aACrBqB,KAAKC,aAAa;AACjBJ,gBAAcG,IAAI;AAClBC,cAAY;IAEd,CAACJ,cACH,CAAC;AAuGD,QAAO;EAAEK,qBArGmBvB,aACzBY,OAAOY,eAAeC,aAAaH,eAAa;GAC/C,MAAMI,uBAAuB;AAC7B,OACEd,OAAOe,UAAU,EAAEC,aAAa,KAAK,YACrChB,OAAOiB,SAAS,eAEhB;GAGF,MAAMC,eAAeL,eAAe;AACpC,OAAIA,eAAe,CAACK,aAAc;GAElC,IAAIC,eACFP,kBACCZ,OAAOC,UAAUmB,QAAQpB,OAAOqB,WAAWP;AAC9C,OACE,OAAOK,iBAAiB,YACxB,CAACA,gBACDA,aAAaG,WAAW,EAExBH,gBAAeL;AAGjBT,mBAAgBc,cAAc;IAC5BI,SAAS;IACTC,cAAc;KACZC,UAAU;KACVC,YAAY;KACb;IACDC,SAASlB,UACP,sBAAA,cAAC,QAAD;KACE,OAAM;KACN,MAAK;KACL,eAAe;AACbD,sBAAgBC,MAAI;;KAIhB,EAHJ,KAGI;IAEX,CAAC;AAEFC,iBAAY;KAEd,CAACF,iBAAiBH,gBACpB,CAAC;EAuD6BuB,uBArDAxC,aAC3BiC,SAASR,eAAaH,YAAUmB,gBAAgBC,eAAe;GAC9D,MAAMC,yBAAyB;GAC/B,MAAMC,cAAcnB,iBAAe;AACnC,OAAIA,iBAAe,CAACmB,YAAa;GAEjC,IAAIC,iBAAiBZ,WAAWU;AAChC,OACE,OAAOE,mBAAmB,YAC1B,CAACA,kBACDA,eAAeX,WAAW,EAE1BW,kBAAiBF;AAoCnB1B,mBAAgB4B,gBAjCA;IACdV,SAAS;IACTC,cAAc;KACZC,UAAU;KACVC,YAAY;KACb;IACDC,SAASlB,UACP,sBAAA,cAAA,MAAA,UAAA,MACGoB,kBACC,sBAAA,cAAC,QAAD;KACE,OAAM;KACN,MAAK;KACL,eAAe;AACbtB,cAAQ4B,KAAKN,eAAe;AAC5BrB,sBAAgBC,MAAI;;KAKzB,EAFIqB,aAAYA,aAAa,aAE7B,EACD,sBAAA,cAAC,QAAD;KACE,OAAM;KACN,MAAK;KACL,eAAe;AACbtB,sBAAgBC,MAAI;;KAIhB,EAHJ,KAGI,CACV;IAEH,CAEuC;KAE1C,CAACD,iBAAiBH,gBACpB,CAAC;EAEoD"}