Files
pybricks-code/src/reducers.ts
T
David Lechner 569217d5dc editor: don't put editor in redux store
The redux store should not have non-serializable objects like the editor
in it.
2022-03-02 18:56:47 -06:00

40 lines
1.0 KiB
TypeScript

// SPDX-License-Identifier: MIT
// Copyright (c) 2020-2022 The Pybricks Authors
import { TypedUseSelectorHook, useSelector as useReduxSelector } from 'react-redux';
import { Reducer, combineReducers } from 'redux';
import app from './app/reducers';
import ble from './ble/reducers';
import fileStorage from './fileStorage/reducers';
import firmware from './firmware/reducers';
import hub from './hub/reducers';
import licenses from './licenses/reducers';
import bootloader from './lwp3-bootloader/reducers';
import settings from './settings/reducers';
/**
* Root reducer for redux store.
*/
export const rootReducer = combineReducers({
app,
bootloader,
ble,
fileStorage,
firmware,
hub,
licenses,
settings,
});
/**
* Root state for redux store.
*/
type StateFromReducer<R> = R extends Reducer<infer S> ? S : never;
export type RootState = StateFromReducer<typeof rootReducer>;
/**
* Typed version of react-redux useSelector() hook.
*/
export const useSelector: TypedUseSelectorHook<RootState> = useReduxSelector;