Skip to content

Commit 7e72b00

Browse files
committed
fix(availabilty): fix offline showing when availability is not enabled
1 parent 627da6c commit 7e72b00

File tree

5 files changed

+15
-7
lines changed

5 files changed

+15
-7
lines changed

src/components/device-page/info.tsx

+4-2
Original file line numberDiff line numberDiff line change
@@ -85,8 +85,10 @@ export class DeviceInfo extends Component<
8585
availability: AvailabilityState,
8686
) => {
8787
const { config } = bridgeInfo;
88-
const availabilityFeatureEnabled = !!config.availability?.enabled;
89-
const availabilityEnabledForDevice = config.devices[device.ieee_address]?.availability !== false;
88+
const availabilityFeatureEnabled = config.availability?.enabled;
89+
const availabilityEnabledForDevice = config.devices[device.ieee_address]?.availability as
90+
| boolean
91+
| undefined;
9092

9193
return (
9294
<dd className="col-12 col-md-7">

src/components/zigbee/Availability.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ export function Availability(props: AvailabilityStateProps): JSX.Element {
2525
availabilityState = availabilityState.toLowerCase() as OnlineOrOffline;
2626
if (disabled) {
2727
return <span>{t('disabled')}</span>;
28-
} else if (availabilityEnabledForDevice || (availabilityFeatureEnabled && availabilityEnabledForDevice !== false)) {
28+
} else if (availabilityEnabledForDevice ?? availabilityFeatureEnabled) {
2929
return (
3030
<span
3131
className={cx({

src/components/zigbee/DevicesTable.test.tsx

+8
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,14 @@ describe('Availability column visibility', () => {
110110
expect(screen.queryByRole('columnheader', { name: /avaliability:avaliability/i })).not.toBeInTheDocument();
111111
});
112112

113+
it('should show availability column when device has no config, and global availabilty is enabled', () => {
114+
const deviceWithoutAvailability = createMockDeviceData({
115+
availabilityEnabledForDevice: undefined,
116+
});
117+
render(<DevicesTable {...defaultProps} data={[deviceWithoutAvailability]} availabilityFeatureEnabled={true} />);
118+
expect(screen.queryByRole('columnheader', { name: /avaliability:avaliability/i })).toBeInTheDocument();
119+
});
120+
113121
it('should show availability column when some devices have it enabled and others disabled', () => {
114122
const deviceWithAvailability = createMockDeviceData({
115123
availabilityEnabledForDevice: true,

src/components/zigbee/DevicesTable.tsx

+1-3
Original file line numberDiff line numberDiff line change
@@ -53,9 +53,7 @@ export function DevicesTable(
5353
]
5454
: [];
5555
const showAvailabilityColumn = data.some(
56-
(device) =>
57-
device.availabilityEnabledForDevice ||
58-
(availabilityFeatureEnabled && device.availabilityEnabledForDevice !== false),
56+
(device) => device.availabilityEnabledForDevice ?? availabilityFeatureEnabled,
5957
);
6058
const availabilityCol = showAvailabilityColumn
6159
? [

src/components/zigbee/index.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ function DevicesPage(props: DevicesPageProps): JSX.Element {
4747
device,
4848
state,
4949
availabilityState: availability[device.friendly_name] ?? 'offline',
50-
availabilityEnabledForDevice: config.devices[device.ieee_address]?.availability !== false,
50+
availabilityEnabledForDevice: config.devices[device.ieee_address]?.availability,
5151
} as DevicesPageData;
5252
});
5353
};

0 commit comments

Comments
 (0)