From 5040af1e6ff18de4594e0c450dbdd4ec88cb9184 Mon Sep 17 00:00:00 2001 From: Long Zhao Date: Thu, 1 Aug 2024 13:19:16 +1000 Subject: [PATCH] feat: Improve garage door status pooling logic --- src/CGDGarageDoor.ts | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/CGDGarageDoor.ts b/src/CGDGarageDoor.ts index a366a59..40cd156 100644 --- a/src/CGDGarageDoor.ts +++ b/src/CGDGarageDoor.ts @@ -93,13 +93,21 @@ export class CGDGarageDoor { return; } + if (this.status && this.isStatusEqual(this.status, data as Status)) { + return; + } + this.status = data as Status; + this.statusUpdateListener?.(); + }; + + private isStatusEqual = (a: Status, b: Status) => { + const values = ['lamp', 'door', 'vacation']; + return values.every((value) => a[value] === b[value]); }; private poolStatus = async () => { await this.refreshStatus(); - this.statusUpdateListener?.(); - setTimeout(this.poolStatus, 2000); };