From 8dcdea46397c630733a8c6a08857db8ddf952605 Mon Sep 17 00:00:00 2001 From: Kiko Beats Date: Wed, 13 May 2020 10:58:32 +0200 Subject: [PATCH] feat: add fetchData parameter (#223) --- .travis.yml | 2 +- packages/react/package.json | 6 +++--- packages/react/src/index.js | 18 +++++++++++------- 3 files changed, 15 insertions(+), 11 deletions(-) diff --git a/.travis.yml b/.travis.yml index 2197832ec..e891ca4ec 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,3 +1,3 @@ language: node_js node_js: - - "node" + - 'lts/*' diff --git a/packages/react/package.json b/packages/react/package.json index c50b8e8b4..996c70083 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -23,8 +23,8 @@ "previsualization" ], "dependencies": { - "@microlink/mql": "~0.6.12", - "is-localhost-url": "~1.0.0", + "@microlink/mql": "~0.6.13", + "is-localhost-url": "~1.0.3", "nanoclamp": "~1.3.3" }, "devDependencies": { @@ -45,7 +45,7 @@ "enzyme-adapter-react-16": "latest", "eslint-plugin-jsx-a11y": "latest", "husky": "latest", - "jest": "latest", + "jest": "25", "jest-environment-enzyme": "latest", "jest-enzyme": "latest", "jest-styled-components": "latest", diff --git a/packages/react/src/index.js b/packages/react/src/index.js index 442b4b9cf..0d2bedc8c 100644 --- a/packages/react/src/index.js +++ b/packages/react/src/index.js @@ -28,7 +28,8 @@ import { useIntersectionObserver } from './utils/hooks' const Card = props => { const { - className = '', + className, + fetchData, lazy, loading, media: mediaProp, @@ -63,12 +64,13 @@ const Card = props => { [isLazyEnabled, hasIntersected] ) - const fetchData = useCallback(() => { + const toFetchData = useCallback(() => { if (canFetchData) { setLoading(true) - const fetch = isFunction(setData) - ? Promise.resolve({}) - : fetchFromApi(apiUrl, apiUrlProps) + + const fetch = fetchData + ? fetchFromApi(apiUrl, apiUrlProps) + : Promise.resolve({}) fetch .then(({ data }) => mergeData(data)) @@ -97,7 +99,7 @@ microlink.io/${error.code.toLowerCase()} const mergeData = useCallback( fetchedData => { const payload = isFunction(setData) - ? setData() + ? setData(fetchedData) : { ...fetchedData, ...setData } const { @@ -158,7 +160,7 @@ microlink.io/${error.code.toLowerCase()} [mediaProps, setData] ) - useEffect(fetchData, [url, setData, hasIntersected]) + useEffect(toFetchData, [url, setData, hasIntersected]) const isLoading = isLoadingUndefined ? loadingState : loading @@ -216,6 +218,7 @@ const Microlink = props => ( ) Microlink.defaultProps = { + className: '', apiKey: undefined, autoPlay: true, controls: true, @@ -223,6 +226,7 @@ Microlink.defaultProps = { lazy: true, loop: true, media: ['image', 'logo'], + fetchData: true, muted: true, playsInline: true, size: 'normal'