From 17241dbcfa7b34004a4fe7d0abf0ac5e591ae69c Mon Sep 17 00:00:00 2001 From: Nicolas Gallagher Date: Fri, 18 Feb 2022 10:10:55 -0800 Subject: [PATCH] [fix] AppState.removeEventListener deprecation Fix #2215 Fix #2166 --- .../exports/AppState/__tests__/index-test.js | 19 +++---------------- .../src/exports/AppState/index.js | 5 +++++ 2 files changed, 8 insertions(+), 16 deletions(-) diff --git a/packages/react-native-web/src/exports/AppState/__tests__/index-test.js b/packages/react-native-web/src/exports/AppState/__tests__/index-test.js index 5bd76bc7..1dd0218e 100644 --- a/packages/react-native-web/src/exports/AppState/__tests__/index-test.js +++ b/packages/react-native-web/src/exports/AppState/__tests__/index-test.js @@ -10,23 +10,10 @@ describe('apis/AppState', () => { expect(() => AppState.addEventListener('foo', handler)).toThrow(); expect(() => AppState.addEventListener('change', handler).remove()).not.toThrow(); }); - }); - describe('removeEventListener', () => { - beforeEach(() => { - // removeEventListener logs a deprecation warning, ignore - jest.spyOn(console, 'error'); - console.error.mockImplementation(() => {}); - }); - - afterEach(() => { - console.error.mockRestore(); - }); - - test('throws if the provided "eventType" is not supported', () => { - AppState.addEventListener('change', handler); - expect(() => AppState.removeEventListener('foo', handler)).toThrow(); - expect(() => AppState.removeEventListener('change', handler)).not.toThrow(); + test('returns remove subscription', () => { + const subscription = AppState.addEventListener('change', handler); + expect(() => subscription.remove()).not.toThrow(); }); }); }); diff --git a/packages/react-native-web/src/exports/AppState/index.js b/packages/react-native-web/src/exports/AppState/index.js index dcf756c4..36b8a70a 100644 --- a/packages/react-native-web/src/exports/AppState/index.js +++ b/packages/react-native-web/src/exports/AppState/index.js @@ -72,6 +72,11 @@ export default class AppState { static removeEventListener(type: string, handler: Function) { if (AppState.isAvailable) { + console.error( + `AppState.removeListener('${type}', ...): Method has been ` + + 'deprecated. Please instead use `remove()` on the subscription ' + + 'returned by `AppState.addEventListener`.' + ); invariant( EVENT_TYPES.indexOf(type) !== -1, 'Trying to remove listener for unknown event: "%s"',