44 lines
961 B
TypeScript
44 lines
961 B
TypeScript
|
import ReducerRegistry from '../base/redux/ReducerRegistry';
|
||
|
|
||
|
import { CLOSE_HID_DEVICE, INIT_DEVICE, UPDATE_DEVICE } from './actionTypes';
|
||
|
import { IDeviceInfo } from './types';
|
||
|
|
||
|
/**
|
||
|
* The initial state of the web-hid feature.
|
||
|
*/
|
||
|
const DEFAULT_STATE = {
|
||
|
deviceInfo: {} as IDeviceInfo
|
||
|
};
|
||
|
|
||
|
export interface IWebHid {
|
||
|
deviceInfo: IDeviceInfo;
|
||
|
}
|
||
|
|
||
|
|
||
|
ReducerRegistry.register<IWebHid>(
|
||
|
'features/web-hid',
|
||
|
(state: IWebHid = DEFAULT_STATE, action): IWebHid => {
|
||
|
switch (action.type) {
|
||
|
case INIT_DEVICE:
|
||
|
return {
|
||
|
...state,
|
||
|
deviceInfo: action.deviceInfo
|
||
|
};
|
||
|
case UPDATE_DEVICE:
|
||
|
return {
|
||
|
...state,
|
||
|
deviceInfo: {
|
||
|
...state.deviceInfo,
|
||
|
...action.updates
|
||
|
}
|
||
|
};
|
||
|
case CLOSE_HID_DEVICE:
|
||
|
return {
|
||
|
...state,
|
||
|
deviceInfo: DEFAULT_STATE.deviceInfo
|
||
|
};
|
||
|
default:
|
||
|
return state;
|
||
|
}
|
||
|
});
|