diff --git a/.changeset/devtools-close-pip-window-localstorage.md b/.changeset/devtools-close-pip-window-localstorage.md new file mode 100644 index 00000000000..16039f2982c --- /dev/null +++ b/.changeset/devtools-close-pip-window-localstorage.md @@ -0,0 +1,5 @@ +--- +'@tanstack/query-devtools': patch +--- + +fix(query-devtools/PiPContext): reset 'pip_open' in 'localStore' from 'closePipWindow' so the auto-open createEffect does not reopen the window after a programmatic close diff --git a/packages/query-devtools/src/__tests__/contexts/PiPContext.test.tsx b/packages/query-devtools/src/__tests__/contexts/PiPContext.test.tsx index 2eea2323f39..17a53b5bf35 100644 --- a/packages/query-devtools/src/__tests__/contexts/PiPContext.test.tsx +++ b/packages/query-devtools/src/__tests__/contexts/PiPContext.test.tsx @@ -312,6 +312,22 @@ describe('PiPContext', () => { expect(fakeWindow.close).toHaveBeenCalledTimes(1) }) + + it('should reset "pip_open" in "localStore" so the auto-open createEffect does not reopen the window', () => { + stubPipWindow() + + renderAndAct( + (pip) => { + pip().requestPipWindow(640, 480) + pip().closePipWindow() + }, + { disabled: true }, + ) + + expect(localStorage.getItem('TanstackQueryDevtools.pip_open')).toBe( + 'false', + ) + }) }) describe('"pip_open" auto-open createEffect', () => { diff --git a/packages/query-devtools/src/contexts/PiPContext.tsx b/packages/query-devtools/src/contexts/PiPContext.tsx index fb22c8be36a..fe42eef8f2f 100644 --- a/packages/query-devtools/src/contexts/PiPContext.tsx +++ b/packages/query-devtools/src/contexts/PiPContext.tsx @@ -41,6 +41,7 @@ export const PiPProvider = (props: PiPProviderProps) => { const w = pipWindow() if (w != null) { w.close() + props.setLocalStore('pip_open', 'false') setPipWindow(null) } }