From 66cf1dabba9ae9851720fa7859ec6c14eeceda6d Mon Sep 17 00:00:00 2001 From: neverland Date: Thu, 14 Oct 2021 10:21:09 +0800 Subject: [PATCH] chore: adjust callInterceptor params (#9674) * chore: adjust callInterceptor params * chore: upd --- packages/vant/src/dialog/Dialog.tsx | 8 ++--- packages/vant/src/dialog/function-call.tsx | 2 +- .../vant/src/image-preview/ImagePreview.tsx | 3 +- packages/vant/src/popup/Popup.tsx | 3 +- packages/vant/src/stepper/Stepper.tsx | 3 +- packages/vant/src/swipe-cell/SwipeCell.tsx | 3 +- packages/vant/src/tabbar/Tabbar.tsx | 3 +- packages/vant/src/tabs/Tabs.tsx | 3 +- .../vant/src/uploader/UploaderPreviewItem.tsx | 3 +- packages/vant/src/utils/interceptor.ts | 22 ++++++++------ .../vant/src/utils/test/interceptor.spec.ts | 29 +++++++++---------- 11 files changed, 36 insertions(+), 46 deletions(-) diff --git a/packages/vant/src/dialog/Dialog.tsx b/packages/vant/src/dialog/Dialog.tsx index 74881533f..7ded0c8d0 100644 --- a/packages/vant/src/dialog/Dialog.tsx +++ b/packages/vant/src/dialog/Dialog.tsx @@ -74,10 +74,7 @@ export default defineComponent({ const close = (action: DialogAction) => { updateShow(false); - - if (props.callback) { - props.callback(action); - } + props.callback?.(action); }; const getActionHandler = (action: DialogAction) => () => { @@ -90,8 +87,7 @@ export default defineComponent({ if (props.beforeClose) { loading[action] = true; - callInterceptor({ - interceptor: props.beforeClose, + callInterceptor(props.beforeClose, { args: [action], done() { close(action); diff --git a/packages/vant/src/dialog/function-call.tsx b/packages/vant/src/dialog/function-call.tsx index c1ac612e2..bf9498255 100644 --- a/packages/vant/src/dialog/function-call.tsx +++ b/packages/vant/src/dialog/function-call.tsx @@ -49,7 +49,7 @@ Dialog.defaultOptions = { className: '', allowHtml: false, lockScroll: true, - transition: 'van-dialog-bounce', + transition: undefined, beforeClose: null, overlayClass: '', overlayStyle: undefined, diff --git a/packages/vant/src/image-preview/ImagePreview.tsx b/packages/vant/src/image-preview/ImagePreview.tsx index 07416ebd2..8ff8e7eae 100644 --- a/packages/vant/src/image-preview/ImagePreview.tsx +++ b/packages/vant/src/image-preview/ImagePreview.tsx @@ -100,8 +100,7 @@ export default defineComponent({ const updateShow = (show: boolean) => emit('update:show', show); const emitClose = () => { - callInterceptor({ - interceptor: props.beforeClose, + callInterceptor(props.beforeClose, { args: [state.active], done: () => updateShow(false), }); diff --git a/packages/vant/src/popup/Popup.tsx b/packages/vant/src/popup/Popup.tsx index 23cfd3d96..4e0aee540 100644 --- a/packages/vant/src/popup/Popup.tsx +++ b/packages/vant/src/popup/Popup.tsx @@ -113,8 +113,7 @@ export default defineComponent({ const close = () => { if (opened) { - callInterceptor({ - interceptor: props.beforeClose, + callInterceptor(props.beforeClose, { done() { opened = false; emit('close'); diff --git a/packages/vant/src/stepper/Stepper.tsx b/packages/vant/src/stepper/Stepper.tsx index 3dfbe0e16..3b0e1409d 100644 --- a/packages/vant/src/stepper/Stepper.tsx +++ b/packages/vant/src/stepper/Stepper.tsx @@ -128,9 +128,8 @@ export default defineComponent({ const setValue = (value: string | number) => { if (props.beforeChange) { - callInterceptor({ + callInterceptor(props.beforeChange, { args: [value], - interceptor: props.beforeChange, done() { current.value = value; }, diff --git a/packages/vant/src/swipe-cell/SwipeCell.tsx b/packages/vant/src/swipe-cell/SwipeCell.tsx index 8a5c005e9..0808341a6 100644 --- a/packages/vant/src/swipe-cell/SwipeCell.tsx +++ b/packages/vant/src/swipe-cell/SwipeCell.tsx @@ -162,8 +162,7 @@ export default defineComponent({ emit('click', position); if (opened && !lockClick) { - callInterceptor({ - interceptor: props.beforeClose, + callInterceptor(props.beforeClose, { args: [ { name: props.name, diff --git a/packages/vant/src/tabbar/Tabbar.tsx b/packages/vant/src/tabbar/Tabbar.tsx index b89643d31..a223a588a 100644 --- a/packages/vant/src/tabbar/Tabbar.tsx +++ b/packages/vant/src/tabbar/Tabbar.tsx @@ -83,8 +83,7 @@ export default defineComponent({ const setActive = (active: number | string) => { if (active !== props.modelValue) { - callInterceptor({ - interceptor: props.beforeChange, + callInterceptor(props.beforeChange, { args: [active], done() { emit('update:modelValue', active); diff --git a/packages/vant/src/tabs/Tabs.tsx b/packages/vant/src/tabs/Tabs.tsx index f37c27e41..6586f4375 100644 --- a/packages/vant/src/tabs/Tabs.tsx +++ b/packages/vant/src/tabs/Tabs.tsx @@ -307,8 +307,7 @@ export default defineComponent({ // should be removed in next major version emit('disabled', name, title); } else { - callInterceptor({ - interceptor: props.beforeChange, + callInterceptor(props.beforeChange, { args: [name], done: () => { setCurrentIndex(index); diff --git a/packages/vant/src/uploader/UploaderPreviewItem.tsx b/packages/vant/src/uploader/UploaderPreviewItem.tsx index 17c5a64ce..b71b90b73 100644 --- a/packages/vant/src/uploader/UploaderPreviewItem.tsx +++ b/packages/vant/src/uploader/UploaderPreviewItem.tsx @@ -60,8 +60,7 @@ export default defineComponent({ const onDelete = (event: MouseEvent) => { const { name, item, index, beforeDelete } = props; event.stopPropagation(); - callInterceptor({ - interceptor: beforeDelete, + callInterceptor(beforeDelete, { args: [item, { name, index }], done: () => emit('delete'), }); diff --git a/packages/vant/src/utils/interceptor.ts b/packages/vant/src/utils/interceptor.ts index fae181301..b3e5299db 100644 --- a/packages/vant/src/utils/interceptor.ts +++ b/packages/vant/src/utils/interceptor.ts @@ -3,17 +3,21 @@ import { isPromise } from './validate'; export type Interceptor = (...args: any[]) => Promise | boolean; -export function callInterceptor(options: { - interceptor?: Interceptor; - args?: any[]; - done: () => void; - canceled?: () => void; -}) { - const { interceptor, args, done, canceled } = options; - +export function callInterceptor( + interceptor: Interceptor | undefined, + { + args = [], + done, + canceled, + }: { + args?: any[]; + done: () => void; + canceled?: () => void; + } +) { if (interceptor) { // eslint-disable-next-line prefer-spread - const returnVal = interceptor.apply(null, args || []); + const returnVal = interceptor.apply(null, args); if (isPromise(returnVal)) { returnVal diff --git a/packages/vant/src/utils/test/interceptor.spec.ts b/packages/vant/src/utils/test/interceptor.spec.ts index 025b66d93..d5183d747 100644 --- a/packages/vant/src/utils/test/interceptor.spec.ts +++ b/packages/vant/src/utils/test/interceptor.spec.ts @@ -3,50 +3,47 @@ import { callInterceptor } from '../interceptor'; test('callInterceptor', async () => { const done = jest.fn(); - callInterceptor({ done }); + callInterceptor(undefined, { done }); expect(done).toHaveBeenCalledTimes(1); - callInterceptor({ - interceptor: () => false, + callInterceptor(() => false, { done, }); expect(done).toHaveBeenCalledTimes(1); - callInterceptor({ - interceptor: () => true, + callInterceptor(() => true, { done, }); expect(done).toHaveBeenCalledTimes(2); - callInterceptor({ - interceptor: () => Promise.resolve(false), + callInterceptor(() => Promise.resolve(false), { done, }); await later(); expect(done).toHaveBeenCalledTimes(2); - callInterceptor({ - interceptor: () => Promise.resolve(true), + callInterceptor(() => Promise.resolve(true), { done, }); await later(); expect(done).toHaveBeenCalledTimes(3); - callInterceptor({ - interceptor: () => Promise.reject(), + callInterceptor(() => Promise.reject(), { done, }); await later(); expect(done).toHaveBeenCalledTimes(3); - callInterceptor({ - interceptor: (...args) => { + callInterceptor( + (...args) => { expect(args).toEqual(['foo']); return false; }, - args: ['foo'], - done, - }); + { + args: ['foo'], + done, + } + ); expect(done).toHaveBeenCalledTimes(3); });