@@ -11,8 +11,6 @@ import * as settings from "../util/settings";
1111import utils , { isLightExpose } from "../util/utils" ;
1212import Extension from "./extension" ;
1313
14- const TOPIC_REGEX = new RegExp ( `^${ settings . get ( ) . mqtt . base_topic } /bridge/request/group/members/(remove|add|remove_all)$` ) ;
15-
1614const STATE_PROPERTIES : Readonly < Record < string , ( value : string , exposes : zhc . Expose [ ] ) => boolean > > = {
1715 state : ( ) => true ,
1816 brightness : ( _value , exposes ) => exposes . some ( ( e ) => isLightExpose ( e ) && e . features . some ( ( f ) => f . name === "brightness" ) ) ,
@@ -38,6 +36,7 @@ interface ParsedMQTTMessage {
3836}
3937
4038export default class Groups extends Extension {
39+ #topicRegex = new RegExp ( `^${ settings . get ( ) . mqtt . base_topic } /bridge/request/group/members/(remove|add|remove_all)$` ) ;
4140 private lastOptimisticState : { [ s : string ] : KeyValue } = { } ;
4241
4342 // biome-ignore lint/suspicious/useAwait: API
@@ -185,7 +184,7 @@ export default class Groups extends Extension {
185184 private parseMQTTMessage (
186185 data : eventdata . MQTTMessage ,
187186 ) : [ raw : KeyValue | undefined , parsed : ParsedMQTTMessage | undefined , error : string | undefined ] {
188- const topicRegexMatch = data . topic . match ( TOPIC_REGEX ) ;
187+ const topicRegexMatch = data . topic . match ( this . #topicRegex ) ;
189188
190189 if ( topicRegexMatch ) {
191190 const type = topicRegexMatch [ 1 ] as "remove" | "add" | "remove_all" ;
@@ -273,23 +272,23 @@ export default class Groups extends Extension {
273272 try {
274273 if ( type === "add" ) {
275274 assert ( resolvedGroup , "`resolvedGroup` is missing" ) ;
276- logger . info ( `Adding '${ resolvedDevice . name } ' to '${ resolvedGroup . name } '` ) ;
275+ logger . info ( `Adding endpoint '${ resolvedEndpoint . ID } ' of device ' ${ resolvedDevice . name } ' to group '${ resolvedGroup . name } '` ) ;
277276 await resolvedEndpoint . addToGroup ( resolvedGroup . zh ) ;
278277 changedGroups . push ( resolvedGroup ) ;
279278 // biome-ignore lint/style/noNonNullAssertion: valid from resolved asserts
280279 const respPayload = { device : deviceKey ! , endpoint : endpointKey ! , group : groupKey ! } ;
281280 await this . publishResponse < "bridge/response/group/members/add" > ( parsed . type , raw , respPayload ) ;
282281 } else if ( type === "remove" ) {
283282 assert ( resolvedGroup , "`resolvedGroup` is missing" ) ;
284- logger . info ( `Removing '${ resolvedDevice . name } ' from '${ resolvedGroup . name } '` ) ;
283+ logger . info ( `Removing endpoint '${ resolvedEndpoint . ID } ' of device ' ${ resolvedDevice . name } ' from group '${ resolvedGroup . name } '` ) ;
285284 await resolvedEndpoint . removeFromGroup ( resolvedGroup . zh ) ;
286285 changedGroups . push ( resolvedGroup ) ;
287286 // biome-ignore lint/style/noNonNullAssertion: valid from resolved asserts
288287 const respPayload = { device : deviceKey ! , endpoint : endpointKey ! , group : groupKey ! } ;
289288 await this . publishResponse < "bridge/response/group/members/remove" > ( parsed . type , raw , respPayload ) ;
290289 } else {
291290 // remove_all
292- logger . info ( `Removing '${ resolvedDevice . name } ' from all groups` ) ;
291+ logger . info ( `Removing endpoint ' ${ resolvedEndpoint . ID } ' of device '${ resolvedDevice . name } ' from all groups` ) ;
293292
294293 for ( const group of this . zigbee . groupsIterator ( ( g ) => g . members . includes ( resolvedEndpoint ) ) ) {
295294 changedGroups . push ( group ) ;
@@ -301,7 +300,7 @@ export default class Groups extends Extension {
301300 await this . publishResponse < "bridge/response/group/members/remove_all" > ( parsed . type , raw , respPayload ) ;
302301 }
303302 } catch ( e ) {
304- const errorMsg = `Failed to ${ type } from group (${ ( e as Error ) . message } )` ;
303+ const errorMsg = `Failed to ${ type } ${ type === "add" ? "to" : " from" } group (${ ( e as Error ) . message } )` ;
305304 await this . publishResponse ( parsed . type , raw , { } , errorMsg ) ;
306305 // biome-ignore lint/style/noNonNullAssertion: always Error
307306 logger . debug ( ( e as Error ) . stack ! ) ;
0 commit comments