From 7445f066ed53c3b6e8a1003649ea21bff749b728 Mon Sep 17 00:00:00 2001
From: AAGaming <aa@mail.catvibers.me>
Date: Fri, 14 Oct 2022 22:41:46 -0400
Subject: Revert "Rewrite toaster hook to not re-create the window (#217)"

This reverts commit 3ac0abc82bd266eecb7c5f468481e364790be665.
---
 frontend/src/toaster.tsx | 37 ++++++++++++++++++++++++-------------
 1 file changed, 24 insertions(+), 13 deletions(-)

(limited to 'frontend/src/toaster.tsx')

diff --git a/frontend/src/toaster.tsx b/frontend/src/toaster.tsx
index 1d3d66a9..8eea35bc 100644
--- a/frontend/src/toaster.tsx
+++ b/frontend/src/toaster.tsx
@@ -38,23 +38,34 @@ class Toaster extends Logger {
       await sleep(2000);
     }
 
-    this.node = instance.sibling.child;
+    this.node = instance.return.return;
     let toast: any;
     let renderedToast: ReactNode = null;
-    afterPatch(this.node, 'type', (args: any[], ret: any) => {
-      const currentToast = args[0].notification;
-      if (currentToast?.decky) {
-        if (currentToast !== toast) {
-          toast = currentToast;
-          renderedToast = <Toast toast={toast} />;
-        }
-        ret.props.children = renderedToast;
-      } else {
-        toast = null;
-        renderedToast = null;
+    this.node.stateNode.render = (...args: any[]) => {
+      const ret = this.node.stateNode.__proto__.render.call(this.node.stateNode, ...args);
+      if (ret) {
+        this.instanceRetPatch = afterPatch(ret, 'type', (_: any, ret: any) => {
+          if (ret?.props?.children[1]?.children?.props) {
+            const currentToast = ret.props.children[1].children.props.notification;
+            if (currentToast?.decky) {
+              if (currentToast == toast) {
+                ret.props.children[1].children = renderedToast;
+              } else {
+                toast = currentToast;
+                renderedToast = <Toast toast={toast} />;
+                ret.props.children[1].children = renderedToast;
+              }
+            } else {
+              toast = null;
+              renderedToast = null;
+            }
+          }
+          return ret;
+        });
       }
       return ret;
-    });
+    };
+    this.node.stateNode.forceUpdate();
     this.settingsModule = findModuleChild((m) => {
       if (typeof m !== 'object') return undefined;
       for (let prop in m) {
-- 
cgit v1.2.3

