'use client'; import type { AppStore } from '@/app/lib/reduxToolkit/store'; import { makeStore } from '@/app/lib/reduxToolkit/store'; import { setupListeners } from '@reduxjs/toolkit/query'; import type { ReactNode } from 'react'; import { useEffect, useRef } from 'react'; import { Provider } from 'react-redux'; interface Props { readonly children: ReactNode; } export const StoreProvider = ({ children }: Props) => { const storeRef = useRef(null); if (!storeRef.current) { // Create the store instance the first time this renders storeRef.current = makeStore(); } useEffect(() => { if (storeRef.current != null) { // configure listeners using the provided defaults // optional, but required for `refetchOnFocus`/`refetchOnReconnect` behaviors return setupListeners(storeRef.current.dispatch); } }, []); return {children}; };