From fbcd09eff36de6f7fa2618598e13478f6afeee23 Mon Sep 17 00:00:00 2001 From: ambar Date: Tue, 26 Mar 2019 22:02:12 +0800 Subject: [PATCH] fix(griffith-utils): rename `mergeFunctions` to `sequence` (#41) --- .../src/__tests__/mergeFunctions.spec.js | 9 --------- packages/griffith-utils/src/__tests__/sequence.spec.js | 9 +++++++++ packages/griffith-utils/src/index.js | 2 +- packages/griffith-utils/src/mergeFunctions.js | 6 ------ packages/griffith-utils/src/sequence.js | 3 +++ packages/griffith/src/components/Hover/Hover.js | 7 ++++--- .../griffith/src/components/Video/VideoWithMessage.js | 10 +++++----- 7 files changed, 22 insertions(+), 24 deletions(-) delete mode 100644 packages/griffith-utils/src/__tests__/mergeFunctions.spec.js create mode 100644 packages/griffith-utils/src/__tests__/sequence.spec.js delete mode 100644 packages/griffith-utils/src/mergeFunctions.js create mode 100644 packages/griffith-utils/src/sequence.js diff --git a/packages/griffith-utils/src/__tests__/mergeFunctions.spec.js b/packages/griffith-utils/src/__tests__/mergeFunctions.spec.js deleted file mode 100644 index 85fdc876..00000000 --- a/packages/griffith-utils/src/__tests__/mergeFunctions.spec.js +++ /dev/null @@ -1,9 +0,0 @@ -import mergeFunctions from '../mergeFunctions' - -test('mergeFunctions', () => { - const fn1 = jest.fn() - const fn2 = jest.fn() - mergeFunctions(fn1, fn2)('foo', 'bar') - expect(fn1).toHaveBeenCalledWith('foo', 'bar') - expect(fn2).toHaveBeenCalledWith('foo', 'bar') -}) diff --git a/packages/griffith-utils/src/__tests__/sequence.spec.js b/packages/griffith-utils/src/__tests__/sequence.spec.js new file mode 100644 index 00000000..5406f1ac --- /dev/null +++ b/packages/griffith-utils/src/__tests__/sequence.spec.js @@ -0,0 +1,9 @@ +import sequence from '../sequence' + +test('sequence', () => { + const fn1 = jest.fn(() => 1) + const fn2 = jest.fn(() => 2) + expect(sequence(fn1, fn2)('foo', 'bar')).toBe(2) + expect(fn1).toHaveBeenCalledWith('foo', 'bar') + expect(fn2).toHaveBeenCalledWith('foo', 'bar') +}) diff --git a/packages/griffith-utils/src/index.js b/packages/griffith-utils/src/index.js index 93dc2b22..4874aab2 100644 --- a/packages/griffith-utils/src/index.js +++ b/packages/griffith-utils/src/index.js @@ -3,4 +3,4 @@ export {default as ua} from './ua' export {default as isMSESupported} from './isMSESupported' export {default as isHlsNativeSupported} from './isHlsNativeSupported' export {getGCD, reduce} from './math' -export {default as mergeFunctions} from './mergeFunctions' +export {default as sequence} from './sequence' diff --git a/packages/griffith-utils/src/mergeFunctions.js b/packages/griffith-utils/src/mergeFunctions.js deleted file mode 100644 index 62401120..00000000 --- a/packages/griffith-utils/src/mergeFunctions.js +++ /dev/null @@ -1,6 +0,0 @@ -export default function mergeFunctions(fn1, fn2) { - return (...arg) => { - if (fn1) fn1(...arg) - if (fn2) fn2(...arg) - } -} diff --git a/packages/griffith-utils/src/sequence.js b/packages/griffith-utils/src/sequence.js new file mode 100644 index 00000000..48d323d6 --- /dev/null +++ b/packages/griffith-utils/src/sequence.js @@ -0,0 +1,3 @@ +export default function sequence(...fns) { + return (...args) => fns.reduce((_, fn) => fn(...args), null) +} diff --git a/packages/griffith/src/components/Hover/Hover.js b/packages/griffith/src/components/Hover/Hover.js index bd79226c..26e5b8ab 100644 --- a/packages/griffith/src/components/Hover/Hover.js +++ b/packages/griffith/src/components/Hover/Hover.js @@ -1,5 +1,6 @@ import React from 'react' -import {mergeFunctions} from 'griffith-utils' +import {sequence} from 'griffith-utils' +import noop from 'lodash/noop' export default class Hover extends React.Component { state = { @@ -20,8 +21,8 @@ export default class Hover extends React.Component { return (
{children(isHovered)}
diff --git a/packages/griffith/src/components/Video/VideoWithMessage.js b/packages/griffith/src/components/Video/VideoWithMessage.js index 0acb6b31..559de260 100644 --- a/packages/griffith/src/components/Video/VideoWithMessage.js +++ b/packages/griffith/src/components/Video/VideoWithMessage.js @@ -1,7 +1,7 @@ import React from 'react' import {EVENTS} from 'griffith-message' -import mergeFunctions from 'griffith-utils/src/mergeFunctions' - +import {sequence} from 'griffith-utils' +import noop from 'lodash/noop' import {InternalContext} from '../../contexts/Message' import {ObjectFitContext} from '../../contexts/ObjectFit' import {PositionContext} from '../../contexts/Position' @@ -37,7 +37,7 @@ const VideoWithMessage = React.forwardRef((props, ref) => { eventMap.map(([eventName, key]) => { const handler = props[key] const emit = event => emitEvent(eventName, getMediaEventPayload(event)) - newProps[key] = mergeFunctions(emit, handler) + newProps[key] = sequence(emit, handler || noop) }) const updateVideoSizeOnLoadedMetadata = event => { @@ -48,9 +48,9 @@ const VideoWithMessage = React.forwardRef((props, ref) => { } } - const newOnLoadedMetadata = mergeFunctions( + const newOnLoadedMetadata = sequence( updateVideoSizeOnLoadedMetadata, - props.onLoadedMetadata + props.onLoadedMetadata || noop ) const {Video, ...otherProps} = props