From a0a37bca40493b1f0bbc2f42f9d0859ee8267c74 Mon Sep 17 00:00:00 2001 From: Jake Jarvis Date: Mon, 25 Apr 2022 09:35:17 -0400 Subject: [PATCH] deprecated `addListener` -> `addEventListener` --- contexts/ThemeContext.tsx | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/contexts/ThemeContext.tsx b/contexts/ThemeContext.tsx index 8618e9b1..6c526c26 100644 --- a/contexts/ThemeContext.tsx +++ b/contexts/ThemeContext.tsx @@ -74,11 +74,22 @@ export const ThemeProvider = ({ const handler = (...args: any) => mediaListener.current(...args); const media = window.matchMedia(darkModeQuery); - // note: intentionally using deprecated listener methods to support older iOS/browsers - media.addListener(handler); + if (media.addEventListener) { + media.addEventListener("change", handler); + } else { + // support deprecated listener API + media.addListener(handler); + } + handler(media); - return () => media.removeListener(handler); + return () => { + if (media.removeEventListener) { + media.removeEventListener("change", handler); + } else { + media.removeListener(handler); + } + }; }, []); // color-scheme handling (tells browser how to render built-in elements like forms, scrollbars, etc.)