Farmbot-Web-App/frontend/farmware/reducer.ts

42 lines
1.3 KiB
TypeScript
Raw Normal View History

2017-06-29 12:54:02 -06:00
import { generateReducer } from "../redux/generate_reducer";
import { FarmwareState } from "./interfaces";
2018-08-01 07:03:35 -06:00
import { TaggedResource } from "farmbot";
2017-06-29 12:54:02 -06:00
import { Actions } from "../constants";
export const farmwareState: FarmwareState = {
2018-06-21 15:04:21 -06:00
currentFarmware: undefined,
2018-02-14 22:07:36 -07:00
currentImage: undefined,
2019-04-09 19:45:59 -06:00
firstPartyFarmwareNames: [],
infoOpen: false,
2018-02-14 22:07:36 -07:00
};
2017-06-29 12:54:02 -06:00
export const farmwareReducer = generateReducer<FarmwareState>(farmwareState)
.add<TaggedResource>(Actions.INIT_RESOURCE, (s, { payload }) => {
if (payload.kind === "Image") {
s.currentImage = payload.uuid;
}
return s;
})
2018-06-21 15:04:21 -06:00
.add<string>(Actions.SELECT_FARMWARE, (s, { payload }) => {
s.currentFarmware = payload;
return s;
})
2017-06-29 12:54:02 -06:00
.add<string>(Actions.SELECT_IMAGE, (s, { payload }) => {
s.currentImage = payload;
return s;
})
2018-02-14 22:07:36 -07:00
.add<string[]>(Actions.FETCH_FIRST_PARTY_FARMWARE_NAMES_OK, (s, { payload }) => {
s.firstPartyFarmwareNames = payload;
return s;
})
2017-06-29 12:54:02 -06:00
.add<TaggedResource>(Actions.DESTROY_RESOURCE_OK, (s, { payload }) => {
2017-08-28 05:49:13 -06:00
const thatUUID = payload.uuid;
const thisUUID = s.currentImage;
2017-06-29 12:54:02 -06:00
if (thisUUID === thatUUID) { s.currentImage = undefined; }
return s;
2019-04-09 19:45:59 -06:00
})
.add<boolean>(Actions.SET_FARMWARE_INFO_STATE, (s, { payload }) => {
s.infoOpen = payload;
return s;
2017-06-29 12:54:02 -06:00
});