@seamapi/react 2.3.0 → 2.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/elements.js +3039 -2939
- package/dist/elements.js.map +1 -1
- package/lib/seam/components/DeviceDetails/ThermostatDeviceDetails.js +16 -8
- package/lib/seam/components/DeviceDetails/ThermostatDeviceDetails.js.map +1 -1
- package/lib/seam/thermostats/use-update-thermostat.js +2 -2
- package/lib/seam/thermostats/use-update-thermostat.js.map +1 -1
- package/lib/ui/Switch/Switch.d.ts +1 -2
- package/lib/ui/Switch/Switch.js +1 -2
- package/lib/ui/Switch/Switch.js.map +1 -1
- package/lib/version.d.ts +1 -1
- package/lib/version.js +1 -1
- package/package.json +2 -2
- package/src/lib/seam/components/DeviceDetails/ThermostatDeviceDetails.tsx +45 -11
- package/src/lib/seam/thermostats/use-update-thermostat.ts +2 -2
- package/src/lib/ui/Switch/Switch.tsx +1 -3
- package/src/lib/version.ts +1 -1
|
@@ -7,11 +7,13 @@ import { NestedClimateSettingScheduleTable } from '../../../../lib/seam/componen
|
|
|
7
7
|
import { useConnectedAccount } from '../../../../lib/seam/connected-accounts/use-connected-account.js';
|
|
8
8
|
import { useClimateSettingSchedules } from '../../../../lib/seam/thermostats/climate-setting-schedules/use-climate-setting-schedules.js';
|
|
9
9
|
import { useUpdateFanMode } from '../../../../lib/seam/thermostats/use-update-fan-mode.js';
|
|
10
|
+
import { useUpdateThermostat } from '../../../../lib/seam/thermostats/use-update-thermostat.js';
|
|
10
11
|
import { ContentHeader } from '../../../../lib/ui/layout/ContentHeader.js';
|
|
11
12
|
import { DetailRow } from '../../../../lib/ui/layout/DetailRow.js';
|
|
12
13
|
import { DetailSection } from '../../../../lib/ui/layout/DetailSection.js';
|
|
13
14
|
import { DetailSectionGroup } from '../../../../lib/ui/layout/DetailSectionGroup.js';
|
|
14
15
|
import { Snackbar } from '../../../../lib/ui/Snackbar/Snackbar.js';
|
|
16
|
+
import { Switch } from '../../../../lib/ui/Switch/Switch.js';
|
|
15
17
|
import { ClimateSettingStatus } from '../../../../lib/ui/thermostat/ClimateSettingStatus.js';
|
|
16
18
|
import { FanModeMenu } from '../../../../lib/ui/thermostat/FanModeMenu.js';
|
|
17
19
|
import { ThermostatCard } from '../../../../lib/ui/thermostat/ThermostatCard.js';
|
|
@@ -21,7 +23,8 @@ export function ThermostatDeviceDetails({ device, onBack, className, errorFilter
|
|
|
21
23
|
const { climateSettingSchedules } = useClimateSettingSchedules({
|
|
22
24
|
device_id: device.device_id,
|
|
23
25
|
});
|
|
24
|
-
const { mutate: updateFanMode, isSuccess,
|
|
26
|
+
const { mutate: updateFanMode, isError: isFanModeError, isSuccess: isFanModeSuccess, } = useUpdateFanMode();
|
|
27
|
+
const { mutate: updateThermostat, isSuccess: isThermostatUpdateSuccess, isError: isThermostatUpdateError, } = useUpdateThermostat();
|
|
25
28
|
if (climateSettingsOpen) {
|
|
26
29
|
return (_jsx(NestedClimateSettingScheduleTable, { deviceId: device.device_id, errorFilter: errorFilter, warningFilter: warningFilter, disableLockUnlock: disableLockUnlock, disableCreateAccessCode: disableCreateAccessCode, disableEditAccessCode: disableEditAccessCode, disableDeleteAccessCode: disableDeleteAccessCode, disableResourceIds: disableResourceIds, onBack: () => {
|
|
27
30
|
setClimateSettingsOpen(false);
|
|
@@ -42,11 +45,16 @@ export function ThermostatDeviceDetails({ device, onBack, className, errorFilter
|
|
|
42
45
|
device_id: device.device_id,
|
|
43
46
|
fan_mode_setting: fanMode,
|
|
44
47
|
});
|
|
45
|
-
} }) })] }), _jsxs(DetailSection, { label: t.defaultSettings, tooltipContent: t.defaultSettingsTooltip, children: [_jsx(DetailRow, { label: t.defaultClimate, children: device.properties.default_climate_setting != null ? (_jsx(ClimateSettingStatus, { climateSetting: device.properties.default_climate_setting, temperatureUnit: 'fahrenheit' })) : (_jsx("p", { children: t.none })) }), _jsx(DetailRow, { label: t.allowManualOverride, children: _jsx(
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
48
|
+
} }) })] }), _jsxs(DetailSection, { label: t.defaultSettings, tooltipContent: t.defaultSettingsTooltip, children: [_jsx(DetailRow, { label: t.defaultClimate, children: device.properties.default_climate_setting != null ? (_jsx(ClimateSettingStatus, { climateSetting: device.properties.default_climate_setting, temperatureUnit: 'fahrenheit' })) : (_jsx("p", { children: t.none })) }), _jsx(DetailRow, { label: t.allowManualOverride, children: _jsx(Switch, { checked: device.properties.default_climate_setting
|
|
49
|
+
?.manual_override_allowed ?? true, onChange: (checked) => {
|
|
50
|
+
updateThermostat({
|
|
51
|
+
device_id: device.device_id,
|
|
52
|
+
default_climate_setting: {
|
|
53
|
+
manual_override_allowed: checked,
|
|
54
|
+
},
|
|
55
|
+
});
|
|
56
|
+
} }) })] }), _jsxs(DetailSection, { label: t.deviceDetails, children: [_jsx(DetailRow, { label: t.manufacturer, children: _jsxs("div", { className: 'seam-detail-row-hstack', children: [device.properties.model.manufacturer_display_name, device.properties.manufacturer === 'ecobee' && _jsx(BeeIcon, {})] }) }), _jsx(DetailRow, { label: t.linkedAccount, sublabel: connectedAccount?.user_identifier?.email ??
|
|
57
|
+
device.connected_account_id }), !disableResourceIds && (_jsx(DetailRow, { label: t.deviceId, sublabel: device.device_id }))] })] }) })] }), _jsx(Snackbar, { message: t.manualOverrideSuccess, variant: 'success', visible: isThermostatUpdateSuccess, automaticVisibility: true }), _jsx(Snackbar, { message: t.manualOverrideError, variant: 'error', visible: isThermostatUpdateError, automaticVisibility: true }), _jsx(Snackbar, { message: t.fanModeSuccess, variant: 'success', visible: isFanModeSuccess, automaticVisibility: true, autoDismiss: true }), _jsx(Snackbar, { message: t.fanModeError, variant: 'error', visible: isFanModeError, automaticVisibility: true })] }));
|
|
50
58
|
}
|
|
51
59
|
const t = {
|
|
52
60
|
thermostat: 'Thermostat',
|
|
@@ -68,9 +76,9 @@ const t = {
|
|
|
68
76
|
linkedAccount: 'Linked account',
|
|
69
77
|
deviceId: 'Device ID',
|
|
70
78
|
none: 'None',
|
|
71
|
-
yes: 'Yes',
|
|
72
|
-
no: 'No',
|
|
73
79
|
fanModeSuccess: 'Successfully updated fan mode!',
|
|
74
80
|
fanModeError: 'Error updating fan mode. Please try again.',
|
|
81
|
+
manualOverrideSuccess: 'Successfully updated manual override!',
|
|
82
|
+
manualOverrideError: 'Error updating manual override. Please try again.',
|
|
75
83
|
};
|
|
76
84
|
//# sourceMappingURL=ThermostatDeviceDetails.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ThermostatDeviceDetails.js","sourceRoot":"","sources":["../../../../src/lib/seam/components/DeviceDetails/ThermostatDeviceDetails.tsx"],"names":[],"mappings":";AAAA,OAAO,UAAU,MAAM,YAAY,CAAA;AACnC,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAGhC,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,EAAE,iCAAiC,EAAE,MAAM,gFAAgF,CAAA;AAElI,OAAO,EAAE,mBAAmB,EAAE,MAAM,sDAAsD,CAAA;AAC1F,OAAO,EAAE,0BAA0B,EAAE,MAAM,iFAAiF,CAAA;AAC5H,OAAO,EAAE,gBAAgB,EAAE,MAAM,6CAA6C,CAAA;AAC9E,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAA;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAA;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAA;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAA;AACxE,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAA;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAA;AAChF,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAA;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAA;AAMpE,MAAM,UAAU,uBAAuB,CAAC,EACtC,MAAM,EACN,MAAM,EACN,SAAS,EACT,WAAW,GAAG,GAAG,EAAE,CAAC,IAAI,EACxB,aAAa,GAAG,GAAG,EAAE,CAAC,IAAI,EAC1B,iBAAiB,EACjB,uBAAuB,EACvB,qBAAqB,EACrB,uBAAuB,EACvB,kBAAkB,GAAG,KAAK,GACG;IAC7B,MAAM,CAAC,mBAAmB,EAAE,sBAAsB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAErE,MAAM,EAAE,gBAAgB,EAAE,GAAG,mBAAmB,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAA;IAE7E,MAAM,EAAE,uBAAuB,EAAE,GAAG,0BAA0B,CAAC;QAC7D,SAAS,EAAE,MAAM,CAAC,SAAS;KAC5B,CAAC,CAAA;IAEF,MAAM,
|
|
1
|
+
{"version":3,"file":"ThermostatDeviceDetails.js","sourceRoot":"","sources":["../../../../src/lib/seam/components/DeviceDetails/ThermostatDeviceDetails.tsx"],"names":[],"mappings":"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"}
|
|
@@ -10,13 +10,13 @@ export function useUpdateThermostat() {
|
|
|
10
10
|
return await client.thermostats.update(mutationParams);
|
|
11
11
|
},
|
|
12
12
|
onSuccess: (_data, variables) => {
|
|
13
|
-
queryClient.setQueryData(['
|
|
13
|
+
queryClient.setQueryData(['devices', 'get', { device_id: variables.device_id }], (thermostat) => {
|
|
14
14
|
if (thermostat == null) {
|
|
15
15
|
return;
|
|
16
16
|
}
|
|
17
17
|
return getUpdatedThermostat(thermostat, variables);
|
|
18
18
|
});
|
|
19
|
-
queryClient.setQueryData(['
|
|
19
|
+
queryClient.setQueryData(['devices', 'list', { device_id: variables.device_id }], (thermostats) => {
|
|
20
20
|
if (thermostats == null) {
|
|
21
21
|
return [];
|
|
22
22
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-update-thermostat.js","sourceRoot":"","sources":["../../../src/lib/seam/thermostats/use-update-thermostat.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EAEX,cAAc,GACf,MAAM,uBAAuB,CAAA;AAQ9B,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAMhF,MAAM,UAAU,mBAAmB;IAKjC,MAAM,EAAE,MAAM,EAAE,GAAG,aAAa,EAAE,CAAA;IAClC,MAAM,WAAW,GAAG,cAAc,EAAE,CAAA;IAEpC,OAAO,WAAW,CAIhB;QACA,UAAU,EAAE,KAAK,EAAE,cAAiD,EAAE,EAAE;YACtE,IAAI,MAAM,KAAK,IAAI;gBAAE,MAAM,IAAI,mBAAmB,EAAE,CAAA;YAEpD,OAAO,MAAM,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,cAAc,CAAC,CAAA;QACxD,CAAC;QACD,SAAS,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE;YAC9B,WAAW,CAAC,YAAY,CACtB,CAAC,
|
|
1
|
+
{"version":3,"file":"use-update-thermostat.js","sourceRoot":"","sources":["../../../src/lib/seam/thermostats/use-update-thermostat.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EAEX,cAAc,GACf,MAAM,uBAAuB,CAAA;AAQ9B,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAMhF,MAAM,UAAU,mBAAmB;IAKjC,MAAM,EAAE,MAAM,EAAE,GAAG,aAAa,EAAE,CAAA;IAClC,MAAM,WAAW,GAAG,cAAc,EAAE,CAAA;IAEpC,OAAO,WAAW,CAIhB;QACA,UAAU,EAAE,KAAK,EAAE,cAAiD,EAAE,EAAE;YACtE,IAAI,MAAM,KAAK,IAAI;gBAAE,MAAM,IAAI,mBAAmB,EAAE,CAAA;YAEpD,OAAO,MAAM,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,cAAc,CAAC,CAAA;QACxD,CAAC;QACD,SAAS,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE;YAC9B,WAAW,CAAC,YAAY,CACtB,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,SAAS,CAAC,SAAS,EAAE,CAAC,EACtD,CAAC,UAAU,EAAE,EAAE;gBACb,IAAI,UAAU,IAAI,IAAI,EAAE;oBACtB,OAAM;iBACP;gBAED,OAAO,oBAAoB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAA;YACpD,CAAC,CACF,CAAA;YAED,WAAW,CAAC,YAAY,CACtB,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,SAAS,CAAC,SAAS,EAAE,CAAC,EACvD,CAAC,WAAW,EAAsB,EAAE;gBAClC,IAAI,WAAW,IAAI,IAAI,EAAE;oBACvB,OAAO,EAAE,CAAA;iBACV;gBAED,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE;oBACpC,IAAI,UAAU,CAAC,SAAS,KAAK,SAAS,CAAC,SAAS,EAAE;wBAChD,OAAO,oBAAoB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAA;qBACnD;oBAED,OAAO,UAAU,CAAA;gBACnB,CAAC,CAAC,CAAA;YACJ,CAAC,CACF,CAAA;QACH,CAAC;KACF,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,oBAAoB,CAC3B,UAA4B,EAC5B,SAA4C;IAE5C,OAAO;QACL,GAAG,UAAU;QAEb,UAAU,EAAE;YACV,GAAG,UAAU,CAAC,UAAU;YAExB,uBAAuB,EAAE;gBACvB,GAAG,UAAU,CAAC,UAAU,CAAC,uBAAuB;gBAChD,uBAAuB,EACrB,UAAU,CAAC,UAAU,EAAE,uBAAuB;oBAC5C,EAAE,uBAAuB,IAAI,IAAI;oBACjC,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,uBAAuB;yBAC1C,uBAAuB;oBAC5B,CAAC,CAAC,IAAI;gBAEV,GAAG,SAAS,CAAC,uBAAuB;aACrC;SACF;KACF,CAAA;AACH,CAAC"}
|
|
@@ -4,5 +4,4 @@ export interface SwitchProps {
|
|
|
4
4
|
onChange: (checked: boolean) => void;
|
|
5
5
|
enableLabel?: boolean;
|
|
6
6
|
}
|
|
7
|
-
declare function Switch({ checked, onChange, enableLabel, }: SwitchProps): JSX.Element;
|
|
8
|
-
export default Switch;
|
|
7
|
+
export declare function Switch({ checked, onChange, enableLabel, }: SwitchProps): JSX.Element;
|
package/lib/ui/Switch/Switch.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import classNames from 'classnames';
|
|
3
|
-
function Switch({ checked, onChange, enableLabel = false, }) {
|
|
3
|
+
export function Switch({ checked, onChange, enableLabel = false, }) {
|
|
4
4
|
return (_jsxs("div", { className: 'seam-switch-container', children: [enableLabel && (_jsx("label", { className: 'seam-switch-label', children: checked ? t.on : t.off })), _jsx("div", { className: classNames('seam-switch', {
|
|
5
5
|
'seam-switch-checked': checked,
|
|
6
6
|
}), onClick: () => {
|
|
@@ -11,5 +11,4 @@ const t = {
|
|
|
11
11
|
on: 'On',
|
|
12
12
|
off: 'Off',
|
|
13
13
|
};
|
|
14
|
-
export default Switch;
|
|
15
14
|
//# sourceMappingURL=Switch.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Switch.js","sourceRoot":"","sources":["../../../src/lib/ui/Switch/Switch.tsx"],"names":[],"mappings":";AAAA,OAAO,UAAU,MAAM,YAAY,CAAA;AAQnC,
|
|
1
|
+
{"version":3,"file":"Switch.js","sourceRoot":"","sources":["../../../src/lib/ui/Switch/Switch.tsx"],"names":[],"mappings":";AAAA,OAAO,UAAU,MAAM,YAAY,CAAA;AAQnC,MAAM,UAAU,MAAM,CAAC,EACrB,OAAO,EACP,QAAQ,EACR,WAAW,GAAG,KAAK,GACP;IACZ,OAAO,CACL,eAAK,SAAS,EAAC,uBAAuB,aACnC,WAAW,IAAI,CACd,gBAAO,SAAS,EAAC,mBAAmB,YAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAS,CACtE,EACD,cACE,SAAS,EAAE,UAAU,CAAC,aAAa,EAAE;oBACnC,qBAAqB,EAAE,OAAO;iBAC/B,CAAC,EACF,OAAO,EAAE,GAAG,EAAE;oBACZ,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAA;gBACpB,CAAC,YAED,cAAK,SAAS,EAAC,oBAAoB,GAAG,GAClC,IACF,CACP,CAAA;AACH,CAAC;AAED,MAAM,CAAC,GAAG;IACR,EAAE,EAAE,IAAI;IACR,GAAG,EAAE,KAAK;CACX,CAAA"}
|
package/lib/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
declare const seamapiReactVersion = "2.
|
|
1
|
+
declare const seamapiReactVersion = "2.4.0";
|
|
2
2
|
export default seamapiReactVersion;
|
package/lib/version.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@seamapi/react",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.4.0",
|
|
4
4
|
"description": "Seam Components.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "index.js",
|
|
@@ -141,7 +141,7 @@
|
|
|
141
141
|
"@mui/material": "^5.12.2",
|
|
142
142
|
"@rxfork/r2wc-react-to-web-component": "^2.4.0",
|
|
143
143
|
"@seamapi/fake-devicedb": "^1.2.0",
|
|
144
|
-
"@seamapi/fake-seam-connect": "^1.
|
|
144
|
+
"@seamapi/fake-seam-connect": "^1.42.0",
|
|
145
145
|
"@seamapi/http": "^0.2.1",
|
|
146
146
|
"@seamapi/types": "^1.32.0",
|
|
147
147
|
"@storybook/addon-designs": "^7.0.1",
|
|
@@ -9,11 +9,13 @@ import type { CommonProps } from 'lib/seam/components/common-props.js'
|
|
|
9
9
|
import { useConnectedAccount } from 'lib/seam/connected-accounts/use-connected-account.js'
|
|
10
10
|
import { useClimateSettingSchedules } from 'lib/seam/thermostats/climate-setting-schedules/use-climate-setting-schedules.js'
|
|
11
11
|
import { useUpdateFanMode } from 'lib/seam/thermostats/use-update-fan-mode.js'
|
|
12
|
+
import { useUpdateThermostat } from 'lib/seam/thermostats/use-update-thermostat.js'
|
|
12
13
|
import { ContentHeader } from 'lib/ui/layout/ContentHeader.js'
|
|
13
14
|
import { DetailRow } from 'lib/ui/layout/DetailRow.js'
|
|
14
15
|
import { DetailSection } from 'lib/ui/layout/DetailSection.js'
|
|
15
16
|
import { DetailSectionGroup } from 'lib/ui/layout/DetailSectionGroup.js'
|
|
16
17
|
import { Snackbar } from 'lib/ui/Snackbar/Snackbar.js'
|
|
18
|
+
import { Switch } from 'lib/ui/Switch/Switch.js'
|
|
17
19
|
import { ClimateSettingStatus } from 'lib/ui/thermostat/ClimateSettingStatus.js'
|
|
18
20
|
import { FanModeMenu } from 'lib/ui/thermostat/FanModeMenu.js'
|
|
19
21
|
import { ThermostatCard } from 'lib/ui/thermostat/ThermostatCard.js'
|
|
@@ -42,7 +44,17 @@ export function ThermostatDeviceDetails({
|
|
|
42
44
|
device_id: device.device_id,
|
|
43
45
|
})
|
|
44
46
|
|
|
45
|
-
const {
|
|
47
|
+
const {
|
|
48
|
+
mutate: updateFanMode,
|
|
49
|
+
isError: isFanModeError,
|
|
50
|
+
isSuccess: isFanModeSuccess,
|
|
51
|
+
} = useUpdateFanMode()
|
|
52
|
+
|
|
53
|
+
const {
|
|
54
|
+
mutate: updateThermostat,
|
|
55
|
+
isSuccess: isThermostatUpdateSuccess,
|
|
56
|
+
isError: isThermostatUpdateError,
|
|
57
|
+
} = useUpdateThermostat()
|
|
46
58
|
|
|
47
59
|
if (climateSettingsOpen) {
|
|
48
60
|
return (
|
|
@@ -139,12 +151,20 @@ export function ThermostatDeviceDetails({
|
|
|
139
151
|
)}
|
|
140
152
|
</DetailRow>
|
|
141
153
|
<DetailRow label={t.allowManualOverride}>
|
|
142
|
-
<
|
|
143
|
-
{
|
|
144
|
-
.
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
154
|
+
<Switch
|
|
155
|
+
checked={
|
|
156
|
+
device.properties.default_climate_setting
|
|
157
|
+
?.manual_override_allowed ?? true
|
|
158
|
+
}
|
|
159
|
+
onChange={(checked) => {
|
|
160
|
+
updateThermostat({
|
|
161
|
+
device_id: device.device_id,
|
|
162
|
+
default_climate_setting: {
|
|
163
|
+
manual_override_allowed: checked,
|
|
164
|
+
},
|
|
165
|
+
})
|
|
166
|
+
}}
|
|
167
|
+
/>
|
|
148
168
|
</DetailRow>
|
|
149
169
|
</DetailSection>
|
|
150
170
|
|
|
@@ -170,10 +190,24 @@ export function ThermostatDeviceDetails({
|
|
|
170
190
|
</div>
|
|
171
191
|
</div>
|
|
172
192
|
|
|
193
|
+
<Snackbar
|
|
194
|
+
message={t.manualOverrideSuccess}
|
|
195
|
+
variant='success'
|
|
196
|
+
visible={isThermostatUpdateSuccess}
|
|
197
|
+
automaticVisibility
|
|
198
|
+
/>
|
|
199
|
+
|
|
200
|
+
<Snackbar
|
|
201
|
+
message={t.manualOverrideError}
|
|
202
|
+
variant='error'
|
|
203
|
+
visible={isThermostatUpdateError}
|
|
204
|
+
automaticVisibility
|
|
205
|
+
/>
|
|
206
|
+
|
|
173
207
|
<Snackbar
|
|
174
208
|
message={t.fanModeSuccess}
|
|
175
209
|
variant='success'
|
|
176
|
-
visible={
|
|
210
|
+
visible={isFanModeSuccess}
|
|
177
211
|
automaticVisibility
|
|
178
212
|
autoDismiss
|
|
179
213
|
/>
|
|
@@ -181,7 +215,7 @@ export function ThermostatDeviceDetails({
|
|
|
181
215
|
<Snackbar
|
|
182
216
|
message={t.fanModeError}
|
|
183
217
|
variant='error'
|
|
184
|
-
visible={
|
|
218
|
+
visible={isFanModeError}
|
|
185
219
|
automaticVisibility
|
|
186
220
|
/>
|
|
187
221
|
</div>
|
|
@@ -211,8 +245,8 @@ const t = {
|
|
|
211
245
|
linkedAccount: 'Linked account',
|
|
212
246
|
deviceId: 'Device ID',
|
|
213
247
|
none: 'None',
|
|
214
|
-
yes: 'Yes',
|
|
215
|
-
no: 'No',
|
|
216
248
|
fanModeSuccess: 'Successfully updated fan mode!',
|
|
217
249
|
fanModeError: 'Error updating fan mode. Please try again.',
|
|
250
|
+
manualOverrideSuccess: 'Successfully updated manual override!',
|
|
251
|
+
manualOverrideError: 'Error updating manual override. Please try again.',
|
|
218
252
|
}
|
|
@@ -36,7 +36,7 @@ export function useUpdateThermostat(): UseMutationResult<
|
|
|
36
36
|
},
|
|
37
37
|
onSuccess: (_data, variables) => {
|
|
38
38
|
queryClient.setQueryData<ThermostatDevice | null>(
|
|
39
|
-
['
|
|
39
|
+
['devices', 'get', { device_id: variables.device_id }],
|
|
40
40
|
(thermostat) => {
|
|
41
41
|
if (thermostat == null) {
|
|
42
42
|
return
|
|
@@ -47,7 +47,7 @@ export function useUpdateThermostat(): UseMutationResult<
|
|
|
47
47
|
)
|
|
48
48
|
|
|
49
49
|
queryClient.setQueryData<ThermostatsListResponse['thermostats']>(
|
|
50
|
-
['
|
|
50
|
+
['devices', 'list', { device_id: variables.device_id }],
|
|
51
51
|
(thermostats): ThermostatDevice[] => {
|
|
52
52
|
if (thermostats == null) {
|
|
53
53
|
return []
|
package/src/lib/version.ts
CHANGED