Files
abode/src/react/store/react.tsx
T
codingetandCodex 31d4636dde
CI / install-and-build (pull_request) Successful in 1m29s
CI / format (pull_request) Successful in 51s
CI / typecheck-source (pull_request) Successful in 41s
CI / typecheck-tests (pull_request) Successful in 39s
CI / test (pull_request) Successful in 51s
CI / lint (pull_request) Successful in 21s
ci: add pull request quality gates
Co-Authored-By: gpt-5.6-terra <noreply@openai.com>
2026-07-22 21:50:29 +00:00

29 lines
938 B
TypeScript

import {
createDispatchHook,
createSelectorHook,
createStoreHook,
Provider as RawProvider,
type ProviderProps,
type ReactReduxContextValue,
} from "react-redux";
import type { Store, State } from "./store.js";
import { createContext } from "react";
const AbodeStoreContext = createContext<ReactReduxContextValue | null>(null);
AbodeStoreContext.displayName = "AbodeStoreContext";
export function Provider(
props: Omit<ProviderProps, "context" | "store" | "serverState"> & {
store: Store;
serverState?: State;
},
) {
return <RawProvider context={AbodeStoreContext} {...props} />;
}
Object.assign(Provider, { displayName: "AbodeStoreProvider" });
export const useSelector =
createSelectorHook(AbodeStoreContext).withTypes<State>();
export const useStore = createStoreHook(AbodeStoreContext).withTypes<Store>();
export const useDispatch =
createDispatchHook(AbodeStoreContext).withTypes<Store["dispatch"]>();