From 9c165978fd1b811fa793daa684321a318ff66e8f Mon Sep 17 00:00:00 2001 From: Billy Vong Date: Thu, 16 Feb 2023 15:16:26 -0500 Subject: [PATCH 1/3] fix(replay): Fix debounce when `maxWait` == `wait` Update and fix tests for debounce when `maxWait` == `wait`. --- packages/replay/src/util/debounce.ts | 7 +++++-- packages/replay/test/unit/util/debounce.test.ts | 17 +++++++++++++++-- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/packages/replay/src/util/debounce.ts b/packages/replay/src/util/debounce.ts index a6774a62ca7e..554ce3ea340c 100644 --- a/packages/replay/src/util/debounce.ts +++ b/packages/replay/src/util/debounce.ts @@ -57,8 +57,11 @@ export function debounce(func: CallbackFunction, wait: number, options?: Debounc } timerId = setTimeout(invokeFunc, wait); - if (maxWait && maxTimerId === undefined && maxWait !== wait) { - maxTimerId = setTimeout(invokeFunc, maxWait); + if (maxWait && maxTimerId === undefined) { + maxTimerId = setTimeout(() => { + invokeFunc(); + if (timerId) { clearTimeout(timerId)} + }, maxWait); } return callbackReturnValue; diff --git a/packages/replay/test/unit/util/debounce.test.ts b/packages/replay/test/unit/util/debounce.test.ts index b75adc6bf3bd..d52f9d456b49 100644 --- a/packages/replay/test/unit/util/debounce.test.ts +++ b/packages/replay/test/unit/util/debounce.test.ts @@ -246,14 +246,27 @@ describe('Unit | util | debounce', () => { const debouncedCallback = debounce(callback, 100, { maxWait: 100 }); debouncedCallback(); - jest.advanceTimersByTime(100); + jest.advanceTimersByTime(25); + debouncedCallback(); + jest.advanceTimersByTime(25); + debouncedCallback(); + jest.advanceTimersByTime(25); + debouncedCallback(); + jest.advanceTimersByTime(25); expect(callback).toHaveBeenCalledTimes(1); const retval = debouncedCallback(); expect(retval).toBe('foo'); - jest.advanceTimersByTime(100); + jest.advanceTimersByTime(25); + debouncedCallback(); + jest.advanceTimersByTime(25); + debouncedCallback(); + jest.advanceTimersByTime(25); + debouncedCallback(); + jest.advanceTimersByTime(25); + expect(callback).toHaveBeenCalledTimes(2); }); }); From d361a1a4e84ec2cac6e82d5562b0f72aa0663c80 Mon Sep 17 00:00:00 2001 From: Billy Vong Date: Thu, 16 Feb 2023 15:46:49 -0500 Subject: [PATCH 2/3] lint --- packages/replay/src/util/debounce.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/replay/src/util/debounce.ts b/packages/replay/src/util/debounce.ts index 554ce3ea340c..31c4d23ee360 100644 --- a/packages/replay/src/util/debounce.ts +++ b/packages/replay/src/util/debounce.ts @@ -60,7 +60,9 @@ export function debounce(func: CallbackFunction, wait: number, options?: Debounc if (maxWait && maxTimerId === undefined) { maxTimerId = setTimeout(() => { invokeFunc(); - if (timerId) { clearTimeout(timerId)} + if (timerId) { + clearTimeout(timerId); + } }, maxWait); } From cb71021238cfaf0c671b6f1a5bf19efa000f6da8 Mon Sep 17 00:00:00 2001 From: Francesco Novy Date: Fri, 17 Feb 2023 09:12:12 +0100 Subject: [PATCH 3/3] streamline debounce code --- packages/replay/src/util/debounce.ts | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/packages/replay/src/util/debounce.ts b/packages/replay/src/util/debounce.ts index 31c4d23ee360..88057c14a4c5 100644 --- a/packages/replay/src/util/debounce.ts +++ b/packages/replay/src/util/debounce.ts @@ -58,12 +58,7 @@ export function debounce(func: CallbackFunction, wait: number, options?: Debounc timerId = setTimeout(invokeFunc, wait); if (maxWait && maxTimerId === undefined) { - maxTimerId = setTimeout(() => { - invokeFunc(); - if (timerId) { - clearTimeout(timerId); - } - }, maxWait); + maxTimerId = setTimeout(invokeFunc, maxWait); } return callbackReturnValue;