From 0abaefb7c2f10d64d4f5ba1bf9de40dfd9727300 Mon Sep 17 00:00:00 2001 From: Brian Vaughn Date: Fri, 19 Jul 2019 09:02:30 -0700 Subject: [PATCH] Cleanup legacy backend event listener if modern backend is detected --- .../views/WarnIfLegacyBackendDetected.js | 21 +++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/src/devtools/views/WarnIfLegacyBackendDetected.js b/src/devtools/views/WarnIfLegacyBackendDetected.js index 3d76fbfeca..466c9ba1bd 100644 --- a/src/devtools/views/WarnIfLegacyBackendDetected.js +++ b/src/devtools/views/WarnIfLegacyBackendDetected.js @@ -15,8 +15,8 @@ export default function WarnIfLegacyBackendDetected(_: {||}) { // In this case the frontend should show upgrade instructions. useEffect(() => { // Wall.listen returns a cleanup function - let unlisten = bridge.wall.listen(event => { - switch (event.type) { + let unlisten = bridge.wall.listen(message => { + switch (message.type) { case 'call': case 'event': case 'many-events': @@ -28,6 +28,23 @@ export default function WarnIfLegacyBackendDetected(_: {||}) { content: , }); + // Once we've identified the backend version, it's safe to unsubscribe. + if (typeof unlisten === 'function') { + unlisten(); + unlisten = null; + } + break; + default: + break; + } + + switch (message.event) { + case 'isBackendStorageAPISupported': + case 'isNativeStyleEditorSupported': + case 'operations': + case 'overrideComponentFilters': + // Any of these is sufficient to indicate a v4 backend. + // Once we've identified the backend version, it's safe to unsubscribe. if (typeof unlisten === 'function') { unlisten(); unlisten = null;