Skip to content

Commit 7ca8026

Browse files
committed
fix(permit_join): update to new permit join API
1 parent ed5a73b commit 7ca8026

File tree

2 files changed

+20
-4
lines changed

2 files changed

+20
-4
lines changed

src/components/navbar/StartStopJoinButton.tsx

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import React, { RefObject, useState } from 'react';
1+
import React, { RefObject, useState, useEffect } from 'react';
22
import Button from '../button';
33
import cx from 'classnames';
44
import useComponentVisible from '../../hooks/useComponentVisible';
@@ -14,8 +14,8 @@ export function StartStopJoinButton({ devices, setPermitJoin, bridgeInfo }: Star
1414
const { t } = useTranslation(['navbar']);
1515
const { ref, isComponentVisible, setIsComponentVisible } = useComponentVisible(false);
1616
const [selectedRouter, setSelectedRouter] = useState<Device>({} as Device);
17-
const { permit_join_timeout: permitJoinTimeout } = bridgeInfo;
18-
const permitJoin = permitJoinTimeout > 0;
17+
const [permitJoinTimeout, setPermitJoinTimeout] = useState<number | undefined>(undefined);
18+
const { permit_join: permitJoin, permit_join_end: permitJoinEnd } = bridgeInfo;
1919

2020
const selectAndHide = (device: Device) => {
2121
setSelectedRouter(device);
@@ -39,6 +39,21 @@ export function StartStopJoinButton({ devices, setPermitJoin, bridgeInfo }: Star
3939
const onBtnClick = () => {
4040
setPermitJoin(permitJoin ? 0 : 254, selectedRouter);
4141
};
42+
const updatePermitJoinTimeout = () => {
43+
setPermitJoinTimeout(permitJoinEnd ? Math.round((permitJoinEnd - Date.now()) / 1000) : undefined);
44+
};
45+
46+
useEffect(() => {
47+
let interval;
48+
updatePermitJoinTimeout();
49+
50+
if (permitJoinEnd) {
51+
interval = setInterval(() => updatePermitJoinTimeout(), 1000);
52+
}
53+
54+
return () => clearInterval(interval);
55+
}, [permitJoinEnd]);
56+
4257
const permitJoinTimer = (
4358
<>
4459
{permitJoinTimeout ? (

src/types.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,8 @@ export type BridgeState = 'online' | 'offline';
9797
export interface BridgeInfo {
9898
config: Z2MConfig;
9999
config_schema: JSONSchema7;
100-
permit_join_timeout: number;
100+
permit_join: boolean;
101+
permit_join_end: number | undefined;
101102
commit?: string;
102103
version?: string;
103104
zigbee_herdsman_converters: { version: string };

0 commit comments

Comments
 (0)