Merge branch '102-scene-apply-button-in-hosts-view-does-not-work' into 'dev'

Resolve "Scene apply button in hosts view does not work"

Closes #102

See merge request sa4-2020/the-sanmarinoes/frontend!138
This commit is contained in:
Andrea Brites Marto 2020-05-08 14:59:10 +02:00
commit 122689c864
5 changed files with 27 additions and 6 deletions

View file

@ -16,6 +16,13 @@ class HostsPanel extends Component {
}
}
applyHostScene(id) {
this.props
.sceneApply(id, this.props.activeHost)
.then(() => console.log("SCCUESS"))
.catch((err) => console.error("sceneApply update error", err));
}
render() {
if (this.props.isActiveDefaultHost) {
return (
@ -46,9 +53,11 @@ class HostsPanel extends Component {
{scene.name} <Icon name={scene.icon} />
</Header>
</Card.Header>
<Card.Content extras>
<Card.Content extras={true}>
<div className="ui two buttons">
<Button>Apply</Button>
<Button onClick={() => this.applyHostScene(scene.id)}>
Apply
</Button>
</div>
</Card.Content>
</Card>

View file

@ -70,11 +70,12 @@ class Videocam extends Component {
/>
</Grid.Column>
</Grid.Row>
<Grid.Row textAlign="center">
<Grid.Row>
<Grid.Column>
<Checkbox
checked={this.props.stateOrDevice.on}
toggle
label="Turn on/off"
onChange={(e, val) => this.setOnOff(val.checked)}
/>
</Grid.Column>

View file

@ -549,12 +549,21 @@ export const RemoteService = {
};
},
sceneApply: (id) => {
sceneApply: (id, hostId = null) => {
return (dispatch) => {
let url = `/scene/${id}/apply`;
if (hostId) {
url = url + "?hostId=" + hostId;
}
return Endpoint.post(url)
.then((res) => dispatch(actions.deviceOperationUpdate(res.data)))
.then((res) =>
dispatch(
hostId
? actions.hostDevicesUpdate(hostId, res.data, true)
: actions.deviceOperationUpdate(res.data)
)
)
.catch((err) => {
console.warn("scene apply error", err);
throw new RemoteError(["Network error"]);

View file

@ -49,6 +49,7 @@ function reducer(previousState, action) {
[scene.id]: {
name: { $set: scene.name },
icon: { $set: scene.icon },
guestAccessEnabled: { $set: scene.guestAccessEnabled },
},
},
});

View file

@ -63,9 +63,10 @@ const actions = {
devices,
partial,
}),
hostDevicesUpdate: (hostId, devices) => ({
hostDevicesUpdate: (hostId, devices, partial = false) => ({
type: "HOST_DEVICES_UPDATE",
hostId,
partial,
devices,
}),
stateDelete: (stateId) => ({