Skip to content

Commit

Permalink
fix: Don't emit deviceLeave event for devices that already left (#965)
Browse files Browse the repository at this point in the history
  • Loading branch information
Koenkk committed Mar 9, 2024
1 parent b380e58 commit d17319e
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 5 deletions.
9 changes: 6 additions & 3 deletions src/controller/controller.ts
Original file line number Diff line number Diff line change
Expand Up @@ -471,11 +471,14 @@ class Controller extends events.EventEmitter {
debug.log(`Device leave '${payload.ieeeAddr}'`);

const device = Device.byIeeeAddr(payload.ieeeAddr);
if (device) {
debug.log(`Removing device from database '${payload.ieeeAddr}'`);
device.removeFromDatabase();
if (!device) {
debug.log(`Device leave is from unknown device '${payload.ieeeAddr}'`);
return;
}

debug.log(`Removing device from database '${payload.ieeeAddr}'`);
device.removeFromDatabase();

const data: Events.DeviceLeavePayload = {ieeeAddr: payload.ieeeAddr};
this.selfAndDeviceEmit(device, Events.Events.deviceLeave, data);
}
Expand Down
4 changes: 2 additions & 2 deletions test/controller.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -936,8 +936,8 @@ describe('Controller', () => {

// leaves another time when not in database
await mockAdapterEvents['deviceLeave']({networkAddress: 129, ieeeAddr: '0x129'});
expect(events.deviceLeave.length).toBe(2);
expect(events.deviceLeave[1]).toStrictEqual({ieeeAddr: '0x129'});
expect(events.deviceLeave.length).toBe(1);
expect(events.deviceLeave[0]).toStrictEqual({ieeeAddr: '0x129'});
});

it('Start with reset should clear database', async () => {
Expand Down

0 comments on commit d17319e

Please sign in to comment.