From ccbc5e620adf05cbf6e89bd20874721f11821d1e Mon Sep 17 00:00:00 2001
From: Joe Banks <joseph@josephbanks.me>
Date: Tue, 6 Oct 2020 18:59:58 +0100
Subject: Add a setInterval to check if the child window is manually closed

---
 src/components/OAuth2Button.tsx | 8 ++++++++
 1 file changed, 8 insertions(+)

(limited to 'src/components/OAuth2Button.tsx')

diff --git a/src/components/OAuth2Button.tsx b/src/components/OAuth2Button.tsx
index 1b3d588..08c4b7f 100644
--- a/src/components/OAuth2Button.tsx
+++ b/src/components/OAuth2Button.tsx
@@ -50,6 +50,13 @@ function doLogin(disableFunction: (newState: boolean) => void) {
     "height=700,width=500,location=no,menubar=no,resizable=no,status=no,titlebar=no,left=300,top=300"
   )
 
+  const interval = setInterval(() => {
+    if (windowRef?.closed) {
+      clearInterval(interval);
+      disableFunction(false);
+    }
+  }, 500)
+
   window.onmessage = (code: MessageEvent) => {
     if (code.data.hello) {
       // React DevTools has a habit of sending messages, ignore them.
@@ -62,6 +69,7 @@ function doLogin(disableFunction: (newState: boolean) => void) {
       console.log("Code received:", code.data);
 
       disableFunction(false);
+      clearInterval(interval);
 
       window.onmessage = null;
     }
-- 
cgit v1.2.3

