From 5e5e7c52cb22220009c40509380e33d90dcdc79f Mon Sep 17 00:00:00 2001 From: Emmanuel Chambon Date: Tue, 23 Nov 2021 09:16:04 +0100 Subject: [PATCH] fix(use-dataloader): ignore some eslint v8 errors --- packages/use-dataloader/src/DataLoaderProvider.tsx | 2 ++ .../use-dataloader/src/__tests__/DataLoaderProvider.test.tsx | 4 ++++ packages/use-dataloader/src/__tests__/dataloader.test.ts | 4 ++-- packages/use-dataloader/src/dataloader.ts | 4 ++-- packages/use-dataloader/src/useDataLoader.ts | 2 ++ 5 files changed, 12 insertions(+), 4 deletions(-) diff --git a/packages/use-dataloader/src/DataLoaderProvider.tsx b/packages/use-dataloader/src/DataLoaderProvider.tsx index 39c25985b..5dd988ff0 100644 --- a/packages/use-dataloader/src/DataLoaderProvider.tsx +++ b/packages/use-dataloader/src/DataLoaderProvider.tsx @@ -186,6 +186,8 @@ const DataLoaderProvider = ({ setTimeout(() => { Object.keys(requestsRef.current).forEach(key => { if (requestsRef.current[key].getObserversCount() === 0) { + // Worst case there is a memleak + // eslint-disable-next-line @typescript-eslint/no-floating-promises requestsRef.current[key].destroy() delete requestsRef.current[key] } diff --git a/packages/use-dataloader/src/__tests__/DataLoaderProvider.test.tsx b/packages/use-dataloader/src/__tests__/DataLoaderProvider.test.tsx index 9333155bf..c9c3a186a 100644 --- a/packages/use-dataloader/src/__tests__/DataLoaderProvider.test.tsx +++ b/packages/use-dataloader/src/__tests__/DataLoaderProvider.test.tsx @@ -52,6 +52,8 @@ describe('DataLoaderProvider', () => { expect(testRequest).toBeDefined() expect(testRequest?.status).toBe(StatusEnum.IDLE) act(() => { + // launch should never throw + // eslint-disable-next-line @typescript-eslint/no-floating-promises testRequest?.launch() }) expect(method).toBeCalledTimes(1) @@ -88,6 +90,8 @@ describe('DataLoaderProvider', () => { expect(testRequest).toBeDefined() expect(testRequest?.status).toBe(StatusEnum.IDLE) act(() => { + // launch should never throw + // eslint-disable-next-line @typescript-eslint/no-floating-promises testRequest?.launch() }) expect(method).toBeCalledTimes(1) diff --git a/packages/use-dataloader/src/__tests__/dataloader.test.ts b/packages/use-dataloader/src/__tests__/dataloader.test.ts index 9089eeb0c..368cdd27e 100644 --- a/packages/use-dataloader/src/__tests__/dataloader.test.ts +++ b/packages/use-dataloader/src/__tests__/dataloader.test.ts @@ -33,7 +33,7 @@ describe('Dataloader class', () => { expect(method).toBeCalledTimes(0) await instance.load() expect(method).toBeCalledTimes(1) - instance.destroy() + await instance.destroy() instance.clearData() }) @@ -207,7 +207,7 @@ describe('Dataloader class', () => { await new Promise(resolve => { setTimeout(resolve) }) expect(method).toBeCalledTimes(6) instance.setPollingInterval(PROMISE_TIMEOUT * 4) - instance.destroy() + await instance.destroy() }) test('should update outdated data', async () => { diff --git a/packages/use-dataloader/src/dataloader.ts b/packages/use-dataloader/src/dataloader.ts index af925be51..01ddcbbe8 100644 --- a/packages/use-dataloader/src/dataloader.ts +++ b/packages/use-dataloader/src/dataloader.ts @@ -216,8 +216,8 @@ class DataLoader { this.notifyChanges() } - public destroy(): void { - this.cancel?.() + public async destroy(): Promise { + await this.cancel?.() if (this.timeout) { clearTimeout(this.timeout) } diff --git a/packages/use-dataloader/src/useDataLoader.ts b/packages/use-dataloader/src/useDataLoader.ts index cfb587733..7019330f5 100644 --- a/packages/use-dataloader/src/useDataLoader.ts +++ b/packages/use-dataloader/src/useDataLoader.ts @@ -106,6 +106,8 @@ const useDataLoader = ( useEffect(() => { if (enabled && isIdle) { + // launch should never throw + // eslint-disable-next-line @typescript-eslint/no-floating-promises request.launch?.() } }, [request, enabled, isIdle])