UNPKG

react-zendesk-helpcenter

Version:

React library that makes it easy to render Zendesk Help Center content in your React apps.

60 lines (50 loc) 2.04 kB
import { useContext, useMemo } from 'react'; import useSWR from 'swr'; import ZendeskContext from './ZendeskContext'; import fetcher from './libs/fetch'; import { API_VERSION } from './constants'; /** * useZendesk - Hook * Zendesk Help Center API Hook * * @param {Object} props * @param {string=} props.apiVersion * @param {string=} props.domain * @param {string} props.endpoint * @param {boolean=} props.includeLocale * @param {string=} props.locale * @returns */ var useZendesk = function useZendesk(_ref) { var _ref$apiVersion = _ref.apiVersion, apiVersion = _ref$apiVersion === void 0 ? API_VERSION : _ref$apiVersion, domain = _ref.domain, endpoint = _ref.endpoint, _ref$includeLocale = _ref.includeLocale, includeLocale = _ref$includeLocale === void 0 ? false : _ref$includeLocale, locale = _ref.locale; var _useContext = useContext(ZendeskContext), contextApiVersion = _useContext.apiVersion, defaultLocale = _useContext.defaultLocale, contextDomain = _useContext.domain; // @todo Add endpoint validation - Ryan var apiUrl = useMemo(function () { // Abort data fetching if domain is not provided if (!(domain || contextDomain)) { warning(false, 'No `domain` provided to `useZendesk`, aborting request'); return null; } // Abort data fetching if endpoint is not provided if (!endpoint) { warning(false, 'No `endpoint` provided to `useZendesk`, aborting request'); return null; } return "https://".concat(domain || contextDomain, ".zendesk.com/api/").concat(apiVersion || contextApiVersion, "/help_center").concat((locale || defaultLocale) && includeLocale ? "/".concat(locale || defaultLocale) : '').concat(endpoint); }, [apiVersion, contextApiVersion, contextDomain, defaultLocale, domain, endpoint, includeLocale, locale]); var _useSWR = useSWR(apiUrl, fetcher), data = _useSWR.data, error = _useSWR.error; return { data: data, error: error }; }; export default useZendesk;