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
JavaScript
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;