diff --git a/ui/src/Components/Grid/UpgradeNeeded/index.js b/ui/src/Components/Grid/UpgradeNeeded/index.js index df3d80c1b..725ce352f 100644 --- a/ui/src/Components/Grid/UpgradeNeeded/index.js +++ b/ui/src/Components/Grid/UpgradeNeeded/index.js @@ -11,7 +11,8 @@ import "csshake/scss/csshake-slow.scss"; const UpgradeNeeded = ({ newVersion, reloadAfter }) => { useEffect(() => { - setTimeout(window.location.reload, reloadAfter); + const timer = setTimeout(() => window.location.reload(), reloadAfter); + return () => clearTimeout(timer); }, [reloadAfter]); return ( diff --git a/ui/src/Components/Grid/UpgradeNeeded/index.test.js b/ui/src/Components/Grid/UpgradeNeeded/index.test.js index cbeba45bc..eca9b8a17 100644 --- a/ui/src/Components/Grid/UpgradeNeeded/index.test.js +++ b/ui/src/Components/Grid/UpgradeNeeded/index.test.js @@ -34,4 +34,16 @@ describe("", () => { jest.runOnlyPendingTimers(); expect(reloadSpy).toBeCalled(); }); + + it("stops calling window.location.reload after unmount", () => { + const reloadSpy = jest + .spyOn(global.window.location, "reload") + .mockImplementation(() => {}); + const tree = mount( + + ); + tree.unmount(); + jest.runOnlyPendingTimers(); + expect(reloadSpy).not.toBeCalled(); + }); });