From 3ac0abc82bd266eecb7c5f468481e364790be665 Mon Sep 17 00:00:00 2001 From: AAGaming Date: Fri, 14 Oct 2022 20:09:11 -0400 Subject: Rewrite toaster hook to not re-create the window (#217) --- frontend/src/toaster.tsx | 37 +++++++++++++------------------------ 1 file changed, 13 insertions(+), 24 deletions(-) (limited to 'frontend/src/toaster.tsx') diff --git a/frontend/src/toaster.tsx b/frontend/src/toaster.tsx index 8eea35bc..1d3d66a9 100644 --- a/frontend/src/toaster.tsx +++ b/frontend/src/toaster.tsx @@ -38,34 +38,23 @@ class Toaster extends Logger { await sleep(2000); } - this.node = instance.return.return; + this.node = instance.sibling.child; let toast: any; let renderedToast: ReactNode = 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 = ; - ret.props.children[1].children = renderedToast; - } - } else { - toast = null; - renderedToast = null; - } - } - return ret; - }); + afterPatch(this.node, 'type', (args: any[], ret: any) => { + const currentToast = args[0].notification; + if (currentToast?.decky) { + if (currentToast !== toast) { + toast = currentToast; + renderedToast = ; + } + ret.props.children = renderedToast; + } else { + toast = null; + renderedToast = null; } 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