From fe96204f0b0f2b858ec664d408eb21545dc791d2 Mon Sep 17 00:00:00 2001 From: Nerivec <62446222+Nerivec@users.noreply.github.com> Date: Wed, 29 Jul 2026 06:43:46 +0200 Subject: [PATCH] fix: Publish groups on device leave (#32676) --- lib/extension/bridge.ts | 1 + test/extensions/bridge.test.ts | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/extension/bridge.ts b/lib/extension/bridge.ts index 4819c8f3b..ab22818ac 100644 --- a/lib/extension/bridge.ts +++ b/lib/extension/bridge.ts @@ -141,6 +141,7 @@ export default class Bridge extends Extension { await this.mqtt.publish("bridge/event", stringify(payload)); }); this.eventBus.onDeviceLeave(this, async (data) => { + await this.publishGroups(); await this.publishDevices(); await this.publishDefinitions(); diff --git a/test/extensions/bridge.test.ts b/test/extensions/bridge.test.ts index 1cbe75873..81729e86f 100644 --- a/test/extensions/bridge.test.ts +++ b/test/extensions/bridge.test.ts @@ -2806,7 +2806,7 @@ describe("Extension: Bridge", () => { mockMQTTPublishAsync.mockClear(); await mockZHEvents.deviceLeave({ieeeAddr: devices.bulb.ieeeAddr}); await flushPromises(); - expect(mockMQTTPublishAsync).toHaveBeenCalledTimes(3); + expect(mockMQTTPublishAsync).toHaveBeenCalledTimes(4); expect(mockMQTTPublishAsync).toHaveBeenCalledWith( "zigbee2mqtt/bridge/event", stringify({type: "device_leave", data: {ieee_address: "0x000b57fffec6a5b2", friendly_name: "bulb"}}), @@ -2819,6 +2819,7 @@ describe("Extension: Bridge", () => { expect.any(String), {retain: true}, ); + expect(mockMQTTPublishAsync).toHaveBeenCalledWith("zigbee2mqtt/bridge/groups", expect.any(String), {retain: true}); }); it("Should allow permit join on all", async () => {